aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSascha Hlusiak <saschahlusiak@arcor.de>2008-02-19 21:09:13 +0100
committerSascha Hlusiak <saschahlusiak@arcor.de>2008-02-19 21:09:13 +0100
commit10e7c3fbdf4e94c212c0807844721064e7490729 (patch)
tree656792eba86ff2719e562c91c597667d0196293b
parentDon't inform kernel evdev driver about autorepeat change (diff)
downloadxf86-input-evdev-10e7c3fbdf4e94c212c0807844721064e7490729.tar.gz
xf86-input-evdev-10e7c3fbdf4e94c212c0807844721064e7490729.tar.bz2
xf86-input-evdev-10e7c3fbdf4e94c212c0807844721064e7490729.zip
Filter all incoming repeated key events
Not just filter modifiers but every repeated key, because the software implementation will take care of what key to repeat and what not. Otherwise the kernel's autorepeated keys interfere with the software generated ones.
-rw-r--r--src/evdev_key.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/src/evdev_key.c b/src/evdev_key.c
index 0f4edc6..ed3890c 100644
--- a/src/evdev_key.c
+++ b/src/evdev_key.c
@@ -517,18 +517,8 @@ EvdevKeyProcess (InputInfoPtr pInfo, struct input_event *ev)
{
int keycode = ev->code + MIN_KEYCODE;
- /* filter repeat events for chording keys */
- if (ev->value == 2) {
- DeviceIntPtr device = pInfo->dev;
- KeyClassRec *keyc = device->key;
- KbdFeedbackClassRec *kbdfeed = device->kbdfeed;
- int num = keycode >> 3;
- int bit = 1 << (keycode & 7);
-
- if (keyc->modifierMap[keycode] ||
- !(kbdfeed->ctrl.autoRepeats[num] & bit))
- return;
- }
+ /* filter all repeat events */
+ if (ev->value == 2) return;
xf86PostKeyboardEvent(pInfo->dev, keycode, ev->value);
}