diff options
Diffstat (limited to 'ui')
| -rw-r--r-- | ui/input-keymap.c | 9 | ||||
| -rw-r--r-- | ui/spice-input.c | 32 |
2 files changed, 18 insertions, 23 deletions
diff --git a/ui/input-keymap.c b/ui/input-keymap.c index 0d9ddde9c9..cf979c2ce9 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -116,6 +116,7 @@ static int linux_to_qcode[KEY_CNT] = { [KEY_LEFTMETA] = Q_KEY_CODE_META_L, [KEY_RIGHTMETA] = Q_KEY_CODE_META_R, [KEY_MENU] = Q_KEY_CODE_MENU, + [KEY_PAUSE] = Q_KEY_CODE_PAUSE, [KEY_SLEEP] = Q_KEY_CODE_SLEEP, [KEY_WAKEUP] = Q_KEY_CODE_WAKE, @@ -123,13 +124,13 @@ static int linux_to_qcode[KEY_CNT] = { [KEY_MAIL] = Q_KEY_CODE_MAIL, [KEY_COMPUTER] = Q_KEY_CODE_COMPUTER, - [KEY_STOP] = Q_KEY_CODE_AC_STOP, + [KEY_STOP] = Q_KEY_CODE_STOP, [KEY_BOOKMARKS] = Q_KEY_CODE_AC_BOOKMARKS, [KEY_BACK] = Q_KEY_CODE_AC_BACK, [KEY_FORWARD] = Q_KEY_CODE_AC_FORWARD, [KEY_HOMEPAGE] = Q_KEY_CODE_AC_HOME, [KEY_REFRESH] = Q_KEY_CODE_AC_REFRESH, - [KEY_FIND] = Q_KEY_CODE_AC_SEARCH, + [KEY_FIND] = Q_KEY_CODE_FIND, [KEY_NEXTSONG] = Q_KEY_CODE_AUDIONEXT, [KEY_PREVIOUSSONG] = Q_KEY_CODE_AUDIOPREV, @@ -279,13 +280,13 @@ static const int qcode_to_number[] = { [Q_KEY_CODE_MAIL] = 0xec, [Q_KEY_CODE_COMPUTER] = 0xeb, - [Q_KEY_CODE_AC_STOP] = 0xe8, + [Q_KEY_CODE_STOP] = 0xe8, [Q_KEY_CODE_AC_BOOKMARKS] = 0xe6, [Q_KEY_CODE_AC_BACK] = 0xea, [Q_KEY_CODE_AC_FORWARD] = 0xe9, [Q_KEY_CODE_AC_HOME] = 0xb2, [Q_KEY_CODE_AC_REFRESH] = 0xe7, - [Q_KEY_CODE_AC_SEARCH] = 0xe5, + [Q_KEY_CODE_FIND] = 0xe5, [Q_KEY_CODE_AUDIONEXT] = 0x99, [Q_KEY_CODE_AUDIOPREV] = 0x90, diff --git a/ui/spice-input.c b/ui/spice-input.c index cda9976469..3d41aa1831 100644 --- a/ui/spice-input.c +++ b/ui/spice-input.c @@ -50,6 +50,7 @@ static const SpiceKbdInterface kbd_interface = { static void kbd_push_key(SpiceKbdInstance *sin, uint8_t scancode) { + static const uint8_t pauseseq[] = { 0xe1, 0x1d, 0x45, 0xe1, 0x9d, 0xc5 }; QemuSpiceKbd *kbd = container_of(sin, QemuSpiceKbd, sin); int keycode; bool up; @@ -58,32 +59,25 @@ static void kbd_push_key(SpiceKbdInstance *sin, uint8_t scancode) kbd->emul0 = true; return; } - keycode = scancode & ~SCANCODE_UP; - up = scancode & SCANCODE_UP; - if (kbd->emul0) { - kbd->emul0 = false; - keycode |= SCANCODE_GREY; - } - if (scancode == SCANCODE_EMUL1) { + if (scancode == pauseseq[kbd->pauseseq]) { kbd->pauseseq++; - return; - } else if (kbd->pauseseq == 1) { - if (keycode == 0x1d) { - kbd->pauseseq++; - return; - } else { - kbd->pauseseq = 0; - } - } else if (kbd->pauseseq == 2) { - if (keycode == 0x45) { - qemu_input_event_send_key_qcode(NULL, Q_KEY_CODE_PAUSE, !up); + if (kbd->pauseseq == G_N_ELEMENTS(pauseseq)) { + qemu_input_event_send_key_qcode(NULL, Q_KEY_CODE_PAUSE, true); kbd->pauseseq = 0; - return; } + return; + } else { kbd->pauseseq = 0; } + keycode = scancode & ~SCANCODE_UP; + up = scancode & SCANCODE_UP; + if (kbd->emul0) { + kbd->emul0 = false; + keycode |= SCANCODE_GREY; + } + qemu_input_event_send_key_number(NULL, keycode, !up); } |