From 6c3bf5c27ebdf0ffed6dc8160a63df1ec968daaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Fri, 15 May 2015 09:09:08 -0300 Subject: [PATCH 1/2] (x11) Set RETROKMOD_NUMLOCK on keypad-triggered key events --- input/drivers_keyboard/keyboard_event_x11.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/input/drivers_keyboard/keyboard_event_x11.c b/input/drivers_keyboard/keyboard_event_x11.c index 41c99a12db..fd89d4af44 100644 --- a/input/drivers_keyboard/keyboard_event_x11.c +++ b/input/drivers_keyboard/keyboard_event_x11.c @@ -85,14 +85,13 @@ void x11_handle_key_event(XEvent *event, XIC ic, bool filter) char keybuf[32] = {0}; uint32_t chars[32] = {0}; - bool down = event->type == KeyPress; - unsigned key = input_keymaps_translate_keysym_to_rk(XLookupKeysym(&event->xkey, 0)); - int num = 0; + bool down = event->type == KeyPress; + unsigned key = input_keymaps_translate_keysym_to_rk(XLookupKeysym(&event->xkey, 0)); + int num = 0; + KeySym keysym = 0; if (down && !filter) { - KeySym keysym = 0; - #ifdef X_HAVE_UTF8_STRING Status status = 0; @@ -124,6 +123,8 @@ void x11_handle_key_event(XEvent *event, XIC ic, bool filter) mod |= RETROKMOD_ALT; if (state & Mod4Mask) mod |= RETROKMOD_META; + if (IsKeypadKey(keysym)) + mod |= RETROKMOD_NUMLOCK; input_keyboard_event(down, key, chars[0], mod, RETRO_DEVICE_KEYBOARD); From ae52f0f5c9da7140ae8955198e211c7f9012eb46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Higor=20Eur=C3=ADpedes?= Date: Fri, 15 May 2015 10:49:44 -0300 Subject: [PATCH 2/2] (x11) Fix binding of numpad keys --- input/drivers_keyboard/keyboard_event_x11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/input/drivers_keyboard/keyboard_event_x11.c b/input/drivers_keyboard/keyboard_event_x11.c index fd89d4af44..9acd323b62 100644 --- a/input/drivers_keyboard/keyboard_event_x11.c +++ b/input/drivers_keyboard/keyboard_event_x11.c @@ -80,13 +80,12 @@ static size_t conv_utf8_utf32(uint32_t *out, void x11_handle_key_event(XEvent *event, XIC ic, bool filter) { int i; - unsigned state; + unsigned state, key; uint16_t mod = 0; char keybuf[32] = {0}; uint32_t chars[32] = {0}; bool down = event->type == KeyPress; - unsigned key = input_keymaps_translate_keysym_to_rk(XLookupKeysym(&event->xkey, 0)); int num = 0; KeySym keysym = 0; @@ -111,6 +110,7 @@ void x11_handle_key_event(XEvent *event, XIC ic, bool filter) #endif } + key = input_keymaps_translate_keysym_to_rk(keysym); state = event->xkey.state; if (state & ShiftMask)