From: Gerd Hoffmann <kraxel@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PULL 7/8] input-linux: factor out input_linux_handle_keyboard
Date: Tue, 12 Jul 2016 10:21:42 +0200 [thread overview]
Message-ID: <1468311703-27209-8-git-send-email-kraxel@redhat.com> (raw)
In-Reply-To: <1468311703-27209-1-git-send-email-kraxel@redhat.com>
No functional change.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1466067800-25434-3-git-send-email-kraxel@redhat.com
---
ui/input-linux.c | 103 +++++++++++++++++++++++++++++--------------------------
1 file changed, 54 insertions(+), 49 deletions(-)
diff --git a/ui/input-linux.c b/ui/input-linux.c
index a932290..ffff97f 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -188,6 +188,59 @@ static void input_linux_toggle_grab(InputLinux *il)
}
}
+static void input_linux_handle_keyboard(InputLinux *il,
+ struct input_event *event)
+{
+ if (event->type == EV_KEY) {
+ if (event->value > 2 || (event->value > 1 && !il->repeat)) {
+ /*
+ * ignore autorepeat + unknown key events
+ * 0 == up, 1 == down, 2 == autorepeat, other == undefined
+ */
+ return;
+ }
+ if (event->code >= KEY_CNT) {
+ /*
+ * Should not happen. But better safe than sorry,
+ * and we make Coverity happy too.
+ */
+ return;
+ }
+
+ /* keep track of key state */
+ if (!il->keydown[event->code] && event->value) {
+ il->keydown[event->code] = true;
+ il->keycount++;
+ }
+ if (il->keydown[event->code] && !event->value) {
+ il->keydown[event->code] = false;
+ il->keycount--;
+ }
+
+ /* send event to guest when grab is active */
+ if (il->grab_active) {
+ int qcode = qemu_input_linux_to_qcode(event->code);
+ qemu_input_event_send_key_qcode(NULL, qcode, event->value);
+ }
+
+ /* hotkey -> record switch request ... */
+ if (il->keydown[KEY_LEFTCTRL] &&
+ il->keydown[KEY_RIGHTCTRL]) {
+ il->grab_request = true;
+ }
+
+ /*
+ * ... and do the switch when all keys are lifted, so we
+ * confuse neither guest nor host with keys which seem to
+ * be stuck due to missing key-up events.
+ */
+ if (il->grab_request && !il->keycount) {
+ il->grab_request = false;
+ input_linux_toggle_grab(il);
+ }
+ }
+}
+
static void input_linux_event_keyboard(void *opaque)
{
InputLinux *il = opaque;
@@ -205,55 +258,7 @@ static void input_linux_event_keyboard(void *opaque)
break;
}
- switch (event.type) {
- case EV_KEY:
- if (event.value > 2 || (event.value > 1 && !il->repeat)) {
- /*
- * ignore autorepeat + unknown key events
- * 0 == up, 1 == down, 2 == autorepeat, other == undefined
- */
- continue;
- }
- if (event.code >= KEY_CNT) {
- /*
- * Should not happen. But better safe than sorry,
- * and we make Coverity happy too.
- */
- continue;
- }
- /* keep track of key state */
- if (!il->keydown[event.code] && event.value) {
- il->keydown[event.code] = true;
- il->keycount++;
- }
- if (il->keydown[event.code] && !event.value) {
- il->keydown[event.code] = false;
- il->keycount--;
- }
-
- /* send event to guest when grab is active */
- if (il->grab_active) {
- int qcode = qemu_input_linux_to_qcode(event.code);
- qemu_input_event_send_key_qcode(NULL, qcode, event.value);
- }
-
- /* hotkey -> record switch request ... */
- if (il->keydown[KEY_LEFTCTRL] &&
- il->keydown[KEY_RIGHTCTRL]) {
- il->grab_request = true;
- }
-
- /*
- * ... and do the switch when all keys are lifted, so we
- * confuse neither guest nor host with keys which seem to
- * be stuck due to missing key-up events.
- */
- if (il->grab_request && !il->keycount) {
- il->grab_request = false;
- input_linux_toggle_grab(il);
- }
- break;
- }
+ input_linux_handle_keyboard(il, &event);
}
}
--
1.8.3.1
next prev parent reply other threads:[~2016-07-12 8:22 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-12 8:21 [Qemu-devel] [PULL 0/8] input patch queue Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 1/8] msmouse: add MouseState, unregister handler on close Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 2/8] msmouse: fix buffer handling Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 3/8] msmouse: switch to new input interface Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 4/8] msmouse: send short messages if possible Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 5/8] input: add trace events for full queues Gerd Hoffmann
2016-07-12 8:21 ` [Qemu-devel] [PULL 6/8] input-linux: factor out input_linux_handle_mouse Gerd Hoffmann
2016-07-12 8:21 ` Gerd Hoffmann [this message]
2016-07-12 8:21 ` [Qemu-devel] [PULL 8/8] input-linux: better capability checks, merge input_linux_event_{mouse, keyboard} Gerd Hoffmann
2016-07-12 11:03 ` [Qemu-devel] [PULL 0/8] input patch queue Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1468311703-27209-8-git-send-email-kraxel@redhat.com \
--to=kraxel@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).