diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 9f057e46ea..77906d5f46 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -239,11 +239,11 @@ static const uint16_t qcode_to_keycode_set1[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_MAIL] = 0xe06c, [Q_KEY_CODE_CALCULATOR] = 0xe021, [Q_KEY_CODE_COMPUTER] = 0xe06b, - [Q_KEY_CODE_AC_SEARCH] = 0xe065, + [Q_KEY_CODE_FIND] = 0xe065, [Q_KEY_CODE_AC_HOME] = 0xe032, [Q_KEY_CODE_AC_BACK] = 0xe06a, [Q_KEY_CODE_AC_FORWARD] = 0xe069, - [Q_KEY_CODE_AC_STOP] = 0xe068, + [Q_KEY_CODE_STOP] = 0xe068, [Q_KEY_CODE_AC_REFRESH] = 0xe067, [Q_KEY_CODE_AC_BOOKMARKS] = 0xe066, @@ -379,11 +379,11 @@ static const uint16_t qcode_to_keycode_set2[Q_KEY_CODE__MAX] = { [Q_KEY_CODE_MAIL] = 0xe048, [Q_KEY_CODE_CALCULATOR] = 0xe02b, [Q_KEY_CODE_COMPUTER] = 0xe040, - [Q_KEY_CODE_AC_SEARCH] = 0xe010, + [Q_KEY_CODE_FIND] = 0xe010, [Q_KEY_CODE_AC_HOME] = 0xe03a, [Q_KEY_CODE_AC_BACK] = 0xe038, [Q_KEY_CODE_AC_FORWARD] = 0xe030, - [Q_KEY_CODE_AC_STOP] = 0xe028, + [Q_KEY_CODE_STOP] = 0xe028, [Q_KEY_CODE_AC_REFRESH] = 0xe020, [Q_KEY_CODE_AC_BOOKMARKS] = 0xe018, diff --git a/qapi-schema.json b/qapi-schema.json index dcc12c83a9..c96f0a26f6 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4856,11 +4856,9 @@ # @mail: since 2.10 # @calculator: since 2.10 # @computer: since 2.10 -# @ac_search: since 2.10 # @ac_home: since 2.10 # @ac_back: since 2.10 # @ac_forward: since 2.10 -# @ac_stop: since 2.10 # @ac_refresh: since 2.10 # @ac_bookmarks: since 2.10 # altgr, altgr_r: dropped in 2.10 @@ -4890,8 +4888,7 @@ 'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute', 'volumeup', 'volumedown', 'mediaselect', 'mail', 'calculator', 'computer', - 'ac_search', 'ac_home', 'ac_back', 'ac_forward', 'ac_stop', - 'ac_refresh', 'ac_bookmarks' ] } + 'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks' ] } ## # @KeyValue: 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,6 +59,18 @@ static void kbd_push_key(SpiceKbdInstance *sin, uint8_t scancode) kbd->emul0 = true; return; } + + if (scancode == pauseseq[kbd->pauseseq]) { + kbd->pauseseq++; + if (kbd->pauseseq == G_N_ELEMENTS(pauseseq)) { + qemu_input_event_send_key_qcode(NULL, Q_KEY_CODE_PAUSE, true); + kbd->pauseseq = 0; + } + return; + } else { + kbd->pauseseq = 0; + } + keycode = scancode & ~SCANCODE_UP; up = scancode & SCANCODE_UP; if (kbd->emul0) { @@ -65,25 +78,6 @@ static void kbd_push_key(SpiceKbdInstance *sin, uint8_t scancode) keycode |= SCANCODE_GREY; } - if (scancode == SCANCODE_EMUL1) { - 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); - kbd->pauseseq = 0; - return; - } - kbd->pauseseq = 0; - } - qemu_input_event_send_key_number(NULL, keycode, !up); }