After a whole lot of digging, I've managed to trace this problem to its
source. Basically it's XKB that's sending events even though the
extension is disabled, resulting in more or less a random type value
(which on this systems happens to be interpreted as XError).

On 1.5 and 1.6, the code needs to check for noXkbExtension (see patch
below). 1.7 and beyond is a bit more complex given the big rewrite
going on in Xi. I can't say I see many checks for no XkbExtension at
all in the new code.

Is anyone actually testing with XKB compiled in but disabled? :)

Anyhoo, here's a patch for 1.5 and 1.6:

--- Xi/exevents.c.orig  2009-04-21 17:01:24.000000000 +0200
+++ Xi/exevents.c       2009-04-21 17:02:11.000000000 +0200
@@ -977,7 +977,8 @@ SendDeviceMappingNotify(ClientPtr client
     }
 
 #ifdef XKB
-    if (request == MappingKeyboard || request == MappingModifier)
+    if (!noXkbExtension && (request == MappingKeyboard ||
+                            request == MappingModifier))
         XkbApplyMappingChange(dev, request, firstKeyCode, count, client);
 #endif

Rgds
-- 
Pierre Ossman            OpenSource-based Thin Client Technology
System Developer         Telephone: +46-13-21 46 00
Cendio AB                Web: http://www.cendio.com

Attachment: signature.asc
Description: PGP signature

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to