mirror of https://github.com/encounter/SDL.git
Fixed bug 3703 - Missing media keys support on Amazon Fire TV remote control
Holger Schemel Summary: This patch adds support for key events for the "rewind" and "fast forward" media keys on the Amazon Fire TV remote control. How to reproduce the problem: Run Android build of SDL2 application on the Amazon Fire TV (tested with "stick" version) and log key events. Expected behaviour: Every key pressed on the Fire TV remote control should result in a corresponding key event (pressed/released). Observed behaviour: Of the bottom row of buttons on the Fire TV remote control, only the "play/pause" (middle) button generates a key event, while the "rewind" (left) and "fast forward" (right) buttons to not generate any event at all. The attached patch adds support for these two missing buttons/keys. Note 1: Some missing definitions were added for the already existing key codes SDL_SCANCODE_APP1 and SDL_SCANCODE_APP2 (to keep up the correct order of enumerations / array positions when adding the two new key codes). Note 2: Definitions in "scancodes_linux.h" and "scancodes_xfree86.h" (to also add support for these keys on other platforms) were added without testing. However, I was unable to find corresponding definitions for these two media keys for Windows and Mac OS X. Note 3: I have also updated the (broken) link to the USB usage page standard PDF document (comment in "include/SDL_scancode.h").
This commit is contained in:
parent
2cc6806472
commit
2008d86696
|
@ -308,7 +308,12 @@ enum
|
||||||
SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
|
SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN),
|
||||||
SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
|
SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP),
|
||||||
SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
|
SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT),
|
||||||
SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP)
|
SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP),
|
||||||
|
SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1),
|
||||||
|
SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
|
||||||
|
|
||||||
|
SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
|
||||||
|
SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
* SDL_Event structure.
|
* SDL_Event structure.
|
||||||
*
|
*
|
||||||
* The values in this enumeration are based on the USB usage page standard:
|
* The values in this enumeration are based on the USB usage page standard:
|
||||||
* http://www.usb.org/developers/devclass_docs/Hut1_12v2.pdf
|
* http://www.usb.org/developers/hidpage/Hut1_12v2.pdf
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
|
@ -390,6 +390,18 @@ typedef enum
|
||||||
|
|
||||||
/* @} *//* Walther keys */
|
/* @} *//* Walther keys */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \name Usage page 0x0C (additional media keys)
|
||||||
|
*
|
||||||
|
* These values are mapped from usage page 0x0C (USB consumer page).
|
||||||
|
*/
|
||||||
|
/* @{ */
|
||||||
|
|
||||||
|
SDL_SCANCODE_AUDIOREWIND = 285,
|
||||||
|
SDL_SCANCODE_AUDIOFASTFORWARD = 286,
|
||||||
|
|
||||||
|
/* @} *//* Usage page 0x0C (additional media keys) */
|
||||||
|
|
||||||
/* Add any other keys here. */
|
/* Add any other keys here. */
|
||||||
|
|
||||||
SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
|
SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes
|
||||||
|
|
|
@ -273,6 +273,10 @@ static const SDL_Keycode SDL_default_keymap[SDL_NUM_SCANCODES] = {
|
||||||
SDLK_KBDILLUMUP,
|
SDLK_KBDILLUMUP,
|
||||||
SDLK_EJECT,
|
SDLK_EJECT,
|
||||||
SDLK_SLEEP,
|
SDLK_SLEEP,
|
||||||
|
SDLK_APP1,
|
||||||
|
SDLK_APP2,
|
||||||
|
SDLK_AUDIOREWIND,
|
||||||
|
SDLK_AUDIOFASTFORWARD,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *SDL_scancode_names[SDL_NUM_SCANCODES] = {
|
static const char *SDL_scancode_names[SDL_NUM_SCANCODES] = {
|
||||||
|
@ -505,6 +509,10 @@ static const char *SDL_scancode_names[SDL_NUM_SCANCODES] = {
|
||||||
"KBDIllumUp",
|
"KBDIllumUp",
|
||||||
"Eject",
|
"Eject",
|
||||||
"Sleep",
|
"Sleep",
|
||||||
|
"App1",
|
||||||
|
"App2",
|
||||||
|
"AudioRewind",
|
||||||
|
"AudioFastForward",
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Taken from SDL_iconv() */
|
/* Taken from SDL_iconv() */
|
||||||
|
|
|
@ -194,7 +194,7 @@ static SDL_Scancode const linux_scancode_table[] = {
|
||||||
/* 165 */ SDL_SCANCODE_AUDIOPREV, /* KEY_PREVIOUSSONG */
|
/* 165 */ SDL_SCANCODE_AUDIOPREV, /* KEY_PREVIOUSSONG */
|
||||||
/* 166 */ SDL_SCANCODE_AUDIOSTOP, /* KEY_STOPCD */
|
/* 166 */ SDL_SCANCODE_AUDIOSTOP, /* KEY_STOPCD */
|
||||||
/* 167 */ SDL_SCANCODE_UNKNOWN, /* KEY_RECORD */
|
/* 167 */ SDL_SCANCODE_UNKNOWN, /* KEY_RECORD */
|
||||||
/* 168 */ SDL_SCANCODE_UNKNOWN, /* KEY_REWIND */
|
/* 168 */ SDL_SCANCODE_AUDIOREWIND, /* KEY_REWIND */
|
||||||
/* 169 */ SDL_SCANCODE_UNKNOWN, /* KEY_PHONE */
|
/* 169 */ SDL_SCANCODE_UNKNOWN, /* KEY_PHONE */
|
||||||
/* 170 */ SDL_SCANCODE_UNKNOWN, /* KEY_ISO */
|
/* 170 */ SDL_SCANCODE_UNKNOWN, /* KEY_ISO */
|
||||||
/* 171 */ SDL_SCANCODE_UNKNOWN, /* KEY_CONFIG */
|
/* 171 */ SDL_SCANCODE_UNKNOWN, /* KEY_CONFIG */
|
||||||
|
@ -230,7 +230,7 @@ static SDL_Scancode const linux_scancode_table[] = {
|
||||||
/* 205 */ SDL_SCANCODE_UNKNOWN, /* KEY_SUSPEND */
|
/* 205 */ SDL_SCANCODE_UNKNOWN, /* KEY_SUSPEND */
|
||||||
/* 206 */ SDL_SCANCODE_UNKNOWN, /* KEY_CLOSE */
|
/* 206 */ SDL_SCANCODE_UNKNOWN, /* KEY_CLOSE */
|
||||||
/* 207 */ SDL_SCANCODE_UNKNOWN, /* KEY_PLAY */
|
/* 207 */ SDL_SCANCODE_UNKNOWN, /* KEY_PLAY */
|
||||||
/* 208 */ SDL_SCANCODE_UNKNOWN, /* KEY_FASTFORWARD */
|
/* 208 */ SDL_SCANCODE_AUDIOFASTFORWARD, /* KEY_FASTFORWARD */
|
||||||
/* 209 */ SDL_SCANCODE_UNKNOWN, /* KEY_BASSBOOST */
|
/* 209 */ SDL_SCANCODE_UNKNOWN, /* KEY_BASSBOOST */
|
||||||
/* 210 */ SDL_SCANCODE_UNKNOWN, /* KEY_PRINT */
|
/* 210 */ SDL_SCANCODE_UNKNOWN, /* KEY_PRINT */
|
||||||
/* 211 */ SDL_SCANCODE_UNKNOWN, /* KEY_HP */
|
/* 211 */ SDL_SCANCODE_UNKNOWN, /* KEY_HP */
|
||||||
|
|
|
@ -345,7 +345,7 @@ static const SDL_Scancode xfree86_scancode_table2[] = {
|
||||||
/* 165 */ SDL_SCANCODE_AUDIOPREV,
|
/* 165 */ SDL_SCANCODE_AUDIOPREV,
|
||||||
/* 166 */ SDL_SCANCODE_AUDIOSTOP,
|
/* 166 */ SDL_SCANCODE_AUDIOSTOP,
|
||||||
/* 167 */ SDL_SCANCODE_UNKNOWN, /* XF86AudioRecord */
|
/* 167 */ SDL_SCANCODE_UNKNOWN, /* XF86AudioRecord */
|
||||||
/* 168 */ SDL_SCANCODE_UNKNOWN, /* XF86AudioRewind */
|
/* 168 */ SDL_SCANCODE_AUDIOREWIND, /* XF86AudioRewind */
|
||||||
/* 169 */ SDL_SCANCODE_UNKNOWN, /* XF86Phone */
|
/* 169 */ SDL_SCANCODE_UNKNOWN, /* XF86Phone */
|
||||||
/* 170 */ SDL_SCANCODE_UNKNOWN,
|
/* 170 */ SDL_SCANCODE_UNKNOWN,
|
||||||
/* 171 */ SDL_SCANCODE_F13, /* XF86Tools */
|
/* 171 */ SDL_SCANCODE_F13, /* XF86Tools */
|
||||||
|
|
|
@ -129,8 +129,8 @@ static SDL_Scancode Android_Keycodes[] = {
|
||||||
SDL_SCANCODE_AUDIOSTOP, /* AKEYCODE_MEDIA_STOP */
|
SDL_SCANCODE_AUDIOSTOP, /* AKEYCODE_MEDIA_STOP */
|
||||||
SDL_SCANCODE_AUDIONEXT, /* AKEYCODE_MEDIA_NEXT */
|
SDL_SCANCODE_AUDIONEXT, /* AKEYCODE_MEDIA_NEXT */
|
||||||
SDL_SCANCODE_AUDIOPREV, /* AKEYCODE_MEDIA_PREVIOUS */
|
SDL_SCANCODE_AUDIOPREV, /* AKEYCODE_MEDIA_PREVIOUS */
|
||||||
SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_REWIND */
|
SDL_SCANCODE_AUDIOREWIND, /* AKEYCODE_MEDIA_REWIND */
|
||||||
SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_FAST_FORWARD */
|
SDL_SCANCODE_AUDIOFASTFORWARD, /* AKEYCODE_MEDIA_FAST_FORWARD */
|
||||||
SDL_SCANCODE_MUTE, /* AKEYCODE_MUTE */
|
SDL_SCANCODE_MUTE, /* AKEYCODE_MUTE */
|
||||||
SDL_SCANCODE_PAGEUP, /* AKEYCODE_PAGE_UP */
|
SDL_SCANCODE_PAGEUP, /* AKEYCODE_PAGE_UP */
|
||||||
SDL_SCANCODE_PAGEDOWN, /* AKEYCODE_PAGE_DOWN */
|
SDL_SCANCODE_PAGEDOWN, /* AKEYCODE_PAGE_DOWN */
|
||||||
|
|
Loading…
Reference in New Issue