diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2019-02-20 11:02:35 +0100 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2019-02-21 10:13:19 +0100 |
commit | 35921860156e39f17ffd7e18d0f84d2396a6e8f4 (patch) | |
tree | c997199a45b1e3272c4c7f832520d046ad1b7109 | |
parent | 2e68b8620637a4ee8c79b5724144b726af1e261b (diff) |
kbd-state: don't block auto-repeat events
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Message-id: 20190220100235.20914-1-kraxel@redhat.com
-rw-r--r-- | ui/kbd-state.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/ui/kbd-state.c b/ui/kbd-state.c index ac14add70e..f3ab2d7a66 100644 --- a/ui/kbd-state.c +++ b/ui/kbd-state.c @@ -42,14 +42,18 @@ void qkbd_state_key_event(QKbdState *kbd, QKeyCode qcode, bool down) { bool state = test_bit(qcode, kbd->keys); - if (state == down) { + if (down == false /* got key-up event */ && + state == false /* key is not pressed */) { /* - * Filter out events which don't change the keyboard state. + * Filter out suspicious key-up events. * - * Most notably this allows to simply send along all key-up - * events, and this function will filter out everything where - * the corresponding key-down event wasn't send to the guest, - * for example due to being a host hotkey. + * This allows simply sending along all key-up events, and + * this function will filter out everything where the + * corresponding key-down event wasn't sent to the guest, for + * example due to being a host hotkey. + * + * Note that key-down events on already pressed keys are *not* + * suspicious, those are keyboard autorepeat events. */ return; } |