From: Matteo Bruni <mbruni@codeweavers.com> --- dlls/winex11.drv/keyboard.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index a1a7bd852ac..1dbad186385 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -2122,8 +2122,9 @@ void x11drv_keyboard_init_thread( struct x11drv_thread_data *data ) HKL hkl; XkbUseExtension( data->display, NULL, NULL ); - XkbSelectEvents( data->display, XkbUseCoreKbd, XkbStateNotifyMask | XkbNewKeyboardNotifyMask, - XkbStateNotifyMask | XkbNewKeyboardNotifyMask ); + XkbSelectEvents( data->display, XkbUseCoreKbd, + XkbStateNotifyMask | XkbNewKeyboardNotifyMask | XkbMapNotifyMask, + XkbStateNotifyMask | XkbNewKeyboardNotifyMask | XkbMapNotifyMask ); XkbSetDetectableAutoRepeat( data->display, True, NULL ); init_keyboard_layouts( data->display ); status = XkbGetState( data->display, XkbUseCoreKbd, &xkb_state ); @@ -2173,6 +2174,11 @@ BOOL x11drv_xkb_event_handler( HWND dummy, XEvent *event ) return TRUE; x11drv_update_input_lang( e->new_kbd.display ); break; + case XkbMapNotify: + TRACE( "Received XkbMapNotify event, changed %#x\n", e->map.changed ); + XkbRefreshKeyboardMapping( &e->map ); + x11drv_update_input_lang( e->map.display ); + break; } return TRUE; } -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11367