From acdb494ffd154386890f8cc4f29fd234a5e6d14e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 30 Jun 2015 14:39:39 -0400 Subject: [PATCH] X11: Don't ignore keyboard mapping changes. MappingNotify events don't have a window associated with them, so SDL was dropping these before the point where we would have handled them. --- src/video/x11/SDL_x11events.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index dfcdf7d0ec467..e826c4b5707f8 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -642,11 +642,17 @@ X11_DispatchEvent(_THIS) } } if (!data) { - /* The window for KeymapNotify events is 0 */ + /* The window for KeymapNotify, etc events is 0 */ if (xevent.type == KeymapNotify) { if (SDL_GetKeyboardFocus() != NULL) { X11_ReconcileKeyboardState(_this); } + } else if (xevent.type == MappingNotify) { + /* Has the keyboard layout changed? */ +#ifdef DEBUG_XEVENTS + printf("window %p: MappingNotify!\n", data); +#endif + X11_UpdateKeymap(_this); } return; } @@ -762,15 +768,6 @@ X11_DispatchEvent(_THIS) } break; - /* Has the keyboard layout changed? */ - case MappingNotify:{ -#ifdef DEBUG_XEVENTS - printf("window %p: MappingNotify!\n", data); -#endif - X11_UpdateKeymap(_this); - } - break; - /* Key press? */ case KeyPress:{ KeyCode keycode = xevent.xkey.keycode;