Commit 76297173 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/kraxel/tags/ui-20170728-pull-request' into staging



ui: more keymap fixes for 2.10

# gpg: Signature made Fri 28 Jul 2017 13:59:01 BST
# gpg:                using RSA key 0x4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>"
# gpg:                 aka "Gerd Hoffmann <gerd@kraxel.org>"
# gpg:                 aka "Gerd Hoffmann (private) <kraxel@gmail.com>"
# Primary key fingerprint: A032 8CFF B93A 17A7 9901  FE7D 4CB6 D8EE D3E8 7138

* remotes/kraxel/tags/ui-20170728-pull-request:
  ui: add pause key to linux_to_qcode
  ui: drop ac_search and ac_stop
  ui: correctly detect spice PAUSE scancode sequence

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents 871a0f7a ef58430d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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,

+1 −4
Original line number Diff line number Diff line
@@ -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:
+5 −4
Original line number Diff line number Diff line
@@ -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,
+13 −19
Original line number Diff line number Diff line
@@ -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) {
        kbd->pauseseq++;
        return;
    } else if (kbd->pauseseq == 1) {
        if (keycode == 0x1d) {
    if (scancode == pauseseq[kbd->pauseseq]) {
        kbd->pauseseq++;
            return;
        } else {
        if (kbd->pauseseq == G_N_ELEMENTS(pauseseq)) {
            qemu_input_event_send_key_qcode(NULL, Q_KEY_CODE_PAUSE, true);
            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;
        }
    } 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);
}