summaryrefslogtreecommitdiff
path: root/xkb
AgeCommit message (Collapse)AuthorFilesLines
2017-12-13xkb: initialize tsymsGiuseppe Bilotta1-1/+1
This fixes some “Conditional jump depends on uninitialized value(s)” errors spotted by valgrind. Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com> (cherry picked from commit b2167015043a458e9cf93b827b43eb5b7c552ce9)
2017-12-13xkb: Print the xkbcomp path being executed when we fail to compile.Eric Anholt1-2/+4
I don't know how many times I've had a broken server due to a bad directory to xkbcomp, and only finding the whole path has shown me where I went wrong. Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> (cherry picked from commit 30f4d440ebc3517fdcc1d3c6a422a8fbf3af1f23)
2017-10-04xkb: Handle xkb formated string output safely (CVE-2017-13723)Keith Packard1-20/+20
Generating strings for XKB data used a single shared static buffer, which offered several opportunities for errors. Use a ring of resizable buffers instead, to avoid problems when strings end up longer than anticipated. Reviewed-by: Michal Srb <msrb@suse.com> Signed-off-by: Keith Packard <keithp@keithp.com> Signed-off-by: Julien Cristau <jcristau@debian.org> (cherry picked from commit 94f11ca5cf011ef123bd222cabeaef6f424d76ac)
2017-10-04xkb: Escape non-printable characters correctly.Michal Srb1-1/+1
XkbStringText escapes non-printable characters using octal numbers. Such escape sequence would be at most 5 characters long ("\0123"), so it reserves 5 bytes in the buffer. Due to char->unsigned int conversion, it would print much longer string for negative numbers. Reviewed-by: Keith Packard <keithp@keithp.com> Signed-off-by: Julien Cristau <jcristau@debian.org> (cherry picked from commit eaf1f72ed8994b708d94ec2de7b1a99f5c4a39b8)
2016-09-21xkb: fix turbo-repeat of RedirectKey-ed keysymsMihail Konev1-1/+2
RedirectKey() action had been broken by commit 2e6190. A dropped check caused over-intense autorepeat of keysyms enriched with the action. Previous to this commit, the check wrapped the entire switch() block, which was dropped with the move to a separate function. Restore the checking. Signed-off-by: Mihail Konev <k.mvc@ya.ru> Reviewed-by: Daniel Stone <daniels@collabora.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-09-07xkb: fix check for appending '|' character when applying rulesRan Benita1-1/+1
There are two ways to separate multiple files in XKB include statements: '+' will cause the later file to override the first in case of conflict, while '|' will cause it augment it (this is done by xkbcomp). '!' is unrelated here. Currently, if someone tries to use '|' in a rule instead of '+', it won't have any effect. Since '|' is practically never used, this wasn't noticed. Signed-off-by: Ran Benita <ran234@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-06-29xkb: add a cause to the xkb indicator update after a keymap changePeter Hutterer1-1/+3
Regression introduce by ac164e58870d which calls XkbUpdateAllDeviceIndicators() with two NULL arguments. A few layers down into the stack and we triggered a NULL-pointer dereference. In theory a NULL cause is acceptable since we don't actually change modifier state here. Instead of updating all places to check for NULL just set the cause to the client request and go to the pub. https://bugs.freedesktop.org/show_bug.cgi?id=96384 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-06-03xkb: add hook to allow/deny AccessX key repeatOlivier Fourdan1-1/+3
The xserver generates the key repeat by itself. But when used with another server processing inputs first (e.g. a Wayland compositor), the other server may be busy dealing with some other things and not queue up key release events in time. Add a vfunc in XkbSrvInfo to possibly add a check before re-emitting a keypress event in the AccessX timer handler, so that the key repeat has a chance to be denied if the server processing the input is not ready. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-26xkb: Hold input lock across injected key event processingKeith Packard1-2/+1
This makes the code more consistent with other versions of out-of-queue event processing Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-26Remove SIGIO support for input [v5]Keith Packard1-2/+2
This removes all of the SIGIO handling support used for input throughout the X server, preparing the way for using threads for input handling instead. Places calling OsBlockSIGIO and OsReleaseSIGIO are marked with calls to stub functions input_lock/input_unlock so that we don't lose this information. xfree86 SIGIO support is reworked to use internal versions of OsBlockSIGIO and OsReleaseSIGIO. v2: Don't change locking order (Peter Hutterer) v3: Comment weird && FALSE in xf86Helper.c Leave errno save/restore in xf86ReadInput Squash with stub adding patch (Peter Hutterer) v4: Leave UseSIGIO config parameter so that existing config files don't break (Peter Hutterer) v5: Split a couple of independent patch bits out of kinput.c (Peter Hutterer) Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2016-05-04xkb: after changing the keymap, force an indicator updatePeter Hutterer2-2/+3
When NumLock is on and a new keymap is applied, the next modifier state change will turn off that LED (but leave the state enabled). The cause for this is a bit convoluted: * the SLI explicitState is copied from the current state in ProcXkbGetKbdByName. Thus, if NumLock is on, that state is 0x2. * on the next modifier key press (e.g. Shift), XkbApplyState() calls into XkbUpdateIndicators() -> XkbUpdateLedAutoState() to update SLIs (if any) for the currently changed modifier. But it does so with a mask only for the changed modifier (i.e. for Shift). * XkbUpdateLedAutoState() calculates the state based on this mask and ends up with 0 because we don't have a Shift LED and we masked out the others. * XkbUpdateLedAutoState() compares that state with the previous state (which is still 0x2) and then proceeds to turn the LED off This doesn't happen in the normal case because either the mask encompasses all modifiers or the state matches of the masked-out modifiers matches the old state. Avoid this issue by forcing an SLI update after changing the keymap. This updates the sli->effectiveState and thus restores everything to happy working order. https://bugzilla.redhat.com/show_bug.cgi?id=1047151 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-04-29dix: Squash some new gcc6 warningsAdam Jackson1-1/+1
-Wlogical-op now tells us: devices.c:1685:23: warning: logical ‘and’ of equal expressions Reviewed-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Adam Jackson <ajax@redhat.com>
2016-04-15xkb: fix SlowKeys release/reject beepsPeter Hutterer1-1/+4
Wrong use of the mask here caused a beep whenever a key was rejected but also when it was released after being accepted. Fix the mask to check for the correct enabled controls. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-11-30Replace 'sun' with '__sun'Richard PALO1-1/+1
Globally replace #ifdef and #if defined usage of 'sun' with '__sun' such that strict ISO compiler modes such as -ansi or -std=c99 can be used. Signed-off-by: Richard PALO <richard@NetBSD.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
2015-11-24Input: Add focus-in event sourceDaniel Stone1-0/+26
Add a new event source type for keypress events synthesised from focus notifications (e.g. KeymapNotify from the parent server, when running nested). This is used to keep the keys-down array in sync with the host server's, without sending actual keypress events to clients. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-11-24Input: Add DeviceEventSource enumDaniel Stone1-1/+1
Add a flag to DeviceEvents, giving the source of the event. Currently this only supports a 'normal' flag, but will be used later to add a 'focus-in' flag, noting events synthesised from key/button arrays on focus-in notifications. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-11-24XKB: Split filter execution into a separate functionDaniel Stone1-68/+76
Move the giant state machine which maps from a key action to actually running the filters into a separate function, to be used when adding KeyFocusIn. Signed-off-by: Daniel Stone <daniels@collabora.com> Tested-by: Giulio Camuffo <giuliocamuffo@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-09-29xkb: Keyboard mouse button emulation should not suppress other keyboard eventsAndreas Wettstein1-1/+3
With this change, when a key mapped to an action to emulate mouse button presses and releases is held down, other keys pressed during that time are still processed normally. This is a prerequisite for proper support of ISOLock. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
2015-09-29xkb: Suppress autorepeat for Set and Lock of Mods, Groups, and ControlsAndreas Wettstein1-0/+5
The autorepeat for these actions was not correctly implemented, as the key repeat would be mistakenly interpreted as key releases. Rather than fixing this, this change simply disables autorepeat for Set/Lock actions, for two reasons: - Autorepeating Set/Lock keys make complicate the interactions of actions. - Autorepeating Set/Lock keys have no apparent benefit, but hurt in the real world for layouts such as de(neo): Neo has a Level5 shift on the LSGT key, and a Level5 lock on Level5 of the same key. This is unusable if LSGT autorepeats. However, disabling autorepeat for key LSGT completely is not ideal for users that have a "usual" layout besides Neo, where LSGT carries symbols. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
2015-04-21Convert XKB to new *allocarray functionsAlan Coopersmith8-93/+96
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Acked-by: Daniel Stone <daniels@collabora.com>
2015-02-10xkb: Check strings length against request sizeOlivier Fourdan1-25/+40
Ensure that the given strings length in an XkbSetGeometry request remain within the limits of the size of the request. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-02-10xkb: Don't swap XkbSetGeometry data in the input bufferOlivier Fourdan1-16/+19
The XkbSetGeometry request embeds data which needs to be swapped when the server and the client have different endianess. _XkbSetGeometry() invokes functions that swap these data directly in the input buffer. However, ProcXkbSetGeometry() may call _XkbSetGeometry() more than once (if there is more than one keyboard), thus causing on swapped clients the same data to be swapped twice in memory, further causing a server crash because the strings lengths on the second time are way off bounds. To allow _XkbSetGeometry() to run reliably more than once with swapped clients, do not swap the data in the buffer, use variables instead. Signed-off-by: Olivier Fourdan <ofourdan@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-11-12Drop trailing whitespacesPeter Hutterer25-224/+224
sed -i "s/[ ]\+$//g" **/*.(c|h) happy reviewing... git diff -w is an empty diff. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-10-28xkb: Initialize 'bad' Atom in _XkbSetNamesCheckKeith Packard1-1/+1
When _XkbCheckAtoms returns NULL for an error, it always sets the error return code, but GCC can't figure that out, so just initialize the local variable, 'bad', in _XkbSetNamesCheck to eliminate the warning. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-07-29xkb: Remove some fascinating paranoia from event emissionAdam Jackson1-9/+0
XkbInterestPtrs are created by clients that already exist, meaning, clients that have already had ProcVector installed as something other than InitialProcVector. Reviewed-by: Daniel Stone <daniel@fooishbar.org> Signed-off-by: Adam Jackson <ajax@redhat.com>
2014-04-18xkb: Verify reads of compiled keymap header and TOCKeith Packard1-2/+4
Check the return values from fread to make sure the elements are actually getting read from the file. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Jamey Sharp <jamey@minilop.net>
2014-04-03Revert "xkb: ProcesssPointerEvent must work on the VCP if it gets the VCP"Peter Hutterer1-1/+1
This was the wrong fix to the problem, and it triggered a change in XKB behavior: previously a button event would unlock a latched modifier, now it doesn't anymore. https://bugs.freedesktop.org/show_bug.cgi?id=73155 Note that the new behavior is is strictly spec compliant but we've had the other behavior for a long time so we shouldn't break it. The bug this patch originally fixed was a null-pointer dereference when releasing button events on server shutdown. This was addressed by the commit below, so the need for this patch has gone away anyway. commit 3e4be4033aed78b2bb3a18d51f0963989efd1af3 Author: Peter Hutterer <peter.hutterer@who-t.net> Date: Fri Jan 25 11:47:32 2013 +1000 dix: when shutting down slave devices, shut down xtest devices last This reverts commit 2decff6393a44b56d80d53570718f95354fde454. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2014-03-25xkb: Restore XkbCopyDeviceKeymapAdam Jackson1-0/+6
Removed in d35a02a767017f13db4bd4742eef49293d5a30ea, tigervnc 1.2.80 and xf86-video-nested need it for now. Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-19xkb: add XkbLoadKeymapFromStringKristian Høgsberg2-8/+106
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
2014-03-17xkb: add KeymapOrDefaultKristian Høgsberg1-16/+24
Helper function to return a default map if the keymap compilation failed. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
2014-03-17xkb: factor out xkb loading to LoadXkmKristian Høgsberg1-23/+31
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
2014-03-17xkb: add a callback to xkbcompPeter Hutterer1-20/+66
This provides a callback to write to xkbcomp's buffer once everything is prepared. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
2014-03-17xkb: constify XkbDDXOpenConfigFilePeter Hutterer1-1/+1
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
2014-03-12xkb: Repurpose XkbCopyDeviceKeymap to apply a given keymap to a deviceRui Matos2-8/+8
This will also make it useful for cases when we have a new keymap to apply to a device but don't have a source device. Reviewed-by: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-12xkb: Factor out a function to copy a keymap's controls onto anotherRui Matos2-13/+24
Reviewed-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-03-11xkb: push locked modifier state down to attached slave devicesPeter Hutterer1-0/+20
Whenever the master changes, push the locked modifier state to the attached slave devices, then update the indicators. This way, when NumLock or CapsLock are hit on any device, the LED will light up on all devices. Likewise, a new keyboard attached to a master device will light up with the correct indicators. The indicators are handled per-keyboard, depending on the layout, i.e. if one keyboard has grp_led:num set, the NumLock LED won't light up on that keyboard. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
2014-03-11xkb: factor out state update into a functionPeter Hutterer1-23/+32
No functional changes Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
2014-03-11xkb: factor out the StateNotify flag checkPeter Hutterer1-9/+18
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
2014-02-04xkb: add a call to init an XkbRMLVOSet from const charsPeter Hutterer1-5/+20
Just forcing everything to const char* is not helpful, compiler warnings are supposed to warn about broken code. Forcing everything to const when it clearly isn't less than ideal. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
2014-01-12Replace 'pointer' type with 'void *'Keith Packard6-27/+27
This lets us stop using the 'pointer' typedef in Xdefs.h as 'pointer' is used throughout the X server for other things, and having duplicate names generates compiler warnings. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Eric Anholt <eric@anholt.net>
2014-01-12xkb: Make XkbWriteCountedString take a const char * input parameterKeith Packard1-1/+1
Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2014-01-12xkb: Clean up warningsKeith Packard3-40/+45
Add const to lots of strings. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
2013-07-02xkb: don't call atoi(NULL) when parsing argvJulien Cristau1-2/+4
If the -ardelay or -arinterval options have no argument, there's no point trying to read it. See http://www.forallsecure.com/bug-reports/feb3db57fc206d8df22ca53a6907f74973876272/ Reported-by: Alexandre Rebert <alexandre@cmu.edu> Signed-off-by: Julien Cristau <jcristau@debian.org> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-05-10input: print warnings if drivers don't initialize properlyPeter Hutterer1-2/+3
If drivers supply incorrect values don't just quietly return False, spew to the log so we can detect what's going on. All these cases are driver bugs and should be fixed immediately. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
2013-05-10dix: don't overwrite proximity/focus classesPeter Hutterer1-1/+2
InitPointerClassDeviceStruct/InitKeyboardDeviceStruct allocate a proximity/focus class, respectively. If a driver calls InitFocusClassDeviceStruct or InitProximityClassDeviceStruct beforehand, the previously allocated class is overwritten, leaking the memory. Neither takes a parameter other than the device, so we can simply skip initialising it if we already have one. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
2013-05-07xkb: free XkbRulesUsed and XkbRulesDflt on extension cleanupPeter Hutterer1-0/+15
==2547== 1 bytes in 1 blocks are still reachable in loss record 1 of 111 ==2547== at 0x4C2A4CD: malloc (vg_replace_malloc.c:236) ==2547== by 0x64D1551: strdup (strdup.c:43) ==2547== by 0x4802FB: Xstrdup (utils.c:1113) ==2547== by 0x585B6C: XkbSetRulesUsed (xkbInit.c:219) ==2547== by 0x58700F: InitKeyboardDeviceStruct (xkbInit.c:595) ==2547== by 0x419FA3: vfbKeybdProc (InitInput.c:74) ==2547== by 0x425A3D: ActivateDevice (devices.c:540) ==2547== by 0x425F65: InitAndStartDevices (devices.c:713) ==2547== by 0x5ACA57: main (main.c:259) and a few more of the above. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Keith Packard <keithp@keithp.com>
2013-03-06xkb: Fixes to LatchMods/LatchGroupAndreas Wettstein1-69/+80
The main problem this patch addresses is that if a latch is put on multi-level key with a Latch/Lock/Set, it is possible that after all keys are released, still base modifiers are set, which typically will make the keyboard unusable. To see how it happens (without the patch), assume that key AltGr sets Mod5 when pressed by itself, and latches Mod3 when pressed together with Shift. Now press Shift, then AltGr and release both keys in reverse order. Mod3 is now latched, and the LatchMods filter remains active as the second filter. Now press AltGr; Mod5 base modifier gets set, and the SetMods filter will become active as the first filter. Release AltGr: First, the SetMods filter will set clearMods to Mod5, then the LatchMods filter will overwrite clearMods with Mod3. Result: the Mod5 base modifier will remain set. This example becomes practically relevant for the revised German standard layout (DIN 2137-1:2012-06). Other changes implement the latch behaviour more accurately according to the specification. For example, releasing a modifier latching key can at the same time clear a locked modifier, promote another modifier that is latched to locked, and latch a third modifier. Overall, what the code does should be straightforward to compare what the XKB protocol specification demands, see the table in section 6.3. Finally, releasing a key no longer cancels a latch that has not become pending yet. In my opinion, the specification is not clear; it speaks of "operating" a key, which the patch effectivly interprets as "press" rather than "press or release". From my experience, using the latter interpretation makes latches on higher levels practically unusable. In the example given above, one would have to release AltGr always before Shift to get the Mod3-Latch. The practical relevance of latches on higher levels is once more given by the revised German standard layout. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-02-21xkb: Set nIndicators in XkbGetIndicatorMapPeter Harris1-0/+1
Xlib doesn't use this value (it computes it from the reply length instead) which is why nobody has noticed yet. But the spec http://www.x.org/releases/X11R7.7/doc/kbproto/xkbproto.html says that it should be set. Signed-off-by: Peter Harris <pharris@opentext.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-02-15xkb: remove unused variable 'names'Peter Hutterer1-2/+0
xkb.c: In function '_XkbSetNamesCheck': xkb.c:3987:18: warning: variable 'names' set but not used [-Wunused-but-set-variable] Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com> Reviewed-by: Mark Kettenis <kettenis@openbsd.org>
2013-02-08xkb: Fix repeat behaviour of redirect and message actionsAndreas Wettstein1-57/+90
The redirect and the message action filter functions implicitly assumed that when they receive an event for the same keycode they were activated for, that this is the a release of the key that activated the filter. This is not true if the key autorepeats. Due to the incorrect assumption, the effective key repeat rate was effectively halved. Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>