mirror of
https://github.com/libsdl-org/SDL.git
synced 2026-06-07 07:00:48 +00:00
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
2 changed files with 7 additions and 0 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue