From 8205a253c4ac4b5e3b9952c6e7032b5163248f3f Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 13 Aug 2024 17:29:26 +0200 Subject: [PATCH] (!1654) Xnest: fetch keycode min/max from setup data Signed-off-by: Enrico Weigelt, metux IT consult --- hw/xnest/Keyboard.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/xnest/Keyboard.c b/hw/xnest/Keyboard.c index e1c42284f..daad11002 100644 --- a/hw/xnest/Keyboard.c +++ b/hw/xnest/Keyboard.c @@ -32,6 +32,7 @@ is" without express or implied warranty. #include "servermd.h" #include "Xnest.h" +#include "xnest-xcb.h" #include "Display.h" #include "Screen.h" @@ -117,7 +118,6 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) XModifierKeymap *modifier_keymap; KeySym *keymap; int mapWidth; - int min_keycode, max_keycode; KeySymsRec keySyms; CARD8 modmap[MAP_LENGTH]; int i, j; @@ -127,7 +127,11 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) switch (onoff) { case DEVICE_INIT: - XDisplayKeycodes(xnestDisplay, &min_keycode, &max_keycode); + { + const int min_keycode = xnestUpstreamInfo.setup->min_keycode; + const int max_keycode = xnestUpstreamInfo.setup->max_keycode; + const int num_keycode = max_keycode - min_keycode + 1; + #ifdef _XSERVER64 { KeySym64 *keymap64; @@ -135,7 +139,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) keymap64 = XGetKeyboardMapping(xnestDisplay, min_keycode, - max_keycode - min_keycode + 1, + num_keycode, &mapWidth); len = (max_keycode - min_keycode + 1) * mapWidth; keymap = xallocarray(len, sizeof(KeySym)); @@ -146,7 +150,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) #else keymap = XGetKeyboardMapping(xnestDisplay, min_keycode, - max_keycode - min_keycode + 1, &mapWidth); + num_keycode, &mapWidth); #endif memset(modmap, 0, sizeof(modmap)); @@ -193,6 +197,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) XkbFreeKeyboard(xkb, 0, FALSE); free(keymap); break; + } case DEVICE_ON: xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK; for (i = 0; i < xnestNumScreens; i++)