Auto-repeat with evdev 2.2.0

Peter Hutterer peter.hutterer at who-t.net
Mon Mar 9 21:07:19 PDT 2009


On Mon, Mar 09, 2009 at 11:58:57PM -0400, Marty Jack wrote:
> I suppose, given this realization, one could make an argument that 2.2.0 should have required 1.6.
> Which would render moot the change
>       Define MAX_VALUATORS if it's missing to allow for builds against 1.5.
> 
> I might try messing with the revert.  FWIW I did not notice any other issues.

Does this (untested) patch work?

diff --git a/src/evdev.c b/src/evdev.c
index 04bce96..bc29ac9 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -263,8 +263,17 @@ PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value)
     static char warned[KEY_CNT];
 
     /* Filter all repeated events from device.
-       We'll do softrepeat in the server */
-    if (value == 2)
+       We'll do softrepeat in the server, but only since 1.6 */
+    if (value == 2
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) <= 2
+        && (ev->code == KEY_LEFTCTRL || ev->code == KEY_RIGHTCTRL ||
+            ev->code == KEY_LEFTSHIFT || ev->code == KEY_RIGHTSHIFT ||
+            ev->code == KEY_LEFTALT || ev->code == KEY_RIGHTALT ||
+            ev->code == KEY_LEFTMETA || ev->code == KEY_RIGHTMETA ||
+            ev->code == KEY_CAPSLOCK || ev->code == KEY_NUMLOCK ||
+            ev->code == KEY_SCROLLLOCK) /* XXX windows keys? */
+#endif
+            )
 	return;
 
     if (code > 255)




More information about the xorg mailing list