From: Matteo Bruni <mbruni@codeweavers.com> --- dlls/winex11.drv/keyboard.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index 82faa5741be..2a8570fafb3 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -940,6 +940,7 @@ static const struct { }; static unsigned kbd_layout=0; /* index into above table of layouts */ static XkbDescRec *xkb_desc; +static unsigned int xkb_current_group; /* maybe more of these scancodes should be extended? */ /* extended must be set for ALT_R, CTRL_R, @@ -1562,6 +1563,7 @@ void X11DRV_InitKeyboard( Display *display ) char ckey[4]={0,0,0,0}; const char (*lkey)[MAIN_LEN][4]; char vkey_used[256] = { 0 }; + XkbStateRec xkb_state; /* Ranges of OEM, function key, and character virtual key codes. * Don't include those handled specially in X11DRV_ToUnicodeEx and @@ -1624,6 +1626,10 @@ void X11DRV_InitKeyboard( Display *display ) if (xkb_desc) TRACE("min_key_code %u, max_key_code %u\n", xkb_desc->min_key_code, xkb_desc->max_key_code); + XkbGetState( display, XkbUseCoreKbd, &xkb_state ); + xkb_current_group = xkb_state.group; + TRACE("xkb_current_group %u\n", xkb_current_group); + /* Detect the keyboard layout */ X11DRV_KEYBOARD_DetectLayout( display ); lkey = main_key_tab[kbd_layout].key; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10550