mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-16 00:19:55 +00:00
Xi: add GrabButton and GrabKeysym code.
We don't do keycode grabs in XI2, they're pointless.
This commit is contained in:
parent
1b593ced17
commit
d220d6907d
9 changed files with 405 additions and 19 deletions
|
|
@ -2116,3 +2116,33 @@ XkbCopyDeviceKeymap(DeviceIntPtr dst, DeviceIntPtr src)
|
|||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
XkbGetKeysym(DeviceIntPtr dev, DeviceEvent *event)
|
||||
{
|
||||
XkbDescPtr xkb = dev->key->xkbInfo->desc;
|
||||
XkbKeyTypePtr kt;
|
||||
int group;
|
||||
int i, level = 0;
|
||||
int modmask;
|
||||
|
||||
group = event->group.base + event->group.latched + event->group.locked;
|
||||
|
||||
if (group >= xkb->ctrls->num_groups)
|
||||
group = XkbAdjustGroup(group, xkb->ctrls);
|
||||
|
||||
modmask = event->mods.base | event->mods.latched; /* don't care about
|
||||
locked mods */
|
||||
kt = XkbKeyKeyType(xkb, event->detail.key, group);
|
||||
|
||||
for (i = 0; i < kt->map_count; i++)
|
||||
{
|
||||
if (kt->map[i].mods.mask == modmask)
|
||||
{
|
||||
level = kt->map[i].level;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return XkbKeySymEntry(xkb, event->detail.key, level, group);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue