(!1654) Xnest: fetch keycode min/max from setup data
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									f4fa2a78e2
								
							
						
					
					
						commit
						f3d4fdfc67
					
				|  | @ -29,6 +29,7 @@ is" without express or implied warranty. | |||
| #include "servermd.h" | ||||
| 
 | ||||
| #include "Xnest.h" | ||||
| #include "xnest-xcb.h" | ||||
| 
 | ||||
| #include "Display.h" | ||||
| #include "Screen.h" | ||||
|  | @ -114,7 +115,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; | ||||
|  | @ -124,7 +124,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; | ||||
|  | @ -132,7 +136,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)); | ||||
|  | @ -143,7 +147,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)); | ||||
|  | @ -190,6 +194,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++) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue