mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01: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
@ -649,9 +649,15 @@ X11_DispatchEvent(_THIS)
|
|||||||
}
|
}
|
||||||
} else if (xevent.type == MappingNotify) {
|
} else if (xevent.type == MappingNotify) {
|
||||||
/* Has the keyboard layout changed? */
|
/* Has the keyboard layout changed? */
|
||||||
|
const int request = xevent.xmapping.request;
|
||||||
|
|
||||||
#ifdef DEBUG_XEVENTS
|
#ifdef DEBUG_XEVENTS
|
||||||
printf("window %p: MappingNotify!\n", data);
|
printf("window %p: MappingNotify!\n", data);
|
||||||
#endif
|
#endif
|
||||||
|
if ((request == MappingKeyboard) || (request == MappingModifier)) {
|
||||||
|
X11_XRefreshKeyboardMapping(&xevent.xmapping);
|
||||||
|
}
|
||||||
|
|
||||||
X11_UpdateKeymap(_this);
|
X11_UpdateKeymap(_this);
|
||||||
}
|
}
|
||||||
return;
|
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_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_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(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
|
#if SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS
|
||||||
SDL_X11_SYM(Bool,XGetEventData,(Display* a,XGenericEventCookie* b),(a,b),return)
|
SDL_X11_SYM(Bool,XGetEventData,(Display* a,XGenericEventCookie* b),(a,b),return)
|
||||||
|
Loading…
Reference in New Issue
Block a user