From a7fb654a68a26ad5f019a902312c6b94dbe9c3ea Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 10 Mar 2009 05:17:53 +0000 Subject: Restore repeat-filtering for server 1.5 and earlier. Letting the server deal with key repeats is fine if we have server 1.6. For earlier servers, we need to pass on the repeat events (except for modifier keys). Signed-off-by: Peter Hutterer Tested-by: Marty Jack --- 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) -- cgit v0.8.2