mirror of
https://github.com/libretro/RetroArch
synced 2025-03-21 22:20:59 +00:00
now X11 driver using keycodes instead keysyms, fixes international layouts problems.
This commit is contained in:
parent
1b439b7d09
commit
347519a4d8
@ -405,7 +405,7 @@ bool x11_get_metrics(void *data,
|
||||
return true;
|
||||
}
|
||||
|
||||
static void x11_handle_key_event(XEvent *event, XIC ic, bool filter)
|
||||
static void x11_handle_key_event(unsigned keycode, XEvent *event, XIC ic, bool filter)
|
||||
{
|
||||
int i;
|
||||
Status status;
|
||||
@ -419,6 +419,7 @@ static void x11_handle_key_event(XEvent *event, XIC ic, bool filter)
|
||||
|
||||
chars[0] = '\0';
|
||||
|
||||
/* this code generates the localized chars using keysyms */
|
||||
if (!filter)
|
||||
{
|
||||
if (down)
|
||||
@ -454,8 +455,10 @@ static void x11_handle_key_event(XEvent *event, XIC ic, bool filter)
|
||||
* to feed it keysyms anyway, so here is a little hack... */
|
||||
if (keysym >= XK_A && keysym <= XK_Z)
|
||||
keysym += XK_z - XK_Z;
|
||||
|
||||
key = input_keymaps_translate_keysym_to_rk(keysym);
|
||||
|
||||
/* Get the real keycode,
|
||||
that correctly ignores international layouts as windows code does. */
|
||||
key = input_keymaps_translate_keysym_to_rk(keycode);
|
||||
|
||||
if (state & ShiftMask)
|
||||
mod |= RETROKMOD_SHIFT;
|
||||
@ -465,10 +468,10 @@ static void x11_handle_key_event(XEvent *event, XIC ic, bool filter)
|
||||
mod |= RETROKMOD_CTRL;
|
||||
if (state & Mod1Mask)
|
||||
mod |= RETROKMOD_ALT;
|
||||
if (state & Mod2Mask)
|
||||
mod |= RETROKMOD_NUMLOCK;
|
||||
if (state & Mod4Mask)
|
||||
mod |= RETROKMOD_META;
|
||||
if (IsKeypadKey(keysym))
|
||||
mod |= RETROKMOD_NUMLOCK;
|
||||
|
||||
input_keyboard_event(down, key, chars[0], mod, RETRO_DEVICE_KEYBOARD);
|
||||
|
||||
@ -483,9 +486,14 @@ bool x11_alive(void *data)
|
||||
{
|
||||
XEvent event;
|
||||
bool filter = false;
|
||||
unsigned keycode = 0;
|
||||
|
||||
/* Can get events from older windows. Check this. */
|
||||
XNextEvent(g_x11_dpy, &event);
|
||||
|
||||
/* IMPORTANT - Get keycode before XFilterEvent
|
||||
because the event is localizated after the call */
|
||||
keycode = event.xkey.keycode;
|
||||
filter = XFilterEvent(&event, g_x11_win);
|
||||
|
||||
switch (event.type)
|
||||
@ -548,7 +556,7 @@ bool x11_alive(void *data)
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
if (event.xkey.window == g_x11_win)
|
||||
x11_handle_key_event(&event, g_x11_xic, filter);
|
||||
x11_handle_key_event(keycode, &event, g_x11_xic, filter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -75,7 +75,7 @@ static void *x_input_init(const char *joypad_driver)
|
||||
|
||||
static bool x_keyboard_pressed(x11_input_t *x11, unsigned key)
|
||||
{
|
||||
int keycode = XKeysymToKeycode(x11->display, rarch_keysym_lut[(enum retro_key)key]);
|
||||
int keycode = rarch_keysym_lut[(enum retro_key)key];
|
||||
return x11->state[keycode >> 3] & (1 << (keycode & 7));
|
||||
}
|
||||
|
||||
@ -155,23 +155,20 @@ static int16_t x_pressed_analog(x11_input_t *x11,
|
||||
unsigned id_plus = 0;
|
||||
int id_minus_key = 0;
|
||||
int id_plus_key = 0;
|
||||
unsigned sym = 0;
|
||||
int keycode = 0;
|
||||
unsigned keycode = 0;
|
||||
|
||||
input_conv_analog_id_to_bind_id(idx, id, &id_minus, &id_plus);
|
||||
|
||||
id_minus_key = binds[id_minus].key;
|
||||
id_plus_key = binds[id_plus].key;
|
||||
|
||||
sym = rarch_keysym_lut[(enum retro_key)id_minus_key];
|
||||
keycode = XKeysymToKeycode(x11->display, sym);
|
||||
keycode = rarch_keysym_lut[(enum retro_key)id_minus_key];
|
||||
if ( binds[id_minus].valid
|
||||
&& (id_minus_key < RETROK_LAST)
|
||||
&& (x11->state[keycode >> 3] & (1 << (keycode & 7))))
|
||||
pressed_minus = -0x7fff;
|
||||
|
||||
sym = rarch_keysym_lut[(enum retro_key)id_plus_key];
|
||||
keycode = XKeysymToKeycode(x11->display, sym);
|
||||
keycode = rarch_keysym_lut[(enum retro_key)id_plus_key];
|
||||
if ( binds[id_plus].valid
|
||||
&& (id_plus_key < RETROK_LAST)
|
||||
&& (x11->state[keycode >> 3] & (1 << (keycode & 7))))
|
||||
|
176
input/include/xfree86_keycodes.h
Normal file
176
input/include/xfree86_keycodes.h
Normal file
@ -0,0 +1,176 @@
|
||||
/* RetroArch - A frontend for libretro.
|
||||
* Copyright (C) 2010-2014 - Hans-Kristian Arntzen
|
||||
* Copyright (C) 2011-2017 - Daniel De Matteis
|
||||
*
|
||||
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
||||
* of the GNU General Public License as published by the Free Software Found-
|
||||
* ation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with RetroArch.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* generated from /usr/share/X11/xkb/keycodes/evdev */
|
||||
|
||||
#ifndef __XFREE86_KEYCODES__H
|
||||
#define __XFREE86_KEYCODES__H
|
||||
|
||||
enum xfvk_key
|
||||
{
|
||||
XFVK_UNKNOWN = 0,
|
||||
XFVK_FIRST = 0,
|
||||
|
||||
XFVK_ESC = 9,
|
||||
XFVK_FK01 = 67,
|
||||
XFVK_FK02 = 68,
|
||||
XFVK_FK03 = 69,
|
||||
XFVK_FK04 = 70,
|
||||
XFVK_FK05 = 71,
|
||||
XFVK_FK06 = 72,
|
||||
XFVK_FK07 = 73,
|
||||
XFVK_FK08 = 74,
|
||||
XFVK_FK09 = 75,
|
||||
XFVK_FK10 = 76,
|
||||
XFVK_FK11 = 95,
|
||||
XFVK_FK12 = 96,
|
||||
|
||||
// Added for pc105 compatibility
|
||||
XFVK_LSGT = 94,
|
||||
XFVK_TLDE = 49,
|
||||
XFVK_AE01 = 10,
|
||||
XFVK_AE02 = 11,
|
||||
XFVK_AE03 = 12,
|
||||
XFVK_AE04 = 13,
|
||||
XFVK_AE05 = 14,
|
||||
XFVK_AE06 = 15,
|
||||
XFVK_AE07 = 16,
|
||||
XFVK_AE08 = 17,
|
||||
XFVK_AE09 = 18,
|
||||
XFVK_AE10 = 19,
|
||||
XFVK_AE11 = 20,
|
||||
XFVK_AE12 = 21,
|
||||
XFVK_BKSP = 22,
|
||||
|
||||
XFVK_TAB = 23,
|
||||
XFVK_AD01 = 24,
|
||||
XFVK_AD02 = 25,
|
||||
XFVK_AD03 = 26,
|
||||
XFVK_AD04 = 27,
|
||||
XFVK_AD05 = 28,
|
||||
XFVK_AD06 = 29,
|
||||
XFVK_AD07 = 30,
|
||||
XFVK_AD08 = 31,
|
||||
XFVK_AD09 = 32,
|
||||
XFVK_AD10 = 33,
|
||||
XFVK_AD11 = 34,
|
||||
XFVK_AD12 = 35,
|
||||
XFVK_BKSL = 51,
|
||||
XFVK_AC12 = XFVK_BKSL,
|
||||
XFVK_RTRN = 36,
|
||||
|
||||
XFVK_CAPS = 66,
|
||||
XFVK_AC01 = 38,
|
||||
XFVK_AC02 = 39,
|
||||
XFVK_AC03 = 40,
|
||||
XFVK_AC04 = 41,
|
||||
XFVK_AC05 = 42,
|
||||
XFVK_AC06 = 43,
|
||||
XFVK_AC07 = 44,
|
||||
XFVK_AC08 = 45,
|
||||
XFVK_AC09 = 46,
|
||||
XFVK_AC10 = 47,
|
||||
XFVK_AC11 = 48,
|
||||
|
||||
XFVK_LFSH = 50,
|
||||
XFVK_AB01 = 52,
|
||||
XFVK_AB02 = 53,
|
||||
XFVK_AB03 = 54,
|
||||
XFVK_AB04 = 55,
|
||||
XFVK_AB05 = 56,
|
||||
XFVK_AB06 = 57,
|
||||
XFVK_AB07 = 58,
|
||||
XFVK_AB08 = 59,
|
||||
XFVK_AB09 = 60,
|
||||
XFVK_AB10 = 61,
|
||||
XFVK_RTSH = 62,
|
||||
|
||||
XFVK_LALT = 64,
|
||||
XFVK_LCTL = 37,
|
||||
XFVK_SPCE = 65,
|
||||
XFVK_RCTL = 105,
|
||||
XFVK_RALT = 108,
|
||||
|
||||
XFVK_PRSC = 107,
|
||||
// SYRQ = 107,
|
||||
XFVK_SCLK = 78,
|
||||
XFVK_PAUS = 127,
|
||||
// BRK = 419,
|
||||
|
||||
XFVK_INS = 118,
|
||||
XFVK_HOME = 110,
|
||||
XFVK_PGUP = 112,
|
||||
XFVK_DELE = 119,
|
||||
XFVK_END = 115,
|
||||
XFVK_PGDN = 117,
|
||||
|
||||
XFVK_UP = 111,
|
||||
XFVK_LEFT = 113,
|
||||
XFVK_DOWN = 116,
|
||||
XFVK_RGHT = 114,
|
||||
|
||||
XFVK_NMLK = 77,
|
||||
XFVK_KPDV = 106,
|
||||
XFVK_KPMU = 63,
|
||||
XFVK_KPSU = 82,
|
||||
|
||||
XFVK_KP7 = 79,
|
||||
XFVK_KP8 = 80,
|
||||
XFVK_KP9 = 81,
|
||||
XFVK_KPAD = 86,
|
||||
|
||||
XFVK_KP4 = 83,
|
||||
XFVK_KP5 = 84,
|
||||
XFVK_KP6 = 85,
|
||||
|
||||
XFVK_KP1 = 87,
|
||||
XFVK_KP2 = 88,
|
||||
XFVK_KP3 = 89,
|
||||
XFVK_KPEN = 104,
|
||||
|
||||
XFVK_KP0 = 90,
|
||||
XFVK_KPDL = 91,
|
||||
XFVK_KPEQ = 125,
|
||||
|
||||
|
||||
// Microsoft keyboard extra keys
|
||||
XFVK_LWIN = 133,
|
||||
XFVK_RWIN = 134,
|
||||
XFVK_COMP = 135,
|
||||
XFVK_MENU = XFVK_COMP,
|
||||
|
||||
// Extended keys
|
||||
XFVK_CALC = 148,
|
||||
|
||||
XFVK_FK13 = 191,
|
||||
XFVK_FK14 = 192,
|
||||
XFVK_FK15 = 193,
|
||||
XFVK_FK16 = 194,
|
||||
XFVK_FK17 = 195,
|
||||
XFVK_FK18 = 196,
|
||||
XFVK_FK19 = 197,
|
||||
XFVK_FK20 = 198,
|
||||
XFVK_FK21 = 199,
|
||||
XFVK_FK22 = 200,
|
||||
XFVK_FK23 = 201,
|
||||
XFVK_FK24 = 202,
|
||||
|
||||
XFVK_LAST,
|
||||
XFVK_DUMMY = 255
|
||||
};
|
||||
|
||||
#endif /* __XFREE86_KEYCODES__H */
|
||||
|
@ -50,9 +50,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_X11
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/keysym.h>
|
||||
#include "input/include/xfree86_keycodes.h"
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DINPUT
|
||||
@ -693,156 +691,123 @@ const struct rarch_key_map rarch_key_map_wiiu[] = {
|
||||
|
||||
#ifdef HAVE_X11
|
||||
|
||||
#ifndef XF68XK_Calculator
|
||||
#define XF86XK_Calculator 0x1008FF1D
|
||||
#endif
|
||||
|
||||
const struct rarch_key_map rarch_key_map_x11[] = {
|
||||
{ XK_BackSpace, RETROK_BACKSPACE },
|
||||
{ XK_Tab, RETROK_TAB },
|
||||
{ XK_Clear, RETROK_CLEAR },
|
||||
{ XK_Return, RETROK_RETURN },
|
||||
{ XK_Pause, RETROK_PAUSE },
|
||||
{ XK_Escape, RETROK_ESCAPE },
|
||||
{ XK_space, RETROK_SPACE },
|
||||
{ XK_exclam, RETROK_EXCLAIM },
|
||||
{ XK_quotedbl, RETROK_QUOTEDBL },
|
||||
{ XK_numbersign, RETROK_HASH },
|
||||
{ XK_dollar, RETROK_DOLLAR },
|
||||
{ XK_ampersand, RETROK_AMPERSAND },
|
||||
{ XK_apostrophe, RETROK_QUOTE },
|
||||
{ XK_parenleft, RETROK_LEFTPAREN },
|
||||
{ XK_parenright, RETROK_RIGHTPAREN },
|
||||
{ XK_asterisk, RETROK_ASTERISK },
|
||||
{ XK_plus, RETROK_PLUS },
|
||||
{ XK_comma, RETROK_COMMA },
|
||||
{ XK_minus, RETROK_MINUS },
|
||||
{ XK_period, RETROK_PERIOD },
|
||||
{ XK_slash, RETROK_SLASH },
|
||||
{ XK_0, RETROK_0 },
|
||||
{ XK_1, RETROK_1 },
|
||||
{ XK_2, RETROK_2 },
|
||||
{ XK_3, RETROK_3 },
|
||||
{ XK_4, RETROK_4 },
|
||||
{ XK_5, RETROK_5 },
|
||||
{ XK_6, RETROK_6 },
|
||||
{ XK_7, RETROK_7 },
|
||||
{ XK_8, RETROK_8 },
|
||||
{ XK_9, RETROK_9 },
|
||||
{ XK_colon, RETROK_COLON },
|
||||
{ XK_semicolon, RETROK_SEMICOLON },
|
||||
{ XK_less, RETROK_LESS },
|
||||
{ XK_equal, RETROK_EQUALS },
|
||||
{ XK_greater, RETROK_GREATER },
|
||||
{ XK_question, RETROK_QUESTION },
|
||||
{ XK_at, RETROK_AT },
|
||||
{ XK_bracketleft, RETROK_LEFTBRACKET },
|
||||
{ XK_backslash, RETROK_BACKSLASH },
|
||||
{ XK_bracketright, RETROK_RIGHTBRACKET },
|
||||
{ XK_dead_circumflex, RETROK_CARET },
|
||||
{ XK_underscore, RETROK_UNDERSCORE },
|
||||
{ XK_grave, RETROK_BACKQUOTE },
|
||||
{ XK_a, RETROK_a },
|
||||
{ XK_b, RETROK_b },
|
||||
{ XK_c, RETROK_c },
|
||||
{ XK_d, RETROK_d },
|
||||
{ XK_e, RETROK_e },
|
||||
{ XK_f, RETROK_f },
|
||||
{ XK_g, RETROK_g },
|
||||
{ XK_h, RETROK_h },
|
||||
{ XK_i, RETROK_i },
|
||||
{ XK_j, RETROK_j },
|
||||
{ XK_k, RETROK_k },
|
||||
{ XK_l, RETROK_l },
|
||||
{ XK_m, RETROK_m },
|
||||
{ XK_n, RETROK_n },
|
||||
{ XK_o, RETROK_o },
|
||||
{ XK_p, RETROK_p },
|
||||
{ XK_q, RETROK_q },
|
||||
{ XK_r, RETROK_r },
|
||||
{ XK_s, RETROK_s },
|
||||
{ XK_t, RETROK_t },
|
||||
{ XK_u, RETROK_u },
|
||||
{ XK_v, RETROK_v },
|
||||
{ XK_w, RETROK_w },
|
||||
{ XK_x, RETROK_x },
|
||||
{ XK_y, RETROK_y },
|
||||
{ XK_z, RETROK_z },
|
||||
{ XK_Delete, RETROK_DELETE },
|
||||
{ XK_KP_0, RETROK_KP0 },
|
||||
{ XK_KP_1, RETROK_KP1 },
|
||||
{ XK_KP_2, RETROK_KP2 },
|
||||
{ XK_KP_3, RETROK_KP3 },
|
||||
{ XK_KP_4, RETROK_KP4 },
|
||||
{ XK_KP_5, RETROK_KP5 },
|
||||
{ XK_KP_6, RETROK_KP6 },
|
||||
{ XK_KP_7, RETROK_KP7 },
|
||||
{ XK_KP_8, RETROK_KP8 },
|
||||
{ XK_KP_9, RETROK_KP9 },
|
||||
{ XK_KP_Decimal, RETROK_KP_PERIOD },
|
||||
{ XK_KP_Divide, RETROK_KP_DIVIDE },
|
||||
{ XK_KP_Multiply, RETROK_KP_MULTIPLY },
|
||||
{ XK_KP_Subtract, RETROK_KP_MINUS },
|
||||
{ XK_KP_Add, RETROK_KP_PLUS },
|
||||
{ XK_KP_Enter, RETROK_KP_ENTER },
|
||||
{ XK_KP_Equal, RETROK_KP_EQUALS },
|
||||
{ XK_Up, RETROK_UP },
|
||||
{ XK_Down, RETROK_DOWN },
|
||||
{ XK_Right, RETROK_RIGHT },
|
||||
{ XK_Left, RETROK_LEFT },
|
||||
{ XK_Insert, RETROK_INSERT },
|
||||
{ XK_Home, RETROK_HOME },
|
||||
{ XK_End, RETROK_END },
|
||||
{ XK_Page_Up, RETROK_PAGEUP },
|
||||
{ XK_Page_Down, RETROK_PAGEDOWN },
|
||||
{ XK_F1, RETROK_F1 },
|
||||
{ XK_F2, RETROK_F2 },
|
||||
{ XK_F3, RETROK_F3 },
|
||||
{ XK_F4, RETROK_F4 },
|
||||
{ XK_F5, RETROK_F5 },
|
||||
{ XK_F6, RETROK_F6 },
|
||||
{ XK_F7, RETROK_F7 },
|
||||
{ XK_F8, RETROK_F8 },
|
||||
{ XK_F9, RETROK_F9 },
|
||||
{ XK_F10, RETROK_F10 },
|
||||
{ XK_F11, RETROK_F11 },
|
||||
{ XK_F12, RETROK_F12 },
|
||||
{ XK_F13, RETROK_F13 },
|
||||
{ XK_F14, RETROK_F14 },
|
||||
{ XK_F15, RETROK_F15 },
|
||||
{ XK_Num_Lock, RETROK_NUMLOCK },
|
||||
{ XK_Caps_Lock, RETROK_CAPSLOCK },
|
||||
{ XK_Scroll_Lock, RETROK_SCROLLOCK },
|
||||
{ XK_Shift_R, RETROK_RSHIFT },
|
||||
{ XK_Shift_L, RETROK_LSHIFT },
|
||||
{ XK_Control_R, RETROK_RCTRL },
|
||||
{ XK_Control_L, RETROK_LCTRL },
|
||||
{ XK_Alt_R, RETROK_RALT },
|
||||
{ XK_Alt_L, RETROK_LALT },
|
||||
{ XK_Meta_R, RETROK_RMETA },
|
||||
{ XK_Meta_L, RETROK_LMETA },
|
||||
{ XK_Super_L, RETROK_LSUPER },
|
||||
{ XK_Super_R, RETROK_RSUPER },
|
||||
{ XK_Mode_switch, RETROK_MODE },
|
||||
{ XK_Multi_key, RETROK_COMPOSE },
|
||||
{ XK_Help, RETROK_HELP },
|
||||
{ XK_Print, RETROK_PRINT },
|
||||
{ XK_Sys_Req, RETROK_SYSREQ },
|
||||
{ XK_Break, RETROK_BREAK },
|
||||
{ XK_Menu, RETROK_MENU },
|
||||
/*{ ?, RETROK_POWER },*/
|
||||
{ XK_EuroSign, RETROK_EURO },
|
||||
{ XK_Undo, RETROK_UNDO },
|
||||
/*{ ?, RETROK_OEM_102 },*/
|
||||
/* FIXME(shizeeg): RetroArch can't handle these buttons atm.
|
||||
* Do we really need RETROK_KP_INSERT, RETROK_KP_END,
|
||||
* RETROK_KP_DOWN, RETROK_KP_PAGEDOWN ???
|
||||
*
|
||||
{ XK_KP_Insert, RETROK_KP0 },
|
||||
{ XK_KP_End, RETROK_KP1 },
|
||||
{ XK_KP_Down, RETROK_KP2 },
|
||||
{ XK_KP_Page_Down, RETROK_KP3 },*/
|
||||
{ XF86XK_Calculator, RETROK_HELP },
|
||||
|
||||
{ XFVK_ESC, RETROK_ESCAPE },
|
||||
{ XFVK_FK01, RETROK_F1 },
|
||||
{ XFVK_FK02, RETROK_F2 },
|
||||
{ XFVK_FK03, RETROK_F3 },
|
||||
{ XFVK_FK04, RETROK_F4 },
|
||||
{ XFVK_FK05, RETROK_F5 },
|
||||
{ XFVK_FK06, RETROK_F6 },
|
||||
{ XFVK_FK07, RETROK_F7 },
|
||||
{ XFVK_FK08, RETROK_F8 },
|
||||
{ XFVK_FK09, RETROK_F9 },
|
||||
{ XFVK_FK10, RETROK_F10 },
|
||||
{ XFVK_FK11, RETROK_F11 },
|
||||
{ XFVK_FK12, RETROK_F12 },
|
||||
|
||||
{ XFVK_TLDE, RETROK_BACKQUOTE },
|
||||
{ XFVK_AE01, RETROK_1 },
|
||||
{ XFVK_AE02, RETROK_2 },
|
||||
{ XFVK_AE03, RETROK_3 },
|
||||
{ XFVK_AE04, RETROK_4 },
|
||||
{ XFVK_AE05, RETROK_5 },
|
||||
{ XFVK_AE06, RETROK_6 },
|
||||
{ XFVK_AE07, RETROK_7 },
|
||||
{ XFVK_AE08, RETROK_8 },
|
||||
{ XFVK_AE09, RETROK_9 },
|
||||
{ XFVK_AE10, RETROK_0 },
|
||||
{ XFVK_AE11, RETROK_MINUS },
|
||||
{ XFVK_AE12, RETROK_EQUALS },
|
||||
{ XFVK_BKSP, RETROK_BACKSPACE },
|
||||
|
||||
{ XFVK_TAB, RETROK_TAB },
|
||||
{ XFVK_AD01, RETROK_q },
|
||||
{ XFVK_AD02, RETROK_w },
|
||||
{ XFVK_AD03, RETROK_e },
|
||||
{ XFVK_AD04, RETROK_r },
|
||||
{ XFVK_AD05, RETROK_t },
|
||||
{ XFVK_AD06, RETROK_y },
|
||||
{ XFVK_AD07, RETROK_u },
|
||||
{ XFVK_AD08, RETROK_i },
|
||||
{ XFVK_AD09, RETROK_o },
|
||||
{ XFVK_AD10, RETROK_p },
|
||||
{ XFVK_AD11, RETROK_LEFTBRACKET },
|
||||
{ XFVK_AD12, RETROK_RIGHTBRACKET },
|
||||
{ XFVK_RTRN, RETROK_RETURN },
|
||||
|
||||
{ XFVK_CAPS, RETROK_CAPSLOCK },
|
||||
{ XFVK_AC01, RETROK_a },
|
||||
{ XFVK_AC02, RETROK_s },
|
||||
{ XFVK_AC03, RETROK_d },
|
||||
{ XFVK_AC04, RETROK_f },
|
||||
{ XFVK_AC05, RETROK_g },
|
||||
{ XFVK_AC06, RETROK_h },
|
||||
{ XFVK_AC07, RETROK_j },
|
||||
{ XFVK_AC08, RETROK_k },
|
||||
{ XFVK_AC09, RETROK_l },
|
||||
{ XFVK_AC10, RETROK_SEMICOLON },
|
||||
{ XFVK_AC11, RETROK_QUOTE },
|
||||
{ XFVK_AC12, RETROK_BACKSLASH },
|
||||
|
||||
{ XFVK_LFSH, RETROK_LSHIFT },
|
||||
{ XFVK_AB01, RETROK_z },
|
||||
{ XFVK_AB02, RETROK_x },
|
||||
{ XFVK_AB03, RETROK_c },
|
||||
{ XFVK_AB04, RETROK_v },
|
||||
{ XFVK_AB05, RETROK_b },
|
||||
{ XFVK_AB06, RETROK_n },
|
||||
{ XFVK_AB07, RETROK_m },
|
||||
{ XFVK_AB08, RETROK_COMMA },
|
||||
{ XFVK_AB09, RETROK_PERIOD },
|
||||
{ XFVK_AB10, RETROK_SLASH },
|
||||
{ XFVK_RTSH, RETROK_RSHIFT },
|
||||
|
||||
{ XFVK_LALT, RETROK_LALT },
|
||||
{ XFVK_LCTL, RETROK_LCTRL },
|
||||
{ XFVK_SPCE, RETROK_SPACE },
|
||||
{ XFVK_RCTL, RETROK_RCTRL },
|
||||
{ XFVK_RALT, RETROK_RALT },
|
||||
|
||||
{ XFVK_LSGT, RETROK_OEM_102 },
|
||||
{ XFVK_MENU, RETROK_MENU },
|
||||
{ XFVK_LWIN, RETROK_LSUPER },
|
||||
{ XFVK_RWIN, RETROK_RSUPER },
|
||||
{ XFVK_CALC, RETROK_HELP },
|
||||
|
||||
{ XFVK_PRSC, RETROK_PRINT },
|
||||
{ XFVK_SCLK, RETROK_SCROLLOCK },
|
||||
{ XFVK_PAUS, RETROK_PAUSE },
|
||||
{ XFVK_INS, RETROK_INSERT },
|
||||
{ XFVK_HOME, RETROK_HOME },
|
||||
{ XFVK_PGUP, RETROK_PAGEUP },
|
||||
{ XFVK_DELE, RETROK_DELETE },
|
||||
{ XFVK_END, RETROK_END },
|
||||
{ XFVK_PGDN, RETROK_PAGEDOWN },
|
||||
{ XFVK_UP, RETROK_UP },
|
||||
{ XFVK_LEFT, RETROK_LEFT },
|
||||
{ XFVK_DOWN, RETROK_DOWN },
|
||||
{ XFVK_RGHT, RETROK_RIGHT },
|
||||
|
||||
{ XFVK_NMLK, RETROK_NUMLOCK },
|
||||
{ XFVK_KPDV, RETROK_KP_DIVIDE },
|
||||
{ XFVK_KPMU, RETROK_KP_MULTIPLY },
|
||||
{ XFVK_KPSU, RETROK_KP_MINUS },
|
||||
{ XFVK_KP7, RETROK_KP7 },
|
||||
{ XFVK_KP8, RETROK_KP8 },
|
||||
{ XFVK_KP9, RETROK_KP9 },
|
||||
{ XFVK_KPAD, RETROK_KP_PLUS },
|
||||
{ XFVK_KP4, RETROK_KP4 },
|
||||
{ XFVK_KP5, RETROK_KP5 },
|
||||
{ XFVK_KP6, RETROK_KP6 },
|
||||
{ XFVK_KP1, RETROK_KP1 },
|
||||
{ XFVK_KP2, RETROK_KP2 },
|
||||
{ XFVK_KP3, RETROK_KP3 },
|
||||
{ XFVK_KPEN, RETROK_KP_ENTER },
|
||||
{ XFVK_KP0, RETROK_KP0 },
|
||||
{ XFVK_KPDL, RETROK_KP_PERIOD },
|
||||
{ XFVK_KPEQ, RETROK_KP_EQUALS },
|
||||
|
||||
{ 0, RETROK_UNKNOWN },
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user