Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/819561/?format=api
{ "id": 819561, "url": "http://patchwork.ozlabs.org/api/patches/819561/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170928120621.30288-5-berrange@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20170928120621.30288-5-berrange@redhat.com>", "list_archive_url": null, "date": "2017-09-28T12:06:19", "name": "[v7,4/6] ui: convert common input code to keycodemapdb", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "6fc586f7d01d67cde20fcd41e47d329591be97c4", "submitter": { "id": 2694, "url": "http://patchwork.ozlabs.org/api/people/2694/?format=api", "name": "Daniel P. Berrangé", "email": "berrange@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20170928120621.30288-5-berrange@redhat.com/mbox/", "series": [ { "id": 5547, "url": "http://patchwork.ozlabs.org/api/series/5547/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=5547", "date": "2017-09-28T12:06:16", "name": "Initial support for keycodemapdb GIT submodule", "version": 7, "mbox": "http://patchwork.ozlabs.org/series/5547/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/819561/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/819561/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@bilbo.ozlabs.org", "Authentication-Results": [ "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)", "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com", "ext-mx01.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=berrange@redhat.com" ], "Received": [ "from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y2tpj0G3jz9t5l\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 28 Sep 2017 22:11:57 +1000 (AEST)", "from localhost ([::1]:58983 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dxXfX-0004EV-2E\n\tfor incoming@patchwork.ozlabs.org; Thu, 28 Sep 2017 08:11:55 -0400", "from eggs.gnu.org ([2001:4830:134:3::10]:44557)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dxXaa-0000MK-8s\n\tfor qemu-devel@nongnu.org; Thu, 28 Sep 2017 08:06:59 -0400", "from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <berrange@redhat.com>) id 1dxXaT-0007nh-6l\n\tfor qemu-devel@nongnu.org; Thu, 28 Sep 2017 08:06:48 -0400", "from mx1.redhat.com ([209.132.183.28]:2285)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <berrange@redhat.com>) id 1dxXaS-0007nW-Uo\n\tfor qemu-devel@nongnu.org; Thu, 28 Sep 2017 08:06:41 -0400", "from smtp.corp.redhat.com\n\t(int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 112E4B6D08;\n\tThu, 28 Sep 2017 12:06:40 +0000 (UTC)", "from t460.redhat.com (unknown [10.33.36.70])\n\tby smtp.corp.redhat.com (Postfix) with ESMTP id D644E90C69;\n\tThu, 28 Sep 2017 12:06:37 +0000 (UTC)" ], "DMARC-Filter": "OpenDMARC Filter v1.3.2 mx1.redhat.com 112E4B6D08", "From": "\"Daniel P. Berrange\" <berrange@redhat.com>", "To": "qemu-devel@nongnu.org", "Date": "Thu, 28 Sep 2017 13:06:19 +0100", "Message-Id": "<20170928120621.30288-5-berrange@redhat.com>", "In-Reply-To": "<20170928120621.30288-1-berrange@redhat.com>", "References": "<20170928120621.30288-1-berrange@redhat.com>", "X-Scanned-By": "MIMEDefang 2.79 on 10.5.11.14", "X-Greylist": "Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.25]);\n\tThu, 28 Sep 2017 12:06:40 +0000 (UTC)", "X-detected-operating-system": "by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]", "X-Received-From": "209.132.183.28", "Subject": "[Qemu-devel] [PATCH v7 4/6] ui: convert common input code to\n\tkeycodemapdb", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.21", "Precedence": "list", "List-Id": "<qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<http://lists.nongnu.org/archive/html/qemu-devel/>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Cc": "Peter Maydell <peter.maydell@linaro.org>, Fam Zheng <famz@redhat.com>,\n\tGerd Hoffmann <kraxel@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>" }, "content": "Replace the number_to_qcode, qcode_to_number and linux_to_qcode\ntables with automatically generated tables.\n\nMissing entries in linux_to_qcode now fixed:\n\n KEY_LINEFEED -> Q_KEY_CODE_LF\n KEY_KPEQUAL -> Q_KEY_CODE_KP_EQUALS\n KEY_COMPOSE -> Q_KEY_CODE_COMPOSE\n KEY_AGAIN -> Q_KEY_CODE_AGAIN\n KEY_PROPS -> Q_KEY_CODE_PROPS\n KEY_UNDO -> Q_KEY_CODE_UNDO\n KEY_FRONT -> Q_KEY_CODE_FRONT\n KEY_COPY -> Q_KEY_CODE_COPY\n KEY_OPEN -> Q_KEY_CODE_OPEN\n KEY_PASTE -> Q_KEY_CODE_PASTE\n KEY_CUT -> Q_KEY_CODE_CUT\n KEY_HELP -> Q_KEY_CODE_HELP\n KEY_MEDIA -> Q_KEY_CODE_MEDIASELECT\n\nIn additionsome fixes:\n\n - KEY_PLAYPAUSE now maps to Q_KEY_CODE_AUDIOPLAY, instead of\n KEY_PLAYCD. KEY_PLAYPAUSE is defined across almost all scancodes\n sets, while KEY_PLAYCD only appears in AT set1, so the former is\n a more useful mapping.\n\nMissing entries in qcode_to_number now fixed:\n\n Q_KEY_CODE_AGAIN -> 0x85\n Q_KEY_CODE_PROPS -> 0x86\n Q_KEY_CODE_UNDO -> 0x87\n Q_KEY_CODE_FRONT -> 0x8c\n Q_KEY_CODE_COPY -> 0xf8\n Q_KEY_CODE_OPEN -> 0x64\n Q_KEY_CODE_PASTE -> 0x65\n Q_KEY_CODE_CUT -> 0xbc\n Q_KEY_CODE_LF -> 0x5b\n Q_KEY_CODE_HELP -> 0xf5\n Q_KEY_CODE_COMPOSE -> 0xdd\n Q_KEY_CODE_KP_EQUALS -> 0x59\n Q_KEY_CODE_MEDIASELECT -> 0xed\n\nIn addition some fixes:\n\n - Q_KEY_CODE_MENU was incorrectly mapped to the compose\n scancode (0xdd) and is now mapped to 0x9e\n - Q_KEY_CODE_FIND was mapped to 0xe065 (Search) instead\n of to 0xe041 (Find)\n - Q_KEY_CODE_HIRAGANA was mapped to 0x70 (Katakanahiragana)\n instead of of 0x77 (Hirigana)\n - Q_KEY_CODE_PRINT was mapped to 0xb7 which is not a defined\n scan code in AT set 1, it is now mapped to 0x54 (sysrq)\n\nSigned-off-by: Daniel P. Berrange <berrange@redhat.com>\n---\n include/ui/input.h | 11 +-\n ui/Makefile.objs | 3 +\n ui/input-keymap.c | 326 +++--------------------------------------------------\n 3 files changed, 28 insertions(+), 312 deletions(-)", "diff": "diff --git a/include/ui/input.h b/include/ui/input.h\nindex c488585def..479cc46cfc 100644\n--- a/include/ui/input.h\n+++ b/include/ui/input.h\n@@ -43,7 +43,7 @@ void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down);\n void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down);\n void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool down);\n void qemu_input_event_send_key_delay(uint32_t delay_ms);\n-int qemu_input_key_number_to_qcode(uint8_t nr);\n+int qemu_input_key_number_to_qcode(unsigned int nr);\n int qemu_input_key_value_to_number(const KeyValue *value);\n int qemu_input_key_value_to_qcode(const KeyValue *value);\n int qemu_input_key_value_to_scancode(const KeyValue *value, bool down,\n@@ -69,4 +69,13 @@ void qemu_input_check_mode_change(void);\n void qemu_add_mouse_mode_change_notifier(Notifier *notify);\n void qemu_remove_mouse_mode_change_notifier(Notifier *notify);\n \n+extern const guint qemu_input_map_linux_to_qcode_len;\n+extern const guint16 qemu_input_map_linux_to_qcode[];\n+\n+extern const guint qemu_input_map_qcode_to_qnum_len;\n+extern const guint16 qemu_input_map_qcode_to_qnum[];\n+\n+extern const guint qemu_input_map_qnum_to_qcode_len;\n+extern const guint16 qemu_input_map_qnum_to_qcode[];\n+\n #endif /* INPUT_H */\ndiff --git a/ui/Makefile.objs b/ui/Makefile.objs\nindex a930afafe5..78d676738f 100644\n--- a/ui/Makefile.objs\n+++ b/ui/Makefile.objs\n@@ -55,6 +55,9 @@ KEYCODEMAP_GEN = $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen\n KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv\n \n KEYCODEMAP_FILES = \\\n+\t\t ui/input-keymap-linux-to-qcode.c \\\n+\t\t ui/input-keymap-qcode-to-qnum.c \\\n+\t\t ui/input-keymap-qnum-to-qcode.c \\\n \t\t $(NULL)\n \n GENERATED_FILES += $(KEYCODEMAP_FILES)\ndiff --git a/ui/input-keymap.c b/ui/input-keymap.c\nindex cf979c2ce9..3a19a169f5 100644\n--- a/ui/input-keymap.c\n+++ b/ui/input-keymap.c\n@@ -5,333 +5,37 @@\n \n #include \"standard-headers/linux/input.h\"\n \n-static int linux_to_qcode[KEY_CNT] = {\n- [KEY_ESC] = Q_KEY_CODE_ESC,\n- [KEY_1] = Q_KEY_CODE_1,\n- [KEY_2] = Q_KEY_CODE_2,\n- [KEY_3] = Q_KEY_CODE_3,\n- [KEY_4] = Q_KEY_CODE_4,\n- [KEY_5] = Q_KEY_CODE_5,\n- [KEY_6] = Q_KEY_CODE_6,\n- [KEY_7] = Q_KEY_CODE_7,\n- [KEY_8] = Q_KEY_CODE_8,\n- [KEY_9] = Q_KEY_CODE_9,\n- [KEY_0] = Q_KEY_CODE_0,\n- [KEY_MINUS] = Q_KEY_CODE_MINUS,\n- [KEY_EQUAL] = Q_KEY_CODE_EQUAL,\n- [KEY_BACKSPACE] = Q_KEY_CODE_BACKSPACE,\n- [KEY_TAB] = Q_KEY_CODE_TAB,\n- [KEY_Q] = Q_KEY_CODE_Q,\n- [KEY_W] = Q_KEY_CODE_W,\n- [KEY_E] = Q_KEY_CODE_E,\n- [KEY_R] = Q_KEY_CODE_R,\n- [KEY_T] = Q_KEY_CODE_T,\n- [KEY_Y] = Q_KEY_CODE_Y,\n- [KEY_U] = Q_KEY_CODE_U,\n- [KEY_I] = Q_KEY_CODE_I,\n- [KEY_O] = Q_KEY_CODE_O,\n- [KEY_P] = Q_KEY_CODE_P,\n- [KEY_LEFTBRACE] = Q_KEY_CODE_BRACKET_LEFT,\n- [KEY_RIGHTBRACE] = Q_KEY_CODE_BRACKET_RIGHT,\n- [KEY_ENTER] = Q_KEY_CODE_RET,\n- [KEY_LEFTCTRL] = Q_KEY_CODE_CTRL,\n- [KEY_A] = Q_KEY_CODE_A,\n- [KEY_S] = Q_KEY_CODE_S,\n- [KEY_D] = Q_KEY_CODE_D,\n- [KEY_F] = Q_KEY_CODE_F,\n- [KEY_G] = Q_KEY_CODE_G,\n- [KEY_H] = Q_KEY_CODE_H,\n- [KEY_J] = Q_KEY_CODE_J,\n- [KEY_K] = Q_KEY_CODE_K,\n- [KEY_L] = Q_KEY_CODE_L,\n- [KEY_SEMICOLON] = Q_KEY_CODE_SEMICOLON,\n- [KEY_APOSTROPHE] = Q_KEY_CODE_APOSTROPHE,\n- [KEY_GRAVE] = Q_KEY_CODE_GRAVE_ACCENT,\n- [KEY_LEFTSHIFT] = Q_KEY_CODE_SHIFT,\n- [KEY_BACKSLASH] = Q_KEY_CODE_BACKSLASH,\n- [KEY_102ND] = Q_KEY_CODE_LESS,\n- [KEY_Z] = Q_KEY_CODE_Z,\n- [KEY_X] = Q_KEY_CODE_X,\n- [KEY_C] = Q_KEY_CODE_C,\n- [KEY_V] = Q_KEY_CODE_V,\n- [KEY_B] = Q_KEY_CODE_B,\n- [KEY_N] = Q_KEY_CODE_N,\n- [KEY_M] = Q_KEY_CODE_M,\n- [KEY_COMMA] = Q_KEY_CODE_COMMA,\n- [KEY_DOT] = Q_KEY_CODE_DOT,\n- [KEY_SLASH] = Q_KEY_CODE_SLASH,\n- [KEY_RIGHTSHIFT] = Q_KEY_CODE_SHIFT_R,\n- [KEY_LEFTALT] = Q_KEY_CODE_ALT,\n- [KEY_SPACE] = Q_KEY_CODE_SPC,\n- [KEY_CAPSLOCK] = Q_KEY_CODE_CAPS_LOCK,\n- [KEY_F1] = Q_KEY_CODE_F1,\n- [KEY_F2] = Q_KEY_CODE_F2,\n- [KEY_F3] = Q_KEY_CODE_F3,\n- [KEY_F4] = Q_KEY_CODE_F4,\n- [KEY_F5] = Q_KEY_CODE_F5,\n- [KEY_F6] = Q_KEY_CODE_F6,\n- [KEY_F7] = Q_KEY_CODE_F7,\n- [KEY_F8] = Q_KEY_CODE_F8,\n- [KEY_F9] = Q_KEY_CODE_F9,\n- [KEY_F10] = Q_KEY_CODE_F10,\n- [KEY_NUMLOCK] = Q_KEY_CODE_NUM_LOCK,\n- [KEY_SCROLLLOCK] = Q_KEY_CODE_SCROLL_LOCK,\n- [KEY_KP0] = Q_KEY_CODE_KP_0,\n- [KEY_KP1] = Q_KEY_CODE_KP_1,\n- [KEY_KP2] = Q_KEY_CODE_KP_2,\n- [KEY_KP3] = Q_KEY_CODE_KP_3,\n- [KEY_KP4] = Q_KEY_CODE_KP_4,\n- [KEY_KP5] = Q_KEY_CODE_KP_5,\n- [KEY_KP6] = Q_KEY_CODE_KP_6,\n- [KEY_KP7] = Q_KEY_CODE_KP_7,\n- [KEY_KP8] = Q_KEY_CODE_KP_8,\n- [KEY_KP9] = Q_KEY_CODE_KP_9,\n- [KEY_KPMINUS] = Q_KEY_CODE_KP_SUBTRACT,\n- [KEY_KPPLUS] = Q_KEY_CODE_KP_ADD,\n- [KEY_KPDOT] = Q_KEY_CODE_KP_DECIMAL,\n- [KEY_KPENTER] = Q_KEY_CODE_KP_ENTER,\n- [KEY_KPSLASH] = Q_KEY_CODE_KP_DIVIDE,\n- [KEY_KPASTERISK] = Q_KEY_CODE_KP_MULTIPLY,\n- [KEY_F11] = Q_KEY_CODE_F11,\n- [KEY_F12] = Q_KEY_CODE_F12,\n- [KEY_RO] = Q_KEY_CODE_RO,\n- [KEY_HIRAGANA] = Q_KEY_CODE_HIRAGANA,\n- [KEY_HENKAN] = Q_KEY_CODE_HENKAN,\n- [KEY_RIGHTCTRL] = Q_KEY_CODE_CTRL_R,\n- [KEY_SYSRQ] = Q_KEY_CODE_SYSRQ,\n- [KEY_RIGHTALT] = Q_KEY_CODE_ALT_R,\n- [KEY_HOME] = Q_KEY_CODE_HOME,\n- [KEY_UP] = Q_KEY_CODE_UP,\n- [KEY_PAGEUP] = Q_KEY_CODE_PGUP,\n- [KEY_LEFT] = Q_KEY_CODE_LEFT,\n- [KEY_RIGHT] = Q_KEY_CODE_RIGHT,\n- [KEY_END] = Q_KEY_CODE_END,\n- [KEY_DOWN] = Q_KEY_CODE_DOWN,\n- [KEY_PAGEDOWN] = Q_KEY_CODE_PGDN,\n- [KEY_INSERT] = Q_KEY_CODE_INSERT,\n- [KEY_DELETE] = Q_KEY_CODE_DELETE,\n- [KEY_POWER] = Q_KEY_CODE_POWER,\n- [KEY_KPCOMMA] = Q_KEY_CODE_KP_COMMA,\n- [KEY_YEN] = Q_KEY_CODE_YEN,\n- [KEY_LEFTMETA] = Q_KEY_CODE_META_L,\n- [KEY_RIGHTMETA] = Q_KEY_CODE_META_R,\n- [KEY_MENU] = Q_KEY_CODE_MENU,\n- [KEY_PAUSE] = Q_KEY_CODE_PAUSE,\n-\n- [KEY_SLEEP] = Q_KEY_CODE_SLEEP,\n- [KEY_WAKEUP] = Q_KEY_CODE_WAKE,\n- [KEY_CALC] = Q_KEY_CODE_CALCULATOR,\n- [KEY_MAIL] = Q_KEY_CODE_MAIL,\n- [KEY_COMPUTER] = Q_KEY_CODE_COMPUTER,\n-\n- [KEY_STOP] = Q_KEY_CODE_STOP,\n- [KEY_BOOKMARKS] = Q_KEY_CODE_AC_BOOKMARKS,\n- [KEY_BACK] = Q_KEY_CODE_AC_BACK,\n- [KEY_FORWARD] = Q_KEY_CODE_AC_FORWARD,\n- [KEY_HOMEPAGE] = Q_KEY_CODE_AC_HOME,\n- [KEY_REFRESH] = Q_KEY_CODE_AC_REFRESH,\n- [KEY_FIND] = Q_KEY_CODE_FIND,\n-\n- [KEY_NEXTSONG] = Q_KEY_CODE_AUDIONEXT,\n- [KEY_PREVIOUSSONG] = Q_KEY_CODE_AUDIOPREV,\n- [KEY_STOPCD] = Q_KEY_CODE_AUDIOSTOP,\n- [KEY_PLAYCD] = Q_KEY_CODE_AUDIOPLAY,\n- [KEY_MUTE] = Q_KEY_CODE_AUDIOMUTE,\n- [KEY_VOLUMEDOWN] = Q_KEY_CODE_VOLUMEDOWN,\n- [KEY_VOLUMEUP] = Q_KEY_CODE_VOLUMEUP,\n-};\n-\n-static const int qcode_to_number[] = {\n- [Q_KEY_CODE_SHIFT] = 0x2a,\n- [Q_KEY_CODE_SHIFT_R] = 0x36,\n-\n- [Q_KEY_CODE_ALT] = 0x38,\n- [Q_KEY_CODE_ALT_R] = 0xb8,\n- [Q_KEY_CODE_CTRL] = 0x1d,\n- [Q_KEY_CODE_CTRL_R] = 0x9d,\n-\n- [Q_KEY_CODE_META_L] = 0xdb,\n- [Q_KEY_CODE_META_R] = 0xdc,\n- [Q_KEY_CODE_MENU] = 0xdd,\n-\n- [Q_KEY_CODE_ESC] = 0x01,\n-\n- [Q_KEY_CODE_1] = 0x02,\n- [Q_KEY_CODE_2] = 0x03,\n- [Q_KEY_CODE_3] = 0x04,\n- [Q_KEY_CODE_4] = 0x05,\n- [Q_KEY_CODE_5] = 0x06,\n- [Q_KEY_CODE_6] = 0x07,\n- [Q_KEY_CODE_7] = 0x08,\n- [Q_KEY_CODE_8] = 0x09,\n- [Q_KEY_CODE_9] = 0x0a,\n- [Q_KEY_CODE_0] = 0x0b,\n- [Q_KEY_CODE_MINUS] = 0x0c,\n- [Q_KEY_CODE_EQUAL] = 0x0d,\n- [Q_KEY_CODE_BACKSPACE] = 0x0e,\n-\n- [Q_KEY_CODE_TAB] = 0x0f,\n- [Q_KEY_CODE_Q] = 0x10,\n- [Q_KEY_CODE_W] = 0x11,\n- [Q_KEY_CODE_E] = 0x12,\n- [Q_KEY_CODE_R] = 0x13,\n- [Q_KEY_CODE_T] = 0x14,\n- [Q_KEY_CODE_Y] = 0x15,\n- [Q_KEY_CODE_U] = 0x16,\n- [Q_KEY_CODE_I] = 0x17,\n- [Q_KEY_CODE_O] = 0x18,\n- [Q_KEY_CODE_P] = 0x19,\n- [Q_KEY_CODE_BRACKET_LEFT] = 0x1a,\n- [Q_KEY_CODE_BRACKET_RIGHT] = 0x1b,\n- [Q_KEY_CODE_RET] = 0x1c,\n-\n- [Q_KEY_CODE_A] = 0x1e,\n- [Q_KEY_CODE_S] = 0x1f,\n- [Q_KEY_CODE_D] = 0x20,\n- [Q_KEY_CODE_F] = 0x21,\n- [Q_KEY_CODE_G] = 0x22,\n- [Q_KEY_CODE_H] = 0x23,\n- [Q_KEY_CODE_J] = 0x24,\n- [Q_KEY_CODE_K] = 0x25,\n- [Q_KEY_CODE_L] = 0x26,\n- [Q_KEY_CODE_SEMICOLON] = 0x27,\n- [Q_KEY_CODE_APOSTROPHE] = 0x28,\n- [Q_KEY_CODE_GRAVE_ACCENT] = 0x29,\n-\n- [Q_KEY_CODE_BACKSLASH] = 0x2b,\n- [Q_KEY_CODE_Z] = 0x2c,\n- [Q_KEY_CODE_X] = 0x2d,\n- [Q_KEY_CODE_C] = 0x2e,\n- [Q_KEY_CODE_V] = 0x2f,\n- [Q_KEY_CODE_B] = 0x30,\n- [Q_KEY_CODE_N] = 0x31,\n- [Q_KEY_CODE_M] = 0x32,\n- [Q_KEY_CODE_COMMA] = 0x33,\n- [Q_KEY_CODE_DOT] = 0x34,\n- [Q_KEY_CODE_SLASH] = 0x35,\n-\n- [Q_KEY_CODE_ASTERISK] = 0x37,\n-\n- [Q_KEY_CODE_SPC] = 0x39,\n- [Q_KEY_CODE_CAPS_LOCK] = 0x3a,\n- [Q_KEY_CODE_F1] = 0x3b,\n- [Q_KEY_CODE_F2] = 0x3c,\n- [Q_KEY_CODE_F3] = 0x3d,\n- [Q_KEY_CODE_F4] = 0x3e,\n- [Q_KEY_CODE_F5] = 0x3f,\n- [Q_KEY_CODE_F6] = 0x40,\n- [Q_KEY_CODE_F7] = 0x41,\n- [Q_KEY_CODE_F8] = 0x42,\n- [Q_KEY_CODE_F9] = 0x43,\n- [Q_KEY_CODE_F10] = 0x44,\n- [Q_KEY_CODE_NUM_LOCK] = 0x45,\n- [Q_KEY_CODE_SCROLL_LOCK] = 0x46,\n-\n- [Q_KEY_CODE_KP_DIVIDE] = 0xb5,\n- [Q_KEY_CODE_KP_MULTIPLY] = 0x37,\n- [Q_KEY_CODE_KP_SUBTRACT] = 0x4a,\n- [Q_KEY_CODE_KP_ADD] = 0x4e,\n- [Q_KEY_CODE_KP_ENTER] = 0x9c,\n- [Q_KEY_CODE_KP_DECIMAL] = 0x53,\n- [Q_KEY_CODE_SYSRQ] = 0x54,\n- [Q_KEY_CODE_PAUSE] = 0xc6,\n-\n- [Q_KEY_CODE_KP_0] = 0x52,\n- [Q_KEY_CODE_KP_1] = 0x4f,\n- [Q_KEY_CODE_KP_2] = 0x50,\n- [Q_KEY_CODE_KP_3] = 0x51,\n- [Q_KEY_CODE_KP_4] = 0x4b,\n- [Q_KEY_CODE_KP_5] = 0x4c,\n- [Q_KEY_CODE_KP_6] = 0x4d,\n- [Q_KEY_CODE_KP_7] = 0x47,\n- [Q_KEY_CODE_KP_8] = 0x48,\n- [Q_KEY_CODE_KP_9] = 0x49,\n-\n- [Q_KEY_CODE_LESS] = 0x56,\n-\n- [Q_KEY_CODE_F11] = 0x57,\n- [Q_KEY_CODE_F12] = 0x58,\n-\n- [Q_KEY_CODE_PRINT] = 0xb7,\n-\n- [Q_KEY_CODE_HOME] = 0xc7,\n- [Q_KEY_CODE_PGUP] = 0xc9,\n- [Q_KEY_CODE_PGDN] = 0xd1,\n- [Q_KEY_CODE_END] = 0xcf,\n-\n- [Q_KEY_CODE_LEFT] = 0xcb,\n- [Q_KEY_CODE_UP] = 0xc8,\n- [Q_KEY_CODE_DOWN] = 0xd0,\n- [Q_KEY_CODE_RIGHT] = 0xcd,\n-\n- [Q_KEY_CODE_INSERT] = 0xd2,\n- [Q_KEY_CODE_DELETE] = 0xd3,\n-\n- [Q_KEY_CODE_RO] = 0x73,\n- [Q_KEY_CODE_HIRAGANA] = 0x70,\n- [Q_KEY_CODE_HENKAN] = 0x79,\n- [Q_KEY_CODE_POWER] = 0xde,\n- [Q_KEY_CODE_YEN] = 0x7d,\n- [Q_KEY_CODE_KP_COMMA] = 0x7e,\n-\n- [Q_KEY_CODE_SLEEP] = 0xdf,\n- [Q_KEY_CODE_WAKE] = 0xe3,\n- [Q_KEY_CODE_CALCULATOR] = 0xa1,\n- [Q_KEY_CODE_MAIL] = 0xec,\n- [Q_KEY_CODE_COMPUTER] = 0xeb,\n-\n- [Q_KEY_CODE_STOP] = 0xe8,\n- [Q_KEY_CODE_AC_BOOKMARKS] = 0xe6,\n- [Q_KEY_CODE_AC_BACK] = 0xea,\n- [Q_KEY_CODE_AC_FORWARD] = 0xe9,\n- [Q_KEY_CODE_AC_HOME] = 0xb2,\n- [Q_KEY_CODE_AC_REFRESH] = 0xe7,\n- [Q_KEY_CODE_FIND] = 0xe5,\n-\n- [Q_KEY_CODE_AUDIONEXT] = 0x99,\n- [Q_KEY_CODE_AUDIOPREV] = 0x90,\n- [Q_KEY_CODE_AUDIOSTOP] = 0xa4,\n- [Q_KEY_CODE_AUDIOPLAY] = 0xa2,\n- [Q_KEY_CODE_AUDIOMUTE] = 0xa0,\n- [Q_KEY_CODE_VOLUMEDOWN] = 0xae,\n- [Q_KEY_CODE_VOLUMEUP] = 0xb0,\n-\n- [Q_KEY_CODE__MAX] = 0,\n-};\n-\n-static int number_to_qcode[0x100];\n+#include \"ui/input-keymap-linux-to-qcode.c\"\n+#include \"ui/input-keymap-qcode-to-qnum.c\"\n+#include \"ui/input-keymap-qnum-to-qcode.c\"\n \n int qemu_input_linux_to_qcode(unsigned int lnx)\n {\n- assert(lnx < KEY_CNT);\n- return linux_to_qcode[lnx];\n+ if (lnx >= qemu_input_map_linux_to_qcode_len) {\n+ return 0;\n+ }\n+ return qemu_input_map_linux_to_qcode[lnx];\n }\n \n int qemu_input_key_value_to_number(const KeyValue *value)\n {\n if (value->type == KEY_VALUE_KIND_QCODE) {\n- return qcode_to_number[value->u.qcode.data];\n+ if (value->u.qcode.data >= qemu_input_map_qcode_to_qnum_len) {\n+ return 0;\n+ }\n+ return qemu_input_map_qcode_to_qnum[value->u.qcode.data];\n } else {\n assert(value->type == KEY_VALUE_KIND_NUMBER);\n return value->u.number.data;\n }\n }\n \n-int qemu_input_key_number_to_qcode(uint8_t nr)\n+int qemu_input_key_number_to_qcode(unsigned int nr)\n {\n- static int first = true;\n-\n- if (first) {\n- int qcode, number;\n- first = false;\n- for (qcode = 0; qcode < Q_KEY_CODE__MAX; qcode++) {\n- number = qcode_to_number[qcode];\n- assert(number < ARRAY_SIZE(number_to_qcode));\n- number_to_qcode[number] = qcode;\n- }\n+ if (nr >= qemu_input_map_qnum_to_qcode_len) {\n+ return 0;\n }\n-\n- return number_to_qcode[nr];\n+ return qemu_input_map_qnum_to_qcode[nr];\n }\n \n int qemu_input_key_value_to_qcode(const KeyValue *value)\n", "prefixes": [ "v7", "4/6" ] }