(!1654) Xnest: replace XGetModifierMapping() by xcb_get_modifier_mapping()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
parent
c830d73bf5
commit
bfbc6752aa
|
@ -97,8 +97,6 @@ xnestChangeKeyboardControl(DeviceIntPtr pDev, KeybdCtrl * ctrl)
|
||||||
int
|
int
|
||||||
xnestKeyboardProc(DeviceIntPtr pDev, int onoff)
|
xnestKeyboardProc(DeviceIntPtr pDev, int onoff)
|
||||||
{
|
{
|
||||||
XModifierKeymap *modifier_keymap;
|
|
||||||
CARD8 modmap[MAP_LENGTH];
|
|
||||||
int i, j;
|
int i, j;
|
||||||
XKeyboardState values;
|
XKeyboardState values;
|
||||||
|
|
||||||
|
@ -126,19 +124,34 @@ xnestKeyboardProc(DeviceIntPtr pDev, int onoff)
|
||||||
.map = xcb_get_keyboard_mapping_keysyms(keymap_reply),
|
.map = xcb_get_keyboard_mapping_keysyms(keymap_reply),
|
||||||
};
|
};
|
||||||
|
|
||||||
memset(modmap, 0, sizeof(modmap));
|
xcb_generic_error_t *mod_err = NULL;
|
||||||
modifier_keymap = XGetModifierMapping(xnestDisplay);
|
xcb_get_modifier_mapping_reply_t *mod_reply = xcb_get_modifier_mapping_reply(
|
||||||
|
xnestUpstreamInfo.conn,
|
||||||
|
xcb_get_modifier_mapping(xnestUpstreamInfo.conn),
|
||||||
|
&mod_err);
|
||||||
|
|
||||||
|
if (mod_err) {
|
||||||
|
free(keymap_reply);
|
||||||
|
ErrorF("Couldn't get keyboard modifier mapping: %d\n", mod_err->error_code);
|
||||||
|
goto XkbError;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mod_reply) {
|
||||||
|
free(keymap_reply);
|
||||||
|
ErrorF("Couldn't get keyboard modifier mapping: no reply\n");
|
||||||
|
goto XkbError;
|
||||||
|
}
|
||||||
|
|
||||||
|
xcb_keycode_t *mod_keycodes = xcb_get_modifier_mapping_keycodes(mod_reply);
|
||||||
|
CARD8 modmap[MAP_LENGTH] = { 0 };
|
||||||
for (j = 0; j < 8; j++)
|
for (j = 0; j < 8; j++)
|
||||||
for (i = 0; i < modifier_keymap->max_keypermod; i++) {
|
for (i = 0; i < mod_reply->keycodes_per_modifier; i++) {
|
||||||
CARD8 keycode;
|
CARD8 keycode;
|
||||||
|
|
||||||
if ((keycode =
|
if ((keycode =
|
||||||
modifier_keymap->modifiermap[j *
|
mod_keycodes[j * mod_reply->keycodes_per_modifier + i]))
|
||||||
modifier_keymap->
|
|
||||||
max_keypermod + i]))
|
|
||||||
modmap[keycode] |= 1 << j;
|
modmap[keycode] |= 1 << j;
|
||||||
}
|
}
|
||||||
XFreeModifiermap(modifier_keymap);
|
|
||||||
|
|
||||||
InitKeyboardDeviceStruct(pDev, NULL,
|
InitKeyboardDeviceStruct(pDev, NULL,
|
||||||
xnestBell, xnestChangeKeyboardControl);
|
xnestBell, xnestChangeKeyboardControl);
|
||||||
|
|
Loading…
Reference in New Issue