Another delightful bug when XKB is disabled. If you feed the core only repeated KeyPress events, it's supposed to generate KeyRelease events automatically. Unfortunately that code is broken and generates an incorrect list of events.
Problems exists in 1.5 and 1.6.
Patch:
--- dix/getevents.c.orig 2009-04-24 16:16:44.000000000 +0200
+++ dix/getevents.c 2009-04-24 16:19:20.000000000 +0200
@@ -406,6 +406,7 @@ GetKeyboardValuatorEvents(xEvent *events
int key_code, int first_valuator,
int num_valuators, int *valuators) {
int numEvents = 0;
+ int numReleaseEvents;
CARD32 ms = 0;
KeySym *map = pDev->key->curKeySyms.map;
KeySym sym;
@@ -470,11 +471,13 @@ GetKeyboardValuatorEvents(xEvent *events
if (noXkbExtension)
#endif
{
- numEvents += GetKeyboardValuatorEvents(events, pDev,
- KeyRelease, key_code,
- first_valuator,
num_valuators,
- valuators);
- events += numEvents;
+ numReleaseEvents = GetKeyboardValuatorEvents(events, pDev,
+ KeyRelease, key_code,
+ first_valuator,
+ num_valuators,
+ valuators);
+ numEvents += numReleaseEvents;
+ events += numReleaseEvents;
}
}
--
Pierre Ossman OpenSource-based Thin Client Technology
System Developer Telephone: +46-13-21 46 00
Cendio AB Web: http://www.cendio.com
signature.asc
Description: PGP signature
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
