xfree86: wrap keyboard devices for XKB.

Call ProcessOtherEvents first, then for all keyboard devices let them be
wrapped by XKB. This way all XI events will go through XKB.

Note that the VCK is still not wrapped, so core events will bypass XKB.
This commit is contained in:
Peter Hutterer 2007-09-06 18:57:00 +09:30
parent 5ee409794e
commit d627061b48

View File

@ -179,20 +179,15 @@ xf86ActivateDevice(LocalDevicePtr local)
dev->coreEvents = local->flags & XI86_ALWAYS_CORE;
dev->spriteInfo->spriteOwner = !(local->flags & XI86_SHARED_POINTER);
RegisterOtherDevice(dev);
#ifdef XKB
if (!DeviceIsPointerType(dev))
if (!DeviceIsPointerType(dev) && !noXkbExtension)
{
/* FIXME: that's not the nice way to do it. XKB wraps the previously
* set procs, so if we don't have them here, our event will disappear
* in a black hole.*/
dev->public.processInputProc = CoreProcessKeyboardEvent;
dev->public.realInputProc = CoreProcessKeyboardEvent;
if (!noXkbExtension)
XkbSetExtension(dev, ProcessKeyboardEvent);
XkbSetExtension(dev, ProcessKeyboardEvent);
}
#endif
RegisterOtherDevice(dev);
if (serverGeneration == 1)
xf86Msg(X_INFO, "XINPUT: Adding extended input device \"%s\" (type: %s)\n",