(WINRAW) Change legacy virtual keys to scan codes

This commit is contained in:
sonninnos 2021-08-04 01:56:33 +03:00
parent bdba803909
commit 2c47d94bf5
4 changed files with 306 additions and 281 deletions

View File

@ -1067,71 +1067,6 @@ static LRESULT CALLBACK wnd_proc_winraw_common_internal(HWND hwnd,
switch (message)
{
case WM_KEYUP: /* Key released */
case WM_SYSKEYUP: /* Key released */
keydown = false;
/* fall-through */
case WM_KEYDOWN: /* Key pressed */
case WM_SYSKEYDOWN: /* Key pressed */
quit = true;
{
uint16_t mod = 0;
unsigned keycode = 0;
unsigned keysym = (unsigned)wparam;
/* fix key binding issues on winraw when
* DirectInput is not available */
switch (keysym)
{
/* Mod & Keypad handling done in winraw_callback */
case VK_SHIFT:
case VK_CONTROL:
case VK_MENU:
case VK_INSERT:
case VK_DELETE:
case VK_HOME:
case VK_END:
case VK_PRIOR:
case VK_NEXT:
case VK_UP:
case VK_DOWN:
case VK_LEFT:
case VK_RIGHT:
case VK_CLEAR:
case VK_RETURN:
return 0;
}
keycode = input_keymaps_translate_keysym_to_rk(keysym);
if (GetKeyState(VK_SHIFT) & 0x80)
mod |= RETROKMOD_SHIFT;
if (GetKeyState(VK_CONTROL) & 0x80)
mod |= RETROKMOD_CTRL;
if (GetKeyState(VK_MENU) & 0x80)
mod |= RETROKMOD_ALT;
if (GetKeyState(VK_CAPITAL) & 0x81)
mod |= RETROKMOD_CAPSLOCK;
if (GetKeyState(VK_SCROLL) & 0x81)
mod |= RETROKMOD_SCROLLOCK;
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & 0x80)
mod |= RETROKMOD_META;
input_keyboard_event(keydown, keycode,
0, mod, RETRO_DEVICE_KEYBOARD);
if (message != WM_SYSKEYDOWN)
return 0;
if (
wparam == VK_F10 ||
wparam == VK_MENU ||
wparam == VK_RSHIFT
)
return 0;
}
break;
case WM_MOUSEMOVE:
case WM_POINTERDOWN:
case WM_POINTERUP:

View File

@ -41,7 +41,8 @@ extern "C" {
typedef struct
{
uint8_t keys[256];
uint8_t keys[SC_LAST];
bool pause;
} winraw_keyboard_t;
typedef struct
@ -440,89 +441,11 @@ static void winraw_update_mouse_state(winraw_input_t *wr,
}
}
static void winraw_keyboard_mods(RAWINPUT *ri)
{
unsigned flags = ri->data.keyboard.Flags;
switch (ri->data.keyboard.MakeCode)
{
/* Left Control + Right Control */
case 29:
input_keyboard_event(
(flags & RI_KEY_BREAK) ? 0 : 1,
input_keymaps_translate_keysym_to_rk(
(flags & RI_KEY_E0) ? VK_RCONTROL : VK_LCONTROL),
0, RETROKMOD_CTRL, RETRO_DEVICE_KEYBOARD);
break;
/* Left Shift */
case 42:
input_keyboard_event(
(flags & RI_KEY_BREAK) ? 0 : 1,
input_keymaps_translate_keysym_to_rk(VK_LSHIFT),
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
break;
/* Right Shift */
case 54:
input_keyboard_event(
(flags & RI_KEY_BREAK) ? 0 : 1,
input_keymaps_translate_keysym_to_rk(VK_RSHIFT),
0, RETROKMOD_SHIFT, RETRO_DEVICE_KEYBOARD);
break;
/* Left Alt + Right Alt */
case 56:
input_keyboard_event(
(flags & RI_KEY_BREAK) ? 0 : 1,
input_keymaps_translate_keysym_to_rk(
(flags & RI_KEY_E0) ? VK_RMENU : VK_LMENU),
0, RETROKMOD_ALT, RETRO_DEVICE_KEYBOARD);
break;
}
}
static void winraw_keyboard_keypad(unsigned *vkey, unsigned flags)
{
bool event = true;
/* Keypad key positions regardless of NumLock */
switch (*vkey)
{
case VK_INSERT: *vkey = (flags & RI_KEY_E0) ? VK_INSERT : VK_NUMPAD0; break;
case VK_DELETE: *vkey = (flags & RI_KEY_E0) ? VK_DELETE : VK_DECIMAL; break;
case VK_HOME: *vkey = (flags & RI_KEY_E0) ? VK_HOME : VK_NUMPAD7; break;
case VK_END: *vkey = (flags & RI_KEY_E0) ? VK_END : VK_NUMPAD1; break;
case VK_PRIOR: *vkey = (flags & RI_KEY_E0) ? VK_PRIOR : VK_NUMPAD9; break;
case VK_NEXT: *vkey = (flags & RI_KEY_E0) ? VK_NEXT : VK_NUMPAD3; break;
case VK_UP: *vkey = (flags & RI_KEY_E0) ? VK_UP : VK_NUMPAD8; break;
case VK_DOWN: *vkey = (flags & RI_KEY_E0) ? VK_DOWN : VK_NUMPAD2; break;
case VK_LEFT: *vkey = (flags & RI_KEY_E0) ? VK_LEFT : VK_NUMPAD4; break;
case VK_RIGHT: *vkey = (flags & RI_KEY_E0) ? VK_RIGHT : VK_NUMPAD6; break;
case VK_CLEAR: *vkey = (flags & RI_KEY_E0) ? VK_CLEAR : VK_NUMPAD5; break;
case VK_RETURN: *vkey = (flags & RI_KEY_E0) ? 0xE0 : VK_RETURN; break;
default:
event = false;
break;
}
if (event)
input_keyboard_event(flags & RI_KEY_BREAK ? 0 : 1,
input_keymaps_translate_keysym_to_rk(*vkey),
0, 0, RETRO_DEVICE_KEYBOARD);
}
static LRESULT CALLBACK winraw_callback(
HWND wnd, UINT msg, WPARAM wpar, LPARAM lpar)
{
unsigned i;
unsigned vkey, flags;
unsigned mcode, flags, kdown;
static uint8_t data[1024];
RAWINPUT *ri = (RAWINPUT*)data;
UINT size = sizeof(data);
@ -544,36 +467,42 @@ static LRESULT CALLBACK winraw_callback(
switch (ri->header.dwType)
{
case RIM_TYPEKEYBOARD:
vkey = ri->data.keyboard.VKey;
mcode = ri->data.keyboard.MakeCode;
flags = ri->data.keyboard.Flags;
kdown = (flags & RI_KEY_BREAK) ? 0 : 1;
/* Stop sending forced Left Shift when NumLock is enabled
* (VKey 0xFF does not actually exist) */
if (vkey == 0xFF)
break;
/* Extended scancodes */
if (flags & RI_KEY_E0)
mcode |= 0xE000;
else if (flags & RI_KEY_E1)
mcode |= 0xE100;
/* following keys are not handled by windows raw input api */
wr->keyboard.keys[VK_LCONTROL] = GetAsyncKeyState(VK_LCONTROL) >> 1 ? 1 : 0;
wr->keyboard.keys[VK_RCONTROL] = GetAsyncKeyState(VK_RCONTROL) >> 1 ? 1 : 0;
wr->keyboard.keys[VK_LMENU] = GetAsyncKeyState(VK_LMENU) >> 1 ? 1 : 0;
wr->keyboard.keys[VK_RMENU] = GetAsyncKeyState(VK_RMENU) >> 1 ? 1 : 0;
wr->keyboard.keys[VK_LSHIFT] = GetAsyncKeyState(VK_LSHIFT) >> 1 ? 1 : 0;
wr->keyboard.keys[VK_RSHIFT] = GetAsyncKeyState(VK_RSHIFT) >> 1 ? 1 : 0;
winraw_keyboard_mods(ri);
winraw_keyboard_keypad(&vkey, flags);
switch (ri->data.keyboard.Message)
/* Special pause-key handling due to
* scancode 0xE11D45 incoming separately */
if (wr->keyboard.pause)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
wr->keyboard.keys[vkey] = 1;
break;
case WM_KEYUP:
case WM_SYSKEYUP:
wr->keyboard.keys[vkey] = 0;
break;
wr->keyboard.pause = false;
if (mcode == SC_NUMLOCK)
mcode = SC_PAUSE;
}
else if (mcode == 0xE11D)
wr->keyboard.pause = true;
/* Ignored scancodes */
switch (mcode)
{
case 0xE11D:
case 0xE02A:
case 0xE036:
case 0xE0AA:
case 0xE0B6:
return 0;
}
wr->keyboard.keys[mcode] = kdown;
input_keyboard_event(kdown,
input_keymaps_translate_keysym_to_rk(mcode),
0, 0, RETRO_DEVICE_KEYBOARD);
break;
case RIM_TYPEMOUSE:
for (i = 0; i < wr->mouse_cnt; ++i)

View File

@ -1698,117 +1698,116 @@ const struct rarch_key_map rarch_key_map_psl1ght[] = {
#if defined(_WIN32) && _WIN32_WINNT >= 0x0501 && !defined(__WINRT__)
const struct rarch_key_map rarch_key_map_winraw[] = {
{ VK_BACK, RETROK_BACKSPACE },
{ VK_TAB, RETROK_TAB },
{ VK_CLEAR, RETROK_CLEAR },
{ VK_RETURN, RETROK_RETURN },
{ VK_PAUSE, RETROK_PAUSE },
{ VK_ESCAPE, RETROK_ESCAPE },
{ VK_MODECHANGE, RETROK_MODE },
{ VK_SPACE, RETROK_SPACE },
{ VK_PRIOR, RETROK_PAGEUP },
{ VK_NEXT, RETROK_PAGEDOWN },
{ VK_END, RETROK_END },
{ VK_HOME, RETROK_HOME },
{ VK_LEFT, RETROK_LEFT },
{ VK_UP, RETROK_UP },
{ VK_RIGHT, RETROK_RIGHT },
{ VK_DOWN, RETROK_DOWN },
{ VK_PRINT, RETROK_PRINT },
{ VK_INSERT, RETROK_INSERT },
{ VK_DELETE, RETROK_DELETE },
{ VK_HELP, RETROK_HELP },
{ 0x30, RETROK_0 },
{ 0x31, RETROK_1 },
{ 0x32, RETROK_2 },
{ 0x33, RETROK_3 },
{ 0x34, RETROK_4 },
{ 0x35, RETROK_5 },
{ 0x36, RETROK_6 },
{ 0x37, RETROK_7 },
{ 0x38, RETROK_8 },
{ 0x39, RETROK_9 },
{ 0x41, RETROK_a },
{ 0x42, RETROK_b },
{ 0x43, RETROK_c },
{ 0x44, RETROK_d },
{ 0x45, RETROK_e },
{ 0x46, RETROK_f },
{ 0x47, RETROK_g },
{ 0x48, RETROK_h },
{ 0x49, RETROK_i },
{ 0x4A, RETROK_j },
{ 0x4B, RETROK_k },
{ 0x4C, RETROK_l },
{ 0x4D, RETROK_m },
{ 0x4E, RETROK_n },
{ 0x4F, RETROK_o },
{ 0x50, RETROK_p },
{ 0x51, RETROK_q },
{ 0x52, RETROK_r },
{ 0x53, RETROK_s },
{ 0x54, RETROK_t },
{ 0x55, RETROK_u },
{ 0x56, RETROK_v },
{ 0x57, RETROK_w },
{ 0x58, RETROK_x },
{ 0x59, RETROK_y },
{ 0x5A, RETROK_z },
{ VK_LWIN, RETROK_LSUPER },
{ VK_RWIN, RETROK_RSUPER },
{ VK_APPS, RETROK_MENU },
{ VK_NUMPAD0, RETROK_KP0 },
{ VK_NUMPAD1, RETROK_KP1 },
{ VK_NUMPAD2, RETROK_KP2 },
{ VK_NUMPAD3, RETROK_KP3 },
{ VK_NUMPAD4, RETROK_KP4 },
{ VK_NUMPAD5, RETROK_KP5 },
{ VK_NUMPAD6, RETROK_KP6 },
{ VK_NUMPAD7, RETROK_KP7 },
{ VK_NUMPAD8, RETROK_KP8 },
{ VK_NUMPAD9, RETROK_KP9 },
{ VK_MULTIPLY, RETROK_KP_MULTIPLY },
{ VK_ADD, RETROK_KP_PLUS },
{ VK_SUBTRACT, RETROK_KP_MINUS },
{ VK_DECIMAL, RETROK_KP_PERIOD },
{ VK_DIVIDE, RETROK_KP_DIVIDE },
{ VK_F1, RETROK_F1 },
{ VK_F2, RETROK_F2 },
{ VK_F3, RETROK_F3 },
{ VK_F4, RETROK_F4 },
{ VK_F5, RETROK_F5 },
{ VK_F6, RETROK_F6 },
{ VK_F7, RETROK_F7 },
{ VK_F8, RETROK_F8 },
{ VK_F9, RETROK_F9 },
{ VK_F10, RETROK_F10 },
{ VK_F11, RETROK_F11 },
{ VK_F12, RETROK_F12 },
{ VK_F13, RETROK_F13 },
{ VK_F14, RETROK_F14 },
{ VK_F15, RETROK_F15 },
{ VK_NUMLOCK, RETROK_NUMLOCK },
{ VK_SCROLL, RETROK_SCROLLOCK },
{ VK_LSHIFT, RETROK_LSHIFT },
{ VK_RSHIFT, RETROK_RSHIFT },
{ VK_LCONTROL, RETROK_LCTRL },
{ VK_RCONTROL, RETROK_RCTRL },
{ VK_LMENU, RETROK_LALT },
{ VK_RMENU, RETROK_RALT },
{ 0xE0, RETROK_KP_ENTER },
{ VK_CAPITAL, RETROK_CAPSLOCK },
{ VK_OEM_1, RETROK_SEMICOLON },
{ VK_OEM_PLUS, RETROK_EQUALS },
{ VK_OEM_COMMA, RETROK_COMMA },
{ VK_OEM_MINUS, RETROK_MINUS },
{ VK_OEM_PERIOD, RETROK_PERIOD },
{ VK_OEM_2, RETROK_SLASH },
{ VK_OEM_3, RETROK_BACKQUOTE },
{ VK_OEM_4, RETROK_LEFTBRACKET },
{ VK_OEM_5, RETROK_BACKSLASH },
{ VK_OEM_6, RETROK_RIGHTBRACKET },
{ VK_OEM_7, RETROK_QUOTE },
{ VK_OEM_102, RETROK_OEM_102 },
{ SC_BACKSPACE, RETROK_BACKSPACE },
{ SC_TAB, RETROK_TAB },
{ SC_CLEAR, RETROK_CLEAR },
{ SC_RETURN, RETROK_RETURN },
{ SC_PAUSE, RETROK_PAUSE },
{ SC_ESCAPE, RETROK_ESCAPE },
{ SC_SPACE, RETROK_SPACE },
{ SC_PAGEUP, RETROK_PAGEUP },
{ SC_PAGEDOWN, RETROK_PAGEDOWN },
{ SC_END, RETROK_END },
{ SC_HOME, RETROK_HOME },
{ SC_LEFT, RETROK_LEFT },
{ SC_UP, RETROK_UP },
{ SC_RIGHT, RETROK_RIGHT },
{ SC_DOWN, RETROK_DOWN },
{ SC_PRINT, RETROK_PRINT },
{ SC_INSERT, RETROK_INSERT },
{ SC_DELETE, RETROK_DELETE },
{ SC_HELP, RETROK_HELP },
{ SC_0, RETROK_0 },
{ SC_1, RETROK_1 },
{ SC_2, RETROK_2 },
{ SC_3, RETROK_3 },
{ SC_4, RETROK_4 },
{ SC_5, RETROK_5 },
{ SC_6, RETROK_6 },
{ SC_7, RETROK_7 },
{ SC_8, RETROK_8 },
{ SC_9, RETROK_9 },
{ SC_a, RETROK_a },
{ SC_b, RETROK_b },
{ SC_c, RETROK_c },
{ SC_d, RETROK_d },
{ SC_e, RETROK_e },
{ SC_f, RETROK_f },
{ SC_g, RETROK_g },
{ SC_h, RETROK_h },
{ SC_i, RETROK_i },
{ SC_j, RETROK_j },
{ SC_k, RETROK_k },
{ SC_l, RETROK_l },
{ SC_m, RETROK_m },
{ SC_n, RETROK_n },
{ SC_o, RETROK_o },
{ SC_p, RETROK_p },
{ SC_q, RETROK_q },
{ SC_r, RETROK_r },
{ SC_s, RETROK_s },
{ SC_t, RETROK_t },
{ SC_u, RETROK_u },
{ SC_v, RETROK_v },
{ SC_w, RETROK_w },
{ SC_x, RETROK_x },
{ SC_y, RETROK_y },
{ SC_z, RETROK_z },
{ SC_LSUPER, RETROK_LSUPER },
{ SC_RSUPER, RETROK_RSUPER },
{ SC_MENU, RETROK_MENU },
{ SC_KP0, RETROK_KP0 },
{ SC_KP1, RETROK_KP1 },
{ SC_KP2, RETROK_KP2 },
{ SC_KP3, RETROK_KP3 },
{ SC_KP4, RETROK_KP4 },
{ SC_KP5, RETROK_KP5 },
{ SC_KP6, RETROK_KP6 },
{ SC_KP7, RETROK_KP7 },
{ SC_KP8, RETROK_KP8 },
{ SC_KP9, RETROK_KP9 },
{ SC_KP_MULTIPLY, RETROK_KP_MULTIPLY },
{ SC_KP_PLUS, RETROK_KP_PLUS },
{ SC_KP_MINUS, RETROK_KP_MINUS },
{ SC_KP_PERIOD, RETROK_KP_PERIOD },
{ SC_KP_DIVIDE, RETROK_KP_DIVIDE },
{ SC_F1, RETROK_F1 },
{ SC_F2, RETROK_F2 },
{ SC_F3, RETROK_F3 },
{ SC_F4, RETROK_F4 },
{ SC_F5, RETROK_F5 },
{ SC_F6, RETROK_F6 },
{ SC_F7, RETROK_F7 },
{ SC_F8, RETROK_F8 },
{ SC_F9, RETROK_F9 },
{ SC_F10, RETROK_F10 },
{ SC_F11, RETROK_F11 },
{ SC_F12, RETROK_F12 },
{ SC_F13, RETROK_F13 },
{ SC_F14, RETROK_F14 },
{ SC_F15, RETROK_F15 },
{ SC_NUMLOCK, RETROK_NUMLOCK },
{ SC_SCROLLLOCK, RETROK_SCROLLOCK },
{ SC_LSHIFT, RETROK_LSHIFT },
{ SC_RSHIFT, RETROK_RSHIFT },
{ SC_LCTRL, RETROK_LCTRL },
{ SC_RCTRL, RETROK_RCTRL },
{ SC_LALT, RETROK_LALT },
{ SC_RALT, RETROK_RALT },
{ SC_KP_ENTER, RETROK_KP_ENTER },
{ SC_CAPSLOCK, RETROK_CAPSLOCK },
{ SC_COMMA, RETROK_COMMA },
{ SC_PERIOD, RETROK_PERIOD },
{ SC_MINUS, RETROK_MINUS },
{ SC_EQUALS, RETROK_EQUALS },
{ SC_LEFTBRACKET, RETROK_LEFTBRACKET },
{ SC_RIGHTBRACKET, RETROK_RIGHTBRACKET },
{ SC_SEMICOLON, RETROK_SEMICOLON },
{ SC_BACKQUOTE, RETROK_BACKQUOTE },
{ SC_BACKSLASH, RETROK_BACKSLASH },
{ SC_SLASH, RETROK_SLASH },
{ SC_APOSTROPHE, RETROK_QUOTE },
{ SC_ANGLEBRACKET, RETROK_OEM_102 },
{ 0, RETROK_UNKNOWN }
};
#endif

View File

@ -62,6 +62,168 @@ extern const struct rarch_key_map rarch_key_map_switch[];
extern const struct rarch_key_map rarch_key_map_vita[];
#endif
#if defined(_WIN32) && _WIN32_WINNT >= 0x0501 && !defined(__WINRT__)
enum winraw_scancodes {
SC_ESCAPE = 0x01,
SC_1 = 0x02,
SC_2 = 0x03,
SC_3 = 0x04,
SC_4 = 0x05,
SC_5 = 0x06,
SC_6 = 0x07,
SC_7 = 0x08,
SC_8 = 0x09,
SC_9 = 0x0A,
SC_0 = 0x0B,
SC_MINUS = 0x0C,
SC_EQUALS = 0x0D,
SC_BACKSPACE = 0x0E,
SC_TAB = 0x0F,
SC_q = 0x10,
SC_w = 0x11,
SC_e = 0x12,
SC_r = 0x13,
SC_t = 0x14,
SC_y = 0x15,
SC_u = 0x16,
SC_i = 0x17,
SC_o = 0x18,
SC_p = 0x19,
SC_LEFTBRACKET = 0x1A,
SC_RIGHTBRACKET = 0x1B,
SC_RETURN = 0x1C,
SC_LCTRL = 0x1D,
SC_a = 0x1E,
SC_s = 0x1F,
SC_d = 0x20,
SC_f = 0x21,
SC_g = 0x22,
SC_h = 0x23,
SC_j = 0x24,
SC_k = 0x25,
SC_l = 0x26,
SC_SEMICOLON = 0x27,
SC_APOSTROPHE = 0x28,
SC_BACKQUOTE = 0x29,
SC_LSHIFT = 0x2A,
SC_BACKSLASH = 0x2B,
SC_z = 0x2C,
SC_x = 0x2D,
SC_c = 0x2E,
SC_v = 0x2F,
SC_b = 0x30,
SC_n = 0x31,
SC_m = 0x32,
SC_COMMA = 0x33,
SC_PERIOD = 0x34,
SC_SLASH = 0x35,
SC_RSHIFT = 0x36,
SC_KP_MULTIPLY = 0x37,
SC_LALT = 0x38,
SC_SPACE = 0x39,
SC_CAPSLOCK = 0x3A,
SC_F1 = 0x3B,
SC_F2 = 0x3C,
SC_F3 = 0x3D,
SC_F4 = 0x3E,
SC_F5 = 0x3F,
SC_F6 = 0x40,
SC_F7 = 0x41,
SC_F8 = 0x42,
SC_F9 = 0x43,
SC_F10 = 0x44,
SC_NUMLOCK = 0x45,
SC_SCROLLLOCK = 0x46,
SC_KP7 = 0x47,
SC_KP8 = 0x48,
SC_KP9 = 0x49,
SC_KP_MINUS = 0x4A,
SC_KP4 = 0x4B,
SC_KP5 = 0x4C,
SC_KP6 = 0x4D,
SC_KP_PLUS = 0x4E,
SC_KP1 = 0x4F,
SC_KP2 = 0x50,
SC_KP3 = 0x51,
SC_KP0 = 0x52,
SC_KP_PERIOD = 0x53,
SC_ALT_PRINT = 0x54,
SC_ANGLEBRACKET = 0x56,
SC_F11 = 0x57,
SC_F12 = 0x58,
SC_OEM_1 = 0x5a,
SC_OEM_2 = 0x5b,
SC_OEM_3 = 0x5c,
SC_ERASE_EOF = 0x5d,
SC_CLEAR = 0x5d,
SC_OEM_4 = 0x5e,
SC_OEM_5 = 0x5f,
SC_HELP = 0x63,
SC_F13 = 0x64,
SC_F14 = 0x65,
SC_F15 = 0x66,
SC_F16 = 0x67,
SC_F17 = 0x68,
SC_F18 = 0x69,
SC_F19 = 0x6a,
SC_F20 = 0x6b,
SC_F21 = 0x6c,
SC_F22 = 0x6d,
SC_F23 = 0x6e,
SC_OEM_6 = 0x6f,
SC_KATAKANA = 0x70,
SC_OEM_7 = 0x71,
SC_F24 = 0x76,
SC_SBCSCHAR = 0x77,
SC_CONVERT = 0x79,
SC_NONCONVERT = 0x7B,
SC_MEDIA_PREV = 0xE010,
SC_MEDIA_NEXT = 0xE019,
SC_KP_ENTER = 0xE01C,
SC_RCTRL = 0xE01D,
SC_VOLUME_MUTE = 0xE020,
SC_LAUNCH_APP2 = 0xE021,
SC_MEDIA_PLAY = 0xE022,
SC_MEDIA_STOP = 0xE024,
SC_VOLUME_DOWN = 0xE02E,
SC_VOLUME_UP = 0xE030,
SC_BROWSER_HOME = 0xE032,
SC_KP_DIVIDE = 0xE035,
SC_PRINT = 0xE037,
SC_RALT = 0xE038,
SC_BREAK = 0xE046,
SC_HOME = 0xE047,
SC_UP = 0xE048,
SC_PAGEUP = 0xE049,
SC_LEFT = 0xE04B,
SC_RIGHT = 0xE04D,
SC_END = 0xE04F,
SC_DOWN = 0xE050,
SC_PAGEDOWN = 0xE051,
SC_INSERT = 0xE052,
SC_DELETE = 0xE053,
SC_LSUPER = 0xE05B,
SC_RSUPER = 0xE05C,
SC_MENU = 0xE05D,
SC_POWER = 0xE05E,
SC_SLEEP = 0xE05F,
SC_WAKE = 0xE063,
SC_BROWSER_SEARCH = 0xE065,
SC_BROWSER_FAVORITES = 0xE066,
SC_BROWSER_REFRESH = 0xE067,
SC_BROWSER_STOP = 0xE068,
SC_BROWSER_FORWARD = 0xE069,
SC_BROWSER_BACK = 0xE06A,
SC_LAUNCH_APP1 = 0xE06B,
SC_LAUNCH_EMAIL = 0xE06C,
SC_LAUNCH_MEDIA = 0xE06D,
SC_PAUSE = 0xFFFE/*0xE11D45*/,
SC_LAST = 0xFFFF,
};
#endif
/**
* input_keymaps_init_keyboard_lut:
* @map : Keyboard map.