Revert upstream commit 347519a4d8f3befb719f11eeb0121c736ce64dee,
which breaks keyboard input.

Index: gfx/common/x11_common.c
--- gfx/common/x11_common.c.orig
+++ gfx/common/x11_common.c
@@ -495,7 +495,7 @@ static enum retro_key x11_translate_keysym_to_rk(unsig
    return RETROK_UNKNOWN;
 }
 
-static void x11_handle_key_event(unsigned keycode, XEvent *event, XIC ic, bool filter)
+static void x11_handle_key_event(XEvent *event, XIC ic, bool filter)
 {
    int i;
    Status status;
@@ -546,9 +546,7 @@ static void x11_handle_key_event(unsigned keycode, XEv
    if (keysym >= XK_A && keysym <= XK_Z)
        keysym += XK_z - XK_Z;
 
-   /* Get the real keycode,
-      that correctly ignores international layouts as windows code does. */
-   key     = x11_translate_keysym_to_rk(keycode);
+   key   = input_keymaps_translate_keysym_to_rk(keysym);
 
    if (state & ShiftMask)
       mod |= RETROKMOD_SHIFT;
@@ -558,10 +556,10 @@ static void x11_handle_key_event(unsigned keycode, XEv
       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);
 
@@ -576,14 +574,9 @@ 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)
@@ -667,7 +660,7 @@ bool x11_alive(void *data)
             }
          case KeyPress:
             if (event.xkey.window == g_x11_win)
-               x11_handle_key_event(keycode, &event, g_x11_xic, filter);
+               x11_handle_key_event(&event, g_x11_xic, filter);
             break;
       }
    }
