mirror of https://github.com/encounter/SDL.git
X11: Call XRefreshKeyboardMapping() when we get various MappingNotify events.
According to the Xlib docs, you need to do this or Xlib's internal state gets out of sync.
This commit is contained in:
parent
acdb494ffd
commit
20ec137763
|
@ -649,9 +649,15 @@ X11_DispatchEvent(_THIS)
|
|||
}
|
||||
} else if (xevent.type == MappingNotify) {
|
||||
/* Has the keyboard layout changed? */
|
||||
const int request = xevent.xmapping.request;
|
||||
|
||||
#ifdef DEBUG_XEVENTS
|
||||
printf("window %p: MappingNotify!\n", data);
|
||||
#endif
|
||||
if ((request == MappingKeyboard) || (request == MappingModifier)) {
|
||||
X11_XRefreshKeyboardMapping(&xevent.xmapping);
|
||||
}
|
||||
|
||||
X11_UpdateKeymap(_this);
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -152,6 +152,7 @@ SDL_X11_SYM(unsigned long,_XSetLastRequestRead,(Display* a,xGenericReply* b),(a,
|
|||
SDL_X11_SYM(SDL_X11_XSynchronizeRetType,XSynchronize,(Display* a,Bool b),(a,b),return)
|
||||
SDL_X11_SYM(SDL_X11_XESetWireToEventRetType,XESetWireToEvent,(Display* a,int b,SDL_X11_XESetWireToEventRetType c),(a,b,c),return)
|
||||
SDL_X11_SYM(SDL_X11_XESetEventToWireRetType,XESetEventToWire,(Display* a,int b,SDL_X11_XESetEventToWireRetType c),(a,b,c),return)
|
||||
SDL_X11_SYM(void,XRefreshKeyboardMapping,(XMappingEvent *a),(a),)
|
||||
|
||||
#if SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
|
||||
SDL_X11_SYM(Bool,XGetEventData,(Display* a,XGenericEventCookie* b),(a,b),return)
|
||||
|
|
Loading…
Reference in New Issue