Letters and modifiers are often lost, particularly if you type fast. The following patch remedies the symptom. diff -ur xorg-server-1.4.orig/dix/getevents.c xorg-server-1.4/dix/getevents.c --- xorg-server-1.4.orig/dix/getevents.c Thu Sep 6 09:47:48 2007 +++ xorg-server-1.4/dix/getevents.c Fri Oct 19 16:56:09 2007 @@ -95,7 +95,7 @@ static Bool key_is_down(DeviceIntPtr pDev, int key_code) { - return pDev->key->postdown[key_code >> 3] >> (key_code & 7); + return pDev->key->postdown[key_code >> 3] & (1 << (key_code & 7)); } /**
Thanks for the patch. This is possibly a duplicate of bug 12509.
*** Bug 12509 has been marked as a duplicate of this bug. ***
Relation of duplication changed, because this one has a working fix (tested and confirmed on my machines).
pushed to master and input-fixes-for-1.4.1, thanks.
*** Bug 13198 has been marked as a duplicate of this bug. ***
Additional comment by an affected ALSA developer (Takashi Iwai <tiwai@suse.de>): "Thanks. I think return (pDev->key->postdown[key_code >> 3] >> (key_code & 7)) & 1; would be a better fix. Then the value is either 0 or 1. The current code returns zero or non-zero."
I already did that when I committed: + return !!(pDev->key->postdown[key_code >> 3] & (1 << (key_code & 7)));
(already fixed in master, now cherry-picked to 1.4 branch.)
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.