From: Matteo Bruni <mbruni@codeweavers.com> --- dlls/winex11.drv/keyboard.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c index e2281bef017..82faa5741be 100644 --- a/dlls/winex11.drv/keyboard.c +++ b/dlls/winex11.drv/keyboard.c @@ -939,6 +939,7 @@ static const struct { {0, NULL, NULL, NULL, NULL} /* sentinel */ }; static unsigned kbd_layout=0; /* index into above table of layouts */ +static XkbDescRec *xkb_desc; /* maybe more of these scancodes should be extended? */ /* extended must be set for ALT_R, CTRL_R, @@ -1611,6 +1612,18 @@ void X11DRV_InitKeyboard( Display *display ) } XFreeModifiermap(mmp); + if (xkb_desc) + { + XkbFreeClientMap( xkb_desc, 0, True ); + XkbFreeKeyboard( xkb_desc, XkbNamesMask, True ); + xkb_desc = NULL; + } + + TRACE("min_keycode %u, max_keycode %u\n", min_keycode, max_keycode); + xkb_desc = XkbGetMap( display, XkbAllClientInfoMask, XkbUseCoreKbd ); + if (xkb_desc) + TRACE("min_key_code %u, max_key_code %u\n", xkb_desc->min_key_code, xkb_desc->max_key_code); + /* 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