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
f312058776
commit
c68ba314db
|
@ -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"
|
||||||
|
@ -98,7 +99,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;
|
||||||
|
@ -108,7 +108,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;
|
||||||
|
@ -116,7 +120,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;
|
||||||
if (!(keymap = calloc(len, sizeof(KeySym))))
|
if (!(keymap = calloc(len, sizeof(KeySym))))
|
||||||
|
@ -128,7 +132,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));
|
||||||
|
@ -175,6 +179,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