Rémi Bernon (@rbernon) commented about dlls/winex11.drv/keyboard.c:
+ XkbStateRec xkb_state; + struct layout *layout; + Status status; + + XkbUseExtension( data->display, NULL, NULL ); + XkbSetDetectableAutoRepeat( data->display, True, NULL ); + init_keyboard_layouts( data->display ); + status = XkbGetState( data->display, XkbUseCoreKbd, &xkb_state ); + xkb_group = status ? 0 : xkb_state.group; + TRACE( "current group %u (status %#x)\n", xkb_group, status ); + + layout = get_xkb_layout_by_group( xkb_group ); + + data->kbd_layout = get_hkl( layout->lang, layout->layout_id ); + if (activate_initial_layout) + NtUserActivateKeyboardLayout( data->kbd_layout, 0 ); It doesn't look right to activate the keyboard layout on every new GUI thread init.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/10963#note_140938