Xi: add GrabButton and GrabKeysym code.

We don't do keycode grabs in XI2, they're pointless.
This commit is contained in:
Peter Hutterer 2009-05-04 17:38:02 +10:00
commit d220d6907d
9 changed files with 405 additions and 19 deletions

View file

@ -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);
}