(!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 "servermd.h" | ||||||
| 
 | 
 | ||||||
| #include "Xnest.h" | #include "Xnest.h" | ||||||
|  | #include "xnest-xcb.h" | ||||||
| 
 | 
 | ||||||
| #include "Display.h" | #include "Display.h" | ||||||
| #include "Screen.h" | #include "Screen.h" | ||||||
|  | @ -114,7 +115,6 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) | ||||||
|     XModifierKeymap *modifier_keymap; |     XModifierKeymap *modifier_keymap; | ||||||
|     KeySym *keymap; |     KeySym *keymap; | ||||||
|     int mapWidth; |     int mapWidth; | ||||||
|     int min_keycode, max_keycode; |  | ||||||
|     KeySymsRec keySyms; |     KeySymsRec keySyms; | ||||||
|     CARD8 modmap[MAP_LENGTH]; |     CARD8 modmap[MAP_LENGTH]; | ||||||
|     int i, j; |     int i, j; | ||||||
|  | @ -124,7 +124,11 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) | ||||||
| 
 | 
 | ||||||
|     switch (onoff) { |     switch (onoff) { | ||||||
|     case DEVICE_INIT: |     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 | #ifdef _XSERVER64 | ||||||
|         { |         { | ||||||
|             KeySym64 *keymap64; |             KeySym64 *keymap64; | ||||||
|  | @ -132,7 +136,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) | ||||||
| 
 | 
 | ||||||
|             keymap64 = XGetKeyboardMapping(xnestDisplay, |             keymap64 = XGetKeyboardMapping(xnestDisplay, | ||||||
|                                            min_keycode, |                                            min_keycode, | ||||||
|                                            max_keycode - min_keycode + 1, |                                            num_keycode, | ||||||
|                                            &mapWidth); |                                            &mapWidth); | ||||||
|             len = (max_keycode - min_keycode + 1) * mapWidth; |             len = (max_keycode - min_keycode + 1) * mapWidth; | ||||||
|             keymap = xallocarray(len, sizeof(KeySym)); |             keymap = xallocarray(len, sizeof(KeySym)); | ||||||
|  | @ -143,7 +147,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) | ||||||
| #else | #else | ||||||
|         keymap = XGetKeyboardMapping(xnestDisplay, |         keymap = XGetKeyboardMapping(xnestDisplay, | ||||||
|                                      min_keycode, |                                      min_keycode, | ||||||
|                                      max_keycode - min_keycode + 1, &mapWidth); |                                      num_keycode, &mapWidth); | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|         memset(modmap, 0, sizeof(modmap)); |         memset(modmap, 0, sizeof(modmap)); | ||||||
|  | @ -190,6 +194,7 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff) | ||||||
|         XkbFreeKeyboard(xkb, 0, FALSE); |         XkbFreeKeyboard(xkb, 0, FALSE); | ||||||
|         free(keymap); |         free(keymap); | ||||||
|         break; |         break; | ||||||
|  |     } | ||||||
|     case DEVICE_ON: |     case DEVICE_ON: | ||||||
|         xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK; |         xnestEventMask |= XNEST_KEYBOARD_EVENT_MASK; | ||||||
|         for (i = 0; i < xnestNumScreens; i++) |         for (i = 0; i < xnestNumScreens; i++) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue