From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505219997240876.8078538829069; Tue, 12 Sep 2017 05:39:57 -0700 (PDT) Received: from localhost ([::1]:35575 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkTr-0001vU-6r for importer@patchew.org; Tue, 12 Sep 2017 08:39:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48509) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkRy-0000cp-4G for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkRw-0003Pc-2S for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:58 -0400 Received: from mx1.redhat.com ([209.132.183.28]:64484) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkRv-0003Or-NQ for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:56 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C93E58553C for ; Tue, 12 Sep 2017 12:37:54 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C741077D71; Tue, 12 Sep 2017 12:37:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C93E58553C Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:33 +0100 Message-Id: <20170912123744.14730-2-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 12 Sep 2017 12:37:54 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 01/12] ui: add keycodemapdb repository as a GIT submodule X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The https://gitlab.com/keycodemap/keycodemapdb/ repo contains a data file mapping between all the different scancode/keycode/keysym sets that are known, and a tool to auto-generate lookup tables for different combinations. It is used by GTK-VNC, SPICE-GTK and libvirt for mapping keys. Using it in QEMU will let us replace many hand written lookup tables with auto-generated tables from a master data source, reducing bugs. Adding new QKeyCodes will now only require the master table to be updated, all ~20 other tables will be automatically updated to follow. Signed-off-by: Daniel P. Berrange --- .gitmodules | 3 +++ ui/Makefile.objs | 20 ++++++++++++++++++++ ui/keycodemapdb | 1 + 3 files changed, 24 insertions(+) create mode 160000 ui/keycodemapdb diff --git a/.gitmodules b/.gitmodules index 5b0c212622..369989f19e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -37,3 +37,6 @@ [submodule "roms/QemuMacDrivers"] path =3D roms/QemuMacDrivers url =3D git://git.qemu.org/QemuMacDrivers.git +[submodule "ui/keycodemapdb"] + path =3D ui/keycodemapdb + url =3D https://gitlab.com/keycodemap/keycodemapdb.git diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 3369451285..5fcb3010b3 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -49,3 +49,23 @@ gtk-egl.o-libs +=3D $(OPENGL_LIBS) shader.o-libs +=3D $(OPENGL_LIBS) console-gl.o-libs +=3D $(OPENGL_LIBS) egl-helpers.o-libs +=3D $(OPENGL_LIBS) + +KEYCODEMAP_GEN =3D $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen +KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv + +KEYCODEMAP_FILES =3D \ + $(NULL) + +# Generated input-keymap-XXX.c files are kept in GIT, so +# the rule below is not normally run. It is only used when +# the submodule is explicitly updated. + +ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Ma= kefile.objs + $(call quiet-command,\ + src=3D$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\1= ,") && \ + dst=3D$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\2= ,") && \ + $(PYTHON) $(KEYCODEMAP_GEN) \ + --lang glib2 \ + --varname qemu_input_map_$${src}_to_$${dst} \ + code-map $(KEYCODEMAP_CSV) $${src} $${dst} \ + > $@ || rm $@, "GEN", "$@") diff --git a/ui/keycodemapdb b/ui/keycodemapdb new file mode 160000 index 0000000000..56ce5650d2 --- /dev/null +++ b/ui/keycodemapdb @@ -0,0 +1 @@ +Subproject commit 56ce5650d2c6ea216b4580df44b9a6dd3bc92c3b --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220443888905.9293060356686; Tue, 12 Sep 2017 05:47:23 -0700 (PDT) Received: from localhost ([::1]:35618 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkb4-0000Vq-WD for importer@patchew.org; Tue, 12 Sep 2017 08:47:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48661) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkSA-0000od-Su for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkRx-0003QK-LZ for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45840) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkRx-0003Q3-61 for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:57 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 3F3C8883AC for ; Tue, 12 Sep 2017 12:37:56 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0D10077D65; Tue, 12 Sep 2017 12:37:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 3F3C8883AC Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:34 +0100 Message-Id: <20170912123744.14730-3-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 12 Sep 2017 12:37:56 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 02/12] ui: convert common input code to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the number_to_qcode, qcode_to_number and linux_to_qcode tables with automatically generated tables. Missing entries in linux_to_qcode now fixed: KEY_LINEFEED -> Q_KEY_CODE_LF KEY_KPEQUAL -> Q_KEY_CODE_KP_EQUALS KEY_COMPOSE -> Q_KEY_CODE_COMPOSE KEY_AGAIN -> Q_KEY_CODE_AGAIN KEY_PROPS -> Q_KEY_CODE_PROPS KEY_UNDO -> Q_KEY_CODE_UNDO KEY_FRONT -> Q_KEY_CODE_FRONT KEY_COPY -> Q_KEY_CODE_COPY KEY_OPEN -> Q_KEY_CODE_OPEN KEY_PASTE -> Q_KEY_CODE_PASTE KEY_CUT -> Q_KEY_CODE_CUT KEY_HELP -> Q_KEY_CODE_HELP KEY_MEDIA -> Q_KEY_CODE_MEDIASELECT In additionsome fixes: - KEY_PLAYPAUSE now maps to Q_KEY_CODE_AUDIOPLAY, instead of KEY_PLAYCD. KEY_PLAYPAUSE is defined across almost all scancodes sets, while KEY_PLAYCD only appears in AT set1, so the former is a more useful mapping. Missing entries in qcode_to_number now fixed: Q_KEY_CODE_AGAIN -> 0x85 Q_KEY_CODE_PROPS -> 0x86 Q_KEY_CODE_UNDO -> 0x87 Q_KEY_CODE_FRONT -> 0x8c Q_KEY_CODE_COPY -> 0xf8 Q_KEY_CODE_OPEN -> 0x64 Q_KEY_CODE_PASTE -> 0x65 Q_KEY_CODE_CUT -> 0xbc Q_KEY_CODE_LF -> 0x5b Q_KEY_CODE_HELP -> 0xf5 Q_KEY_CODE_COMPOSE -> 0xdd Q_KEY_CODE_KP_EQUALS -> 0x59 Q_KEY_CODE_MEDIASELECT -> 0xed In addition some fixes: - Q_KEY_CODE_MENU was incorrectly mapped to the compose scancode (0xdd) and is now mapped to 0x9e - Q_KEY_CODE_FIND was mapped to 0xe065 (Search) instead of to 0xe041 (Find) - Q_KEY_CODE_HIRAGANA was mapped to 0x70 (Katakanahiragana) instead of of 0x77 (Hirigana) - Q_KEY_CODE_PRINT was mapped to 0xb7 which is not a defined scan code in AT set 1, it is now mapped to 0x54 (sysrq) Signed-off-by: Daniel P. Berrange --- include/ui/input.h | 11 +- ui/Makefile.objs | 3 + ui/input-keymap-linux-to-qcode.c | 463 +++++++++++++++++++++++++++++++++++= ++++ ui/input-keymap-qcode-to-qnum.c | 154 +++++++++++++ ui/input-keymap-qnum-to-qcode.c | 245 +++++++++++++++++++++ ui/input-keymap.c | 326 ++------------------------- 6 files changed, 890 insertions(+), 312 deletions(-) create mode 100644 ui/input-keymap-linux-to-qcode.c create mode 100644 ui/input-keymap-qcode-to-qnum.c create mode 100644 ui/input-keymap-qnum-to-qcode.c diff --git a/include/ui/input.h b/include/ui/input.h index c488585def..479cc46cfc 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -43,7 +43,7 @@ void qemu_input_event_send_key(QemuConsole *src, KeyValue= *key, bool down); void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down= ); void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool do= wn); void qemu_input_event_send_key_delay(uint32_t delay_ms); -int qemu_input_key_number_to_qcode(uint8_t nr); +int qemu_input_key_number_to_qcode(unsigned int nr); int qemu_input_key_value_to_number(const KeyValue *value); int qemu_input_key_value_to_qcode(const KeyValue *value); int qemu_input_key_value_to_scancode(const KeyValue *value, bool down, @@ -69,4 +69,13 @@ void qemu_input_check_mode_change(void); void qemu_add_mouse_mode_change_notifier(Notifier *notify); void qemu_remove_mouse_mode_change_notifier(Notifier *notify); =20 +extern const guint qemu_input_map_linux_to_qcode_len; +extern const guint16 qemu_input_map_linux_to_qcode[]; + +extern const guint qemu_input_map_qcode_to_qnum_len; +extern const guint16 qemu_input_map_qcode_to_qnum[]; + +extern const guint qemu_input_map_qnum_to_qcode_len; +extern const guint16 qemu_input_map_qnum_to_qcode[]; + #endif /* INPUT_H */ diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 5fcb3010b3..29e44c1baf 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -54,6 +54,9 @@ KEYCODEMAP_GEN =3D $(SRC_PATH)/ui/keycodemapdb/tools/keym= ap-gen KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv =20 KEYCODEMAP_FILES =3D \ + ui/input-keymap-linux-to-qcode.c \ + ui/input-keymap-qcode-to-qnum.c \ + ui/input-keymap-qnum-to-qcode.c \ $(NULL) =20 # Generated input-keymap-XXX.c files are kept in GIT, so diff --git a/ui/input-keymap-linux-to-qcode.c b/ui/input-keymap-linux-to-qc= ode.c new file mode 100644 index 0000000000..c026ed106f --- /dev/null +++ b/ui/input-keymap-linux-to-qcode.c @@ -0,0 +1,463 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:01 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_linux_to_qcode c= ode-map keymaps.csv linux qcode +*/ +const guint16 qemu_input_map_linux_to_qcode[525] =3D { + [0x0] =3D Q_KEY_CODE_UNMAPPED, /* linux:0 (KEY_RESERVED) -> linux:0 (KEY= _RESERVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */ + [0x1] =3D Q_KEY_CODE_ESC, /* linux:1 (KEY_ESC) -> linux:1 (KEY_ESC) -> q= code:Q_KEY_CODE_ESC (esc) */ + [0x2] =3D Q_KEY_CODE_1, /* linux:2 (KEY_1) -> linux:2 (KEY_1) -> qcode:Q= _KEY_CODE_1 (1) */ + [0x3] =3D Q_KEY_CODE_2, /* linux:3 (KEY_2) -> linux:3 (KEY_2) -> qcode:Q= _KEY_CODE_2 (2) */ + [0x4] =3D Q_KEY_CODE_3, /* linux:4 (KEY_3) -> linux:4 (KEY_3) -> qcode:Q= _KEY_CODE_3 (3) */ + [0x5] =3D Q_KEY_CODE_4, /* linux:5 (KEY_4) -> linux:5 (KEY_4) -> qcode:Q= _KEY_CODE_4 (4) */ + [0x6] =3D Q_KEY_CODE_5, /* linux:6 (KEY_5) -> linux:6 (KEY_5) -> qcode:Q= _KEY_CODE_5 (5) */ + [0x7] =3D Q_KEY_CODE_6, /* linux:7 (KEY_6) -> linux:7 (KEY_6) -> qcode:Q= _KEY_CODE_6 (6) */ + [0x8] =3D Q_KEY_CODE_7, /* linux:8 (KEY_7) -> linux:8 (KEY_7) -> qcode:Q= _KEY_CODE_7 (7) */ + [0x9] =3D Q_KEY_CODE_8, /* linux:9 (KEY_8) -> linux:9 (KEY_8) -> qcode:Q= _KEY_CODE_8 (8) */ + [0xa] =3D Q_KEY_CODE_9, /* linux:10 (KEY_9) -> linux:10 (KEY_9) -> qcode= :Q_KEY_CODE_9 (9) */ + [0xb] =3D Q_KEY_CODE_0, /* linux:11 (KEY_0) -> linux:11 (KEY_0) -> qcode= :Q_KEY_CODE_0 (0) */ + [0xc] =3D Q_KEY_CODE_MINUS, /* linux:12 (KEY_MINUS) -> linux:12 (KEY_MIN= US) -> qcode:Q_KEY_CODE_MINUS (minus) */ + [0xd] =3D Q_KEY_CODE_EQUAL, /* linux:13 (KEY_EQUAL) -> linux:13 (KEY_EQU= AL) -> qcode:Q_KEY_CODE_EQUAL (equal) */ + [0xe] =3D Q_KEY_CODE_BACKSPACE, /* linux:14 (KEY_BACKSPACE) -> linux:14 = (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0xf] =3D Q_KEY_CODE_TAB, /* linux:15 (KEY_TAB) -> linux:15 (KEY_TAB) ->= qcode:Q_KEY_CODE_TAB (tab) */ + [0x10] =3D Q_KEY_CODE_Q, /* linux:16 (KEY_Q) -> linux:16 (KEY_Q) -> qcod= e:Q_KEY_CODE_Q (q) */ + [0x11] =3D Q_KEY_CODE_W, /* linux:17 (KEY_W) -> linux:17 (KEY_W) -> qcod= e:Q_KEY_CODE_W (w) */ + [0x12] =3D Q_KEY_CODE_E, /* linux:18 (KEY_E) -> linux:18 (KEY_E) -> qcod= e:Q_KEY_CODE_E (e) */ + [0x13] =3D Q_KEY_CODE_R, /* linux:19 (KEY_R) -> linux:19 (KEY_R) -> qcod= e:Q_KEY_CODE_R (r) */ + [0x14] =3D Q_KEY_CODE_T, /* linux:20 (KEY_T) -> linux:20 (KEY_T) -> qcod= e:Q_KEY_CODE_T (t) */ + [0x15] =3D Q_KEY_CODE_Y, /* linux:21 (KEY_Y) -> linux:21 (KEY_Y) -> qcod= e:Q_KEY_CODE_Y (y) */ + [0x16] =3D Q_KEY_CODE_U, /* linux:22 (KEY_U) -> linux:22 (KEY_U) -> qcod= e:Q_KEY_CODE_U (u) */ + [0x17] =3D Q_KEY_CODE_I, /* linux:23 (KEY_I) -> linux:23 (KEY_I) -> qcod= e:Q_KEY_CODE_I (i) */ + [0x18] =3D Q_KEY_CODE_O, /* linux:24 (KEY_O) -> linux:24 (KEY_O) -> qcod= e:Q_KEY_CODE_O (o) */ + [0x19] =3D Q_KEY_CODE_P, /* linux:25 (KEY_P) -> linux:25 (KEY_P) -> qcod= e:Q_KEY_CODE_P (p) */ + [0x1a] =3D Q_KEY_CODE_BRACKET_LEFT, /* linux:26 (KEY_LEFTBRACE) -> linux= :26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x1b] =3D Q_KEY_CODE_BRACKET_RIGHT, /* linux:27 (KEY_RIGHTBRACE) -> lin= ux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x1c] =3D Q_KEY_CODE_RET, /* linux:28 (KEY_ENTER) -> linux:28 (KEY_ENTE= R) -> qcode:Q_KEY_CODE_RET (ret) */ + [0x1d] =3D Q_KEY_CODE_CTRL, /* linux:29 (KEY_LEFTCTRL) -> linux:29 (KEY_= LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x1e] =3D Q_KEY_CODE_A, /* linux:30 (KEY_A) -> linux:30 (KEY_A) -> qcod= e:Q_KEY_CODE_A (a) */ + [0x1f] =3D Q_KEY_CODE_S, /* linux:31 (KEY_S) -> linux:31 (KEY_S) -> qcod= e:Q_KEY_CODE_S (s) */ + [0x20] =3D Q_KEY_CODE_D, /* linux:32 (KEY_D) -> linux:32 (KEY_D) -> qcod= e:Q_KEY_CODE_D (d) */ + [0x21] =3D Q_KEY_CODE_F, /* linux:33 (KEY_F) -> linux:33 (KEY_F) -> qcod= e:Q_KEY_CODE_F (f) */ + [0x22] =3D Q_KEY_CODE_G, /* linux:34 (KEY_G) -> linux:34 (KEY_G) -> qcod= e:Q_KEY_CODE_G (g) */ + [0x23] =3D Q_KEY_CODE_H, /* linux:35 (KEY_H) -> linux:35 (KEY_H) -> qcod= e:Q_KEY_CODE_H (h) */ + [0x24] =3D Q_KEY_CODE_J, /* linux:36 (KEY_J) -> linux:36 (KEY_J) -> qcod= e:Q_KEY_CODE_J (j) */ + [0x25] =3D Q_KEY_CODE_K, /* linux:37 (KEY_K) -> linux:37 (KEY_K) -> qcod= e:Q_KEY_CODE_K (k) */ + [0x26] =3D Q_KEY_CODE_L, /* linux:38 (KEY_L) -> linux:38 (KEY_L) -> qcod= e:Q_KEY_CODE_L (l) */ + [0x27] =3D Q_KEY_CODE_SEMICOLON, /* linux:39 (KEY_SEMICOLON) -> linux:39= (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x28] =3D Q_KEY_CODE_APOSTROPHE, /* linux:40 (KEY_APOSTROPHE) -> linux:= 40 (KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x29] =3D Q_KEY_CODE_GRAVE_ACCENT, /* linux:41 (KEY_GRAVE) -> linux:41 = (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x2a] =3D Q_KEY_CODE_SHIFT, /* linux:42 (KEY_LEFTSHIFT) -> linux:42 (KE= Y_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x2b] =3D Q_KEY_CODE_BACKSLASH, /* linux:43 (KEY_BACKSLASH) -> linux:43= (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x2c] =3D Q_KEY_CODE_Z, /* linux:44 (KEY_Z) -> linux:44 (KEY_Z) -> qcod= e:Q_KEY_CODE_Z (z) */ + [0x2d] =3D Q_KEY_CODE_X, /* linux:45 (KEY_X) -> linux:45 (KEY_X) -> qcod= e:Q_KEY_CODE_X (x) */ + [0x2e] =3D Q_KEY_CODE_C, /* linux:46 (KEY_C) -> linux:46 (KEY_C) -> qcod= e:Q_KEY_CODE_C (c) */ + [0x2f] =3D Q_KEY_CODE_V, /* linux:47 (KEY_V) -> linux:47 (KEY_V) -> qcod= e:Q_KEY_CODE_V (v) */ + [0x30] =3D Q_KEY_CODE_B, /* linux:48 (KEY_B) -> linux:48 (KEY_B) -> qcod= e:Q_KEY_CODE_B (b) */ + [0x31] =3D Q_KEY_CODE_N, /* linux:49 (KEY_N) -> linux:49 (KEY_N) -> qcod= e:Q_KEY_CODE_N (n) */ + [0x32] =3D Q_KEY_CODE_M, /* linux:50 (KEY_M) -> linux:50 (KEY_M) -> qcod= e:Q_KEY_CODE_M (m) */ + [0x33] =3D Q_KEY_CODE_COMMA, /* linux:51 (KEY_COMMA) -> linux:51 (KEY_CO= MMA) -> qcode:Q_KEY_CODE_COMMA (comma) */ + [0x34] =3D Q_KEY_CODE_DOT, /* linux:52 (KEY_DOT) -> linux:52 (KEY_DOT) -= > qcode:Q_KEY_CODE_DOT (dot) */ + [0x35] =3D Q_KEY_CODE_SLASH, /* linux:53 (KEY_SLASH) -> linux:53 (KEY_SL= ASH) -> qcode:Q_KEY_CODE_SLASH (slash) */ + [0x36] =3D Q_KEY_CODE_SHIFT_R, /* linux:54 (KEY_RIGHTSHIFT) -> linux:54 = (KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x37] =3D Q_KEY_CODE_KP_MULTIPLY, /* linux:55 (KEY_KPASTERISK) -> linux= :55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x38] =3D Q_KEY_CODE_ALT, /* linux:56 (KEY_LEFTALT) -> linux:56 (KEY_LE= FTALT) -> qcode:Q_KEY_CODE_ALT (alt) */ + [0x39] =3D Q_KEY_CODE_SPC, /* linux:57 (KEY_SPACE) -> linux:57 (KEY_SPAC= E) -> qcode:Q_KEY_CODE_SPC (spc) */ + [0x3a] =3D Q_KEY_CODE_CAPS_LOCK, /* linux:58 (KEY_CAPSLOCK) -> linux:58 = (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x3b] =3D Q_KEY_CODE_F1, /* linux:59 (KEY_F1) -> linux:59 (KEY_F1) -> q= code:Q_KEY_CODE_F1 (f1) */ + [0x3c] =3D Q_KEY_CODE_F2, /* linux:60 (KEY_F2) -> linux:60 (KEY_F2) -> q= code:Q_KEY_CODE_F2 (f2) */ + [0x3d] =3D Q_KEY_CODE_F3, /* linux:61 (KEY_F3) -> linux:61 (KEY_F3) -> q= code:Q_KEY_CODE_F3 (f3) */ + [0x3e] =3D Q_KEY_CODE_F4, /* linux:62 (KEY_F4) -> linux:62 (KEY_F4) -> q= code:Q_KEY_CODE_F4 (f4) */ + [0x3f] =3D Q_KEY_CODE_F5, /* linux:63 (KEY_F5) -> linux:63 (KEY_F5) -> q= code:Q_KEY_CODE_F5 (f5) */ + [0x40] =3D Q_KEY_CODE_F6, /* linux:64 (KEY_F6) -> linux:64 (KEY_F6) -> q= code:Q_KEY_CODE_F6 (f6) */ + [0x41] =3D Q_KEY_CODE_F7, /* linux:65 (KEY_F7) -> linux:65 (KEY_F7) -> q= code:Q_KEY_CODE_F7 (f7) */ + [0x42] =3D Q_KEY_CODE_F8, /* linux:66 (KEY_F8) -> linux:66 (KEY_F8) -> q= code:Q_KEY_CODE_F8 (f8) */ + [0x43] =3D Q_KEY_CODE_F9, /* linux:67 (KEY_F9) -> linux:67 (KEY_F9) -> q= code:Q_KEY_CODE_F9 (f9) */ + [0x44] =3D Q_KEY_CODE_F10, /* linux:68 (KEY_F10) -> linux:68 (KEY_F10) -= > qcode:Q_KEY_CODE_F10 (f10) */ + [0x45] =3D Q_KEY_CODE_NUM_LOCK, /* linux:69 (KEY_NUMLOCK) -> linux:69 (K= EY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x46] =3D Q_KEY_CODE_SCROLL_LOCK, /* linux:70 (KEY_SCROLLLOCK) -> linux= :70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x47] =3D Q_KEY_CODE_KP_7, /* linux:71 (KEY_KP7) -> linux:71 (KEY_KP7) = -> qcode:Q_KEY_CODE_KP_7 (kp_7) */ + [0x48] =3D Q_KEY_CODE_KP_8, /* linux:72 (KEY_KP8) -> linux:72 (KEY_KP8) = -> qcode:Q_KEY_CODE_KP_8 (kp_8) */ + [0x49] =3D Q_KEY_CODE_KP_9, /* linux:73 (KEY_KP9) -> linux:73 (KEY_KP9) = -> qcode:Q_KEY_CODE_KP_9 (kp_9) */ + [0x4a] =3D Q_KEY_CODE_KP_SUBTRACT, /* linux:74 (KEY_KPMINUS) -> linux:74= (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x4b] =3D Q_KEY_CODE_KP_4, /* linux:75 (KEY_KP4) -> linux:75 (KEY_KP4) = -> qcode:Q_KEY_CODE_KP_4 (kp_4) */ + [0x4c] =3D Q_KEY_CODE_KP_5, /* linux:76 (KEY_KP5) -> linux:76 (KEY_KP5) = -> qcode:Q_KEY_CODE_KP_5 (kp_5) */ + [0x4d] =3D Q_KEY_CODE_KP_6, /* linux:77 (KEY_KP6) -> linux:77 (KEY_KP6) = -> qcode:Q_KEY_CODE_KP_6 (kp_6) */ + [0x4e] =3D Q_KEY_CODE_KP_ADD, /* linux:78 (KEY_KPPLUS) -> linux:78 (KEY_= KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x4f] =3D Q_KEY_CODE_KP_1, /* linux:79 (KEY_KP1) -> linux:79 (KEY_KP1) = -> qcode:Q_KEY_CODE_KP_1 (kp_1) */ + [0x50] =3D Q_KEY_CODE_KP_2, /* linux:80 (KEY_KP2) -> linux:80 (KEY_KP2) = -> qcode:Q_KEY_CODE_KP_2 (kp_2) */ + [0x51] =3D Q_KEY_CODE_KP_3, /* linux:81 (KEY_KP3) -> linux:81 (KEY_KP3) = -> qcode:Q_KEY_CODE_KP_3 (kp_3) */ + [0x52] =3D Q_KEY_CODE_KP_0, /* linux:82 (KEY_KP0) -> linux:82 (KEY_KP0) = -> qcode:Q_KEY_CODE_KP_0 (kp_0) */ + [0x53] =3D Q_KEY_CODE_KP_DECIMAL, /* linux:83 (KEY_KPDOT) -> linux:83 (K= EY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x54] =3D Q_KEY_CODE_UNMAPPED, /* linux:84 (unnamed) -> linux:84 (unnam= ed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x55] =3D Q_KEY_CODE_UNMAPPED, /* linux:85 (KEY_ZENKAKUHANKAKU) -> linu= x:85 (KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x56] =3D Q_KEY_CODE_LESS, /* linux:86 (KEY_102ND) -> linux:86 (KEY_102= ND) -> qcode:Q_KEY_CODE_LESS (less) */ + [0x57] =3D Q_KEY_CODE_F11, /* linux:87 (KEY_F11) -> linux:87 (KEY_F11) -= > qcode:Q_KEY_CODE_F11 (f11) */ + [0x58] =3D Q_KEY_CODE_F12, /* linux:88 (KEY_F12) -> linux:88 (KEY_F12) -= > qcode:Q_KEY_CODE_F12 (f12) */ + [0x59] =3D Q_KEY_CODE_RO, /* linux:89 (KEY_RO) -> linux:89 (KEY_RO) -> q= code:Q_KEY_CODE_RO (ro) */ + [0x5a] =3D Q_KEY_CODE_UNMAPPED, /* linux:90 (KEY_KATAKANA) -> linux:90 (= KEY_KATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5b] =3D Q_KEY_CODE_HIRAGANA, /* linux:91 (KEY_HIRAGANA) -> linux:91 (= KEY_HIRAGANA) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */ + [0x5c] =3D Q_KEY_CODE_HENKAN, /* linux:92 (KEY_HENKAN) -> linux:92 (KEY_= HENKAN) -> qcode:Q_KEY_CODE_HENKAN (henkan) */ + [0x5d] =3D Q_KEY_CODE_UNMAPPED, /* linux:93 (KEY_KATAKANAHIRAGANA) -> li= nux:93 (KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5e] =3D Q_KEY_CODE_UNMAPPED, /* linux:94 (KEY_MUHENKAN) -> linux:94 (= KEY_MUHENKAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5f] =3D Q_KEY_CODE_UNMAPPED, /* linux:95 (KEY_KPJPCOMMA) -> linux:95 = (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x60] =3D Q_KEY_CODE_KP_ENTER, /* linux:96 (KEY_KPENTER) -> linux:96 (K= EY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x61] =3D Q_KEY_CODE_CTRL_R, /* linux:97 (KEY_RIGHTCTRL) -> linux:97 (K= EY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x62] =3D Q_KEY_CODE_KP_DIVIDE, /* linux:98 (KEY_KPSLASH) -> linux:98 (= KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x63] =3D Q_KEY_CODE_SYSRQ, /* linux:99 (KEY_SYSRQ) -> linux:99 (KEY_SY= SRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x64] =3D Q_KEY_CODE_ALT_R, /* linux:100 (KEY_RIGHTALT) -> linux:100 (K= EY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x65] =3D Q_KEY_CODE_LF, /* linux:101 (KEY_LINEFEED) -> linux:101 (KEY_= LINEFEED) -> qcode:Q_KEY_CODE_LF (lf) */ + [0x66] =3D Q_KEY_CODE_HOME, /* linux:102 (KEY_HOME) -> linux:102 (KEY_HO= ME) -> qcode:Q_KEY_CODE_HOME (home) */ + [0x67] =3D Q_KEY_CODE_UP, /* linux:103 (KEY_UP) -> linux:103 (KEY_UP) ->= qcode:Q_KEY_CODE_UP (up) */ + [0x68] =3D Q_KEY_CODE_PGUP, /* linux:104 (KEY_PAGEUP) -> linux:104 (KEY_= PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x69] =3D Q_KEY_CODE_LEFT, /* linux:105 (KEY_LEFT) -> linux:105 (KEY_LE= FT) -> qcode:Q_KEY_CODE_LEFT (left) */ + [0x6a] =3D Q_KEY_CODE_RIGHT, /* linux:106 (KEY_RIGHT) -> linux:106 (KEY_= RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0x6b] =3D Q_KEY_CODE_END, /* linux:107 (KEY_END) -> linux:107 (KEY_END)= -> qcode:Q_KEY_CODE_END (end) */ + [0x6c] =3D Q_KEY_CODE_DOWN, /* linux:108 (KEY_DOWN) -> linux:108 (KEY_DO= WN) -> qcode:Q_KEY_CODE_DOWN (down) */ + [0x6d] =3D Q_KEY_CODE_PGDN, /* linux:109 (KEY_PAGEDOWN) -> linux:109 (KE= Y_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x6e] =3D Q_KEY_CODE_INSERT, /* linux:110 (KEY_INSERT) -> linux:110 (KE= Y_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0x6f] =3D Q_KEY_CODE_DELETE, /* linux:111 (KEY_DELETE) -> linux:111 (KE= Y_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x70] =3D Q_KEY_CODE_UNMAPPED, /* linux:112 (KEY_MACRO) -> linux:112 (K= EY_MACRO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x71] =3D Q_KEY_CODE_AUDIOMUTE, /* linux:113 (KEY_MUTE) -> linux:113 (K= EY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0x72] =3D Q_KEY_CODE_VOLUMEDOWN, /* linux:114 (KEY_VOLUMEDOWN) -> linux= :114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0x73] =3D Q_KEY_CODE_VOLUMEUP, /* linux:115 (KEY_VOLUMEUP) -> linux:115= (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0x74] =3D Q_KEY_CODE_POWER, /* linux:116 (KEY_POWER) -> linux:116 (KEY_= POWER) -> qcode:Q_KEY_CODE_POWER (power) */ + [0x75] =3D Q_KEY_CODE_KP_EQUALS, /* linux:117 (KEY_KPEQUAL) -> linux:117= (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x76] =3D Q_KEY_CODE_UNMAPPED, /* linux:118 (KEY_KPPLUSMINUS) -> linux:= 118 (KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x77] =3D Q_KEY_CODE_PAUSE, /* linux:119 (KEY_PAUSE) -> linux:119 (KEY_= PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* linux:120 (KEY_SCALE) -> linux:120 (K= EY_SCALE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_KP_COMMA, /* linux:121 (KEY_KPCOMMA) -> linux:121 = (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0x7a] =3D Q_KEY_CODE_UNMAPPED, /* linux:122 (KEY_HANGEUL) -> linux:122 = (KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7b] =3D Q_KEY_CODE_UNMAPPED, /* linux:123 (KEY_HANJA) -> linux:123 (K= EY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7c] =3D Q_KEY_CODE_YEN, /* linux:124 (KEY_YEN) -> linux:124 (KEY_YEN)= -> qcode:Q_KEY_CODE_YEN (yen) */ + [0x7d] =3D Q_KEY_CODE_META_L, /* linux:125 (KEY_LEFTMETA) -> linux:125 (= KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x7e] =3D Q_KEY_CODE_META_R, /* linux:126 (KEY_RIGHTMETA) -> linux:126 = (KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x7f] =3D Q_KEY_CODE_COMPOSE, /* linux:127 (KEY_COMPOSE) -> linux:127 (= KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x80] =3D Q_KEY_CODE_STOP, /* linux:128 (KEY_STOP) -> linux:128 (KEY_ST= OP) -> qcode:Q_KEY_CODE_STOP (stop) */ + [0x81] =3D Q_KEY_CODE_AGAIN, /* linux:129 (KEY_AGAIN) -> linux:129 (KEY_= AGAIN) -> qcode:Q_KEY_CODE_AGAIN (again) */ + [0x82] =3D Q_KEY_CODE_PROPS, /* linux:130 (KEY_PROPS) -> linux:130 (KEY_= PROPS) -> qcode:Q_KEY_CODE_PROPS (props) */ + [0x83] =3D Q_KEY_CODE_UNDO, /* linux:131 (KEY_UNDO) -> linux:131 (KEY_UN= DO) -> qcode:Q_KEY_CODE_UNDO (undo) */ + [0x84] =3D Q_KEY_CODE_FRONT, /* linux:132 (KEY_FRONT) -> linux:132 (KEY_= FRONT) -> qcode:Q_KEY_CODE_FRONT (front) */ + [0x85] =3D Q_KEY_CODE_COPY, /* linux:133 (KEY_COPY) -> linux:133 (KEY_CO= PY) -> qcode:Q_KEY_CODE_COPY (copy) */ + [0x86] =3D Q_KEY_CODE_OPEN, /* linux:134 (KEY_OPEN) -> linux:134 (KEY_OP= EN) -> qcode:Q_KEY_CODE_OPEN (open) */ + [0x87] =3D Q_KEY_CODE_PASTE, /* linux:135 (KEY_PASTE) -> linux:135 (KEY_= PASTE) -> qcode:Q_KEY_CODE_PASTE (paste) */ + [0x88] =3D Q_KEY_CODE_FIND, /* linux:136 (KEY_FIND) -> linux:136 (KEY_FI= ND) -> qcode:Q_KEY_CODE_FIND (find) */ + [0x89] =3D Q_KEY_CODE_CUT, /* linux:137 (KEY_CUT) -> linux:137 (KEY_CUT)= -> qcode:Q_KEY_CODE_CUT (cut) */ + [0x8a] =3D Q_KEY_CODE_HELP, /* linux:138 (KEY_HELP) -> linux:138 (KEY_HE= LP) -> qcode:Q_KEY_CODE_HELP (help) */ + [0x8b] =3D Q_KEY_CODE_MENU, /* linux:139 (KEY_MENU) -> linux:139 (KEY_ME= NU) -> qcode:Q_KEY_CODE_MENU (menu) */ + [0x8c] =3D Q_KEY_CODE_CALCULATOR, /* linux:140 (KEY_CALC) -> linux:140 (= KEY_CALC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */ + [0x8d] =3D Q_KEY_CODE_UNMAPPED, /* linux:141 (KEY_SETUP) -> linux:141 (K= EY_SETUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8e] =3D Q_KEY_CODE_SLEEP, /* linux:142 (KEY_SLEEP) -> linux:142 (KEY_= SLEEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */ + [0x8f] =3D Q_KEY_CODE_WAKE, /* linux:143 (KEY_WAKEUP) -> linux:143 (KEY_= WAKEUP) -> qcode:Q_KEY_CODE_WAKE (wake) */ + [0x90] =3D Q_KEY_CODE_UNMAPPED, /* linux:144 (KEY_FILE) -> linux:144 (KE= Y_FILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x91] =3D Q_KEY_CODE_UNMAPPED, /* linux:145 (KEY_SENDFILE) -> linux:145= (KEY_SENDFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x92] =3D Q_KEY_CODE_UNMAPPED, /* linux:146 (KEY_DELETEFILE) -> linux:1= 46 (KEY_DELETEFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x93] =3D Q_KEY_CODE_UNMAPPED, /* linux:147 (KEY_XFER) -> linux:147 (KE= Y_XFER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x94] =3D Q_KEY_CODE_UNMAPPED, /* linux:148 (KEY_PROG1) -> linux:148 (K= EY_PROG1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x95] =3D Q_KEY_CODE_UNMAPPED, /* linux:149 (KEY_PROG2) -> linux:149 (K= EY_PROG2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x96] =3D Q_KEY_CODE_UNMAPPED, /* linux:150 (KEY_WWW) -> linux:150 (KEY= _WWW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x97] =3D Q_KEY_CODE_UNMAPPED, /* linux:151 (KEY_MSDOS) -> linux:151 (K= EY_MSDOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x98] =3D Q_KEY_CODE_UNMAPPED, /* linux:152 (KEY_SCREENLOCK) -> linux:1= 52 (KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x99] =3D Q_KEY_CODE_UNMAPPED, /* linux:153 (KEY_DIRECTION) -> linux:15= 3 (KEY_DIRECTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9a] =3D Q_KEY_CODE_UNMAPPED, /* linux:154 (KEY_CYCLEWINDOWS) -> linux= :154 (KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9b] =3D Q_KEY_CODE_MAIL, /* linux:155 (KEY_MAIL) -> linux:155 (KEY_MA= IL) -> qcode:Q_KEY_CODE_MAIL (mail) */ + [0x9c] =3D Q_KEY_CODE_AC_BOOKMARKS, /* linux:156 (KEY_BOOKMARKS) -> linu= x:156 (KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */ + [0x9d] =3D Q_KEY_CODE_COMPUTER, /* linux:157 (KEY_COMPUTER) -> linux:157= (KEY_COMPUTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */ + [0x9e] =3D Q_KEY_CODE_AC_BACK, /* linux:158 (KEY_BACK) -> linux:158 (KEY= _BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */ + [0x9f] =3D Q_KEY_CODE_AC_FORWARD, /* linux:159 (KEY_FORWARD) -> linux:15= 9 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xa0] =3D Q_KEY_CODE_UNMAPPED, /* linux:160 (KEY_CLOSECD) -> linux:160 = (KEY_CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa1] =3D Q_KEY_CODE_UNMAPPED, /* linux:161 (KEY_EJECTCD) -> linux:161 = (KEY_EJECTCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa2] =3D Q_KEY_CODE_UNMAPPED, /* linux:162 (KEY_EJECTCLOSECD) -> linux= :162 (KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa3] =3D Q_KEY_CODE_AUDIONEXT, /* linux:163 (KEY_NEXTSONG) -> linux:16= 3 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0xa4] =3D Q_KEY_CODE_AUDIOPLAY, /* linux:164 (KEY_PLAYPAUSE) -> linux:1= 64 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xa5] =3D Q_KEY_CODE_AUDIOPREV, /* linux:165 (KEY_PREVIOUSSONG) -> linu= x:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0xa6] =3D Q_KEY_CODE_AUDIOSTOP, /* linux:166 (KEY_STOPCD) -> linux:166 = (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xa7] =3D Q_KEY_CODE_UNMAPPED, /* linux:167 (KEY_RECORD) -> linux:167 (= KEY_RECORD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa8] =3D Q_KEY_CODE_UNMAPPED, /* linux:168 (KEY_REWIND) -> linux:168 (= KEY_REWIND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa9] =3D Q_KEY_CODE_UNMAPPED, /* linux:169 (KEY_PHONE) -> linux:169 (K= EY_PHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xaa] =3D Q_KEY_CODE_UNMAPPED, /* linux:170 (KEY_ISO) -> linux:170 (KEY= _ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xab] =3D Q_KEY_CODE_UNMAPPED, /* linux:171 (KEY_CONFIG) -> linux:171 (= KEY_CONFIG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xac] =3D Q_KEY_CODE_AC_HOME, /* linux:172 (KEY_HOMEPAGE) -> linux:172 = (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */ + [0xad] =3D Q_KEY_CODE_AC_REFRESH, /* linux:173 (KEY_REFRESH) -> linux:17= 3 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xae] =3D Q_KEY_CODE_UNMAPPED, /* linux:174 (KEY_EXIT) -> linux:174 (KE= Y_EXIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xaf] =3D Q_KEY_CODE_UNMAPPED, /* linux:175 (KEY_MOVE) -> linux:175 (KE= Y_MOVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb0] =3D Q_KEY_CODE_UNMAPPED, /* linux:176 (KEY_EDIT) -> linux:176 (KE= Y_EDIT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb1] =3D Q_KEY_CODE_UNMAPPED, /* linux:177 (KEY_SCROLLUP) -> linux:177= (KEY_SCROLLUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb2] =3D Q_KEY_CODE_UNMAPPED, /* linux:178 (KEY_SCROLLDOWN) -> linux:1= 78 (KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb3] =3D Q_KEY_CODE_UNMAPPED, /* linux:179 (KEY_KPLEFTPAREN) -> linux:= 179 (KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb4] =3D Q_KEY_CODE_UNMAPPED, /* linux:180 (KEY_KPRIGHTPAREN) -> linux= :180 (KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb5] =3D Q_KEY_CODE_UNMAPPED, /* linux:181 (KEY_NEW) -> linux:181 (KEY= _NEW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb6] =3D Q_KEY_CODE_UNMAPPED, /* linux:182 (KEY_REDO) -> linux:182 (KE= Y_REDO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb7] =3D Q_KEY_CODE_UNMAPPED, /* linux:183 (KEY_F13) -> linux:183 (KEY= _F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb8] =3D Q_KEY_CODE_UNMAPPED, /* linux:184 (KEY_F14) -> linux:184 (KEY= _F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb9] =3D Q_KEY_CODE_UNMAPPED, /* linux:185 (KEY_F15) -> linux:185 (KEY= _F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xba] =3D Q_KEY_CODE_UNMAPPED, /* linux:186 (KEY_F16) -> linux:186 (KEY= _F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbb] =3D Q_KEY_CODE_UNMAPPED, /* linux:187 (KEY_F17) -> linux:187 (KEY= _F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbc] =3D Q_KEY_CODE_UNMAPPED, /* linux:188 (KEY_F18) -> linux:188 (KEY= _F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbd] =3D Q_KEY_CODE_UNMAPPED, /* linux:189 (KEY_F19) -> linux:189 (KEY= _F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbe] =3D Q_KEY_CODE_UNMAPPED, /* linux:190 (KEY_F20) -> linux:190 (KEY= _F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbf] =3D Q_KEY_CODE_UNMAPPED, /* linux:191 (KEY_F21) -> linux:191 (KEY= _F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc0] =3D Q_KEY_CODE_UNMAPPED, /* linux:192 (KEY_F22) -> linux:192 (KEY= _F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc1] =3D Q_KEY_CODE_UNMAPPED, /* linux:193 (KEY_F23) -> linux:193 (KEY= _F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc2] =3D Q_KEY_CODE_UNMAPPED, /* linux:194 (KEY_F24) -> linux:194 (KEY= _F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc3] =3D Q_KEY_CODE_UNMAPPED, /* linux:195 (unnamed) -> linux:195 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc4] =3D Q_KEY_CODE_UNMAPPED, /* linux:196 (unnamed) -> linux:196 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc5] =3D Q_KEY_CODE_UNMAPPED, /* linux:197 (unnamed) -> linux:197 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc6] =3D Q_KEY_CODE_UNMAPPED, /* linux:198 (unnamed) -> linux:198 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc7] =3D Q_KEY_CODE_UNMAPPED, /* linux:199 (unnamed) -> linux:199 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc8] =3D Q_KEY_CODE_UNMAPPED, /* linux:200 (KEY_PLAYCD) -> linux:200 (= KEY_PLAYCD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc9] =3D Q_KEY_CODE_UNMAPPED, /* linux:201 (KEY_PAUSECD) -> linux:201 = (KEY_PAUSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xca] =3D Q_KEY_CODE_UNMAPPED, /* linux:202 (KEY_PROG3) -> linux:202 (K= EY_PROG3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcb] =3D Q_KEY_CODE_UNMAPPED, /* linux:203 (KEY_PROG4) -> linux:203 (K= EY_PROG4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcc] =3D Q_KEY_CODE_UNMAPPED, /* linux:204 (KEY_DASHBOARD) -> linux:20= 4 (KEY_DASHBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcd] =3D Q_KEY_CODE_UNMAPPED, /* linux:205 (KEY_SUSPEND) -> linux:205 = (KEY_SUSPEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xce] =3D Q_KEY_CODE_UNMAPPED, /* linux:206 (KEY_CLOSE) -> linux:206 (K= EY_CLOSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcf] =3D Q_KEY_CODE_UNMAPPED, /* linux:207 (KEY_PLAY) -> linux:207 (KE= Y_PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd0] =3D Q_KEY_CODE_UNMAPPED, /* linux:208 (KEY_FASTFORWARD) -> linux:= 208 (KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd1] =3D Q_KEY_CODE_UNMAPPED, /* linux:209 (KEY_BASSBOOST) -> linux:20= 9 (KEY_BASSBOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd2] =3D Q_KEY_CODE_UNMAPPED, /* linux:210 (KEY_PRINT) -> linux:210 (K= EY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd3] =3D Q_KEY_CODE_UNMAPPED, /* linux:211 (KEY_HP) -> linux:211 (KEY_= HP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd4] =3D Q_KEY_CODE_UNMAPPED, /* linux:212 (KEY_CAMERA) -> linux:212 (= KEY_CAMERA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd5] =3D Q_KEY_CODE_UNMAPPED, /* linux:213 (KEY_SOUND) -> linux:213 (K= EY_SOUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd6] =3D Q_KEY_CODE_UNMAPPED, /* linux:214 (KEY_QUESTION) -> linux:214= (KEY_QUESTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd7] =3D Q_KEY_CODE_UNMAPPED, /* linux:215 (KEY_EMAIL) -> linux:215 (K= EY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd8] =3D Q_KEY_CODE_UNMAPPED, /* linux:216 (KEY_CHAT) -> linux:216 (KE= Y_CHAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd9] =3D Q_KEY_CODE_UNMAPPED, /* linux:217 (KEY_SEARCH) -> linux:217 (= KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xda] =3D Q_KEY_CODE_UNMAPPED, /* linux:218 (KEY_CONNECT) -> linux:218 = (KEY_CONNECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdb] =3D Q_KEY_CODE_UNMAPPED, /* linux:219 (KEY_FINANCE) -> linux:219 = (KEY_FINANCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdc] =3D Q_KEY_CODE_UNMAPPED, /* linux:220 (KEY_SPORT) -> linux:220 (K= EY_SPORT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdd] =3D Q_KEY_CODE_UNMAPPED, /* linux:221 (KEY_SHOP) -> linux:221 (KE= Y_SHOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xde] =3D Q_KEY_CODE_UNMAPPED, /* linux:222 (KEY_ALTERASE) -> linux:222= (KEY_ALTERASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdf] =3D Q_KEY_CODE_UNMAPPED, /* linux:223 (KEY_CANCEL) -> linux:223 (= KEY_CANCEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe0] =3D Q_KEY_CODE_UNMAPPED, /* linux:224 (KEY_BRIGHTNESSDOWN) -> lin= ux:224 (KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe1] =3D Q_KEY_CODE_UNMAPPED, /* linux:225 (KEY_BRIGHTNESSUP) -> linux= :225 (KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe2] =3D Q_KEY_CODE_MEDIASELECT, /* linux:226 (KEY_MEDIA) -> linux:226= (KEY_MEDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */ + [0xe3] =3D Q_KEY_CODE_UNMAPPED, /* linux:227 (KEY_SWITCHVIDEOMODE) -> li= nux:227 (KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe4] =3D Q_KEY_CODE_UNMAPPED, /* linux:228 (KEY_KBDILLUMTOGGLE) -> lin= ux:228 (KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe5] =3D Q_KEY_CODE_UNMAPPED, /* linux:229 (KEY_KBDILLUMDOWN) -> linux= :229 (KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe6] =3D Q_KEY_CODE_UNMAPPED, /* linux:230 (KEY_KBDILLUMUP) -> linux:2= 30 (KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe7] =3D Q_KEY_CODE_UNMAPPED, /* linux:231 (KEY_SEND) -> linux:231 (KE= Y_SEND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe8] =3D Q_KEY_CODE_UNMAPPED, /* linux:232 (KEY_REPLY) -> linux:232 (K= EY_REPLY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe9] =3D Q_KEY_CODE_UNMAPPED, /* linux:233 (KEY_FORWARDMAIL) -> linux:= 233 (KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xea] =3D Q_KEY_CODE_UNMAPPED, /* linux:234 (KEY_SAVE) -> linux:234 (KE= Y_SAVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xeb] =3D Q_KEY_CODE_UNMAPPED, /* linux:235 (KEY_DOCUMENTS) -> linux:23= 5 (KEY_DOCUMENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xec] =3D Q_KEY_CODE_UNMAPPED, /* linux:236 (KEY_BATTERY) -> linux:236 = (KEY_BATTERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xed] =3D Q_KEY_CODE_UNMAPPED, /* linux:237 (KEY_BLUETOOTH) -> linux:23= 7 (KEY_BLUETOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xee] =3D Q_KEY_CODE_UNMAPPED, /* linux:238 (KEY_WLAN) -> linux:238 (KE= Y_WLAN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xef] =3D Q_KEY_CODE_UNMAPPED, /* linux:239 (KEY_UWB) -> linux:239 (KEY= _UWB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf0] =3D Q_KEY_CODE_UNMAPPED, /* linux:240 (KEY_UNKNOWN) -> linux:240 = (KEY_UNKNOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf1] =3D Q_KEY_CODE_UNMAPPED, /* linux:241 (KEY_VIDEO_NEXT) -> linux:2= 41 (KEY_VIDEO_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf2] =3D Q_KEY_CODE_UNMAPPED, /* linux:242 (KEY_VIDEO_PREV) -> linux:2= 42 (KEY_VIDEO_PREV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf3] =3D Q_KEY_CODE_UNMAPPED, /* linux:243 (KEY_BRIGHTNESS_CYCLE) -> l= inux:243 (KEY_BRIGHTNESS_CYCLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf4] =3D Q_KEY_CODE_UNMAPPED, /* linux:244 (KEY_BRIGHTNESS_ZERO) -> li= nux:244 (KEY_BRIGHTNESS_ZERO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf5] =3D Q_KEY_CODE_UNMAPPED, /* linux:245 (KEY_DISPLAY_OFF) -> linux:= 245 (KEY_DISPLAY_OFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf6] =3D Q_KEY_CODE_UNMAPPED, /* linux:246 (KEY_WIMAX) -> linux:246 (K= EY_WIMAX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf7] =3D Q_KEY_CODE_UNMAPPED, /* linux:247 (unnamed) -> linux:247 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf8] =3D Q_KEY_CODE_UNMAPPED, /* linux:248 (unnamed) -> linux:248 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf9] =3D Q_KEY_CODE_UNMAPPED, /* linux:249 (unnamed) -> linux:249 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfa] =3D Q_KEY_CODE_UNMAPPED, /* linux:250 (unnamed) -> linux:250 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfb] =3D Q_KEY_CODE_UNMAPPED, /* linux:251 (unnamed) -> linux:251 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfc] =3D Q_KEY_CODE_UNMAPPED, /* linux:252 (unnamed) -> linux:252 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfd] =3D Q_KEY_CODE_UNMAPPED, /* linux:253 (unnamed) -> linux:253 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfe] =3D Q_KEY_CODE_UNMAPPED, /* linux:254 (unnamed) -> linux:254 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xff] =3D Q_KEY_CODE_UNMAPPED, /* linux:255 (unnamed) -> linux:255 (unn= amed) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x100] =3D Q_KEY_CODE_UNMAPPED, /* linux:256 (BTN_0) -> linux:256 (BTN_= 0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x101] =3D Q_KEY_CODE_UNMAPPED, /* linux:257 (BTN_1) -> linux:257 (BTN_= 1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x102] =3D Q_KEY_CODE_UNMAPPED, /* linux:258 (BTN_2) -> linux:258 (BTN_= 2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x103] =3D Q_KEY_CODE_UNMAPPED, /* linux:259 (BTN_3) -> linux:259 (BTN_= 3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x104] =3D Q_KEY_CODE_UNMAPPED, /* linux:260 (BTN_4) -> linux:260 (BTN_= 4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x105] =3D Q_KEY_CODE_UNMAPPED, /* linux:261 (BTN_5) -> linux:261 (BTN_= 5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x106] =3D Q_KEY_CODE_UNMAPPED, /* linux:262 (BTN_6) -> linux:262 (BTN_= 6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x107] =3D Q_KEY_CODE_UNMAPPED, /* linux:263 (BTN_7) -> linux:263 (BTN_= 7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x108] =3D Q_KEY_CODE_UNMAPPED, /* linux:264 (BTN_8) -> linux:264 (BTN_= 8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x109] =3D Q_KEY_CODE_UNMAPPED, /* linux:265 (BTN_9) -> linux:265 (BTN_= 9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x110] =3D Q_KEY_CODE_UNMAPPED, /* linux:272 (BTN_LEFT) -> linux:272 (B= TN_LEFT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x111] =3D Q_KEY_CODE_UNMAPPED, /* linux:273 (BTN_RIGHT) -> linux:273 (= BTN_RIGHT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x112] =3D Q_KEY_CODE_UNMAPPED, /* linux:274 (BTN_MIDDLE) -> linux:274 = (BTN_MIDDLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x113] =3D Q_KEY_CODE_UNMAPPED, /* linux:275 (BTN_SIDE) -> linux:275 (B= TN_SIDE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x114] =3D Q_KEY_CODE_UNMAPPED, /* linux:276 (BTN_EXTRA) -> linux:276 (= BTN_EXTRA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x115] =3D Q_KEY_CODE_UNMAPPED, /* linux:277 (BTN_FORWARD) -> linux:277= (BTN_FORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x116] =3D Q_KEY_CODE_UNMAPPED, /* linux:278 (BTN_BACK) -> linux:278 (B= TN_BACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x117] =3D Q_KEY_CODE_UNMAPPED, /* linux:279 (BTN_TASK) -> linux:279 (B= TN_TASK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x120] =3D Q_KEY_CODE_UNMAPPED, /* linux:288 (BTN_TRIGGER) -> linux:288= (BTN_TRIGGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x121] =3D Q_KEY_CODE_UNMAPPED, /* linux:289 (BTN_THUMB) -> linux:289 (= BTN_THUMB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x122] =3D Q_KEY_CODE_UNMAPPED, /* linux:290 (BTN_THUMB2) -> linux:290 = (BTN_THUMB2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x123] =3D Q_KEY_CODE_UNMAPPED, /* linux:291 (BTN_TOP) -> linux:291 (BT= N_TOP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x124] =3D Q_KEY_CODE_UNMAPPED, /* linux:292 (BTN_TOP2) -> linux:292 (B= TN_TOP2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x125] =3D Q_KEY_CODE_UNMAPPED, /* linux:293 (BTN_PINKIE) -> linux:293 = (BTN_PINKIE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x126] =3D Q_KEY_CODE_UNMAPPED, /* linux:294 (BTN_BASE) -> linux:294 (B= TN_BASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x127] =3D Q_KEY_CODE_UNMAPPED, /* linux:295 (BTN_BASE2) -> linux:295 (= BTN_BASE2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x128] =3D Q_KEY_CODE_UNMAPPED, /* linux:296 (BTN_BASE3) -> linux:296 (= BTN_BASE3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x129] =3D Q_KEY_CODE_UNMAPPED, /* linux:297 (BTN_BASE4) -> linux:297 (= BTN_BASE4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12a] =3D Q_KEY_CODE_UNMAPPED, /* linux:298 (BTN_BASE5) -> linux:298 (= BTN_BASE5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12b] =3D Q_KEY_CODE_UNMAPPED, /* linux:299 (BTN_BASE6) -> linux:299 (= BTN_BASE6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12f] =3D Q_KEY_CODE_UNMAPPED, /* linux:303 (BTN_DEAD) -> linux:303 (B= TN_DEAD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x130] =3D Q_KEY_CODE_UNMAPPED, /* linux:304 (BTN_A) -> linux:304 (BTN_= A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x131] =3D Q_KEY_CODE_UNMAPPED, /* linux:305 (BTN_B) -> linux:305 (BTN_= B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x132] =3D Q_KEY_CODE_UNMAPPED, /* linux:306 (BTN_C) -> linux:306 (BTN_= C) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x133] =3D Q_KEY_CODE_UNMAPPED, /* linux:307 (BTN_X) -> linux:307 (BTN_= X) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x134] =3D Q_KEY_CODE_UNMAPPED, /* linux:308 (BTN_Y) -> linux:308 (BTN_= Y) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x135] =3D Q_KEY_CODE_UNMAPPED, /* linux:309 (BTN_Z) -> linux:309 (BTN_= Z) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x136] =3D Q_KEY_CODE_UNMAPPED, /* linux:310 (BTN_TL) -> linux:310 (BTN= _TL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x137] =3D Q_KEY_CODE_UNMAPPED, /* linux:311 (BTN_TR) -> linux:311 (BTN= _TR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x138] =3D Q_KEY_CODE_UNMAPPED, /* linux:312 (BTN_TL2) -> linux:312 (BT= N_TL2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x139] =3D Q_KEY_CODE_UNMAPPED, /* linux:313 (BTN_TR2) -> linux:313 (BT= N_TR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13a] =3D Q_KEY_CODE_UNMAPPED, /* linux:314 (BTN_SELECT) -> linux:314 = (BTN_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13b] =3D Q_KEY_CODE_UNMAPPED, /* linux:315 (BTN_START) -> linux:315 (= BTN_START) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13c] =3D Q_KEY_CODE_UNMAPPED, /* linux:316 (BTN_MODE) -> linux:316 (B= TN_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13d] =3D Q_KEY_CODE_UNMAPPED, /* linux:317 (BTN_THUMBL) -> linux:317 = (BTN_THUMBL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13e] =3D Q_KEY_CODE_UNMAPPED, /* linux:318 (BTN_THUMBR) -> linux:318 = (BTN_THUMBR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x140] =3D Q_KEY_CODE_UNMAPPED, /* linux:320 (BTN_TOOL_PEN) -> linux:32= 0 (BTN_TOOL_PEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x141] =3D Q_KEY_CODE_UNMAPPED, /* linux:321 (BTN_TOOL_RUBBER) -> linux= :321 (BTN_TOOL_RUBBER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x142] =3D Q_KEY_CODE_UNMAPPED, /* linux:322 (BTN_TOOL_BRUSH) -> linux:= 322 (BTN_TOOL_BRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x143] =3D Q_KEY_CODE_UNMAPPED, /* linux:323 (BTN_TOOL_PENCIL) -> linux= :323 (BTN_TOOL_PENCIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x144] =3D Q_KEY_CODE_UNMAPPED, /* linux:324 (BTN_TOOL_AIRBRUSH) -> lin= ux:324 (BTN_TOOL_AIRBRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x145] =3D Q_KEY_CODE_UNMAPPED, /* linux:325 (BTN_TOOL_FINGER) -> linux= :325 (BTN_TOOL_FINGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x146] =3D Q_KEY_CODE_UNMAPPED, /* linux:326 (BTN_TOOL_MOUSE) -> linux:= 326 (BTN_TOOL_MOUSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x147] =3D Q_KEY_CODE_UNMAPPED, /* linux:327 (BTN_TOOL_LENS) -> linux:3= 27 (BTN_TOOL_LENS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14a] =3D Q_KEY_CODE_UNMAPPED, /* linux:330 (BTN_TOUCH) -> linux:330 (= BTN_TOUCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14b] =3D Q_KEY_CODE_UNMAPPED, /* linux:331 (BTN_STYLUS) -> linux:331 = (BTN_STYLUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14c] =3D Q_KEY_CODE_UNMAPPED, /* linux:332 (BTN_STYLUS2) -> linux:332= (BTN_STYLUS2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14d] =3D Q_KEY_CODE_UNMAPPED, /* linux:333 (BTN_TOOL_DOUBLETAP) -> li= nux:333 (BTN_TOOL_DOUBLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14e] =3D Q_KEY_CODE_UNMAPPED, /* linux:334 (BTN_TOOL_TRIPLETAP) -> li= nux:334 (BTN_TOOL_TRIPLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14f] =3D Q_KEY_CODE_UNMAPPED, /* linux:335 (BTN_TOOL_QUADTAP) -> linu= x:335 (BTN_TOOL_QUADTAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x150] =3D Q_KEY_CODE_UNMAPPED, /* linux:336 (BTN_GEAR_DOWN) -> linux:3= 36 (BTN_GEAR_DOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x151] =3D Q_KEY_CODE_UNMAPPED, /* linux:337 (BTN_GEAR_UP) -> linux:337= (BTN_GEAR_UP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x160] =3D Q_KEY_CODE_UNMAPPED, /* linux:352 (KEY_OK) -> linux:352 (KEY= _OK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x161] =3D Q_KEY_CODE_UNMAPPED, /* linux:353 (KEY_SELECT) -> linux:353 = (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x162] =3D Q_KEY_CODE_UNMAPPED, /* linux:354 (KEY_GOTO) -> linux:354 (K= EY_GOTO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x163] =3D Q_KEY_CODE_UNMAPPED, /* linux:355 (KEY_CLEAR) -> linux:355 (= KEY_CLEAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x164] =3D Q_KEY_CODE_UNMAPPED, /* linux:356 (KEY_POWER2) -> linux:356 = (KEY_POWER2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x165] =3D Q_KEY_CODE_UNMAPPED, /* linux:357 (KEY_OPTION) -> linux:357 = (KEY_OPTION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x166] =3D Q_KEY_CODE_UNMAPPED, /* linux:358 (KEY_INFO) -> linux:358 (K= EY_INFO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x167] =3D Q_KEY_CODE_UNMAPPED, /* linux:359 (KEY_TIME) -> linux:359 (K= EY_TIME) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x168] =3D Q_KEY_CODE_UNMAPPED, /* linux:360 (KEY_VENDOR) -> linux:360 = (KEY_VENDOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x169] =3D Q_KEY_CODE_UNMAPPED, /* linux:361 (KEY_ARCHIVE) -> linux:361= (KEY_ARCHIVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16a] =3D Q_KEY_CODE_UNMAPPED, /* linux:362 (KEY_PROGRAM) -> linux:362= (KEY_PROGRAM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16b] =3D Q_KEY_CODE_UNMAPPED, /* linux:363 (KEY_CHANNEL) -> linux:363= (KEY_CHANNEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16c] =3D Q_KEY_CODE_UNMAPPED, /* linux:364 (KEY_FAVORITES) -> linux:3= 64 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16d] =3D Q_KEY_CODE_UNMAPPED, /* linux:365 (KEY_EPG) -> linux:365 (KE= Y_EPG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16e] =3D Q_KEY_CODE_UNMAPPED, /* linux:366 (KEY_PVR) -> linux:366 (KE= Y_PVR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16f] =3D Q_KEY_CODE_UNMAPPED, /* linux:367 (KEY_MHP) -> linux:367 (KE= Y_MHP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x170] =3D Q_KEY_CODE_UNMAPPED, /* linux:368 (KEY_LANGUAGE) -> linux:36= 8 (KEY_LANGUAGE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x171] =3D Q_KEY_CODE_UNMAPPED, /* linux:369 (KEY_TITLE) -> linux:369 (= KEY_TITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x172] =3D Q_KEY_CODE_UNMAPPED, /* linux:370 (KEY_SUBTITLE) -> linux:37= 0 (KEY_SUBTITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x173] =3D Q_KEY_CODE_UNMAPPED, /* linux:371 (KEY_ANGLE) -> linux:371 (= KEY_ANGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x174] =3D Q_KEY_CODE_UNMAPPED, /* linux:372 (KEY_ZOOM) -> linux:372 (K= EY_ZOOM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x175] =3D Q_KEY_CODE_UNMAPPED, /* linux:373 (KEY_MODE) -> linux:373 (K= EY_MODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x176] =3D Q_KEY_CODE_UNMAPPED, /* linux:374 (KEY_KEYBOARD) -> linux:37= 4 (KEY_KEYBOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x177] =3D Q_KEY_CODE_UNMAPPED, /* linux:375 (KEY_SCREEN) -> linux:375 = (KEY_SCREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x178] =3D Q_KEY_CODE_UNMAPPED, /* linux:376 (KEY_PC) -> linux:376 (KEY= _PC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x179] =3D Q_KEY_CODE_UNMAPPED, /* linux:377 (KEY_TV) -> linux:377 (KEY= _TV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17a] =3D Q_KEY_CODE_UNMAPPED, /* linux:378 (KEY_TV2) -> linux:378 (KE= Y_TV2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17b] =3D Q_KEY_CODE_UNMAPPED, /* linux:379 (KEY_VCR) -> linux:379 (KE= Y_VCR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17c] =3D Q_KEY_CODE_UNMAPPED, /* linux:380 (KEY_VCR2) -> linux:380 (K= EY_VCR2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17d] =3D Q_KEY_CODE_UNMAPPED, /* linux:381 (KEY_SAT) -> linux:381 (KE= Y_SAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17e] =3D Q_KEY_CODE_UNMAPPED, /* linux:382 (KEY_SAT2) -> linux:382 (K= EY_SAT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17f] =3D Q_KEY_CODE_UNMAPPED, /* linux:383 (KEY_CD) -> linux:383 (KEY= _CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x180] =3D Q_KEY_CODE_UNMAPPED, /* linux:384 (KEY_TAPE) -> linux:384 (K= EY_TAPE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x181] =3D Q_KEY_CODE_UNMAPPED, /* linux:385 (KEY_RADIO) -> linux:385 (= KEY_RADIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x182] =3D Q_KEY_CODE_UNMAPPED, /* linux:386 (KEY_TUNER) -> linux:386 (= KEY_TUNER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x183] =3D Q_KEY_CODE_UNMAPPED, /* linux:387 (KEY_PLAYER) -> linux:387 = (KEY_PLAYER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x184] =3D Q_KEY_CODE_UNMAPPED, /* linux:388 (KEY_TEXT) -> linux:388 (K= EY_TEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x185] =3D Q_KEY_CODE_UNMAPPED, /* linux:389 (KEY_DVD) -> linux:389 (KE= Y_DVD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x186] =3D Q_KEY_CODE_UNMAPPED, /* linux:390 (KEY_AUX) -> linux:390 (KE= Y_AUX) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x187] =3D Q_KEY_CODE_UNMAPPED, /* linux:391 (KEY_MP3) -> linux:391 (KE= Y_MP3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x188] =3D Q_KEY_CODE_UNMAPPED, /* linux:392 (KEY_AUDIO) -> linux:392 (= KEY_AUDIO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x189] =3D Q_KEY_CODE_UNMAPPED, /* linux:393 (KEY_VIDEO) -> linux:393 (= KEY_VIDEO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18a] =3D Q_KEY_CODE_UNMAPPED, /* linux:394 (KEY_DIRECTORY) -> linux:3= 94 (KEY_DIRECTORY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18b] =3D Q_KEY_CODE_UNMAPPED, /* linux:395 (KEY_LIST) -> linux:395 (K= EY_LIST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18c] =3D Q_KEY_CODE_UNMAPPED, /* linux:396 (KEY_MEMO) -> linux:396 (K= EY_MEMO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18d] =3D Q_KEY_CODE_UNMAPPED, /* linux:397 (KEY_CALENDAR) -> linux:39= 7 (KEY_CALENDAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18e] =3D Q_KEY_CODE_UNMAPPED, /* linux:398 (KEY_RED) -> linux:398 (KE= Y_RED) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18f] =3D Q_KEY_CODE_UNMAPPED, /* linux:399 (KEY_GREEN) -> linux:399 (= KEY_GREEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x190] =3D Q_KEY_CODE_UNMAPPED, /* linux:400 (KEY_YELLOW) -> linux:400 = (KEY_YELLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x191] =3D Q_KEY_CODE_UNMAPPED, /* linux:401 (KEY_BLUE) -> linux:401 (K= EY_BLUE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x192] =3D Q_KEY_CODE_UNMAPPED, /* linux:402 (KEY_CHANNELUP) -> linux:4= 02 (KEY_CHANNELUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x193] =3D Q_KEY_CODE_UNMAPPED, /* linux:403 (KEY_CHANNELDOWN) -> linux= :403 (KEY_CHANNELDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x194] =3D Q_KEY_CODE_UNMAPPED, /* linux:404 (KEY_FIRST) -> linux:404 (= KEY_FIRST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x195] =3D Q_KEY_CODE_UNMAPPED, /* linux:405 (KEY_LAST) -> linux:405 (K= EY_LAST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x196] =3D Q_KEY_CODE_UNMAPPED, /* linux:406 (KEY_AB) -> linux:406 (KEY= _AB) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x197] =3D Q_KEY_CODE_UNMAPPED, /* linux:407 (KEY_NEXT) -> linux:407 (K= EY_NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x198] =3D Q_KEY_CODE_UNMAPPED, /* linux:408 (KEY_RESTART) -> linux:408= (KEY_RESTART) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x199] =3D Q_KEY_CODE_UNMAPPED, /* linux:409 (KEY_SLOW) -> linux:409 (K= EY_SLOW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19a] =3D Q_KEY_CODE_UNMAPPED, /* linux:410 (KEY_SHUFFLE) -> linux:410= (KEY_SHUFFLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19b] =3D Q_KEY_CODE_UNMAPPED, /* linux:411 (KEY_BREAK) -> linux:411 (= KEY_BREAK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19c] =3D Q_KEY_CODE_UNMAPPED, /* linux:412 (KEY_PREVIOUS) -> linux:41= 2 (KEY_PREVIOUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19d] =3D Q_KEY_CODE_UNMAPPED, /* linux:413 (KEY_DIGITS) -> linux:413 = (KEY_DIGITS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19e] =3D Q_KEY_CODE_UNMAPPED, /* linux:414 (KEY_TEEN) -> linux:414 (K= EY_TEEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19f] =3D Q_KEY_CODE_UNMAPPED, /* linux:415 (KEY_TWEN) -> linux:415 (K= EY_TWEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a0] =3D Q_KEY_CODE_UNMAPPED, /* linux:416 (KEY_VIDEOPHONE) -> linux:= 416 (KEY_VIDEOPHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a1] =3D Q_KEY_CODE_UNMAPPED, /* linux:417 (KEY_GAMES) -> linux:417 (= KEY_GAMES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a2] =3D Q_KEY_CODE_UNMAPPED, /* linux:418 (KEY_ZOOMIN) -> linux:418 = (KEY_ZOOMIN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a3] =3D Q_KEY_CODE_UNMAPPED, /* linux:419 (KEY_ZOOMOUT) -> linux:419= (KEY_ZOOMOUT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a4] =3D Q_KEY_CODE_UNMAPPED, /* linux:420 (KEY_ZOOMRESET) -> linux:4= 20 (KEY_ZOOMRESET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a5] =3D Q_KEY_CODE_UNMAPPED, /* linux:421 (KEY_WORDPROCESSOR) -> lin= ux:421 (KEY_WORDPROCESSOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a6] =3D Q_KEY_CODE_UNMAPPED, /* linux:422 (KEY_EDITOR) -> linux:422 = (KEY_EDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a7] =3D Q_KEY_CODE_UNMAPPED, /* linux:423 (KEY_SPREADSHEET) -> linux= :423 (KEY_SPREADSHEET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a8] =3D Q_KEY_CODE_UNMAPPED, /* linux:424 (KEY_GRAPHICSEDITOR) -> li= nux:424 (KEY_GRAPHICSEDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a9] =3D Q_KEY_CODE_UNMAPPED, /* linux:425 (KEY_PRESENTATION) -> linu= x:425 (KEY_PRESENTATION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1aa] =3D Q_KEY_CODE_UNMAPPED, /* linux:426 (KEY_DATABASE) -> linux:42= 6 (KEY_DATABASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ab] =3D Q_KEY_CODE_UNMAPPED, /* linux:427 (KEY_NEWS) -> linux:427 (K= EY_NEWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ac] =3D Q_KEY_CODE_UNMAPPED, /* linux:428 (KEY_VOICEMAIL) -> linux:4= 28 (KEY_VOICEMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ad] =3D Q_KEY_CODE_UNMAPPED, /* linux:429 (KEY_ADDRESSBOOK) -> linux= :429 (KEY_ADDRESSBOOK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ae] =3D Q_KEY_CODE_UNMAPPED, /* linux:430 (KEY_MESSENGER) -> linux:4= 30 (KEY_MESSENGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1af] =3D Q_KEY_CODE_UNMAPPED, /* linux:431 (KEY_DISPLAYTOGGLE) -> lin= ux:431 (KEY_DISPLAYTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b0] =3D Q_KEY_CODE_UNMAPPED, /* linux:432 (KEY_SPELLCHECK) -> linux:= 432 (KEY_SPELLCHECK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b1] =3D Q_KEY_CODE_UNMAPPED, /* linux:433 (KEY_LOGOFF) -> linux:433 = (KEY_LOGOFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b2] =3D Q_KEY_CODE_UNMAPPED, /* linux:434 (KEY_DOLLAR) -> linux:434 = (KEY_DOLLAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b3] =3D Q_KEY_CODE_UNMAPPED, /* linux:435 (KEY_EURO) -> linux:435 (K= EY_EURO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b4] =3D Q_KEY_CODE_UNMAPPED, /* linux:436 (KEY_FRAMEBACK) -> linux:4= 36 (KEY_FRAMEBACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b5] =3D Q_KEY_CODE_UNMAPPED, /* linux:437 (KEY_FRAMEFORWARD) -> linu= x:437 (KEY_FRAMEFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b6] =3D Q_KEY_CODE_UNMAPPED, /* linux:438 (KEY_CONTEXT_MENU) -> linu= x:438 (KEY_CONTEXT_MENU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b7] =3D Q_KEY_CODE_UNMAPPED, /* linux:439 (KEY_MEDIA_REPEAT) -> linu= x:439 (KEY_MEDIA_REPEAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c0] =3D Q_KEY_CODE_UNMAPPED, /* linux:448 (KEY_DEL_EOL) -> linux:448= (KEY_DEL_EOL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c1] =3D Q_KEY_CODE_UNMAPPED, /* linux:449 (KEY_DEL_EOS) -> linux:449= (KEY_DEL_EOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c2] =3D Q_KEY_CODE_UNMAPPED, /* linux:450 (KEY_INS_LINE) -> linux:45= 0 (KEY_INS_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c3] =3D Q_KEY_CODE_UNMAPPED, /* linux:451 (KEY_DEL_LINE) -> linux:45= 1 (KEY_DEL_LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d0] =3D Q_KEY_CODE_UNMAPPED, /* linux:464 (KEY_FN) -> linux:464 (KEY= _FN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d1] =3D Q_KEY_CODE_UNMAPPED, /* linux:465 (KEY_FN_ESC) -> linux:465 = (KEY_FN_ESC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d2] =3D Q_KEY_CODE_UNMAPPED, /* linux:466 (KEY_FN_F1) -> linux:466 (= KEY_FN_F1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d3] =3D Q_KEY_CODE_UNMAPPED, /* linux:467 (KEY_FN_F2) -> linux:467 (= KEY_FN_F2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d4] =3D Q_KEY_CODE_UNMAPPED, /* linux:468 (KEY_FN_F3) -> linux:468 (= KEY_FN_F3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d5] =3D Q_KEY_CODE_UNMAPPED, /* linux:469 (KEY_FN_F4) -> linux:469 (= KEY_FN_F4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d6] =3D Q_KEY_CODE_UNMAPPED, /* linux:470 (KEY_FN_F5) -> linux:470 (= KEY_FN_F5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d7] =3D Q_KEY_CODE_UNMAPPED, /* linux:471 (KEY_FN_F6) -> linux:471 (= KEY_FN_F6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d8] =3D Q_KEY_CODE_UNMAPPED, /* linux:472 (KEY_FN_F7) -> linux:472 (= KEY_FN_F7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d9] =3D Q_KEY_CODE_UNMAPPED, /* linux:473 (KEY_FN_F8) -> linux:473 (= KEY_FN_F8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1da] =3D Q_KEY_CODE_UNMAPPED, /* linux:474 (KEY_FN_F9) -> linux:474 (= KEY_FN_F9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1db] =3D Q_KEY_CODE_UNMAPPED, /* linux:475 (KEY_FN_F10) -> linux:475 = (KEY_FN_F10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1dc] =3D Q_KEY_CODE_UNMAPPED, /* linux:476 (KEY_FN_F11) -> linux:476 = (KEY_FN_F11) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1dd] =3D Q_KEY_CODE_UNMAPPED, /* linux:477 (KEY_FN_F12) -> linux:477 = (KEY_FN_F12) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1de] =3D Q_KEY_CODE_UNMAPPED, /* linux:478 (KEY_FN_1) -> linux:478 (K= EY_FN_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1df] =3D Q_KEY_CODE_UNMAPPED, /* linux:479 (KEY_FN_2) -> linux:479 (K= EY_FN_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e0] =3D Q_KEY_CODE_UNMAPPED, /* linux:480 (KEY_FN_D) -> linux:480 (K= EY_FN_D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e1] =3D Q_KEY_CODE_UNMAPPED, /* linux:481 (KEY_FN_E) -> linux:481 (K= EY_FN_E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e2] =3D Q_KEY_CODE_UNMAPPED, /* linux:482 (KEY_FN_F) -> linux:482 (K= EY_FN_F) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e3] =3D Q_KEY_CODE_UNMAPPED, /* linux:483 (KEY_FN_S) -> linux:483 (K= EY_FN_S) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e4] =3D Q_KEY_CODE_UNMAPPED, /* linux:484 (KEY_FN_B) -> linux:484 (K= EY_FN_B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f1] =3D Q_KEY_CODE_UNMAPPED, /* linux:497 (KEY_BRL_DOT1) -> linux:49= 7 (KEY_BRL_DOT1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f2] =3D Q_KEY_CODE_UNMAPPED, /* linux:498 (KEY_BRL_DOT2) -> linux:49= 8 (KEY_BRL_DOT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f3] =3D Q_KEY_CODE_UNMAPPED, /* linux:499 (KEY_BRL_DOT3) -> linux:49= 9 (KEY_BRL_DOT3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f4] =3D Q_KEY_CODE_UNMAPPED, /* linux:500 (KEY_BRL_DOT4) -> linux:50= 0 (KEY_BRL_DOT4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f5] =3D Q_KEY_CODE_UNMAPPED, /* linux:501 (KEY_BRL_DOT5) -> linux:50= 1 (KEY_BRL_DOT5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f6] =3D Q_KEY_CODE_UNMAPPED, /* linux:502 (KEY_BRL_DOT6) -> linux:50= 2 (KEY_BRL_DOT6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f7] =3D Q_KEY_CODE_UNMAPPED, /* linux:503 (KEY_BRL_DOT7) -> linux:50= 3 (KEY_BRL_DOT7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f8] =3D Q_KEY_CODE_UNMAPPED, /* linux:504 (KEY_BRL_DOT8) -> linux:50= 4 (KEY_BRL_DOT8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f9] =3D Q_KEY_CODE_UNMAPPED, /* linux:505 (KEY_BRL_DOT9) -> linux:50= 5 (KEY_BRL_DOT9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fa] =3D Q_KEY_CODE_UNMAPPED, /* linux:506 (KEY_BRL_DOT10) -> linux:5= 06 (KEY_BRL_DOT10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x200] =3D Q_KEY_CODE_UNMAPPED, /* linux:512 (KEY_NUMERIC_0) -> linux:5= 12 (KEY_NUMERIC_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x201] =3D Q_KEY_CODE_UNMAPPED, /* linux:513 (KEY_NUMERIC_1) -> linux:5= 13 (KEY_NUMERIC_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x202] =3D Q_KEY_CODE_UNMAPPED, /* linux:514 (KEY_NUMERIC_2) -> linux:5= 14 (KEY_NUMERIC_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x203] =3D Q_KEY_CODE_UNMAPPED, /* linux:515 (KEY_NUMERIC_3) -> linux:5= 15 (KEY_NUMERIC_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x204] =3D Q_KEY_CODE_UNMAPPED, /* linux:516 (KEY_NUMERIC_4) -> linux:5= 16 (KEY_NUMERIC_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x205] =3D Q_KEY_CODE_UNMAPPED, /* linux:517 (KEY_NUMERIC_5) -> linux:5= 17 (KEY_NUMERIC_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x206] =3D Q_KEY_CODE_UNMAPPED, /* linux:518 (KEY_NUMERIC_6) -> linux:5= 18 (KEY_NUMERIC_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x207] =3D Q_KEY_CODE_UNMAPPED, /* linux:519 (KEY_NUMERIC_7) -> linux:5= 19 (KEY_NUMERIC_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x208] =3D Q_KEY_CODE_UNMAPPED, /* linux:520 (KEY_NUMERIC_8) -> linux:5= 20 (KEY_NUMERIC_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x209] =3D Q_KEY_CODE_UNMAPPED, /* linux:521 (KEY_NUMERIC_9) -> linux:5= 21 (KEY_NUMERIC_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20a] =3D Q_KEY_CODE_UNMAPPED, /* linux:522 (KEY_NUMERIC_STAR) -> linu= x:522 (KEY_NUMERIC_STAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20b] =3D Q_KEY_CODE_UNMAPPED, /* linux:523 (KEY_NUMERIC_POUND) -> lin= ux:523 (KEY_NUMERIC_POUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20c] =3D Q_KEY_CODE_UNMAPPED, /* linux:524 (KEY_RFKILL) -> linux:524 = (KEY_RFKILL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_linux_to_qcode_len =3D sizeof(qemu_input_map_li= nux_to_qcode)/sizeof(qemu_input_map_linux_to_qcode[0]); diff --git a/ui/input-keymap-qcode-to-qnum.c b/ui/input-keymap-qcode-to-qnu= m.c new file mode 100644 index 0000000000..acaaa0f16d --- /dev/null +++ b/ui/input-keymap-qcode-to-qnum.c @@ -0,0 +1,154 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:01 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_qnum co= de-map keymaps.csv qcode qnum +*/ +const guint16 qemu_input_map_qcode_to_qnum[Q_KEY_CODE__MAX] =3D { + [Q_KEY_CODE_0] =3D 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) ->= qnum:11 */ + [Q_KEY_CODE_1] =3D 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> = qnum:2 */ + [Q_KEY_CODE_2] =3D 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> = qnum:3 */ + [Q_KEY_CODE_3] =3D 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> = qnum:4 */ + [Q_KEY_CODE_4] =3D 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> = qnum:5 */ + [Q_KEY_CODE_5] =3D 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> = qnum:6 */ + [Q_KEY_CODE_6] =3D 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> = qnum:7 */ + [Q_KEY_CODE_7] =3D 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> = qnum:8 */ + [Q_KEY_CODE_8] =3D 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> = qnum:9 */ + [Q_KEY_CODE_9] =3D 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) ->= qnum:10 */ + [Q_KEY_CODE_A] =3D 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -= > qnum:30 */ + [Q_KEY_CODE_AC_BACK] =3D 0xea, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> = linux:158 (KEY_BACK) -> qnum:234 */ + [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe6, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac= _bookmarks) -> linux:156 (KEY_BOOKMARKS) -> qnum:230 */ + [Q_KEY_CODE_AC_FORWARD] =3D 0xe9, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_for= ward) -> linux:159 (KEY_FORWARD) -> qnum:233 */ + [Q_KEY_CODE_AC_HOME] =3D 0xb2, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> = linux:172 (KEY_HOMEPAGE) -> qnum:178 */ + [Q_KEY_CODE_AC_REFRESH] =3D 0xe7, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_ref= resh) -> linux:173 (KEY_REFRESH) -> qnum:231 */ + [Q_KEY_CODE_AGAIN] =3D 0x85, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:= 129 (KEY_AGAIN) -> qnum:133 */ + [Q_KEY_CODE_ALT] =3D 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> qnum:56 */ + [Q_KEY_CODE_ALT_R] =3D 0xb8, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:= 100 (KEY_RIGHTALT) -> qnum:184 */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> qnum:40 */ + [Q_KEY_CODE_ASTERISK] =3D 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> qnum:55 */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0xa0, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomut= e) -> linux:113 (KEY_MUTE) -> qnum:160 */ + [Q_KEY_CODE_AUDIONEXT] =3D 0x99, /* qcode:Q_KEY_CODE_AUDIONEXT (audionex= t) -> linux:163 (KEY_NEXTSONG) -> qnum:153 */ + [Q_KEY_CODE_AUDIOPLAY] =3D 0xa2, /* qcode:Q_KEY_CODE_AUDIOPLAY (audiopla= y) -> linux:164 (KEY_PLAYPAUSE) -> qnum:162 */ + [Q_KEY_CODE_AUDIOPREV] =3D 0x90, /* qcode:Q_KEY_CODE_AUDIOPREV (audiopre= v) -> linux:165 (KEY_PREVIOUSSONG) -> qnum:144 */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0xa4, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiosto= p) -> linux:166 (KEY_STOPCD) -> qnum:164 */ + [Q_KEY_CODE_B] =3D 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -= > qnum:48 */ + [Q_KEY_CODE_BACKSLASH] =3D 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> qnum:43 */ + [Q_KEY_CODE_BACKSPACE] =3D 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace= ) -> linux:14 (KEY_BACKSPACE) -> qnum:14 */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> qnum:26 */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> qnum:27 */ + [Q_KEY_CODE_C] =3D 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -= > qnum:46 */ + [Q_KEY_CODE_CALCULATOR] =3D 0xa1, /* qcode:Q_KEY_CODE_CALCULATOR (calcul= ator) -> linux:140 (KEY_CALC) -> qnum:161 */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> qnum:58 */ + [Q_KEY_CODE_COMMA] =3D 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> qnum:51 */ + [Q_KEY_CODE_COMPOSE] =3D 0xdd, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> = linux:127 (KEY_COMPOSE) -> qnum:221 */ + [Q_KEY_CODE_COMPUTER] =3D 0xeb, /* qcode:Q_KEY_CODE_COMPUTER (computer) = -> linux:157 (KEY_COMPUTER) -> qnum:235 */ + [Q_KEY_CODE_COPY] =3D 0xf8, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133= (KEY_COPY) -> qnum:248 */ + [Q_KEY_CODE_CTRL] =3D 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> qnum:29 */ + [Q_KEY_CODE_CTRL_R] =3D 0x9d, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> lin= ux:97 (KEY_RIGHTCTRL) -> qnum:157 */ + [Q_KEY_CODE_CUT] =3D 0xbc, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (K= EY_CUT) -> qnum:188 */ + [Q_KEY_CODE_D] =3D 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -= > qnum:32 */ + [Q_KEY_CODE_DELETE] =3D 0xd3, /* qcode:Q_KEY_CODE_DELETE (delete) -> lin= ux:111 (KEY_DELETE) -> qnum:211 */ + [Q_KEY_CODE_DOT] =3D 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> qnum:52 */ + [Q_KEY_CODE_DOWN] =3D 0xd0, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108= (KEY_DOWN) -> qnum:208 */ + [Q_KEY_CODE_E] =3D 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -= > qnum:18 */ + [Q_KEY_CODE_END] =3D 0xcf, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (K= EY_END) -> qnum:207 */ + [Q_KEY_CODE_EQUAL] =3D 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:1= 3 (KEY_EQUAL) -> qnum:13 */ + [Q_KEY_CODE_ESC] =3D 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_= ESC) -> qnum:1 */ + [Q_KEY_CODE_F] =3D 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -= > qnum:33 */ + [Q_KEY_CODE_F1] =3D 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F= 1) -> qnum:59 */ + [Q_KEY_CODE_F10] =3D 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KE= Y_F10) -> qnum:68 */ + [Q_KEY_CODE_F11] =3D 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> qnum:87 */ + [Q_KEY_CODE_F12] =3D 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KE= Y_F12) -> qnum:88 */ + [Q_KEY_CODE_F2] =3D 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F= 2) -> qnum:60 */ + [Q_KEY_CODE_F3] =3D 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F= 3) -> qnum:61 */ + [Q_KEY_CODE_F4] =3D 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F= 4) -> qnum:62 */ + [Q_KEY_CODE_F5] =3D 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F= 5) -> qnum:63 */ + [Q_KEY_CODE_F6] =3D 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F= 6) -> qnum:64 */ + [Q_KEY_CODE_F7] =3D 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> qnum:65 */ + [Q_KEY_CODE_F8] =3D 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F= 8) -> qnum:66 */ + [Q_KEY_CODE_F9] =3D 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F= 9) -> qnum:67 */ + [Q_KEY_CODE_FIND] =3D 0xc1, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136= (KEY_FIND) -> qnum:193 */ + [Q_KEY_CODE_FRONT] =3D 0x8c, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:= 132 (KEY_FRONT) -> qnum:140 */ + [Q_KEY_CODE_G] =3D 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -= > qnum:34 */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gr= ave_accent) -> linux:41 (KEY_GRAVE) -> qnum:41 */ + [Q_KEY_CODE_H] =3D 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -= > qnum:35 */ + [Q_KEY_CODE_HELP] =3D 0xf5, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138= (KEY_HELP) -> qnum:245 */ + [Q_KEY_CODE_HENKAN] =3D 0x79, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> qnum:121 */ + [Q_KEY_CODE_HIRAGANA] =3D 0x77, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> qnum:119 */ + [Q_KEY_CODE_HOME] =3D 0xc7, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102= (KEY_HOME) -> qnum:199 */ + [Q_KEY_CODE_I] =3D 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > qnum:23 */ + [Q_KEY_CODE_INSERT] =3D 0xd2, /* qcode:Q_KEY_CODE_INSERT (insert) -> lin= ux:110 (KEY_INSERT) -> qnum:210 */ + [Q_KEY_CODE_J] =3D 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > qnum:36 */ + [Q_KEY_CODE_K] =3D 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > qnum:37 */ + [Q_KEY_CODE_KP_0] =3D 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> qnum:82 */ + [Q_KEY_CODE_KP_1] =3D 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> qnum:79 */ + [Q_KEY_CODE_KP_2] =3D 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> qnum:80 */ + [Q_KEY_CODE_KP_3] =3D 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> qnum:81 */ + [Q_KEY_CODE_KP_4] =3D 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> qnum:75 */ + [Q_KEY_CODE_KP_5] =3D 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> qnum:76 */ + [Q_KEY_CODE_KP_6] =3D 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> qnum:77 */ + [Q_KEY_CODE_KP_7] =3D 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> qnum:71 */ + [Q_KEY_CODE_KP_8] =3D 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> qnum:72 */ + [Q_KEY_CODE_KP_9] =3D 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> qnum:73 */ + [Q_KEY_CODE_KP_ADD] =3D 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> qnum:78 */ + [Q_KEY_CODE_KP_COMMA] =3D 0x7e, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) = -> linux:121 (KEY_KPCOMMA) -> qnum:126 */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> qnum:83 */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0xb5, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divid= e) -> linux:98 (KEY_KPSLASH) -> qnum:181 */ + [Q_KEY_CODE_KP_ENTER] =3D 0x9c, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) = -> linux:96 (KEY_KPENTER) -> qnum:156 */ + [Q_KEY_CODE_KP_EQUALS] =3D 0x59, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equal= s) -> linux:117 (KEY_KPEQUAL) -> qnum:89 */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> qnum:55 */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> qnum:74 */ + [Q_KEY_CODE_L] =3D 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > qnum:38 */ + [Q_KEY_CODE_LEFT] =3D 0xcb, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105= (KEY_LEFT) -> qnum:203 */ + [Q_KEY_CODE_LESS] =3D 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> qnum:86 */ + [Q_KEY_CODE_LF] =3D 0x5b, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_= LINEFEED) -> qnum:91 */ + [Q_KEY_CODE_M] =3D 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > qnum:50 */ + [Q_KEY_CODE_MAIL] =3D 0xec, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155= (KEY_MAIL) -> qnum:236 */ + [Q_KEY_CODE_MEDIASELECT] =3D 0xed, /* qcode:Q_KEY_CODE_MEDIASELECT (medi= aselect) -> linux:226 (KEY_MEDIA) -> qnum:237 */ + [Q_KEY_CODE_MENU] =3D 0x9e, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139= (KEY_MENU) -> qnum:158 */ + [Q_KEY_CODE_META_L] =3D 0xdb, /* qcode:Q_KEY_CODE_META_L (meta_l) -> lin= ux:125 (KEY_LEFTMETA) -> qnum:219 */ + [Q_KEY_CODE_META_R] =3D 0xdc, /* qcode:Q_KEY_CODE_META_R (meta_r) -> lin= ux:126 (KEY_RIGHTMETA) -> qnum:220 */ + [Q_KEY_CODE_MINUS] =3D 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:1= 2 (KEY_MINUS) -> qnum:12 */ + [Q_KEY_CODE_N] =3D 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > qnum:49 */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> qnum:69 */ + [Q_KEY_CODE_O] =3D 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > qnum:24 */ + [Q_KEY_CODE_OPEN] =3D 0x64, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134= (KEY_OPEN) -> qnum:100 */ + [Q_KEY_CODE_P] =3D 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > qnum:25 */ + [Q_KEY_CODE_PASTE] =3D 0x65, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:= 135 (KEY_PASTE) -> qnum:101 */ + [Q_KEY_CODE_PAUSE] =3D 0xc6, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:= 119 (KEY_PAUSE) -> qnum:198 */ + [Q_KEY_CODE_PGDN] =3D 0xd1, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109= (KEY_PAGEDOWN) -> qnum:209 */ + [Q_KEY_CODE_PGUP] =3D 0xc9, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104= (KEY_PAGEUP) -> qnum:201 */ + [Q_KEY_CODE_POWER] =3D 0xde, /* qcode:Q_KEY_CODE_POWER (power) -> linux:= 116 (KEY_POWER) -> qnum:222 */ + [Q_KEY_CODE_PRINT] =3D 0x54, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> qnum:84 */ + [Q_KEY_CODE_PROPS] =3D 0x86, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:= 130 (KEY_PROPS) -> qnum:134 */ + [Q_KEY_CODE_Q] =3D 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -= > qnum:16 */ + [Q_KEY_CODE_R] =3D 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -= > qnum:19 */ + [Q_KEY_CODE_RET] =3D 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> qnum:28 */ + [Q_KEY_CODE_RIGHT] =3D 0xcd, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:= 106 (KEY_RIGHT) -> qnum:205 */ + [Q_KEY_CODE_RO] =3D 0x73, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_R= O) -> qnum:115 */ + [Q_KEY_CODE_S] =3D 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -= > qnum:31 */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> qnum:70 */ + [Q_KEY_CODE_SEMICOLON] =3D 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> qnum:39 */ + [Q_KEY_CODE_SHIFT] =3D 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> qnum:42 */ + [Q_KEY_CODE_SHIFT_R] =3D 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> qnum:54 */ + [Q_KEY_CODE_SLASH] =3D 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> qnum:53 */ + [Q_KEY_CODE_SLEEP] =3D 0xdf, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:= 142 (KEY_SLEEP) -> qnum:223 */ + [Q_KEY_CODE_SPC] =3D 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> qnum:57 */ + [Q_KEY_CODE_STOP] =3D 0xe8, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128= (KEY_STOP) -> qnum:232 */ + [Q_KEY_CODE_SYSRQ] =3D 0x54, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> qnum:84 */ + [Q_KEY_CODE_T] =3D 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > qnum:20 */ + [Q_KEY_CODE_TAB] =3D 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY= _TAB) -> qnum:15 */ + [Q_KEY_CODE_U] =3D 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > qnum:22 */ + [Q_KEY_CODE_UNDO] =3D 0x87, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131= (KEY_UNDO) -> qnum:135 */ + [Q_KEY_CODE_UP] =3D 0xc8, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_= UP) -> qnum:200 */ + [Q_KEY_CODE_V] =3D 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -= > qnum:47 */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0xae, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volume= down) -> linux:114 (KEY_VOLUMEDOWN) -> qnum:174 */ + [Q_KEY_CODE_VOLUMEUP] =3D 0xb0, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) = -> linux:115 (KEY_VOLUMEUP) -> qnum:176 */ + [Q_KEY_CODE_W] =3D 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -= > qnum:17 */ + [Q_KEY_CODE_WAKE] =3D 0xe3, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143= (KEY_WAKEUP) -> qnum:227 */ + [Q_KEY_CODE_X] =3D 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -= > qnum:45 */ + [Q_KEY_CODE_Y] =3D 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > qnum:21 */ + [Q_KEY_CODE_YEN] =3D 0x7d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> qnum:125 */ + [Q_KEY_CODE_Z] =3D 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -= > qnum:44 */ +}; +const guint qemu_input_map_qcode_to_qnum_len =3D sizeof(qemu_input_map_qco= de_to_qnum)/sizeof(qemu_input_map_qcode_to_qnum[0]); diff --git a/ui/input-keymap-qnum-to-qcode.c b/ui/input-keymap-qnum-to-qcod= e.c new file mode 100644 index 0000000000..eba9ad0f96 --- /dev/null +++ b/ui/input-keymap-qnum-to-qcode.c @@ -0,0 +1,245 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:01 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qnum_to_qcode co= de-map keymaps.csv qnum qcode +*/ +const guint16 qemu_input_map_qnum_to_qcode[254] =3D { + [0x1] =3D Q_KEY_CODE_ESC, /* qnum:1 -> linux:1 (KEY_ESC) -> qcode:Q_KEY_= CODE_ESC (esc) */ + [0x2] =3D Q_KEY_CODE_1, /* qnum:2 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE= _1 (1) */ + [0x3] =3D Q_KEY_CODE_2, /* qnum:3 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE= _2 (2) */ + [0x4] =3D Q_KEY_CODE_3, /* qnum:4 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE= _3 (3) */ + [0x5] =3D Q_KEY_CODE_4, /* qnum:5 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE= _4 (4) */ + [0x6] =3D Q_KEY_CODE_5, /* qnum:6 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE= _5 (5) */ + [0x7] =3D Q_KEY_CODE_6, /* qnum:7 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE= _6 (6) */ + [0x8] =3D Q_KEY_CODE_7, /* qnum:8 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE= _7 (7) */ + [0x9] =3D Q_KEY_CODE_8, /* qnum:9 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE= _8 (8) */ + [0xa] =3D Q_KEY_CODE_9, /* qnum:10 -> linux:10 (KEY_9) -> qcode:Q_KEY_CO= DE_9 (9) */ + [0xb] =3D Q_KEY_CODE_0, /* qnum:11 -> linux:11 (KEY_0) -> qcode:Q_KEY_CO= DE_0 (0) */ + [0xc] =3D Q_KEY_CODE_MINUS, /* qnum:12 -> linux:12 (KEY_MINUS) -> qcode:= Q_KEY_CODE_MINUS (minus) */ + [0xd] =3D Q_KEY_CODE_EQUAL, /* qnum:13 -> linux:13 (KEY_EQUAL) -> qcode:= Q_KEY_CODE_EQUAL (equal) */ + [0xe] =3D Q_KEY_CODE_BACKSPACE, /* qnum:14 -> linux:14 (KEY_BACKSPACE) -= > qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0xf] =3D Q_KEY_CODE_TAB, /* qnum:15 -> linux:15 (KEY_TAB) -> qcode:Q_KE= Y_CODE_TAB (tab) */ + [0x10] =3D Q_KEY_CODE_Q, /* qnum:16 -> linux:16 (KEY_Q) -> qcode:Q_KEY_C= ODE_Q (q) */ + [0x11] =3D Q_KEY_CODE_W, /* qnum:17 -> linux:17 (KEY_W) -> qcode:Q_KEY_C= ODE_W (w) */ + [0x12] =3D Q_KEY_CODE_E, /* qnum:18 -> linux:18 (KEY_E) -> qcode:Q_KEY_C= ODE_E (e) */ + [0x13] =3D Q_KEY_CODE_R, /* qnum:19 -> linux:19 (KEY_R) -> qcode:Q_KEY_C= ODE_R (r) */ + [0x14] =3D Q_KEY_CODE_T, /* qnum:20 -> linux:20 (KEY_T) -> qcode:Q_KEY_C= ODE_T (t) */ + [0x15] =3D Q_KEY_CODE_Y, /* qnum:21 -> linux:21 (KEY_Y) -> qcode:Q_KEY_C= ODE_Y (y) */ + [0x16] =3D Q_KEY_CODE_U, /* qnum:22 -> linux:22 (KEY_U) -> qcode:Q_KEY_C= ODE_U (u) */ + [0x17] =3D Q_KEY_CODE_I, /* qnum:23 -> linux:23 (KEY_I) -> qcode:Q_KEY_C= ODE_I (i) */ + [0x18] =3D Q_KEY_CODE_O, /* qnum:24 -> linux:24 (KEY_O) -> qcode:Q_KEY_C= ODE_O (o) */ + [0x19] =3D Q_KEY_CODE_P, /* qnum:25 -> linux:25 (KEY_P) -> qcode:Q_KEY_C= ODE_P (p) */ + [0x1a] =3D Q_KEY_CODE_BRACKET_LEFT, /* qnum:26 -> linux:26 (KEY_LEFTBRAC= E) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x1b] =3D Q_KEY_CODE_BRACKET_RIGHT, /* qnum:27 -> linux:27 (KEY_RIGHTBR= ACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x1c] =3D Q_KEY_CODE_RET, /* qnum:28 -> linux:28 (KEY_ENTER) -> qcode:Q= _KEY_CODE_RET (ret) */ + [0x1d] =3D Q_KEY_CODE_CTRL, /* qnum:29 -> linux:29 (KEY_LEFTCTRL) -> qco= de:Q_KEY_CODE_CTRL (ctrl) */ + [0x1e] =3D Q_KEY_CODE_A, /* qnum:30 -> linux:30 (KEY_A) -> qcode:Q_KEY_C= ODE_A (a) */ + [0x1f] =3D Q_KEY_CODE_S, /* qnum:31 -> linux:31 (KEY_S) -> qcode:Q_KEY_C= ODE_S (s) */ + [0x20] =3D Q_KEY_CODE_D, /* qnum:32 -> linux:32 (KEY_D) -> qcode:Q_KEY_C= ODE_D (d) */ + [0x21] =3D Q_KEY_CODE_F, /* qnum:33 -> linux:33 (KEY_F) -> qcode:Q_KEY_C= ODE_F (f) */ + [0x22] =3D Q_KEY_CODE_G, /* qnum:34 -> linux:34 (KEY_G) -> qcode:Q_KEY_C= ODE_G (g) */ + [0x23] =3D Q_KEY_CODE_H, /* qnum:35 -> linux:35 (KEY_H) -> qcode:Q_KEY_C= ODE_H (h) */ + [0x24] =3D Q_KEY_CODE_J, /* qnum:36 -> linux:36 (KEY_J) -> qcode:Q_KEY_C= ODE_J (j) */ + [0x25] =3D Q_KEY_CODE_K, /* qnum:37 -> linux:37 (KEY_K) -> qcode:Q_KEY_C= ODE_K (k) */ + [0x26] =3D Q_KEY_CODE_L, /* qnum:38 -> linux:38 (KEY_L) -> qcode:Q_KEY_C= ODE_L (l) */ + [0x27] =3D Q_KEY_CODE_SEMICOLON, /* qnum:39 -> linux:39 (KEY_SEMICOLON) = -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x28] =3D Q_KEY_CODE_APOSTROPHE, /* qnum:40 -> linux:40 (KEY_APOSTROPHE= ) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x29] =3D Q_KEY_CODE_GRAVE_ACCENT, /* qnum:41 -> linux:41 (KEY_GRAVE) -= > qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x2a] =3D Q_KEY_CODE_SHIFT, /* qnum:42 -> linux:42 (KEY_LEFTSHIFT) -> q= code:Q_KEY_CODE_SHIFT (shift) */ + [0x2b] =3D Q_KEY_CODE_BACKSLASH, /* qnum:43 -> linux:43 (KEY_BACKSLASH) = -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x2c] =3D Q_KEY_CODE_Z, /* qnum:44 -> linux:44 (KEY_Z) -> qcode:Q_KEY_C= ODE_Z (z) */ + [0x2d] =3D Q_KEY_CODE_X, /* qnum:45 -> linux:45 (KEY_X) -> qcode:Q_KEY_C= ODE_X (x) */ + [0x2e] =3D Q_KEY_CODE_C, /* qnum:46 -> linux:46 (KEY_C) -> qcode:Q_KEY_C= ODE_C (c) */ + [0x2f] =3D Q_KEY_CODE_V, /* qnum:47 -> linux:47 (KEY_V) -> qcode:Q_KEY_C= ODE_V (v) */ + [0x30] =3D Q_KEY_CODE_B, /* qnum:48 -> linux:48 (KEY_B) -> qcode:Q_KEY_C= ODE_B (b) */ + [0x31] =3D Q_KEY_CODE_N, /* qnum:49 -> linux:49 (KEY_N) -> qcode:Q_KEY_C= ODE_N (n) */ + [0x32] =3D Q_KEY_CODE_M, /* qnum:50 -> linux:50 (KEY_M) -> qcode:Q_KEY_C= ODE_M (m) */ + [0x33] =3D Q_KEY_CODE_COMMA, /* qnum:51 -> linux:51 (KEY_COMMA) -> qcode= :Q_KEY_CODE_COMMA (comma) */ + [0x34] =3D Q_KEY_CODE_DOT, /* qnum:52 -> linux:52 (KEY_DOT) -> qcode:Q_K= EY_CODE_DOT (dot) */ + [0x35] =3D Q_KEY_CODE_SLASH, /* qnum:53 -> linux:53 (KEY_SLASH) -> qcode= :Q_KEY_CODE_SLASH (slash) */ + [0x36] =3D Q_KEY_CODE_SHIFT_R, /* qnum:54 -> linux:54 (KEY_RIGHTSHIFT) -= > qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x37] =3D Q_KEY_CODE_KP_MULTIPLY, /* qnum:55 -> linux:55 (KEY_KPASTERIS= K) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x38] =3D Q_KEY_CODE_ALT, /* qnum:56 -> linux:56 (KEY_LEFTALT) -> qcode= :Q_KEY_CODE_ALT (alt) */ + [0x39] =3D Q_KEY_CODE_SPC, /* qnum:57 -> linux:57 (KEY_SPACE) -> qcode:Q= _KEY_CODE_SPC (spc) */ + [0x3a] =3D Q_KEY_CODE_CAPS_LOCK, /* qnum:58 -> linux:58 (KEY_CAPSLOCK) -= > qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x3b] =3D Q_KEY_CODE_F1, /* qnum:59 -> linux:59 (KEY_F1) -> qcode:Q_KEY= _CODE_F1 (f1) */ + [0x3c] =3D Q_KEY_CODE_F2, /* qnum:60 -> linux:60 (KEY_F2) -> qcode:Q_KEY= _CODE_F2 (f2) */ + [0x3d] =3D Q_KEY_CODE_F3, /* qnum:61 -> linux:61 (KEY_F3) -> qcode:Q_KEY= _CODE_F3 (f3) */ + [0x3e] =3D Q_KEY_CODE_F4, /* qnum:62 -> linux:62 (KEY_F4) -> qcode:Q_KEY= _CODE_F4 (f4) */ + [0x3f] =3D Q_KEY_CODE_F5, /* qnum:63 -> linux:63 (KEY_F5) -> qcode:Q_KEY= _CODE_F5 (f5) */ + [0x40] =3D Q_KEY_CODE_F6, /* qnum:64 -> linux:64 (KEY_F6) -> qcode:Q_KEY= _CODE_F6 (f6) */ + [0x41] =3D Q_KEY_CODE_F7, /* qnum:65 -> linux:65 (KEY_F7) -> qcode:Q_KEY= _CODE_F7 (f7) */ + [0x42] =3D Q_KEY_CODE_F8, /* qnum:66 -> linux:66 (KEY_F8) -> qcode:Q_KEY= _CODE_F8 (f8) */ + [0x43] =3D Q_KEY_CODE_F9, /* qnum:67 -> linux:67 (KEY_F9) -> qcode:Q_KEY= _CODE_F9 (f9) */ + [0x44] =3D Q_KEY_CODE_F10, /* qnum:68 -> linux:68 (KEY_F10) -> qcode:Q_K= EY_CODE_F10 (f10) */ + [0x45] =3D Q_KEY_CODE_NUM_LOCK, /* qnum:69 -> linux:69 (KEY_NUMLOCK) -> = qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x46] =3D Q_KEY_CODE_SCROLL_LOCK, /* qnum:70 -> linux:70 (KEY_SCROLLLOC= K) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x47] =3D Q_KEY_CODE_KP_7, /* qnum:71 -> linux:71 (KEY_KP7) -> qcode:Q_= KEY_CODE_KP_7 (kp_7) */ + [0x48] =3D Q_KEY_CODE_KP_8, /* qnum:72 -> linux:72 (KEY_KP8) -> qcode:Q_= KEY_CODE_KP_8 (kp_8) */ + [0x49] =3D Q_KEY_CODE_KP_9, /* qnum:73 -> linux:73 (KEY_KP9) -> qcode:Q_= KEY_CODE_KP_9 (kp_9) */ + [0x4a] =3D Q_KEY_CODE_KP_SUBTRACT, /* qnum:74 -> linux:74 (KEY_KPMINUS) = -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x4b] =3D Q_KEY_CODE_KP_4, /* qnum:75 -> linux:75 (KEY_KP4) -> qcode:Q_= KEY_CODE_KP_4 (kp_4) */ + [0x4c] =3D Q_KEY_CODE_KP_5, /* qnum:76 -> linux:76 (KEY_KP5) -> qcode:Q_= KEY_CODE_KP_5 (kp_5) */ + [0x4d] =3D Q_KEY_CODE_KP_6, /* qnum:77 -> linux:77 (KEY_KP6) -> qcode:Q_= KEY_CODE_KP_6 (kp_6) */ + [0x4e] =3D Q_KEY_CODE_KP_ADD, /* qnum:78 -> linux:78 (KEY_KPPLUS) -> qco= de:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x4f] =3D Q_KEY_CODE_KP_1, /* qnum:79 -> linux:79 (KEY_KP1) -> qcode:Q_= KEY_CODE_KP_1 (kp_1) */ + [0x50] =3D Q_KEY_CODE_KP_2, /* qnum:80 -> linux:80 (KEY_KP2) -> qcode:Q_= KEY_CODE_KP_2 (kp_2) */ + [0x51] =3D Q_KEY_CODE_KP_3, /* qnum:81 -> linux:81 (KEY_KP3) -> qcode:Q_= KEY_CODE_KP_3 (kp_3) */ + [0x52] =3D Q_KEY_CODE_KP_0, /* qnum:82 -> linux:82 (KEY_KP0) -> qcode:Q_= KEY_CODE_KP_0 (kp_0) */ + [0x53] =3D Q_KEY_CODE_KP_DECIMAL, /* qnum:83 -> linux:83 (KEY_KPDOT) -> = qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x54] =3D Q_KEY_CODE_SYSRQ, /* qnum:84 -> linux:99 (KEY_SYSRQ) -> qcode= :Q_KEY_CODE_SYSRQ (sysrq) */ + [0x55] =3D Q_KEY_CODE_UNMAPPED, /* qnum:85 -> linux:186 (KEY_F16) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x56] =3D Q_KEY_CODE_LESS, /* qnum:86 -> linux:86 (KEY_102ND) -> qcode:= Q_KEY_CODE_LESS (less) */ + [0x57] =3D Q_KEY_CODE_F11, /* qnum:87 -> linux:87 (KEY_F11) -> qcode:Q_K= EY_CODE_F11 (f11) */ + [0x58] =3D Q_KEY_CODE_F12, /* qnum:88 -> linux:88 (KEY_F12) -> qcode:Q_K= EY_CODE_F12 (f12) */ + [0x59] =3D Q_KEY_CODE_KP_EQUALS, /* qnum:89 -> linux:117 (KEY_KPEQUAL) -= > qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x5a] =3D Q_KEY_CODE_UNMAPPED, /* qnum:90 -> linux:190 (KEY_F20) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5b] =3D Q_KEY_CODE_LF, /* qnum:91 -> linux:101 (KEY_LINEFEED) -> qcod= e:Q_KEY_CODE_LF (lf) */ + [0x5c] =3D Q_KEY_CODE_UNMAPPED, /* qnum:92 -> linux:95 (KEY_KPJPCOMMA) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5d] =3D Q_KEY_CODE_UNMAPPED, /* qnum:93 -> linux:183 (KEY_F13) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5e] =3D Q_KEY_CODE_UNMAPPED, /* qnum:94 -> linux:184 (KEY_F14) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5f] =3D Q_KEY_CODE_UNMAPPED, /* qnum:95 -> linux:185 (KEY_F15) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x63] =3D Q_KEY_CODE_UNMAPPED, /* qnum:99 -> linux:169 (KEY_PHONE) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x64] =3D Q_KEY_CODE_OPEN, /* qnum:100 -> linux:134 (KEY_OPEN) -> qcode= :Q_KEY_CODE_OPEN (open) */ + [0x65] =3D Q_KEY_CODE_PASTE, /* qnum:101 -> linux:135 (KEY_PASTE) -> qco= de:Q_KEY_CODE_PASTE (paste) */ + [0x66] =3D Q_KEY_CODE_UNMAPPED, /* qnum:102 -> linux:141 (KEY_SETUP) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x67] =3D Q_KEY_CODE_UNMAPPED, /* qnum:103 -> linux:144 (KEY_FILE) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x68] =3D Q_KEY_CODE_UNMAPPED, /* qnum:104 -> linux:145 (KEY_SENDFILE) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x69] =3D Q_KEY_CODE_UNMAPPED, /* qnum:105 -> linux:146 (KEY_DELETEFILE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6a] =3D Q_KEY_CODE_UNMAPPED, /* qnum:106 -> linux:151 (KEY_MSDOS) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6b] =3D Q_KEY_CODE_UNMAPPED, /* qnum:107 -> linux:153 (KEY_DIRECTION)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6c] =3D Q_KEY_CODE_UNMAPPED, /* qnum:108 -> linux:161 (KEY_EJECTCD) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6d] =3D Q_KEY_CODE_UNMAPPED, /* qnum:109 -> linux:193 (KEY_F23) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6f] =3D Q_KEY_CODE_UNMAPPED, /* qnum:111 -> linux:194 (KEY_F24) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x70] =3D Q_KEY_CODE_UNMAPPED, /* qnum:112 -> linux:170 (KEY_ISO) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x71] =3D Q_KEY_CODE_UNMAPPED, /* qnum:113 -> linux:174 (KEY_EXIT) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x72] =3D Q_KEY_CODE_UNMAPPED, /* qnum:114 -> linux:175 (KEY_MOVE) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x73] =3D Q_KEY_CODE_RO, /* qnum:115 -> linux:89 (KEY_RO) -> qcode:Q_KE= Y_CODE_RO (ro) */ + [0x74] =3D Q_KEY_CODE_UNMAPPED, /* qnum:116 -> linux:191 (KEY_F21) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x75] =3D Q_KEY_CODE_UNMAPPED, /* qnum:117 -> linux:177 (KEY_SCROLLUP) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x76] =3D Q_KEY_CODE_UNMAPPED, /* qnum:118 -> linux:85 (KEY_ZENKAKUHANK= AKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x77] =3D Q_KEY_CODE_HIRAGANA, /* qnum:119 -> linux:91 (KEY_HIRAGANA) -= > qcode:Q_KEY_CODE_HIRAGANA (hiragana) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* qnum:120 -> linux:90 (KEY_KATAKANA) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_HENKAN, /* qnum:121 -> linux:92 (KEY_HENKAN) -> qc= ode:Q_KEY_CODE_HENKAN (henkan) */ + [0x7b] =3D Q_KEY_CODE_UNMAPPED, /* qnum:123 -> linux:94 (KEY_MUHENKAN) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7d] =3D Q_KEY_CODE_YEN, /* qnum:125 -> linux:124 (KEY_YEN) -> qcode:Q= _KEY_CODE_YEN (yen) */ + [0x7e] =3D Q_KEY_CODE_KP_COMMA, /* qnum:126 -> linux:121 (KEY_KPCOMMA) -= > qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0x81] =3D Q_KEY_CODE_UNMAPPED, /* qnum:129 -> linux:171 (KEY_CONFIG) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x82] =3D Q_KEY_CODE_UNMAPPED, /* qnum:130 -> linux:150 (KEY_WWW) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x83] =3D Q_KEY_CODE_UNMAPPED, /* qnum:131 -> linux:187 (KEY_F17) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x84] =3D Q_KEY_CODE_UNMAPPED, /* qnum:132 -> linux:189 (KEY_F19) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x85] =3D Q_KEY_CODE_AGAIN, /* qnum:133 -> linux:129 (KEY_AGAIN) -> qco= de:Q_KEY_CODE_AGAIN (again) */ + [0x86] =3D Q_KEY_CODE_PROPS, /* qnum:134 -> linux:130 (KEY_PROPS) -> qco= de:Q_KEY_CODE_PROPS (props) */ + [0x87] =3D Q_KEY_CODE_UNDO, /* qnum:135 -> linux:131 (KEY_UNDO) -> qcode= :Q_KEY_CODE_UNDO (undo) */ + [0x88] =3D Q_KEY_CODE_UNMAPPED, /* qnum:136 -> linux:176 (KEY_EDIT) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x89] =3D Q_KEY_CODE_UNMAPPED, /* qnum:137 -> linux:181 (KEY_NEW) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8a] =3D Q_KEY_CODE_UNMAPPED, /* qnum:138 -> linux:182 (KEY_REDO) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8b] =3D Q_KEY_CODE_UNMAPPED, /* qnum:139 -> linux:120 (KEY_SCALE) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8c] =3D Q_KEY_CODE_FRONT, /* qnum:140 -> linux:132 (KEY_FRONT) -> qco= de:Q_KEY_CODE_FRONT (front) */ + [0x8d] =3D Q_KEY_CODE_UNMAPPED, /* qnum:141 -> linux:123 (KEY_HANJA) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8e] =3D Q_KEY_CODE_UNMAPPED, /* qnum:142 -> linux:233 (KEY_FORWARDMAI= L) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8f] =3D Q_KEY_CODE_UNMAPPED, /* qnum:143 -> linux:178 (KEY_SCROLLDOWN= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x90] =3D Q_KEY_CODE_AUDIOPREV, /* qnum:144 -> linux:165 (KEY_PREVIOUSS= ONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0x92] =3D Q_KEY_CODE_UNMAPPED, /* qnum:146 -> linux:152 (KEY_SCREENLOCK= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x93] =3D Q_KEY_CODE_UNMAPPED, /* qnum:147 -> linux:147 (KEY_XFER) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x94] =3D Q_KEY_CODE_UNMAPPED, /* qnum:148 -> linux:222 (KEY_ALTERASE) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x95] =3D Q_KEY_CODE_UNMAPPED, /* qnum:149 -> linux:195 (unnamed) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x96] =3D Q_KEY_CODE_UNMAPPED, /* qnum:150 -> linux:196 (unnamed) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x97] =3D Q_KEY_CODE_UNMAPPED, /* qnum:151 -> linux:149 (KEY_PROG2) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x98] =3D Q_KEY_CODE_UNMAPPED, /* qnum:152 -> linux:168 (KEY_REWIND) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x99] =3D Q_KEY_CODE_AUDIONEXT, /* qnum:153 -> linux:163 (KEY_NEXTSONG)= -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0x9a] =3D Q_KEY_CODE_UNMAPPED, /* qnum:154 -> linux:197 (unnamed) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9b] =3D Q_KEY_CODE_UNMAPPED, /* qnum:155 -> linux:198 (unnamed) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9c] =3D Q_KEY_CODE_KP_ENTER, /* qnum:156 -> linux:96 (KEY_KPENTER) ->= qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x9d] =3D Q_KEY_CODE_CTRL_R, /* qnum:157 -> linux:97 (KEY_RIGHTCTRL) ->= qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x9e] =3D Q_KEY_CODE_MENU, /* qnum:158 -> linux:139 (KEY_MENU) -> qcode= :Q_KEY_CODE_MENU (menu) */ + [0x9f] =3D Q_KEY_CODE_UNMAPPED, /* qnum:159 -> linux:148 (KEY_PROG1) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa0] =3D Q_KEY_CODE_AUDIOMUTE, /* qnum:160 -> linux:113 (KEY_MUTE) -> = qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0xa1] =3D Q_KEY_CODE_CALCULATOR, /* qnum:161 -> linux:140 (KEY_CALC) ->= qcode:Q_KEY_CODE_CALCULATOR (calculator) */ + [0xa2] =3D Q_KEY_CODE_AUDIOPLAY, /* qnum:162 -> linux:164 (KEY_PLAYPAUSE= ) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xa3] =3D Q_KEY_CODE_UNMAPPED, /* qnum:163 -> linux:160 (KEY_CLOSECD) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa4] =3D Q_KEY_CODE_AUDIOSTOP, /* qnum:164 -> linux:166 (KEY_STOPCD) -= > qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xa5] =3D Q_KEY_CODE_UNMAPPED, /* qnum:165 -> linux:205 (KEY_SUSPEND) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa6] =3D Q_KEY_CODE_UNMAPPED, /* qnum:166 -> linux:154 (KEY_CYCLEWINDO= WS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa7] =3D Q_KEY_CODE_UNMAPPED, /* qnum:167 -> linux:199 (unnamed) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa8] =3D Q_KEY_CODE_UNMAPPED, /* qnum:168 -> linux:200 (KEY_PLAYCD) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa9] =3D Q_KEY_CODE_UNMAPPED, /* qnum:169 -> linux:201 (KEY_PAUSECD) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xab] =3D Q_KEY_CODE_UNMAPPED, /* qnum:171 -> linux:202 (KEY_PROG3) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xac] =3D Q_KEY_CODE_UNMAPPED, /* qnum:172 -> linux:203 (KEY_PROG4) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xad] =3D Q_KEY_CODE_UNMAPPED, /* qnum:173 -> linux:204 (KEY_DASHBOARD)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xae] =3D Q_KEY_CODE_VOLUMEDOWN, /* qnum:174 -> linux:114 (KEY_VOLUMEDO= WN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0xaf] =3D Q_KEY_CODE_UNMAPPED, /* qnum:175 -> linux:206 (KEY_CLOSE) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb0] =3D Q_KEY_CODE_VOLUMEUP, /* qnum:176 -> linux:115 (KEY_VOLUMEUP) = -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0xb1] =3D Q_KEY_CODE_UNMAPPED, /* qnum:177 -> linux:167 (KEY_RECORD) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb2] =3D Q_KEY_CODE_AC_HOME, /* qnum:178 -> linux:172 (KEY_HOMEPAGE) -= > qcode:Q_KEY_CODE_AC_HOME (ac_home) */ + [0xb3] =3D Q_KEY_CODE_UNMAPPED, /* qnum:179 -> linux:207 (KEY_PLAY) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb4] =3D Q_KEY_CODE_UNMAPPED, /* qnum:180 -> linux:208 (KEY_FASTFORWAR= D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb5] =3D Q_KEY_CODE_KP_DIVIDE, /* qnum:181 -> linux:98 (KEY_KPSLASH) -= > qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0xb6] =3D Q_KEY_CODE_UNMAPPED, /* qnum:182 -> linux:209 (KEY_BASSBOOST)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb8] =3D Q_KEY_CODE_ALT_R, /* qnum:184 -> linux:100 (KEY_RIGHTALT) -> = qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0xb9] =3D Q_KEY_CODE_UNMAPPED, /* qnum:185 -> linux:210 (KEY_PRINT) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xba] =3D Q_KEY_CODE_UNMAPPED, /* qnum:186 -> linux:211 (KEY_HP) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbb] =3D Q_KEY_CODE_UNMAPPED, /* qnum:187 -> linux:212 (KEY_CAMERA) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbc] =3D Q_KEY_CODE_CUT, /* qnum:188 -> linux:137 (KEY_CUT) -> qcode:Q= _KEY_CODE_CUT (cut) */ + [0xbd] =3D Q_KEY_CODE_UNMAPPED, /* qnum:189 -> linux:213 (KEY_SOUND) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbe] =3D Q_KEY_CODE_UNMAPPED, /* qnum:190 -> linux:214 (KEY_QUESTION) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbf] =3D Q_KEY_CODE_UNMAPPED, /* qnum:191 -> linux:215 (KEY_EMAIL) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc0] =3D Q_KEY_CODE_UNMAPPED, /* qnum:192 -> linux:216 (KEY_CHAT) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc1] =3D Q_KEY_CODE_FIND, /* qnum:193 -> linux:136 (KEY_FIND) -> qcode= :Q_KEY_CODE_FIND (find) */ + [0xc2] =3D Q_KEY_CODE_UNMAPPED, /* qnum:194 -> linux:218 (KEY_CONNECT) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc3] =3D Q_KEY_CODE_UNMAPPED, /* qnum:195 -> linux:219 (KEY_FINANCE) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc4] =3D Q_KEY_CODE_UNMAPPED, /* qnum:196 -> linux:220 (KEY_SPORT) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc5] =3D Q_KEY_CODE_UNMAPPED, /* qnum:197 -> linux:221 (KEY_SHOP) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc6] =3D Q_KEY_CODE_PAUSE, /* qnum:198 -> linux:119 (KEY_PAUSE) -> qco= de:Q_KEY_CODE_PAUSE (pause) */ + [0xc7] =3D Q_KEY_CODE_HOME, /* qnum:199 -> linux:102 (KEY_HOME) -> qcode= :Q_KEY_CODE_HOME (home) */ + [0xc8] =3D Q_KEY_CODE_UP, /* qnum:200 -> linux:103 (KEY_UP) -> qcode:Q_K= EY_CODE_UP (up) */ + [0xc9] =3D Q_KEY_CODE_PGUP, /* qnum:201 -> linux:104 (KEY_PAGEUP) -> qco= de:Q_KEY_CODE_PGUP (pgup) */ + [0xca] =3D Q_KEY_CODE_UNMAPPED, /* qnum:202 -> linux:223 (KEY_CANCEL) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcb] =3D Q_KEY_CODE_LEFT, /* qnum:203 -> linux:105 (KEY_LEFT) -> qcode= :Q_KEY_CODE_LEFT (left) */ + [0xcc] =3D Q_KEY_CODE_UNMAPPED, /* qnum:204 -> linux:224 (KEY_BRIGHTNESS= DOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcd] =3D Q_KEY_CODE_RIGHT, /* qnum:205 -> linux:106 (KEY_RIGHT) -> qco= de:Q_KEY_CODE_RIGHT (right) */ + [0xce] =3D Q_KEY_CODE_UNMAPPED, /* qnum:206 -> linux:118 (KEY_KPPLUSMINU= S) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcf] =3D Q_KEY_CODE_END, /* qnum:207 -> linux:107 (KEY_END) -> qcode:Q= _KEY_CODE_END (end) */ + [0xd0] =3D Q_KEY_CODE_DOWN, /* qnum:208 -> linux:108 (KEY_DOWN) -> qcode= :Q_KEY_CODE_DOWN (down) */ + [0xd1] =3D Q_KEY_CODE_PGDN, /* qnum:209 -> linux:109 (KEY_PAGEDOWN) -> q= code:Q_KEY_CODE_PGDN (pgdn) */ + [0xd2] =3D Q_KEY_CODE_INSERT, /* qnum:210 -> linux:110 (KEY_INSERT) -> q= code:Q_KEY_CODE_INSERT (insert) */ + [0xd3] =3D Q_KEY_CODE_DELETE, /* qnum:211 -> linux:111 (KEY_DELETE) -> q= code:Q_KEY_CODE_DELETE (delete) */ + [0xd4] =3D Q_KEY_CODE_UNMAPPED, /* qnum:212 -> linux:225 (KEY_BRIGHTNESS= UP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd5] =3D Q_KEY_CODE_UNMAPPED, /* qnum:213 -> linux:234 (KEY_SAVE) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd6] =3D Q_KEY_CODE_UNMAPPED, /* qnum:214 -> linux:227 (KEY_SWITCHVIDE= OMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd7] =3D Q_KEY_CODE_UNMAPPED, /* qnum:215 -> linux:228 (KEY_KBDILLUMTO= GGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd8] =3D Q_KEY_CODE_UNMAPPED, /* qnum:216 -> linux:229 (KEY_KBDILLUMDO= WN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd9] =3D Q_KEY_CODE_UNMAPPED, /* qnum:217 -> linux:230 (KEY_KBDILLUMUP= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xda] =3D Q_KEY_CODE_UNMAPPED, /* qnum:218 -> linux:231 (KEY_SEND) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdb] =3D Q_KEY_CODE_META_L, /* qnum:219 -> linux:125 (KEY_LEFTMETA) ->= qcode:Q_KEY_CODE_META_L (meta_l) */ + [0xdc] =3D Q_KEY_CODE_META_R, /* qnum:220 -> linux:126 (KEY_RIGHTMETA) -= > qcode:Q_KEY_CODE_META_R (meta_r) */ + [0xdd] =3D Q_KEY_CODE_COMPOSE, /* qnum:221 -> linux:127 (KEY_COMPOSE) ->= qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0xde] =3D Q_KEY_CODE_POWER, /* qnum:222 -> linux:116 (KEY_POWER) -> qco= de:Q_KEY_CODE_POWER (power) */ + [0xdf] =3D Q_KEY_CODE_SLEEP, /* qnum:223 -> linux:142 (KEY_SLEEP) -> qco= de:Q_KEY_CODE_SLEEP (sleep) */ + [0xe3] =3D Q_KEY_CODE_WAKE, /* qnum:227 -> linux:143 (KEY_WAKEUP) -> qco= de:Q_KEY_CODE_WAKE (wake) */ + [0xe4] =3D Q_KEY_CODE_UNMAPPED, /* qnum:228 -> linux:232 (KEY_REPLY) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe5] =3D Q_KEY_CODE_UNMAPPED, /* qnum:229 -> linux:217 (KEY_SEARCH) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe6] =3D Q_KEY_CODE_AC_BOOKMARKS, /* qnum:230 -> linux:156 (KEY_BOOKMA= RKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */ + [0xe7] =3D Q_KEY_CODE_AC_REFRESH, /* qnum:231 -> linux:173 (KEY_REFRESH)= -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xe8] =3D Q_KEY_CODE_STOP, /* qnum:232 -> linux:128 (KEY_STOP) -> qcode= :Q_KEY_CODE_STOP (stop) */ + [0xe9] =3D Q_KEY_CODE_AC_FORWARD, /* qnum:233 -> linux:159 (KEY_FORWARD)= -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xea] =3D Q_KEY_CODE_AC_BACK, /* qnum:234 -> linux:158 (KEY_BACK) -> qc= ode:Q_KEY_CODE_AC_BACK (ac_back) */ + [0xeb] =3D Q_KEY_CODE_COMPUTER, /* qnum:235 -> linux:157 (KEY_COMPUTER) = -> qcode:Q_KEY_CODE_COMPUTER (computer) */ + [0xec] =3D Q_KEY_CODE_MAIL, /* qnum:236 -> linux:155 (KEY_MAIL) -> qcode= :Q_KEY_CODE_MAIL (mail) */ + [0xed] =3D Q_KEY_CODE_MEDIASELECT, /* qnum:237 -> linux:226 (KEY_MEDIA) = -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */ + [0xef] =3D Q_KEY_CODE_UNMAPPED, /* qnum:239 -> linux:112 (KEY_MACRO) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf0] =3D Q_KEY_CODE_UNMAPPED, /* qnum:240 -> linux:235 (KEY_DOCUMENTS)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf1] =3D Q_KEY_CODE_UNMAPPED, /* qnum:241 -> linux:236 (KEY_BATTERY) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf2] =3D Q_KEY_CODE_UNMAPPED, /* qnum:242 -> linux:237 (KEY_BLUETOOTH)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf3] =3D Q_KEY_CODE_UNMAPPED, /* qnum:243 -> linux:238 (KEY_WLAN) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf4] =3D Q_KEY_CODE_UNMAPPED, /* qnum:244 -> linux:239 (KEY_UWB) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf5] =3D Q_KEY_CODE_HELP, /* qnum:245 -> linux:138 (KEY_HELP) -> qcode= :Q_KEY_CODE_HELP (help) */ + [0xf6] =3D Q_KEY_CODE_UNMAPPED, /* qnum:246 -> linux:179 (KEY_KPLEFTPARE= N) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf7] =3D Q_KEY_CODE_UNMAPPED, /* qnum:247 -> linux:188 (KEY_F18) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf8] =3D Q_KEY_CODE_COPY, /* qnum:248 -> linux:133 (KEY_COPY) -> qcode= :Q_KEY_CODE_COPY (copy) */ + [0xf9] =3D Q_KEY_CODE_UNMAPPED, /* qnum:249 -> linux:192 (KEY_F22) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfb] =3D Q_KEY_CODE_UNMAPPED, /* qnum:251 -> linux:180 (KEY_KPRIGHTPAR= EN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfd] =3D Q_KEY_CODE_UNMAPPED, /* qnum:253 -> linux:162 (KEY_EJECTCLOSE= CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_qnum_to_qcode_len =3D sizeof(qemu_input_map_qnu= m_to_qcode)/sizeof(qemu_input_map_qnum_to_qcode[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index cf979c2ce9..3a19a169f5 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -5,333 +5,37 @@ =20 #include "standard-headers/linux/input.h" =20 -static int linux_to_qcode[KEY_CNT] =3D { - [KEY_ESC] =3D Q_KEY_CODE_ESC, - [KEY_1] =3D Q_KEY_CODE_1, - [KEY_2] =3D Q_KEY_CODE_2, - [KEY_3] =3D Q_KEY_CODE_3, - [KEY_4] =3D Q_KEY_CODE_4, - [KEY_5] =3D Q_KEY_CODE_5, - [KEY_6] =3D Q_KEY_CODE_6, - [KEY_7] =3D Q_KEY_CODE_7, - [KEY_8] =3D Q_KEY_CODE_8, - [KEY_9] =3D Q_KEY_CODE_9, - [KEY_0] =3D Q_KEY_CODE_0, - [KEY_MINUS] =3D Q_KEY_CODE_MINUS, - [KEY_EQUAL] =3D Q_KEY_CODE_EQUAL, - [KEY_BACKSPACE] =3D Q_KEY_CODE_BACKSPACE, - [KEY_TAB] =3D Q_KEY_CODE_TAB, - [KEY_Q] =3D Q_KEY_CODE_Q, - [KEY_W] =3D Q_KEY_CODE_W, - [KEY_E] =3D Q_KEY_CODE_E, - [KEY_R] =3D Q_KEY_CODE_R, - [KEY_T] =3D Q_KEY_CODE_T, - [KEY_Y] =3D Q_KEY_CODE_Y, - [KEY_U] =3D Q_KEY_CODE_U, - [KEY_I] =3D Q_KEY_CODE_I, - [KEY_O] =3D Q_KEY_CODE_O, - [KEY_P] =3D Q_KEY_CODE_P, - [KEY_LEFTBRACE] =3D Q_KEY_CODE_BRACKET_LEFT, - [KEY_RIGHTBRACE] =3D Q_KEY_CODE_BRACKET_RIGHT, - [KEY_ENTER] =3D Q_KEY_CODE_RET, - [KEY_LEFTCTRL] =3D Q_KEY_CODE_CTRL, - [KEY_A] =3D Q_KEY_CODE_A, - [KEY_S] =3D Q_KEY_CODE_S, - [KEY_D] =3D Q_KEY_CODE_D, - [KEY_F] =3D Q_KEY_CODE_F, - [KEY_G] =3D Q_KEY_CODE_G, - [KEY_H] =3D Q_KEY_CODE_H, - [KEY_J] =3D Q_KEY_CODE_J, - [KEY_K] =3D Q_KEY_CODE_K, - [KEY_L] =3D Q_KEY_CODE_L, - [KEY_SEMICOLON] =3D Q_KEY_CODE_SEMICOLON, - [KEY_APOSTROPHE] =3D Q_KEY_CODE_APOSTROPHE, - [KEY_GRAVE] =3D Q_KEY_CODE_GRAVE_ACCENT, - [KEY_LEFTSHIFT] =3D Q_KEY_CODE_SHIFT, - [KEY_BACKSLASH] =3D Q_KEY_CODE_BACKSLASH, - [KEY_102ND] =3D Q_KEY_CODE_LESS, - [KEY_Z] =3D Q_KEY_CODE_Z, - [KEY_X] =3D Q_KEY_CODE_X, - [KEY_C] =3D Q_KEY_CODE_C, - [KEY_V] =3D Q_KEY_CODE_V, - [KEY_B] =3D Q_KEY_CODE_B, - [KEY_N] =3D Q_KEY_CODE_N, - [KEY_M] =3D Q_KEY_CODE_M, - [KEY_COMMA] =3D Q_KEY_CODE_COMMA, - [KEY_DOT] =3D Q_KEY_CODE_DOT, - [KEY_SLASH] =3D Q_KEY_CODE_SLASH, - [KEY_RIGHTSHIFT] =3D Q_KEY_CODE_SHIFT_R, - [KEY_LEFTALT] =3D Q_KEY_CODE_ALT, - [KEY_SPACE] =3D Q_KEY_CODE_SPC, - [KEY_CAPSLOCK] =3D Q_KEY_CODE_CAPS_LOCK, - [KEY_F1] =3D Q_KEY_CODE_F1, - [KEY_F2] =3D Q_KEY_CODE_F2, - [KEY_F3] =3D Q_KEY_CODE_F3, - [KEY_F4] =3D Q_KEY_CODE_F4, - [KEY_F5] =3D Q_KEY_CODE_F5, - [KEY_F6] =3D Q_KEY_CODE_F6, - [KEY_F7] =3D Q_KEY_CODE_F7, - [KEY_F8] =3D Q_KEY_CODE_F8, - [KEY_F9] =3D Q_KEY_CODE_F9, - [KEY_F10] =3D Q_KEY_CODE_F10, - [KEY_NUMLOCK] =3D Q_KEY_CODE_NUM_LOCK, - [KEY_SCROLLLOCK] =3D Q_KEY_CODE_SCROLL_LOCK, - [KEY_KP0] =3D Q_KEY_CODE_KP_0, - [KEY_KP1] =3D Q_KEY_CODE_KP_1, - [KEY_KP2] =3D Q_KEY_CODE_KP_2, - [KEY_KP3] =3D Q_KEY_CODE_KP_3, - [KEY_KP4] =3D Q_KEY_CODE_KP_4, - [KEY_KP5] =3D Q_KEY_CODE_KP_5, - [KEY_KP6] =3D Q_KEY_CODE_KP_6, - [KEY_KP7] =3D Q_KEY_CODE_KP_7, - [KEY_KP8] =3D Q_KEY_CODE_KP_8, - [KEY_KP9] =3D Q_KEY_CODE_KP_9, - [KEY_KPMINUS] =3D Q_KEY_CODE_KP_SUBTRACT, - [KEY_KPPLUS] =3D Q_KEY_CODE_KP_ADD, - [KEY_KPDOT] =3D Q_KEY_CODE_KP_DECIMAL, - [KEY_KPENTER] =3D Q_KEY_CODE_KP_ENTER, - [KEY_KPSLASH] =3D Q_KEY_CODE_KP_DIVIDE, - [KEY_KPASTERISK] =3D Q_KEY_CODE_KP_MULTIPLY, - [KEY_F11] =3D Q_KEY_CODE_F11, - [KEY_F12] =3D Q_KEY_CODE_F12, - [KEY_RO] =3D Q_KEY_CODE_RO, - [KEY_HIRAGANA] =3D Q_KEY_CODE_HIRAGANA, - [KEY_HENKAN] =3D Q_KEY_CODE_HENKAN, - [KEY_RIGHTCTRL] =3D Q_KEY_CODE_CTRL_R, - [KEY_SYSRQ] =3D Q_KEY_CODE_SYSRQ, - [KEY_RIGHTALT] =3D Q_KEY_CODE_ALT_R, - [KEY_HOME] =3D Q_KEY_CODE_HOME, - [KEY_UP] =3D Q_KEY_CODE_UP, - [KEY_PAGEUP] =3D Q_KEY_CODE_PGUP, - [KEY_LEFT] =3D Q_KEY_CODE_LEFT, - [KEY_RIGHT] =3D Q_KEY_CODE_RIGHT, - [KEY_END] =3D Q_KEY_CODE_END, - [KEY_DOWN] =3D Q_KEY_CODE_DOWN, - [KEY_PAGEDOWN] =3D Q_KEY_CODE_PGDN, - [KEY_INSERT] =3D Q_KEY_CODE_INSERT, - [KEY_DELETE] =3D Q_KEY_CODE_DELETE, - [KEY_POWER] =3D Q_KEY_CODE_POWER, - [KEY_KPCOMMA] =3D Q_KEY_CODE_KP_COMMA, - [KEY_YEN] =3D Q_KEY_CODE_YEN, - [KEY_LEFTMETA] =3D Q_KEY_CODE_META_L, - [KEY_RIGHTMETA] =3D Q_KEY_CODE_META_R, - [KEY_MENU] =3D Q_KEY_CODE_MENU, - [KEY_PAUSE] =3D Q_KEY_CODE_PAUSE, - - [KEY_SLEEP] =3D Q_KEY_CODE_SLEEP, - [KEY_WAKEUP] =3D Q_KEY_CODE_WAKE, - [KEY_CALC] =3D Q_KEY_CODE_CALCULATOR, - [KEY_MAIL] =3D Q_KEY_CODE_MAIL, - [KEY_COMPUTER] =3D Q_KEY_CODE_COMPUTER, - - [KEY_STOP] =3D Q_KEY_CODE_STOP, - [KEY_BOOKMARKS] =3D Q_KEY_CODE_AC_BOOKMARKS, - [KEY_BACK] =3D Q_KEY_CODE_AC_BACK, - [KEY_FORWARD] =3D Q_KEY_CODE_AC_FORWARD, - [KEY_HOMEPAGE] =3D Q_KEY_CODE_AC_HOME, - [KEY_REFRESH] =3D Q_KEY_CODE_AC_REFRESH, - [KEY_FIND] =3D Q_KEY_CODE_FIND, - - [KEY_NEXTSONG] =3D Q_KEY_CODE_AUDIONEXT, - [KEY_PREVIOUSSONG] =3D Q_KEY_CODE_AUDIOPREV, - [KEY_STOPCD] =3D Q_KEY_CODE_AUDIOSTOP, - [KEY_PLAYCD] =3D Q_KEY_CODE_AUDIOPLAY, - [KEY_MUTE] =3D Q_KEY_CODE_AUDIOMUTE, - [KEY_VOLUMEDOWN] =3D Q_KEY_CODE_VOLUMEDOWN, - [KEY_VOLUMEUP] =3D Q_KEY_CODE_VOLUMEUP, -}; - -static const int qcode_to_number[] =3D { - [Q_KEY_CODE_SHIFT] =3D 0x2a, - [Q_KEY_CODE_SHIFT_R] =3D 0x36, - - [Q_KEY_CODE_ALT] =3D 0x38, - [Q_KEY_CODE_ALT_R] =3D 0xb8, - [Q_KEY_CODE_CTRL] =3D 0x1d, - [Q_KEY_CODE_CTRL_R] =3D 0x9d, - - [Q_KEY_CODE_META_L] =3D 0xdb, - [Q_KEY_CODE_META_R] =3D 0xdc, - [Q_KEY_CODE_MENU] =3D 0xdd, - - [Q_KEY_CODE_ESC] =3D 0x01, - - [Q_KEY_CODE_1] =3D 0x02, - [Q_KEY_CODE_2] =3D 0x03, - [Q_KEY_CODE_3] =3D 0x04, - [Q_KEY_CODE_4] =3D 0x05, - [Q_KEY_CODE_5] =3D 0x06, - [Q_KEY_CODE_6] =3D 0x07, - [Q_KEY_CODE_7] =3D 0x08, - [Q_KEY_CODE_8] =3D 0x09, - [Q_KEY_CODE_9] =3D 0x0a, - [Q_KEY_CODE_0] =3D 0x0b, - [Q_KEY_CODE_MINUS] =3D 0x0c, - [Q_KEY_CODE_EQUAL] =3D 0x0d, - [Q_KEY_CODE_BACKSPACE] =3D 0x0e, - - [Q_KEY_CODE_TAB] =3D 0x0f, - [Q_KEY_CODE_Q] =3D 0x10, - [Q_KEY_CODE_W] =3D 0x11, - [Q_KEY_CODE_E] =3D 0x12, - [Q_KEY_CODE_R] =3D 0x13, - [Q_KEY_CODE_T] =3D 0x14, - [Q_KEY_CODE_Y] =3D 0x15, - [Q_KEY_CODE_U] =3D 0x16, - [Q_KEY_CODE_I] =3D 0x17, - [Q_KEY_CODE_O] =3D 0x18, - [Q_KEY_CODE_P] =3D 0x19, - [Q_KEY_CODE_BRACKET_LEFT] =3D 0x1a, - [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1b, - [Q_KEY_CODE_RET] =3D 0x1c, - - [Q_KEY_CODE_A] =3D 0x1e, - [Q_KEY_CODE_S] =3D 0x1f, - [Q_KEY_CODE_D] =3D 0x20, - [Q_KEY_CODE_F] =3D 0x21, - [Q_KEY_CODE_G] =3D 0x22, - [Q_KEY_CODE_H] =3D 0x23, - [Q_KEY_CODE_J] =3D 0x24, - [Q_KEY_CODE_K] =3D 0x25, - [Q_KEY_CODE_L] =3D 0x26, - [Q_KEY_CODE_SEMICOLON] =3D 0x27, - [Q_KEY_CODE_APOSTROPHE] =3D 0x28, - [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x29, - - [Q_KEY_CODE_BACKSLASH] =3D 0x2b, - [Q_KEY_CODE_Z] =3D 0x2c, - [Q_KEY_CODE_X] =3D 0x2d, - [Q_KEY_CODE_C] =3D 0x2e, - [Q_KEY_CODE_V] =3D 0x2f, - [Q_KEY_CODE_B] =3D 0x30, - [Q_KEY_CODE_N] =3D 0x31, - [Q_KEY_CODE_M] =3D 0x32, - [Q_KEY_CODE_COMMA] =3D 0x33, - [Q_KEY_CODE_DOT] =3D 0x34, - [Q_KEY_CODE_SLASH] =3D 0x35, - - [Q_KEY_CODE_ASTERISK] =3D 0x37, - - [Q_KEY_CODE_SPC] =3D 0x39, - [Q_KEY_CODE_CAPS_LOCK] =3D 0x3a, - [Q_KEY_CODE_F1] =3D 0x3b, - [Q_KEY_CODE_F2] =3D 0x3c, - [Q_KEY_CODE_F3] =3D 0x3d, - [Q_KEY_CODE_F4] =3D 0x3e, - [Q_KEY_CODE_F5] =3D 0x3f, - [Q_KEY_CODE_F6] =3D 0x40, - [Q_KEY_CODE_F7] =3D 0x41, - [Q_KEY_CODE_F8] =3D 0x42, - [Q_KEY_CODE_F9] =3D 0x43, - [Q_KEY_CODE_F10] =3D 0x44, - [Q_KEY_CODE_NUM_LOCK] =3D 0x45, - [Q_KEY_CODE_SCROLL_LOCK] =3D 0x46, - - [Q_KEY_CODE_KP_DIVIDE] =3D 0xb5, - [Q_KEY_CODE_KP_MULTIPLY] =3D 0x37, - [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4a, - [Q_KEY_CODE_KP_ADD] =3D 0x4e, - [Q_KEY_CODE_KP_ENTER] =3D 0x9c, - [Q_KEY_CODE_KP_DECIMAL] =3D 0x53, - [Q_KEY_CODE_SYSRQ] =3D 0x54, - [Q_KEY_CODE_PAUSE] =3D 0xc6, - - [Q_KEY_CODE_KP_0] =3D 0x52, - [Q_KEY_CODE_KP_1] =3D 0x4f, - [Q_KEY_CODE_KP_2] =3D 0x50, - [Q_KEY_CODE_KP_3] =3D 0x51, - [Q_KEY_CODE_KP_4] =3D 0x4b, - [Q_KEY_CODE_KP_5] =3D 0x4c, - [Q_KEY_CODE_KP_6] =3D 0x4d, - [Q_KEY_CODE_KP_7] =3D 0x47, - [Q_KEY_CODE_KP_8] =3D 0x48, - [Q_KEY_CODE_KP_9] =3D 0x49, - - [Q_KEY_CODE_LESS] =3D 0x56, - - [Q_KEY_CODE_F11] =3D 0x57, - [Q_KEY_CODE_F12] =3D 0x58, - - [Q_KEY_CODE_PRINT] =3D 0xb7, - - [Q_KEY_CODE_HOME] =3D 0xc7, - [Q_KEY_CODE_PGUP] =3D 0xc9, - [Q_KEY_CODE_PGDN] =3D 0xd1, - [Q_KEY_CODE_END] =3D 0xcf, - - [Q_KEY_CODE_LEFT] =3D 0xcb, - [Q_KEY_CODE_UP] =3D 0xc8, - [Q_KEY_CODE_DOWN] =3D 0xd0, - [Q_KEY_CODE_RIGHT] =3D 0xcd, - - [Q_KEY_CODE_INSERT] =3D 0xd2, - [Q_KEY_CODE_DELETE] =3D 0xd3, - - [Q_KEY_CODE_RO] =3D 0x73, - [Q_KEY_CODE_HIRAGANA] =3D 0x70, - [Q_KEY_CODE_HENKAN] =3D 0x79, - [Q_KEY_CODE_POWER] =3D 0xde, - [Q_KEY_CODE_YEN] =3D 0x7d, - [Q_KEY_CODE_KP_COMMA] =3D 0x7e, - - [Q_KEY_CODE_SLEEP] =3D 0xdf, - [Q_KEY_CODE_WAKE] =3D 0xe3, - [Q_KEY_CODE_CALCULATOR] =3D 0xa1, - [Q_KEY_CODE_MAIL] =3D 0xec, - [Q_KEY_CODE_COMPUTER] =3D 0xeb, - - [Q_KEY_CODE_STOP] =3D 0xe8, - [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe6, - [Q_KEY_CODE_AC_BACK] =3D 0xea, - [Q_KEY_CODE_AC_FORWARD] =3D 0xe9, - [Q_KEY_CODE_AC_HOME] =3D 0xb2, - [Q_KEY_CODE_AC_REFRESH] =3D 0xe7, - [Q_KEY_CODE_FIND] =3D 0xe5, - - [Q_KEY_CODE_AUDIONEXT] =3D 0x99, - [Q_KEY_CODE_AUDIOPREV] =3D 0x90, - [Q_KEY_CODE_AUDIOSTOP] =3D 0xa4, - [Q_KEY_CODE_AUDIOPLAY] =3D 0xa2, - [Q_KEY_CODE_AUDIOMUTE] =3D 0xa0, - [Q_KEY_CODE_VOLUMEDOWN] =3D 0xae, - [Q_KEY_CODE_VOLUMEUP] =3D 0xb0, - - [Q_KEY_CODE__MAX] =3D 0, -}; - -static int number_to_qcode[0x100]; +#include "ui/input-keymap-linux-to-qcode.c" +#include "ui/input-keymap-qcode-to-qnum.c" +#include "ui/input-keymap-qnum-to-qcode.c" =20 int qemu_input_linux_to_qcode(unsigned int lnx) { - assert(lnx < KEY_CNT); - return linux_to_qcode[lnx]; + if (lnx >=3D qemu_input_map_linux_to_qcode_len) { + return 0; + } + return qemu_input_map_linux_to_qcode[lnx]; } =20 int qemu_input_key_value_to_number(const KeyValue *value) { if (value->type =3D=3D KEY_VALUE_KIND_QCODE) { - return qcode_to_number[value->u.qcode.data]; + if (value->u.qcode.data >=3D qemu_input_map_qcode_to_qnum_len) { + return 0; + } + return qemu_input_map_qcode_to_qnum[value->u.qcode.data]; } else { assert(value->type =3D=3D KEY_VALUE_KIND_NUMBER); return value->u.number.data; } } =20 -int qemu_input_key_number_to_qcode(uint8_t nr) +int qemu_input_key_number_to_qcode(unsigned int nr) { - static int first =3D true; - - if (first) { - int qcode, number; - first =3D false; - for (qcode =3D 0; qcode < Q_KEY_CODE__MAX; qcode++) { - number =3D qcode_to_number[qcode]; - assert(number < ARRAY_SIZE(number_to_qcode)); - number_to_qcode[number] =3D qcode; - } + if (nr >=3D qemu_input_map_qnum_to_qcode_len) { + return 0; } - - return number_to_qcode[nr]; + return qemu_input_map_qnum_to_qcode[nr]; } =20 int qemu_input_key_value_to_qcode(const KeyValue *value) --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505219995094485.3903490930853; Tue, 12 Sep 2017 05:39:55 -0700 (PDT) Received: from localhost ([::1]:35574 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkTp-0001tg-Ql for importer@patchew.org; Tue, 12 Sep 2017 08:39:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48524) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkRz-0000cx-6B for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkRy-0003QY-Ca for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:59 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60210) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkRy-0003QI-7E for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:58 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 49BD25D689 for ; Tue, 12 Sep 2017 12:37:57 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 77DF777D65; Tue, 12 Sep 2017 12:37:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 49BD25D689 Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx10.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:35 +0100 Message-Id: <20170912123744.14730-4-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 12 Sep 2017 12:37:57 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 03/12] ui: convert key events to QKeyCodes immediately X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Always use QKeyCode in the InputKeyEvent struct, by converting key numbers to QKeyCode at the time the event is created. Signed-off-by: Daniel P. Berrange --- ui/input.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/ui/input.c b/ui/input.c index 3422d4a8ef..9914daf0b4 100644 --- a/ui/input.c +++ b/ui/input.c @@ -400,10 +400,8 @@ void qemu_input_event_send_key(QemuConsole *src, KeyVa= lue *key, bool down) =20 void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down) { - KeyValue *key =3D g_new0(KeyValue, 1); - key->type =3D KEY_VALUE_KIND_NUMBER; - key->u.number.data =3D num; - qemu_input_event_send_key(src, key, down); + QKeyCode code =3D qemu_input_key_number_to_qcode(num); + qemu_input_event_send_key_qcode(src, code, down); } =20 void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool do= wn) --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220155708713.692048389836; Tue, 12 Sep 2017 05:42:35 -0700 (PDT) Received: from localhost ([::1]:35591 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkWR-0004Xs-2P for importer@patchew.org; Tue, 12 Sep 2017 08:42:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48591) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkS5-0000hs-DO for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkRz-0003RD-I2 for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59170) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkRz-0003Qk-Cu for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:37:59 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 7988AC04B92C for ; Tue, 12 Sep 2017 12:37:58 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8274077D65; Tue, 12 Sep 2017 12:37:57 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7988AC04B92C Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:36 +0100 Message-Id: <20170912123744.14730-5-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Tue, 12 Sep 2017 12:37:58 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 04/12] ui: don't export qemu_input_event_new_key X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" All public code should use qemu_input_event_send_key* functions instead of creating an event directly. Signed-off-by: Daniel P. Berrange --- include/ui/input.h | 1 - ui/input.c | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/include/ui/input.h b/include/ui/input.h index 479cc46cfc..f8cee43f65 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -38,7 +38,6 @@ void qemu_input_event_send_impl(QemuConsole *src, InputEv= ent *evt); void qemu_input_event_sync(void); void qemu_input_event_sync_impl(void); =20 -InputEvent *qemu_input_event_new_key(KeyValue *key, bool down); void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down); void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down= ); void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool do= wn); diff --git a/ui/input.c b/ui/input.c index 9914daf0b4..23f9f2c5e0 100644 --- a/ui/input.c +++ b/ui/input.c @@ -374,7 +374,7 @@ void qemu_input_event_sync(void) replay_input_sync_event(); } =20 -InputEvent *qemu_input_event_new_key(KeyValue *key, bool down) +static InputEvent *qemu_input_event_new_key(KeyValue *key, bool down) { InputEvent *evt =3D g_new0(InputEvent, 1); evt->u.key.data =3D g_new0(InputKeyEvent, 1); --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220304219159.0717776041414; Tue, 12 Sep 2017 05:45:04 -0700 (PDT) Received: from localhost ([::1]:35604 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkYo-00076n-Mf for importer@patchew.org; Tue, 12 Sep 2017 08:45:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48637) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkS8-0000lQ-MV for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS0-0003Ro-VI for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:08 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45912) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS0-0003RO-Iu for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:00 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8A68B859FA for ; Tue, 12 Sep 2017 12:37:59 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id B44D077D65; Tue, 12 Sep 2017 12:37:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 8A68B859FA Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:37 +0100 Message-Id: <20170912123744.14730-6-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 12 Sep 2017 12:37:59 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 05/12] input: convert virtio-input-hid device to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the keymap_qcode table with automatically generated tables. Missing entries in keymap_qcode now fixed: Q_KEY_CODE_ASTERISK -> KEY_KPASTERISK Q_KEY_CODE_KP_MULTIPLY -> KEY_KPASTERISK Q_KEY_CODE_STOP -> KEY_STOP Q_KEY_CODE_AGAIN -> KEY_AGAIN Q_KEY_CODE_PROPS -> KEY_PROPS Q_KEY_CODE_UNDO -> KEY_UNDO Q_KEY_CODE_FRONT -> KEY_FRONT Q_KEY_CODE_COPY -> KEY_COPY Q_KEY_CODE_OPEN -> KEY_OPEN Q_KEY_CODE_PASTE -> KEY_PASTE Q_KEY_CODE_FIND -> KEY_FIND Q_KEY_CODE_CUT -> KEY_CUT Q_KEY_CODE_LF -> KEY_LINEFEED Q_KEY_CODE_HELP -> KEY_HELP Q_KEY_CODE_COMPOSE -> KEY_COMPOSE Q_KEY_CODE_RO -> KEY_RO Q_KEY_CODE_HIRAGANA -> KEY_HIRAGANA Q_KEY_CODE_HENKAN -> KEY_HENKAN Q_KEY_CODE_YEN -> KEY_YEN Q_KEY_CODE_KP_COMMA -> KEY_KPCOMMA Q_KEY_CODE_KP_EQUALS -> KEY_KPEQUAL Q_KEY_CODE_POWER -> KEY_POWER Q_KEY_CODE_SLEEP -> KEY_SLEEP Q_KEY_CODE_WAKE -> KEY_WAKEUP Q_KEY_CODE_AUDIONEXT -> KEY_NEXTSONG Q_KEY_CODE_AUDIOPREV -> KEY_PREVIOUSSONG Q_KEY_CODE_AUDIOSTOP -> KEY_STOPCD Q_KEY_CODE_AUDIOPLAY -> KEY_PLAYPAUSE Q_KEY_CODE_AUDIOMUTE -> KEY_MUTE Q_KEY_CODE_VOLUMEUP -> KEY_VOLUMEUP Q_KEY_CODE_VOLUMEDOWN -> KEY_VOLUMEDOWN Q_KEY_CODE_MEDIASELECT -> KEY_MEDIA Q_KEY_CODE_MAIL -> KEY_MAIL Q_KEY_CODE_CALCULATOR -> KEY_CALC Q_KEY_CODE_COMPUTER -> KEY_COMPUTER Q_KEY_CODE_AC_HOME -> KEY_HOMEPAGE Q_KEY_CODE_AC_BACK -> KEY_BACK Q_KEY_CODE_AC_FORWARD -> KEY_FORWARD Q_KEY_CODE_AC_REFRESH -> KEY_REFRESH Q_KEY_CODE_AC_BOOKMARKS -> KEY_BOOKMARKS Signed-off-by: Daniel P. Berrange --- hw/input/virtio-input-hid.c | 136 +++------------------------------- include/ui/input.h | 3 + ui/Makefile.objs | 1 + ui/input-keymap-qcode-to-linux.c | 156 +++++++++++++++++++++++++++++++++++= ++++ ui/input-keymap.c | 1 + 5 files changed, 170 insertions(+), 127 deletions(-) create mode 100644 ui/input-keymap-qcode-to-linux.c diff --git a/hw/input/virtio-input-hid.c b/hw/input/virtio-input-hid.c index 4d3afc1b14..bb1296bedf 100644 --- a/hw/input/virtio-input-hid.c +++ b/hw/input/virtio-input-hid.c @@ -22,126 +22,7 @@ =20 /* ----------------------------------------------------------------- */ =20 -static const unsigned int keymap_qcode[Q_KEY_CODE__MAX] =3D { - [Q_KEY_CODE_ESC] =3D KEY_ESC, - [Q_KEY_CODE_1] =3D KEY_1, - [Q_KEY_CODE_2] =3D KEY_2, - [Q_KEY_CODE_3] =3D KEY_3, - [Q_KEY_CODE_4] =3D KEY_4, - [Q_KEY_CODE_5] =3D KEY_5, - [Q_KEY_CODE_6] =3D KEY_6, - [Q_KEY_CODE_7] =3D KEY_7, - [Q_KEY_CODE_8] =3D KEY_8, - [Q_KEY_CODE_9] =3D KEY_9, - [Q_KEY_CODE_0] =3D KEY_0, - [Q_KEY_CODE_MINUS] =3D KEY_MINUS, - [Q_KEY_CODE_EQUAL] =3D KEY_EQUAL, - [Q_KEY_CODE_BACKSPACE] =3D KEY_BACKSPACE, - - [Q_KEY_CODE_TAB] =3D KEY_TAB, - [Q_KEY_CODE_Q] =3D KEY_Q, - [Q_KEY_CODE_W] =3D KEY_W, - [Q_KEY_CODE_E] =3D KEY_E, - [Q_KEY_CODE_R] =3D KEY_R, - [Q_KEY_CODE_T] =3D KEY_T, - [Q_KEY_CODE_Y] =3D KEY_Y, - [Q_KEY_CODE_U] =3D KEY_U, - [Q_KEY_CODE_I] =3D KEY_I, - [Q_KEY_CODE_O] =3D KEY_O, - [Q_KEY_CODE_P] =3D KEY_P, - [Q_KEY_CODE_BRACKET_LEFT] =3D KEY_LEFTBRACE, - [Q_KEY_CODE_BRACKET_RIGHT] =3D KEY_RIGHTBRACE, - [Q_KEY_CODE_RET] =3D KEY_ENTER, - - [Q_KEY_CODE_CTRL] =3D KEY_LEFTCTRL, - [Q_KEY_CODE_A] =3D KEY_A, - [Q_KEY_CODE_S] =3D KEY_S, - [Q_KEY_CODE_D] =3D KEY_D, - [Q_KEY_CODE_F] =3D KEY_F, - [Q_KEY_CODE_G] =3D KEY_G, - [Q_KEY_CODE_H] =3D KEY_H, - [Q_KEY_CODE_J] =3D KEY_J, - [Q_KEY_CODE_K] =3D KEY_K, - [Q_KEY_CODE_L] =3D KEY_L, - [Q_KEY_CODE_SEMICOLON] =3D KEY_SEMICOLON, - [Q_KEY_CODE_APOSTROPHE] =3D KEY_APOSTROPHE, - [Q_KEY_CODE_GRAVE_ACCENT] =3D KEY_GRAVE, - - [Q_KEY_CODE_SHIFT] =3D KEY_LEFTSHIFT, - [Q_KEY_CODE_BACKSLASH] =3D KEY_BACKSLASH, - [Q_KEY_CODE_LESS] =3D KEY_102ND, - [Q_KEY_CODE_Z] =3D KEY_Z, - [Q_KEY_CODE_X] =3D KEY_X, - [Q_KEY_CODE_C] =3D KEY_C, - [Q_KEY_CODE_V] =3D KEY_V, - [Q_KEY_CODE_B] =3D KEY_B, - [Q_KEY_CODE_N] =3D KEY_N, - [Q_KEY_CODE_M] =3D KEY_M, - [Q_KEY_CODE_COMMA] =3D KEY_COMMA, - [Q_KEY_CODE_DOT] =3D KEY_DOT, - [Q_KEY_CODE_SLASH] =3D KEY_SLASH, - [Q_KEY_CODE_SHIFT_R] =3D KEY_RIGHTSHIFT, - - [Q_KEY_CODE_ALT] =3D KEY_LEFTALT, - [Q_KEY_CODE_SPC] =3D KEY_SPACE, - [Q_KEY_CODE_CAPS_LOCK] =3D KEY_CAPSLOCK, - - [Q_KEY_CODE_F1] =3D KEY_F1, - [Q_KEY_CODE_F2] =3D KEY_F2, - [Q_KEY_CODE_F3] =3D KEY_F3, - [Q_KEY_CODE_F4] =3D KEY_F4, - [Q_KEY_CODE_F5] =3D KEY_F5, - [Q_KEY_CODE_F6] =3D KEY_F6, - [Q_KEY_CODE_F7] =3D KEY_F7, - [Q_KEY_CODE_F8] =3D KEY_F8, - [Q_KEY_CODE_F9] =3D KEY_F9, - [Q_KEY_CODE_F10] =3D KEY_F10, - [Q_KEY_CODE_NUM_LOCK] =3D KEY_NUMLOCK, - [Q_KEY_CODE_SCROLL_LOCK] =3D KEY_SCROLLLOCK, - - [Q_KEY_CODE_KP_0] =3D KEY_KP0, - [Q_KEY_CODE_KP_1] =3D KEY_KP1, - [Q_KEY_CODE_KP_2] =3D KEY_KP2, - [Q_KEY_CODE_KP_3] =3D KEY_KP3, - [Q_KEY_CODE_KP_4] =3D KEY_KP4, - [Q_KEY_CODE_KP_5] =3D KEY_KP5, - [Q_KEY_CODE_KP_6] =3D KEY_KP6, - [Q_KEY_CODE_KP_7] =3D KEY_KP7, - [Q_KEY_CODE_KP_8] =3D KEY_KP8, - [Q_KEY_CODE_KP_9] =3D KEY_KP9, - [Q_KEY_CODE_KP_SUBTRACT] =3D KEY_KPMINUS, - [Q_KEY_CODE_KP_ADD] =3D KEY_KPPLUS, - [Q_KEY_CODE_KP_DECIMAL] =3D KEY_KPDOT, - [Q_KEY_CODE_KP_ENTER] =3D KEY_KPENTER, - [Q_KEY_CODE_KP_DIVIDE] =3D KEY_KPSLASH, - [Q_KEY_CODE_KP_MULTIPLY] =3D KEY_KPASTERISK, - - [Q_KEY_CODE_F11] =3D KEY_F11, - [Q_KEY_CODE_F12] =3D KEY_F12, - - [Q_KEY_CODE_CTRL_R] =3D KEY_RIGHTCTRL, - [Q_KEY_CODE_SYSRQ] =3D KEY_SYSRQ, - [Q_KEY_CODE_PRINT] =3D KEY_SYSRQ, - [Q_KEY_CODE_PAUSE] =3D KEY_PAUSE, - [Q_KEY_CODE_ALT_R] =3D KEY_RIGHTALT, - - [Q_KEY_CODE_HOME] =3D KEY_HOME, - [Q_KEY_CODE_UP] =3D KEY_UP, - [Q_KEY_CODE_PGUP] =3D KEY_PAGEUP, - [Q_KEY_CODE_LEFT] =3D KEY_LEFT, - [Q_KEY_CODE_RIGHT] =3D KEY_RIGHT, - [Q_KEY_CODE_END] =3D KEY_END, - [Q_KEY_CODE_DOWN] =3D KEY_DOWN, - [Q_KEY_CODE_PGDN] =3D KEY_PAGEDOWN, - [Q_KEY_CODE_INSERT] =3D KEY_INSERT, - [Q_KEY_CODE_DELETE] =3D KEY_DELETE, - - [Q_KEY_CODE_META_L] =3D KEY_LEFTMETA, - [Q_KEY_CODE_META_R] =3D KEY_RIGHTMETA, - [Q_KEY_CODE_MENU] =3D KEY_MENU, -}; - -static const unsigned int keymap_button[INPUT_BUTTON__MAX] =3D { +static const unsigned short keymap_button[INPUT_BUTTON__MAX] =3D { [INPUT_BUTTON_LEFT] =3D BTN_LEFT, [INPUT_BUTTON_RIGHT] =3D BTN_RIGHT, [INPUT_BUTTON_MIDDLE] =3D BTN_MIDDLE, @@ -149,12 +30,12 @@ static const unsigned int keymap_button[INPUT_BUTTON__= MAX] =3D { [INPUT_BUTTON_WHEEL_DOWN] =3D BTN_GEAR_DOWN, }; =20 -static const unsigned int axismap_rel[INPUT_AXIS__MAX] =3D { +static const unsigned short axismap_rel[INPUT_AXIS__MAX] =3D { [INPUT_AXIS_X] =3D REL_X, [INPUT_AXIS_Y] =3D REL_Y, }; =20 -static const unsigned int axismap_abs[INPUT_AXIS__MAX] =3D { +static const unsigned short axismap_abs[INPUT_AXIS__MAX] =3D { [INPUT_AXIS_X] =3D ABS_X, [INPUT_AXIS_Y] =3D ABS_Y, }; @@ -162,7 +43,7 @@ static const unsigned int axismap_abs[INPUT_AXIS__MAX] = =3D { /* ----------------------------------------------------------------- */ =20 static void virtio_input_key_config(VirtIOInput *vinput, - const unsigned int *keymap, + const unsigned short *keymap, size_t mapsize) { virtio_input_config keys; @@ -201,9 +82,10 @@ static void virtio_input_handle_event(DeviceState *dev,= QemuConsole *src, case INPUT_EVENT_KIND_KEY: key =3D evt->u.key.data; qcode =3D qemu_input_key_value_to_qcode(key->key); - if (qcode && keymap_qcode[qcode]) { + if (qcode < qemu_input_map_qcode_to_linux_len && + qemu_input_map_qcode_to_linux[qcode]) { event.type =3D cpu_to_le16(EV_KEY); - event.code =3D cpu_to_le16(keymap_qcode[qcode]); + event.code =3D cpu_to_le16(qemu_input_map_qcode_to_linux[qcod= e]); event.value =3D cpu_to_le32(key->down ? 1 : 0); virtio_input_send(vinput, &event); } else { @@ -387,8 +269,8 @@ static void virtio_keyboard_init(Object *obj) =20 vhid->handler =3D &virtio_keyboard_handler; virtio_input_init_config(vinput, virtio_keyboard_config); - virtio_input_key_config(vinput, keymap_qcode, - ARRAY_SIZE(keymap_qcode)); + virtio_input_key_config(vinput, qemu_input_map_qcode_to_linux, + qemu_input_map_qcode_to_linux_len); } =20 static const TypeInfo virtio_keyboard_info =3D { diff --git a/include/ui/input.h b/include/ui/input.h index f8cee43f65..6f56d868c7 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -71,6 +71,9 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *not= ify); extern const guint qemu_input_map_linux_to_qcode_len; extern const guint16 qemu_input_map_linux_to_qcode[]; =20 +extern const guint qemu_input_map_qcode_to_linux_len; +extern const guint16 qemu_input_map_qcode_to_linux[]; + extern const guint qemu_input_map_qcode_to_qnum_len; extern const guint16 qemu_input_map_qcode_to_qnum[]; =20 diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 29e44c1baf..baf6f4e56f 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -55,6 +55,7 @@ KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keyma= ps.csv =20 KEYCODEMAP_FILES =3D \ ui/input-keymap-linux-to-qcode.c \ + ui/input-keymap-qcode-to-linux.c \ ui/input-keymap-qcode-to-qnum.c \ ui/input-keymap-qnum-to-qcode.c \ $(NULL) diff --git a/ui/input-keymap-qcode-to-linux.c b/ui/input-keymap-qcode-to-li= nux.c new file mode 100644 index 0000000000..2a718566fb --- /dev/null +++ b/ui/input-keymap-qcode-to-linux.c @@ -0,0 +1,156 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:06 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_linux c= ode-map keymaps.csv qcode linux +*/ +const guint16 qemu_input_map_qcode_to_linux[Q_KEY_CODE__MAX] =3D { + [0 ... Q_KEY_CODE__MAX-1] =3D 0x0, + [Q_KEY_CODE_0] =3D 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) ->= linux:11 (KEY_0) */ + [Q_KEY_CODE_1] =3D 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> = linux:2 (KEY_1) */ + [Q_KEY_CODE_2] =3D 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> = linux:3 (KEY_2) */ + [Q_KEY_CODE_3] =3D 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> = linux:4 (KEY_3) */ + [Q_KEY_CODE_4] =3D 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> = linux:5 (KEY_4) */ + [Q_KEY_CODE_5] =3D 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> = linux:6 (KEY_5) */ + [Q_KEY_CODE_6] =3D 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> = linux:7 (KEY_6) */ + [Q_KEY_CODE_7] =3D 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> = linux:8 (KEY_7) */ + [Q_KEY_CODE_8] =3D 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> = linux:9 (KEY_8) */ + [Q_KEY_CODE_9] =3D 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) ->= linux:10 (KEY_9) */ + [Q_KEY_CODE_A] =3D 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -= > linux:30 (KEY_A) */ + [Q_KEY_CODE_AC_BACK] =3D 0x9e, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> = linux:158 (KEY_BACK) -> linux:158 (KEY_BACK) */ + [Q_KEY_CODE_AC_BOOKMARKS] =3D 0x9c, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac= _bookmarks) -> linux:156 (KEY_BOOKMARKS) -> linux:156 (KEY_BOOKMARKS) */ + [Q_KEY_CODE_AC_FORWARD] =3D 0x9f, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_for= ward) -> linux:159 (KEY_FORWARD) -> linux:159 (KEY_FORWARD) */ + [Q_KEY_CODE_AC_HOME] =3D 0xac, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> = linux:172 (KEY_HOMEPAGE) -> linux:172 (KEY_HOMEPAGE) */ + [Q_KEY_CODE_AC_REFRESH] =3D 0xad, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_ref= resh) -> linux:173 (KEY_REFRESH) -> linux:173 (KEY_REFRESH) */ + [Q_KEY_CODE_AGAIN] =3D 0x81, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:= 129 (KEY_AGAIN) -> linux:129 (KEY_AGAIN) */ + [Q_KEY_CODE_ALT] =3D 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> linux:56 (KEY_LEFTALT) */ + [Q_KEY_CODE_ALT_R] =3D 0x64, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:= 100 (KEY_RIGHTALT) -> linux:100 (KEY_RIGHTALT) */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> linux:40 (KEY_APOSTROPHE) */ + [Q_KEY_CODE_ASTERISK] =3D 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> linux:55 (KEY_KPASTERISK) */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0x71, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomut= e) -> linux:113 (KEY_MUTE) -> linux:113 (KEY_MUTE) */ + [Q_KEY_CODE_AUDIONEXT] =3D 0xa3, /* qcode:Q_KEY_CODE_AUDIONEXT (audionex= t) -> linux:163 (KEY_NEXTSONG) -> linux:163 (KEY_NEXTSONG) */ + [Q_KEY_CODE_AUDIOPLAY] =3D 0xa4, /* qcode:Q_KEY_CODE_AUDIOPLAY (audiopla= y) -> linux:164 (KEY_PLAYPAUSE) -> linux:164 (KEY_PLAYPAUSE) */ + [Q_KEY_CODE_AUDIOPREV] =3D 0xa5, /* qcode:Q_KEY_CODE_AUDIOPREV (audiopre= v) -> linux:165 (KEY_PREVIOUSSONG) -> linux:165 (KEY_PREVIOUSSONG) */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0xa6, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiosto= p) -> linux:166 (KEY_STOPCD) -> linux:166 (KEY_STOPCD) */ + [Q_KEY_CODE_B] =3D 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -= > linux:48 (KEY_B) */ + [Q_KEY_CODE_BACKSLASH] =3D 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> linux:43 (KEY_BACKSLASH) */ + [Q_KEY_CODE_BACKSPACE] =3D 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace= ) -> linux:14 (KEY_BACKSPACE) -> linux:14 (KEY_BACKSPACE) */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> linux:26 (KEY_LEFTBRACE) */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> linux:27 (KEY_RIGHTBRACE) */ + [Q_KEY_CODE_C] =3D 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -= > linux:46 (KEY_C) */ + [Q_KEY_CODE_CALCULATOR] =3D 0x8c, /* qcode:Q_KEY_CODE_CALCULATOR (calcul= ator) -> linux:140 (KEY_CALC) -> linux:140 (KEY_CALC) */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> linux:58 (KEY_CAPSLOCK) */ + [Q_KEY_CODE_COMMA] =3D 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> linux:51 (KEY_COMMA) */ + [Q_KEY_CODE_COMPOSE] =3D 0x7f, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> = linux:127 (KEY_COMPOSE) -> linux:127 (KEY_COMPOSE) */ + [Q_KEY_CODE_COMPUTER] =3D 0x9d, /* qcode:Q_KEY_CODE_COMPUTER (computer) = -> linux:157 (KEY_COMPUTER) -> linux:157 (KEY_COMPUTER) */ + [Q_KEY_CODE_COPY] =3D 0x85, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133= (KEY_COPY) -> linux:133 (KEY_COPY) */ + [Q_KEY_CODE_CTRL] =3D 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> linux:29 (KEY_LEFTCTRL) */ + [Q_KEY_CODE_CTRL_R] =3D 0x61, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> lin= ux:97 (KEY_RIGHTCTRL) -> linux:97 (KEY_RIGHTCTRL) */ + [Q_KEY_CODE_CUT] =3D 0x89, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (K= EY_CUT) -> linux:137 (KEY_CUT) */ + [Q_KEY_CODE_D] =3D 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -= > linux:32 (KEY_D) */ + [Q_KEY_CODE_DELETE] =3D 0x6f, /* qcode:Q_KEY_CODE_DELETE (delete) -> lin= ux:111 (KEY_DELETE) -> linux:111 (KEY_DELETE) */ + [Q_KEY_CODE_DOT] =3D 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> linux:52 (KEY_DOT) */ + [Q_KEY_CODE_DOWN] =3D 0x6c, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108= (KEY_DOWN) -> linux:108 (KEY_DOWN) */ + [Q_KEY_CODE_E] =3D 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -= > linux:18 (KEY_E) */ + [Q_KEY_CODE_END] =3D 0x6b, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (K= EY_END) -> linux:107 (KEY_END) */ + [Q_KEY_CODE_EQUAL] =3D 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:1= 3 (KEY_EQUAL) -> linux:13 (KEY_EQUAL) */ + [Q_KEY_CODE_ESC] =3D 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_= ESC) -> linux:1 (KEY_ESC) */ + [Q_KEY_CODE_F] =3D 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -= > linux:33 (KEY_F) */ + [Q_KEY_CODE_F1] =3D 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F= 1) -> linux:59 (KEY_F1) */ + [Q_KEY_CODE_F10] =3D 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KE= Y_F10) -> linux:68 (KEY_F10) */ + [Q_KEY_CODE_F11] =3D 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> linux:87 (KEY_F11) */ + [Q_KEY_CODE_F12] =3D 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KE= Y_F12) -> linux:88 (KEY_F12) */ + [Q_KEY_CODE_F2] =3D 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F= 2) -> linux:60 (KEY_F2) */ + [Q_KEY_CODE_F3] =3D 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F= 3) -> linux:61 (KEY_F3) */ + [Q_KEY_CODE_F4] =3D 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F= 4) -> linux:62 (KEY_F4) */ + [Q_KEY_CODE_F5] =3D 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F= 5) -> linux:63 (KEY_F5) */ + [Q_KEY_CODE_F6] =3D 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F= 6) -> linux:64 (KEY_F6) */ + [Q_KEY_CODE_F7] =3D 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> linux:65 (KEY_F7) */ + [Q_KEY_CODE_F8] =3D 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F= 8) -> linux:66 (KEY_F8) */ + [Q_KEY_CODE_F9] =3D 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F= 9) -> linux:67 (KEY_F9) */ + [Q_KEY_CODE_FIND] =3D 0x88, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136= (KEY_FIND) -> linux:136 (KEY_FIND) */ + [Q_KEY_CODE_FRONT] =3D 0x84, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:= 132 (KEY_FRONT) -> linux:132 (KEY_FRONT) */ + [Q_KEY_CODE_G] =3D 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -= > linux:34 (KEY_G) */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gr= ave_accent) -> linux:41 (KEY_GRAVE) -> linux:41 (KEY_GRAVE) */ + [Q_KEY_CODE_H] =3D 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -= > linux:35 (KEY_H) */ + [Q_KEY_CODE_HELP] =3D 0x8a, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138= (KEY_HELP) -> linux:138 (KEY_HELP) */ + [Q_KEY_CODE_HENKAN] =3D 0x5c, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> linux:92 (KEY_HENKAN) */ + [Q_KEY_CODE_HIRAGANA] =3D 0x5b, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> linux:91 (KEY_HIRAGANA) */ + [Q_KEY_CODE_HOME] =3D 0x66, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102= (KEY_HOME) -> linux:102 (KEY_HOME) */ + [Q_KEY_CODE_I] =3D 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > linux:23 (KEY_I) */ + [Q_KEY_CODE_INSERT] =3D 0x6e, /* qcode:Q_KEY_CODE_INSERT (insert) -> lin= ux:110 (KEY_INSERT) -> linux:110 (KEY_INSERT) */ + [Q_KEY_CODE_J] =3D 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > linux:36 (KEY_J) */ + [Q_KEY_CODE_K] =3D 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > linux:37 (KEY_K) */ + [Q_KEY_CODE_KP_0] =3D 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> linux:82 (KEY_KP0) */ + [Q_KEY_CODE_KP_1] =3D 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> linux:79 (KEY_KP1) */ + [Q_KEY_CODE_KP_2] =3D 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> linux:80 (KEY_KP2) */ + [Q_KEY_CODE_KP_3] =3D 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> linux:81 (KEY_KP3) */ + [Q_KEY_CODE_KP_4] =3D 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> linux:75 (KEY_KP4) */ + [Q_KEY_CODE_KP_5] =3D 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> linux:76 (KEY_KP5) */ + [Q_KEY_CODE_KP_6] =3D 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> linux:77 (KEY_KP6) */ + [Q_KEY_CODE_KP_7] =3D 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> linux:71 (KEY_KP7) */ + [Q_KEY_CODE_KP_8] =3D 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> linux:72 (KEY_KP8) */ + [Q_KEY_CODE_KP_9] =3D 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> linux:73 (KEY_KP9) */ + [Q_KEY_CODE_KP_ADD] =3D 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> linux:78 (KEY_KPPLUS) */ + [Q_KEY_CODE_KP_COMMA] =3D 0x79, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) = -> linux:121 (KEY_KPCOMMA) -> linux:121 (KEY_KPCOMMA) */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> linux:83 (KEY_KPDOT) */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0x62, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divid= e) -> linux:98 (KEY_KPSLASH) -> linux:98 (KEY_KPSLASH) */ + [Q_KEY_CODE_KP_ENTER] =3D 0x60, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) = -> linux:96 (KEY_KPENTER) -> linux:96 (KEY_KPENTER) */ + [Q_KEY_CODE_KP_EQUALS] =3D 0x75, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equal= s) -> linux:117 (KEY_KPEQUAL) -> linux:117 (KEY_KPEQUAL) */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> linux:55 (KEY_KPASTERISK) */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> linux:74 (KEY_KPMINUS) */ + [Q_KEY_CODE_L] =3D 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > linux:38 (KEY_L) */ + [Q_KEY_CODE_LEFT] =3D 0x69, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105= (KEY_LEFT) -> linux:105 (KEY_LEFT) */ + [Q_KEY_CODE_LESS] =3D 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> linux:86 (KEY_102ND) */ + [Q_KEY_CODE_LF] =3D 0x65, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_= LINEFEED) -> linux:101 (KEY_LINEFEED) */ + [Q_KEY_CODE_M] =3D 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > linux:50 (KEY_M) */ + [Q_KEY_CODE_MAIL] =3D 0x9b, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155= (KEY_MAIL) -> linux:155 (KEY_MAIL) */ + [Q_KEY_CODE_MEDIASELECT] =3D 0xe2, /* qcode:Q_KEY_CODE_MEDIASELECT (medi= aselect) -> linux:226 (KEY_MEDIA) -> linux:226 (KEY_MEDIA) */ + [Q_KEY_CODE_MENU] =3D 0x8b, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139= (KEY_MENU) -> linux:139 (KEY_MENU) */ + [Q_KEY_CODE_META_L] =3D 0x7d, /* qcode:Q_KEY_CODE_META_L (meta_l) -> lin= ux:125 (KEY_LEFTMETA) -> linux:125 (KEY_LEFTMETA) */ + [Q_KEY_CODE_META_R] =3D 0x7e, /* qcode:Q_KEY_CODE_META_R (meta_r) -> lin= ux:126 (KEY_RIGHTMETA) -> linux:126 (KEY_RIGHTMETA) */ + [Q_KEY_CODE_MINUS] =3D 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:1= 2 (KEY_MINUS) -> linux:12 (KEY_MINUS) */ + [Q_KEY_CODE_N] =3D 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > linux:49 (KEY_N) */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> linux:69 (KEY_NUMLOCK) */ + [Q_KEY_CODE_O] =3D 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > linux:24 (KEY_O) */ + [Q_KEY_CODE_OPEN] =3D 0x86, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134= (KEY_OPEN) -> linux:134 (KEY_OPEN) */ + [Q_KEY_CODE_P] =3D 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > linux:25 (KEY_P) */ + [Q_KEY_CODE_PASTE] =3D 0x87, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:= 135 (KEY_PASTE) -> linux:135 (KEY_PASTE) */ + [Q_KEY_CODE_PAUSE] =3D 0x77, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:= 119 (KEY_PAUSE) -> linux:119 (KEY_PAUSE) */ + [Q_KEY_CODE_PGDN] =3D 0x6d, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109= (KEY_PAGEDOWN) -> linux:109 (KEY_PAGEDOWN) */ + [Q_KEY_CODE_PGUP] =3D 0x68, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104= (KEY_PAGEUP) -> linux:104 (KEY_PAGEUP) */ + [Q_KEY_CODE_POWER] =3D 0x74, /* qcode:Q_KEY_CODE_POWER (power) -> linux:= 116 (KEY_POWER) -> linux:116 (KEY_POWER) */ + [Q_KEY_CODE_PRINT] =3D 0x63, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> linux:99 (KEY_SYSRQ) */ + [Q_KEY_CODE_PROPS] =3D 0x82, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:= 130 (KEY_PROPS) -> linux:130 (KEY_PROPS) */ + [Q_KEY_CODE_Q] =3D 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -= > linux:16 (KEY_Q) */ + [Q_KEY_CODE_R] =3D 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -= > linux:19 (KEY_R) */ + [Q_KEY_CODE_RET] =3D 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> linux:28 (KEY_ENTER) */ + [Q_KEY_CODE_RIGHT] =3D 0x6a, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:= 106 (KEY_RIGHT) -> linux:106 (KEY_RIGHT) */ + [Q_KEY_CODE_RO] =3D 0x59, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_R= O) -> linux:89 (KEY_RO) */ + [Q_KEY_CODE_S] =3D 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -= > linux:31 (KEY_S) */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> linux:70 (KEY_SCROLLLOCK) */ + [Q_KEY_CODE_SEMICOLON] =3D 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> linux:39 (KEY_SEMICOLON) */ + [Q_KEY_CODE_SHIFT] =3D 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> linux:42 (KEY_LEFTSHIFT) */ + [Q_KEY_CODE_SHIFT_R] =3D 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> linux:54 (KEY_RIGHTSHIFT) */ + [Q_KEY_CODE_SLASH] =3D 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> linux:53 (KEY_SLASH) */ + [Q_KEY_CODE_SLEEP] =3D 0x8e, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:= 142 (KEY_SLEEP) -> linux:142 (KEY_SLEEP) */ + [Q_KEY_CODE_SPC] =3D 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> linux:57 (KEY_SPACE) */ + [Q_KEY_CODE_STOP] =3D 0x80, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128= (KEY_STOP) -> linux:128 (KEY_STOP) */ + [Q_KEY_CODE_SYSRQ] =3D 0x63, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> linux:99 (KEY_SYSRQ) */ + [Q_KEY_CODE_T] =3D 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > linux:20 (KEY_T) */ + [Q_KEY_CODE_TAB] =3D 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY= _TAB) -> linux:15 (KEY_TAB) */ + [Q_KEY_CODE_U] =3D 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > linux:22 (KEY_U) */ + [Q_KEY_CODE_UNDO] =3D 0x83, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131= (KEY_UNDO) -> linux:131 (KEY_UNDO) */ + [Q_KEY_CODE_UNMAPPED] =3D 0x0, /* qcode:Q_KEY_CODE_UNMAPPED (unmapped) -= > linux:0 (KEY_RESERVED) -> linux:0 (KEY_RESERVED) */ + [Q_KEY_CODE_UP] =3D 0x67, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_= UP) -> linux:103 (KEY_UP) */ + [Q_KEY_CODE_V] =3D 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -= > linux:47 (KEY_V) */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0x72, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volume= down) -> linux:114 (KEY_VOLUMEDOWN) -> linux:114 (KEY_VOLUMEDOWN) */ + [Q_KEY_CODE_VOLUMEUP] =3D 0x73, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) = -> linux:115 (KEY_VOLUMEUP) -> linux:115 (KEY_VOLUMEUP) */ + [Q_KEY_CODE_W] =3D 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -= > linux:17 (KEY_W) */ + [Q_KEY_CODE_WAKE] =3D 0x8f, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143= (KEY_WAKEUP) -> linux:143 (KEY_WAKEUP) */ + [Q_KEY_CODE_X] =3D 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -= > linux:45 (KEY_X) */ + [Q_KEY_CODE_Y] =3D 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > linux:21 (KEY_Y) */ + [Q_KEY_CODE_YEN] =3D 0x7c, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> linux:124 (KEY_YEN) */ + [Q_KEY_CODE_Z] =3D 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -= > linux:44 (KEY_Z) */ +}; +const guint qemu_input_map_qcode_to_linux_len =3D sizeof(qemu_input_map_qc= ode_to_linux)/sizeof(qemu_input_map_qcode_to_linux[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index 3a19a169f5..6e543d651f 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -6,6 +6,7 @@ #include "standard-headers/linux/input.h" =20 #include "ui/input-keymap-linux-to-qcode.c" +#include "ui/input-keymap-qcode-to-linux.c" #include "ui/input-keymap-qcode-to-qnum.c" #include "ui/input-keymap-qnum-to-qcode.c" =20 --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220585698198.21921861972487; Tue, 12 Sep 2017 05:49:45 -0700 (PDT) Received: from localhost ([::1]:35624 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkdM-0002A9-PK for importer@patchew.org; Tue, 12 Sep 2017 08:49:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48677) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkSC-0000qJ-Mb for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS1-0003S6-VD for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45938) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS1-0003Rl-HA for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:01 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 94D24883B0 for ; Tue, 12 Sep 2017 12:38:00 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id C273B77DCA; Tue, 12 Sep 2017 12:37:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 94D24883B0 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:38 +0100 Message-Id: <20170912123744.14730-7-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 12 Sep 2017 12:38:00 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 06/12] input: convert ps2 device to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the qcode_to_keycode_set1, qcode_to_keycode_set2, and qcode_to_keycode_set3 tables with automatically generated tables. Missing entries in qcode_to_keycode_set1 now fixed: - Q_KEY_CODE_SYSRQ -> 0x54 - Q_KEY_CODE_PRINT -> 0x54 (NB ignored due to special case) - Q_KEY_CODE_AGAIN -> 0xe005 - Q_KEY_CODE_PROPS -> 0xe006 - Q_KEY_CODE_UNDO -> 0xe007 - Q_KEY_CODE_FRONT -> 0xe00c - Q_KEY_CODE_COPY -> 0xe078 - Q_KEY_CODE_OPEN -> 0x64 - Q_KEY_CODE_PASTE -> 0x65 - Q_KEY_CODE_CUT -> 0xe03c - Q_KEY_CODE_LF -> 0x5b - Q_KEY_CODE_HELP -> 0xe075 - Q_KEY_CODE_COMPOSE -> 0xe05d - Q_KEY_CODE_PAUSE -> 0xe046 - Q_KEY_CODE_KP_EQUALS -> 0x59 And some mistakes corrected: - Q_KEY_CODE_HIRAGANA was mapped to 0x70 (Katakanahiragana) instead of of 0x77 (Hirigana) - Q_KEY_CODE_MENU was incorrectly mapped to the compose scancode (0xe05d) and is now mapped to 0xe01e - Q_KEY_CODE_FIND was mapped to 0xe065 (Search) instead of to 0xe041 (Find) - Q_KEY_CODE_POWER, SLEEP & WAKE had 0x0e instead of 0xe0 as the prefix Missing entries in qcode_to_keycode_set2 now fixed: - Q_KEY_CODE_PRINT -> 0x7f (NB ignored due to special case) - Q_KEY_CODE_COMPOSE -> 0xe02f - Q_KEY_CODE_PAUSE -> 0xe077 - Q_KEY_CODE_KP_EQUALS -> 0x0f And some mistakes corrected: - Q_KEY_CODE_HIRAGANA was mapped to 0x13 (Katakanahiragana) instead of of 0x62 (Hirigana) - Q_KEY_CODE_MENU was incorrectly mapped to the compose scancode (0xe02f) and is now not mapped - Q_KEY_CODE_FIND was mapped to 0xe010 (Search) and is now not mapped. - Q_KEY_CODE_POWER, SLEEP & WAKE had 0x0e instead of 0xe0 as the prefix Missing entries in qcode_to_keycode_set3 now fixed: - Q_KEY_CODE_ASTERISK -> 0x7e - Q_KEY_CODE_SYSRQ -> 0x57 - Q_KEY_CODE_LESS -> 0x13 - Q_KEY_CODE_STOP -> 0x0a - Q_KEY_CODE_AGAIN -> 0x0b - Q_KEY_CODE_PROPS -> 0x0c - Q_KEY_CODE_UNDO -> 0x10 - Q_KEY_CODE_COPY -> 0x18 - Q_KEY_CODE_OPEN -> 0x20 - Q_KEY_CODE_PASTE -> 0x28 - Q_KEY_CODE_FIND -> 0x30 - Q_KEY_CODE_CUT -> 0x38 - Q_KEY_CODE_HELP -> 0x09 - Q_KEY_CODE_COMPOSE -> 0x8d - Q_KEY_CODE_AUDIONEXT -> 0x93 - Q_KEY_CODE_AUDIOPREV -> 0x94 - Q_KEY_CODE_AUDIOSTOP -> 0x98 - Q_KEY_CODE_AUDIOMUTE -> 0x9c - Q_KEY_CODE_VOLUMEUP -> 0x95 - Q_KEY_CODE_VOLUMEDOWN -> 0x9d - Q_KEY_CODE_CALCULATOR -> 0xa3 - Q_KEY_CODE_AC_HOME -> 0x97 And some mistakes corrected: - Q_KEY_CODE_MENU was incorrectly mapped to the compose scancode (0x8d) and is now 0x91 Signed-off-by: Daniel P. Berrange --- hw/input/ps2.c | 406 +---------------------------------= ---- include/ui/input.h | 9 + ui/Makefile.objs | 3 + ui/input-keymap-qcode-to-atset1.c | 154 +++++++++++++++ ui/input-keymap-qcode-to-atset2.c | 142 +++++++++++++ ui/input-keymap-qcode-to-atset3.c | 138 +++++++++++++ ui/input-keymap.c | 3 + 7 files changed, 456 insertions(+), 399 deletions(-) create mode 100644 ui/input-keymap-qcode-to-atset1.c create mode 100644 ui/input-keymap-qcode-to-atset2.c create mode 100644 ui/input-keymap-qcode-to-atset3.c diff --git a/hw/input/ps2.c b/hw/input/ps2.c index 77906d5f46..7eeadc144d 100644 --- a/hw/input/ps2.c +++ b/hw/input/ps2.c @@ -115,401 +115,6 @@ typedef struct { uint8_t mouse_buttons; } PS2MouseState; =20 -/* Table to convert from QEMU codes to scancodes. */ -static const uint16_t qcode_to_keycode_set1[Q_KEY_CODE__MAX] =3D { - [0 ... Q_KEY_CODE__MAX - 1] =3D 0, - - [Q_KEY_CODE_A] =3D 0x1e, - [Q_KEY_CODE_B] =3D 0x30, - [Q_KEY_CODE_C] =3D 0x2e, - [Q_KEY_CODE_D] =3D 0x20, - [Q_KEY_CODE_E] =3D 0x12, - [Q_KEY_CODE_F] =3D 0x21, - [Q_KEY_CODE_G] =3D 0x22, - [Q_KEY_CODE_H] =3D 0x23, - [Q_KEY_CODE_I] =3D 0x17, - [Q_KEY_CODE_J] =3D 0x24, - [Q_KEY_CODE_K] =3D 0x25, - [Q_KEY_CODE_L] =3D 0x26, - [Q_KEY_CODE_M] =3D 0x32, - [Q_KEY_CODE_N] =3D 0x31, - [Q_KEY_CODE_O] =3D 0x18, - [Q_KEY_CODE_P] =3D 0x19, - [Q_KEY_CODE_Q] =3D 0x10, - [Q_KEY_CODE_R] =3D 0x13, - [Q_KEY_CODE_S] =3D 0x1f, - [Q_KEY_CODE_T] =3D 0x14, - [Q_KEY_CODE_U] =3D 0x16, - [Q_KEY_CODE_V] =3D 0x2f, - [Q_KEY_CODE_W] =3D 0x11, - [Q_KEY_CODE_X] =3D 0x2d, - [Q_KEY_CODE_Y] =3D 0x15, - [Q_KEY_CODE_Z] =3D 0x2c, - [Q_KEY_CODE_0] =3D 0x0b, - [Q_KEY_CODE_1] =3D 0x02, - [Q_KEY_CODE_2] =3D 0x03, - [Q_KEY_CODE_3] =3D 0x04, - [Q_KEY_CODE_4] =3D 0x05, - [Q_KEY_CODE_5] =3D 0x06, - [Q_KEY_CODE_6] =3D 0x07, - [Q_KEY_CODE_7] =3D 0x08, - [Q_KEY_CODE_8] =3D 0x09, - [Q_KEY_CODE_9] =3D 0x0a, - [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x29, - [Q_KEY_CODE_MINUS] =3D 0x0c, - [Q_KEY_CODE_EQUAL] =3D 0x0d, - [Q_KEY_CODE_BACKSLASH] =3D 0x2b, - [Q_KEY_CODE_BACKSPACE] =3D 0x0e, - [Q_KEY_CODE_SPC] =3D 0x39, - [Q_KEY_CODE_TAB] =3D 0x0f, - [Q_KEY_CODE_CAPS_LOCK] =3D 0x3a, - [Q_KEY_CODE_SHIFT] =3D 0x2a, - [Q_KEY_CODE_CTRL] =3D 0x1d, - [Q_KEY_CODE_META_L] =3D 0xe05b, - [Q_KEY_CODE_ALT] =3D 0x38, - [Q_KEY_CODE_SHIFT_R] =3D 0x36, - [Q_KEY_CODE_CTRL_R] =3D 0xe01d, - [Q_KEY_CODE_META_R] =3D 0xe05c, - [Q_KEY_CODE_ALT_R] =3D 0xe038, - [Q_KEY_CODE_MENU] =3D 0xe05d, - [Q_KEY_CODE_RET] =3D 0x1c, - [Q_KEY_CODE_ESC] =3D 0x01, - [Q_KEY_CODE_F1] =3D 0x3b, - [Q_KEY_CODE_F2] =3D 0x3c, - [Q_KEY_CODE_F3] =3D 0x3d, - [Q_KEY_CODE_F4] =3D 0x3e, - [Q_KEY_CODE_F5] =3D 0x3f, - [Q_KEY_CODE_F6] =3D 0x40, - [Q_KEY_CODE_F7] =3D 0x41, - [Q_KEY_CODE_F8] =3D 0x42, - [Q_KEY_CODE_F9] =3D 0x43, - [Q_KEY_CODE_F10] =3D 0x44, - [Q_KEY_CODE_F11] =3D 0x57, - [Q_KEY_CODE_F12] =3D 0x58, - /* special handling for Q_KEY_CODE_PRINT */ - [Q_KEY_CODE_SCROLL_LOCK] =3D 0x46, - /* special handling for Q_KEY_CODE_PAUSE */ - [Q_KEY_CODE_BRACKET_LEFT] =3D 0x1a, - [Q_KEY_CODE_INSERT] =3D 0xe052, - [Q_KEY_CODE_HOME] =3D 0xe047, - [Q_KEY_CODE_PGUP] =3D 0xe049, - [Q_KEY_CODE_DELETE] =3D 0xe053, - [Q_KEY_CODE_END] =3D 0xe04f, - [Q_KEY_CODE_PGDN] =3D 0xe051, - [Q_KEY_CODE_UP] =3D 0xe048, - [Q_KEY_CODE_LEFT] =3D 0xe04b, - [Q_KEY_CODE_DOWN] =3D 0xe050, - [Q_KEY_CODE_RIGHT] =3D 0xe04d, - [Q_KEY_CODE_NUM_LOCK] =3D 0x45, - [Q_KEY_CODE_KP_DIVIDE] =3D 0xe035, - [Q_KEY_CODE_KP_MULTIPLY] =3D 0x37, - [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4a, - [Q_KEY_CODE_KP_ADD] =3D 0x4e, - [Q_KEY_CODE_KP_ENTER] =3D 0xe01c, - [Q_KEY_CODE_KP_DECIMAL] =3D 0x53, - [Q_KEY_CODE_KP_0] =3D 0x52, - [Q_KEY_CODE_KP_1] =3D 0x4f, - [Q_KEY_CODE_KP_2] =3D 0x50, - [Q_KEY_CODE_KP_3] =3D 0x51, - [Q_KEY_CODE_KP_4] =3D 0x4b, - [Q_KEY_CODE_KP_5] =3D 0x4c, - [Q_KEY_CODE_KP_6] =3D 0x4d, - [Q_KEY_CODE_KP_7] =3D 0x47, - [Q_KEY_CODE_KP_8] =3D 0x48, - [Q_KEY_CODE_KP_9] =3D 0x49, - [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1b, - [Q_KEY_CODE_SEMICOLON] =3D 0x27, - [Q_KEY_CODE_APOSTROPHE] =3D 0x28, - [Q_KEY_CODE_COMMA] =3D 0x33, - [Q_KEY_CODE_DOT] =3D 0x34, - [Q_KEY_CODE_SLASH] =3D 0x35, - - [Q_KEY_CODE_POWER] =3D 0x0e5e, - [Q_KEY_CODE_SLEEP] =3D 0x0e5f, - [Q_KEY_CODE_WAKE] =3D 0x0e63, - - [Q_KEY_CODE_AUDIONEXT] =3D 0xe019, - [Q_KEY_CODE_AUDIOPREV] =3D 0xe010, - [Q_KEY_CODE_AUDIOSTOP] =3D 0xe024, - [Q_KEY_CODE_AUDIOPLAY] =3D 0xe022, - [Q_KEY_CODE_AUDIOMUTE] =3D 0xe020, - [Q_KEY_CODE_VOLUMEUP] =3D 0xe030, - [Q_KEY_CODE_VOLUMEDOWN] =3D 0xe02e, - [Q_KEY_CODE_MEDIASELECT] =3D 0xe06d, - [Q_KEY_CODE_MAIL] =3D 0xe06c, - [Q_KEY_CODE_CALCULATOR] =3D 0xe021, - [Q_KEY_CODE_COMPUTER] =3D 0xe06b, - [Q_KEY_CODE_FIND] =3D 0xe065, - [Q_KEY_CODE_AC_HOME] =3D 0xe032, - [Q_KEY_CODE_AC_BACK] =3D 0xe06a, - [Q_KEY_CODE_AC_FORWARD] =3D 0xe069, - [Q_KEY_CODE_STOP] =3D 0xe068, - [Q_KEY_CODE_AC_REFRESH] =3D 0xe067, - [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe066, - - [Q_KEY_CODE_ASTERISK] =3D 0x37, - [Q_KEY_CODE_LESS] =3D 0x56, - [Q_KEY_CODE_RO] =3D 0x73, - [Q_KEY_CODE_HIRAGANA] =3D 0x70, - [Q_KEY_CODE_HENKAN] =3D 0x79, - [Q_KEY_CODE_YEN] =3D 0x7d, - [Q_KEY_CODE_KP_COMMA] =3D 0x7e, -}; - -static const uint16_t qcode_to_keycode_set2[Q_KEY_CODE__MAX] =3D { - [0 ... Q_KEY_CODE__MAX - 1] =3D 0, - - [Q_KEY_CODE_A] =3D 0x1c, - [Q_KEY_CODE_B] =3D 0x32, - [Q_KEY_CODE_C] =3D 0x21, - [Q_KEY_CODE_D] =3D 0x23, - [Q_KEY_CODE_E] =3D 0x24, - [Q_KEY_CODE_F] =3D 0x2b, - [Q_KEY_CODE_G] =3D 0x34, - [Q_KEY_CODE_H] =3D 0x33, - [Q_KEY_CODE_I] =3D 0x43, - [Q_KEY_CODE_J] =3D 0x3b, - [Q_KEY_CODE_K] =3D 0x42, - [Q_KEY_CODE_L] =3D 0x4b, - [Q_KEY_CODE_M] =3D 0x3a, - [Q_KEY_CODE_N] =3D 0x31, - [Q_KEY_CODE_O] =3D 0x44, - [Q_KEY_CODE_P] =3D 0x4d, - [Q_KEY_CODE_Q] =3D 0x15, - [Q_KEY_CODE_R] =3D 0x2d, - [Q_KEY_CODE_S] =3D 0x1b, - [Q_KEY_CODE_T] =3D 0x2c, - [Q_KEY_CODE_U] =3D 0x3c, - [Q_KEY_CODE_V] =3D 0x2a, - [Q_KEY_CODE_W] =3D 0x1d, - [Q_KEY_CODE_X] =3D 0x22, - [Q_KEY_CODE_Y] =3D 0x35, - [Q_KEY_CODE_Z] =3D 0x1a, - [Q_KEY_CODE_0] =3D 0x45, - [Q_KEY_CODE_1] =3D 0x16, - [Q_KEY_CODE_2] =3D 0x1e, - [Q_KEY_CODE_3] =3D 0x26, - [Q_KEY_CODE_4] =3D 0x25, - [Q_KEY_CODE_5] =3D 0x2e, - [Q_KEY_CODE_6] =3D 0x36, - [Q_KEY_CODE_7] =3D 0x3d, - [Q_KEY_CODE_8] =3D 0x3e, - [Q_KEY_CODE_9] =3D 0x46, - [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x0e, - [Q_KEY_CODE_MINUS] =3D 0x4e, - [Q_KEY_CODE_EQUAL] =3D 0x55, - [Q_KEY_CODE_BACKSLASH] =3D 0x5d, - [Q_KEY_CODE_BACKSPACE] =3D 0x66, - [Q_KEY_CODE_SPC] =3D 0x29, - [Q_KEY_CODE_TAB] =3D 0x0d, - [Q_KEY_CODE_CAPS_LOCK] =3D 0x58, - [Q_KEY_CODE_SHIFT] =3D 0x12, - [Q_KEY_CODE_CTRL] =3D 0x14, - [Q_KEY_CODE_META_L] =3D 0xe01f, - [Q_KEY_CODE_ALT] =3D 0x11, - [Q_KEY_CODE_SHIFT_R] =3D 0x59, - [Q_KEY_CODE_CTRL_R] =3D 0xe014, - [Q_KEY_CODE_META_R] =3D 0xe027, - [Q_KEY_CODE_ALT_R] =3D 0xe011, - [Q_KEY_CODE_MENU] =3D 0xe02f, - [Q_KEY_CODE_RET] =3D 0x5a, - [Q_KEY_CODE_ESC] =3D 0x76, - [Q_KEY_CODE_F1] =3D 0x05, - [Q_KEY_CODE_F2] =3D 0x06, - [Q_KEY_CODE_F3] =3D 0x04, - [Q_KEY_CODE_F4] =3D 0x0c, - [Q_KEY_CODE_F5] =3D 0x03, - [Q_KEY_CODE_F6] =3D 0x0b, - [Q_KEY_CODE_F7] =3D 0x83, - [Q_KEY_CODE_F8] =3D 0x0a, - [Q_KEY_CODE_F9] =3D 0x01, - [Q_KEY_CODE_F10] =3D 0x09, - [Q_KEY_CODE_F11] =3D 0x78, - [Q_KEY_CODE_F12] =3D 0x07, - /* special handling for Q_KEY_CODE_PRINT */ - [Q_KEY_CODE_SCROLL_LOCK] =3D 0x7e, - /* special handling for Q_KEY_CODE_PAUSE */ - [Q_KEY_CODE_BRACKET_LEFT] =3D 0x54, - [Q_KEY_CODE_INSERT] =3D 0xe070, - [Q_KEY_CODE_HOME] =3D 0xe06c, - [Q_KEY_CODE_PGUP] =3D 0xe07d, - [Q_KEY_CODE_DELETE] =3D 0xe071, - [Q_KEY_CODE_END] =3D 0xe069, - [Q_KEY_CODE_PGDN] =3D 0xe07a, - [Q_KEY_CODE_UP] =3D 0xe075, - [Q_KEY_CODE_LEFT] =3D 0xe06b, - [Q_KEY_CODE_DOWN] =3D 0xe072, - [Q_KEY_CODE_RIGHT] =3D 0xe074, - [Q_KEY_CODE_NUM_LOCK] =3D 0x77, - [Q_KEY_CODE_KP_DIVIDE] =3D 0xe04a, - [Q_KEY_CODE_KP_MULTIPLY] =3D 0x7c, - [Q_KEY_CODE_KP_SUBTRACT] =3D 0x7b, - [Q_KEY_CODE_KP_ADD] =3D 0x79, - [Q_KEY_CODE_KP_ENTER] =3D 0xe05a, - [Q_KEY_CODE_KP_DECIMAL] =3D 0x71, - [Q_KEY_CODE_KP_0] =3D 0x70, - [Q_KEY_CODE_KP_1] =3D 0x69, - [Q_KEY_CODE_KP_2] =3D 0x72, - [Q_KEY_CODE_KP_3] =3D 0x7a, - [Q_KEY_CODE_KP_4] =3D 0x6b, - [Q_KEY_CODE_KP_5] =3D 0x73, - [Q_KEY_CODE_KP_6] =3D 0x74, - [Q_KEY_CODE_KP_7] =3D 0x6c, - [Q_KEY_CODE_KP_8] =3D 0x75, - [Q_KEY_CODE_KP_9] =3D 0x7d, - [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x5b, - [Q_KEY_CODE_SEMICOLON] =3D 0x4c, - [Q_KEY_CODE_APOSTROPHE] =3D 0x52, - [Q_KEY_CODE_COMMA] =3D 0x41, - [Q_KEY_CODE_DOT] =3D 0x49, - [Q_KEY_CODE_SLASH] =3D 0x4a, - - [Q_KEY_CODE_POWER] =3D 0x0e37, - [Q_KEY_CODE_SLEEP] =3D 0x0e3f, - [Q_KEY_CODE_WAKE] =3D 0x0e5e, - - [Q_KEY_CODE_AUDIONEXT] =3D 0xe04d, - [Q_KEY_CODE_AUDIOPREV] =3D 0xe015, - [Q_KEY_CODE_AUDIOSTOP] =3D 0xe03b, - [Q_KEY_CODE_AUDIOPLAY] =3D 0xe034, - [Q_KEY_CODE_AUDIOMUTE] =3D 0xe023, - [Q_KEY_CODE_VOLUMEUP] =3D 0xe032, - [Q_KEY_CODE_VOLUMEDOWN] =3D 0xe021, - [Q_KEY_CODE_MEDIASELECT] =3D 0xe050, - [Q_KEY_CODE_MAIL] =3D 0xe048, - [Q_KEY_CODE_CALCULATOR] =3D 0xe02b, - [Q_KEY_CODE_COMPUTER] =3D 0xe040, - [Q_KEY_CODE_FIND] =3D 0xe010, - [Q_KEY_CODE_AC_HOME] =3D 0xe03a, - [Q_KEY_CODE_AC_BACK] =3D 0xe038, - [Q_KEY_CODE_AC_FORWARD] =3D 0xe030, - [Q_KEY_CODE_STOP] =3D 0xe028, - [Q_KEY_CODE_AC_REFRESH] =3D 0xe020, - [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe018, - - [Q_KEY_CODE_ASTERISK] =3D 0x7c, - [Q_KEY_CODE_LESS] =3D 0x61, - [Q_KEY_CODE_SYSRQ] =3D 0x7f, - [Q_KEY_CODE_RO] =3D 0x51, - [Q_KEY_CODE_HIRAGANA] =3D 0x13, - [Q_KEY_CODE_HENKAN] =3D 0x64, - [Q_KEY_CODE_YEN] =3D 0x6a, - [Q_KEY_CODE_KP_COMMA] =3D 0x6d, -}; - -static const uint16_t qcode_to_keycode_set3[Q_KEY_CODE__MAX] =3D { - [0 ... Q_KEY_CODE__MAX - 1] =3D 0, - - [Q_KEY_CODE_A] =3D 0x1c, - [Q_KEY_CODE_B] =3D 0x32, - [Q_KEY_CODE_C] =3D 0x21, - [Q_KEY_CODE_D] =3D 0x23, - [Q_KEY_CODE_E] =3D 0x24, - [Q_KEY_CODE_F] =3D 0x2b, - [Q_KEY_CODE_G] =3D 0x34, - [Q_KEY_CODE_H] =3D 0x33, - [Q_KEY_CODE_I] =3D 0x43, - [Q_KEY_CODE_J] =3D 0x3b, - [Q_KEY_CODE_K] =3D 0x42, - [Q_KEY_CODE_L] =3D 0x4b, - [Q_KEY_CODE_M] =3D 0x3a, - [Q_KEY_CODE_N] =3D 0x31, - [Q_KEY_CODE_O] =3D 0x44, - [Q_KEY_CODE_P] =3D 0x4d, - [Q_KEY_CODE_Q] =3D 0x15, - [Q_KEY_CODE_R] =3D 0x2d, - [Q_KEY_CODE_S] =3D 0x1b, - [Q_KEY_CODE_T] =3D 0x2c, - [Q_KEY_CODE_U] =3D 0x3c, - [Q_KEY_CODE_V] =3D 0x2a, - [Q_KEY_CODE_W] =3D 0x1d, - [Q_KEY_CODE_X] =3D 0x22, - [Q_KEY_CODE_Y] =3D 0x35, - [Q_KEY_CODE_Z] =3D 0x1a, - [Q_KEY_CODE_0] =3D 0x45, - [Q_KEY_CODE_1] =3D 0x16, - [Q_KEY_CODE_2] =3D 0x1e, - [Q_KEY_CODE_3] =3D 0x26, - [Q_KEY_CODE_4] =3D 0x25, - [Q_KEY_CODE_5] =3D 0x2e, - [Q_KEY_CODE_6] =3D 0x36, - [Q_KEY_CODE_7] =3D 0x3d, - [Q_KEY_CODE_8] =3D 0x3e, - [Q_KEY_CODE_9] =3D 0x46, - [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x0e, - [Q_KEY_CODE_MINUS] =3D 0x4e, - [Q_KEY_CODE_EQUAL] =3D 0x55, - [Q_KEY_CODE_BACKSLASH] =3D 0x5c, - [Q_KEY_CODE_BACKSPACE] =3D 0x66, - [Q_KEY_CODE_SPC] =3D 0x29, - [Q_KEY_CODE_TAB] =3D 0x0d, - [Q_KEY_CODE_CAPS_LOCK] =3D 0x14, - [Q_KEY_CODE_SHIFT] =3D 0x12, - [Q_KEY_CODE_CTRL] =3D 0x11, - [Q_KEY_CODE_META_L] =3D 0x8b, - [Q_KEY_CODE_ALT] =3D 0x19, - [Q_KEY_CODE_SHIFT_R] =3D 0x59, - [Q_KEY_CODE_CTRL_R] =3D 0x58, - [Q_KEY_CODE_META_R] =3D 0x8c, - [Q_KEY_CODE_ALT_R] =3D 0x39, - [Q_KEY_CODE_MENU] =3D 0x8d, - [Q_KEY_CODE_RET] =3D 0x5a, - [Q_KEY_CODE_ESC] =3D 0x08, - [Q_KEY_CODE_F1] =3D 0x07, - [Q_KEY_CODE_F2] =3D 0x0f, - [Q_KEY_CODE_F3] =3D 0x17, - [Q_KEY_CODE_F4] =3D 0x1f, - [Q_KEY_CODE_F5] =3D 0x27, - [Q_KEY_CODE_F6] =3D 0x2f, - [Q_KEY_CODE_F7] =3D 0x37, - [Q_KEY_CODE_F8] =3D 0x3f, - [Q_KEY_CODE_F9] =3D 0x47, - [Q_KEY_CODE_F10] =3D 0x4f, - [Q_KEY_CODE_F11] =3D 0x56, - [Q_KEY_CODE_F12] =3D 0x5e, - [Q_KEY_CODE_PRINT] =3D 0x57, - [Q_KEY_CODE_SCROLL_LOCK] =3D 0x5f, - [Q_KEY_CODE_PAUSE] =3D 0x62, - [Q_KEY_CODE_BRACKET_LEFT] =3D 0x54, - [Q_KEY_CODE_INSERT] =3D 0x67, - [Q_KEY_CODE_HOME] =3D 0x6e, - [Q_KEY_CODE_PGUP] =3D 0x6f, - [Q_KEY_CODE_DELETE] =3D 0x64, - [Q_KEY_CODE_END] =3D 0x65, - [Q_KEY_CODE_PGDN] =3D 0x6d, - [Q_KEY_CODE_UP] =3D 0x63, - [Q_KEY_CODE_LEFT] =3D 0x61, - [Q_KEY_CODE_DOWN] =3D 0x60, - [Q_KEY_CODE_RIGHT] =3D 0x6a, - [Q_KEY_CODE_NUM_LOCK] =3D 0x76, - [Q_KEY_CODE_KP_DIVIDE] =3D 0x4a, - [Q_KEY_CODE_KP_MULTIPLY] =3D 0x7e, - [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4e, - [Q_KEY_CODE_KP_ADD] =3D 0x7c, - [Q_KEY_CODE_KP_ENTER] =3D 0x79, - [Q_KEY_CODE_KP_DECIMAL] =3D 0x71, - [Q_KEY_CODE_KP_0] =3D 0x70, - [Q_KEY_CODE_KP_1] =3D 0x69, - [Q_KEY_CODE_KP_2] =3D 0x72, - [Q_KEY_CODE_KP_3] =3D 0x7a, - [Q_KEY_CODE_KP_4] =3D 0x6b, - [Q_KEY_CODE_KP_5] =3D 0x73, - [Q_KEY_CODE_KP_6] =3D 0x74, - [Q_KEY_CODE_KP_7] =3D 0x6c, - [Q_KEY_CODE_KP_8] =3D 0x75, - [Q_KEY_CODE_KP_9] =3D 0x7d, - [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x5b, - [Q_KEY_CODE_SEMICOLON] =3D 0x4c, - [Q_KEY_CODE_APOSTROPHE] =3D 0x52, - [Q_KEY_CODE_COMMA] =3D 0x41, - [Q_KEY_CODE_DOT] =3D 0x49, - [Q_KEY_CODE_SLASH] =3D 0x4a, - - [Q_KEY_CODE_HIRAGANA] =3D 0x87, - [Q_KEY_CODE_HENKAN] =3D 0x86, - [Q_KEY_CODE_YEN] =3D 0x5d, -}; - static uint8_t translate_table[256] =3D { 0xff, 0x43, 0x41, 0x3f, 0x3d, 0x3b, 0x3c, 0x58, 0x64, 0x44, 0x42, 0x40, 0x3e, 0x0f, 0x29, 0x59, @@ -595,7 +200,7 @@ static void ps2_keyboard_event(DeviceState *dev, QemuCo= nsole *src, PS2KbdState *s =3D (PS2KbdState *)dev; InputKeyEvent *key =3D evt->u.key.data; int qcode; - uint16_t keycode; + uint16_t keycode =3D 0; =20 qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER); assert(evt->type =3D=3D INPUT_EVENT_KIND_KEY); @@ -624,7 +229,8 @@ static void ps2_keyboard_event(DeviceState *dev, QemuCo= nsole *src, ps2_put_keycode(s, 0xaa); } } else { - keycode =3D qcode_to_keycode_set1[qcode]; + if (qcode < qemu_input_map_qcode_to_atset1_len) + keycode =3D qemu_input_map_qcode_to_atset1[qcode]; if (keycode) { if (keycode & 0xff00) { ps2_put_keycode(s, keycode >> 8); @@ -665,7 +271,8 @@ static void ps2_keyboard_event(DeviceState *dev, QemuCo= nsole *src, ps2_put_keycode(s, 0x12); } } else { - keycode =3D qcode_to_keycode_set2[qcode]; + if (qcode < qemu_input_map_qcode_to_atset2_len) + keycode =3D qemu_input_map_qcode_to_atset2[qcode]; if (keycode) { if (keycode & 0xff00) { ps2_put_keycode(s, keycode >> 8); @@ -680,7 +287,8 @@ static void ps2_keyboard_event(DeviceState *dev, QemuCo= nsole *src, } } } else if (s->scancode_set =3D=3D 3) { - keycode =3D qcode_to_keycode_set3[qcode]; + if (qcode < qemu_input_map_qcode_to_atset3_len) + keycode =3D qemu_input_map_qcode_to_atset3[qcode]; if (keycode) { /* FIXME: break code should be configured on a key by key basi= s */ if (!key->down) { diff --git a/include/ui/input.h b/include/ui/input.h index 6f56d868c7..76235ba97a 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -71,6 +71,15 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *no= tify); extern const guint qemu_input_map_linux_to_qcode_len; extern const guint16 qemu_input_map_linux_to_qcode[]; =20 +extern const guint qemu_input_map_qcode_to_atset1_len; +extern const guint16 qemu_input_map_qcode_to_atset1[]; + +extern const guint qemu_input_map_qcode_to_atset2_len; +extern const guint16 qemu_input_map_qcode_to_atset2[]; + +extern const guint qemu_input_map_qcode_to_atset3_len; +extern const guint16 qemu_input_map_qcode_to_atset3[]; + extern const guint qemu_input_map_qcode_to_linux_len; extern const guint16 qemu_input_map_qcode_to_linux[]; =20 diff --git a/ui/Makefile.objs b/ui/Makefile.objs index baf6f4e56f..8ba843c0c9 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -55,6 +55,9 @@ KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keyma= ps.csv =20 KEYCODEMAP_FILES =3D \ ui/input-keymap-linux-to-qcode.c \ + ui/input-keymap-qcode-to-atset1.c \ + ui/input-keymap-qcode-to-atset2.c \ + ui/input-keymap-qcode-to-atset3.c \ ui/input-keymap-qcode-to-linux.c \ ui/input-keymap-qcode-to-qnum.c \ ui/input-keymap-qnum-to-qcode.c \ diff --git a/ui/input-keymap-qcode-to-atset1.c b/ui/input-keymap-qcode-to-a= tset1.c new file mode 100644 index 0000000000..3793e38cd4 --- /dev/null +++ b/ui/input-keymap-qcode-to-atset1.c @@ -0,0 +1,154 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:06 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_atset1 = code-map keymaps.csv qcode atset1 +*/ +const guint16 qemu_input_map_qcode_to_atset1[Q_KEY_CODE__MAX] =3D { + [Q_KEY_CODE_0] =3D 0xb, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) ->= atset1:11 */ + [Q_KEY_CODE_1] =3D 0x2, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) -> = atset1:2 */ + [Q_KEY_CODE_2] =3D 0x3, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) -> = atset1:3 */ + [Q_KEY_CODE_3] =3D 0x4, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) -> = atset1:4 */ + [Q_KEY_CODE_4] =3D 0x5, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) -> = atset1:5 */ + [Q_KEY_CODE_5] =3D 0x6, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) -> = atset1:6 */ + [Q_KEY_CODE_6] =3D 0x7, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) -> = atset1:7 */ + [Q_KEY_CODE_7] =3D 0x8, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) -> = atset1:8 */ + [Q_KEY_CODE_8] =3D 0x9, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) -> = atset1:9 */ + [Q_KEY_CODE_9] =3D 0xa, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) ->= atset1:10 */ + [Q_KEY_CODE_A] =3D 0x1e, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -= > atset1:30 */ + [Q_KEY_CODE_AC_BACK] =3D 0xe06a, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -= > linux:158 (KEY_BACK) -> atset1:57450 */ + [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe066, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (= ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> atset1:57446 */ + [Q_KEY_CODE_AC_FORWARD] =3D 0xe069, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_f= orward) -> linux:159 (KEY_FORWARD) -> atset1:57449 */ + [Q_KEY_CODE_AC_HOME] =3D 0xe032, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -= > linux:172 (KEY_HOMEPAGE) -> atset1:57394 */ + [Q_KEY_CODE_AC_REFRESH] =3D 0xe067, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_r= efresh) -> linux:173 (KEY_REFRESH) -> atset1:57447 */ + [Q_KEY_CODE_AGAIN] =3D 0xe005, /* qcode:Q_KEY_CODE_AGAIN (again) -> linu= x:129 (KEY_AGAIN) -> atset1:57349 */ + [Q_KEY_CODE_ALT] =3D 0x38, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> atset1:56 */ + [Q_KEY_CODE_ALT_R] =3D 0xe038, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linu= x:100 (KEY_RIGHTALT) -> atset1:57400 */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x28, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> atset1:40 */ + [Q_KEY_CODE_ASTERISK] =3D 0x37, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> atset1:55 */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0xe020, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiom= ute) -> linux:113 (KEY_MUTE) -> atset1:57376 */ + [Q_KEY_CODE_AUDIONEXT] =3D 0xe019, /* qcode:Q_KEY_CODE_AUDIONEXT (audion= ext) -> linux:163 (KEY_NEXTSONG) -> atset1:57369 */ + [Q_KEY_CODE_AUDIOPLAY] =3D 0xe022, /* qcode:Q_KEY_CODE_AUDIOPLAY (audiop= lay) -> linux:164 (KEY_PLAYPAUSE) -> atset1:57378 */ + [Q_KEY_CODE_AUDIOPREV] =3D 0xe010, /* qcode:Q_KEY_CODE_AUDIOPREV (audiop= rev) -> linux:165 (KEY_PREVIOUSSONG) -> atset1:57360 */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0xe024, /* qcode:Q_KEY_CODE_AUDIOSTOP (audios= top) -> linux:166 (KEY_STOPCD) -> atset1:57380 */ + [Q_KEY_CODE_B] =3D 0x30, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -= > atset1:48 */ + [Q_KEY_CODE_BACKSLASH] =3D 0x2b, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> atset1:43 */ + [Q_KEY_CODE_BACKSPACE] =3D 0xe, /* qcode:Q_KEY_CODE_BACKSPACE (backspace= ) -> linux:14 (KEY_BACKSPACE) -> atset1:14 */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x1a, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> atset1:26 */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset1:27 */ + [Q_KEY_CODE_C] =3D 0x2e, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -= > atset1:46 */ + [Q_KEY_CODE_CALCULATOR] =3D 0xe021, /* qcode:Q_KEY_CODE_CALCULATOR (calc= ulator) -> linux:140 (KEY_CALC) -> atset1:57377 */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x3a, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> atset1:58 */ + [Q_KEY_CODE_COMMA] =3D 0x33, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> atset1:51 */ + [Q_KEY_CODE_COMPOSE] =3D 0xe05d, /* qcode:Q_KEY_CODE_COMPOSE (compose) -= > linux:127 (KEY_COMPOSE) -> atset1:57437 */ + [Q_KEY_CODE_COMPUTER] =3D 0xe06b, /* qcode:Q_KEY_CODE_COMPUTER (computer= ) -> linux:157 (KEY_COMPUTER) -> atset1:57451 */ + [Q_KEY_CODE_COPY] =3D 0xe078, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:1= 33 (KEY_COPY) -> atset1:57464 */ + [Q_KEY_CODE_CTRL] =3D 0x1d, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> atset1:29 */ + [Q_KEY_CODE_CTRL_R] =3D 0xe01d, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> l= inux:97 (KEY_RIGHTCTRL) -> atset1:57373 */ + [Q_KEY_CODE_CUT] =3D 0xe03c, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 = (KEY_CUT) -> atset1:57404 */ + [Q_KEY_CODE_D] =3D 0x20, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -= > atset1:32 */ + [Q_KEY_CODE_DELETE] =3D 0xe053, /* qcode:Q_KEY_CODE_DELETE (delete) -> l= inux:111 (KEY_DELETE) -> atset1:57427 */ + [Q_KEY_CODE_DOT] =3D 0x34, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> atset1:52 */ + [Q_KEY_CODE_DOWN] =3D 0xe050, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:1= 08 (KEY_DOWN) -> atset1:57424 */ + [Q_KEY_CODE_E] =3D 0x12, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -= > atset1:18 */ + [Q_KEY_CODE_END] =3D 0xe04f, /* qcode:Q_KEY_CODE_END (end) -> linux:107 = (KEY_END) -> atset1:57423 */ + [Q_KEY_CODE_EQUAL] =3D 0xd, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:1= 3 (KEY_EQUAL) -> atset1:13 */ + [Q_KEY_CODE_ESC] =3D 0x1, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_= ESC) -> atset1:1 */ + [Q_KEY_CODE_F] =3D 0x21, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -= > atset1:33 */ + [Q_KEY_CODE_F1] =3D 0x3b, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F= 1) -> atset1:59 */ + [Q_KEY_CODE_F10] =3D 0x44, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KE= Y_F10) -> atset1:68 */ + [Q_KEY_CODE_F11] =3D 0x57, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> atset1:87 */ + [Q_KEY_CODE_F12] =3D 0x58, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KE= Y_F12) -> atset1:88 */ + [Q_KEY_CODE_F2] =3D 0x3c, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F= 2) -> atset1:60 */ + [Q_KEY_CODE_F3] =3D 0x3d, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F= 3) -> atset1:61 */ + [Q_KEY_CODE_F4] =3D 0x3e, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F= 4) -> atset1:62 */ + [Q_KEY_CODE_F5] =3D 0x3f, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F= 5) -> atset1:63 */ + [Q_KEY_CODE_F6] =3D 0x40, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F= 6) -> atset1:64 */ + [Q_KEY_CODE_F7] =3D 0x41, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> atset1:65 */ + [Q_KEY_CODE_F8] =3D 0x42, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F= 8) -> atset1:66 */ + [Q_KEY_CODE_F9] =3D 0x43, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F= 9) -> atset1:67 */ + [Q_KEY_CODE_FIND] =3D 0xe041, /* qcode:Q_KEY_CODE_FIND (find) -> linux:1= 36 (KEY_FIND) -> atset1:57409 */ + [Q_KEY_CODE_FRONT] =3D 0xe00c, /* qcode:Q_KEY_CODE_FRONT (front) -> linu= x:132 (KEY_FRONT) -> atset1:57356 */ + [Q_KEY_CODE_G] =3D 0x22, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -= > atset1:34 */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x29, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gr= ave_accent) -> linux:41 (KEY_GRAVE) -> atset1:41 */ + [Q_KEY_CODE_H] =3D 0x23, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -= > atset1:35 */ + [Q_KEY_CODE_HELP] =3D 0xe075, /* qcode:Q_KEY_CODE_HELP (help) -> linux:1= 38 (KEY_HELP) -> atset1:57461 */ + [Q_KEY_CODE_HENKAN] =3D 0x79, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> atset1:121 */ + [Q_KEY_CODE_HIRAGANA] =3D 0x77, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> atset1:119 */ + [Q_KEY_CODE_HOME] =3D 0xe047, /* qcode:Q_KEY_CODE_HOME (home) -> linux:1= 02 (KEY_HOME) -> atset1:57415 */ + [Q_KEY_CODE_I] =3D 0x17, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > atset1:23 */ + [Q_KEY_CODE_INSERT] =3D 0xe052, /* qcode:Q_KEY_CODE_INSERT (insert) -> l= inux:110 (KEY_INSERT) -> atset1:57426 */ + [Q_KEY_CODE_J] =3D 0x24, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > atset1:36 */ + [Q_KEY_CODE_K] =3D 0x25, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > atset1:37 */ + [Q_KEY_CODE_KP_0] =3D 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> atset1:82 */ + [Q_KEY_CODE_KP_1] =3D 0x4f, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> atset1:79 */ + [Q_KEY_CODE_KP_2] =3D 0x50, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> atset1:80 */ + [Q_KEY_CODE_KP_3] =3D 0x51, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> atset1:81 */ + [Q_KEY_CODE_KP_4] =3D 0x4b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> atset1:75 */ + [Q_KEY_CODE_KP_5] =3D 0x4c, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> atset1:76 */ + [Q_KEY_CODE_KP_6] =3D 0x4d, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> atset1:77 */ + [Q_KEY_CODE_KP_7] =3D 0x47, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> atset1:71 */ + [Q_KEY_CODE_KP_8] =3D 0x48, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> atset1:72 */ + [Q_KEY_CODE_KP_9] =3D 0x49, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> atset1:73 */ + [Q_KEY_CODE_KP_ADD] =3D 0x4e, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> atset1:78 */ + [Q_KEY_CODE_KP_COMMA] =3D 0x7e, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) = -> linux:121 (KEY_KPCOMMA) -> atset1:126 */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x53, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> atset1:83 */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0xe035, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_div= ide) -> linux:98 (KEY_KPSLASH) -> atset1:57397 */ + [Q_KEY_CODE_KP_ENTER] =3D 0xe01c, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter= ) -> linux:96 (KEY_KPENTER) -> atset1:57372 */ + [Q_KEY_CODE_KP_EQUALS] =3D 0x59, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equal= s) -> linux:117 (KEY_KPEQUAL) -> atset1:89 */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x37, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> atset1:55 */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4a, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> atset1:74 */ + [Q_KEY_CODE_L] =3D 0x26, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > atset1:38 */ + [Q_KEY_CODE_LEFT] =3D 0xe04b, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:1= 05 (KEY_LEFT) -> atset1:57419 */ + [Q_KEY_CODE_LESS] =3D 0x56, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> atset1:86 */ + [Q_KEY_CODE_LF] =3D 0x5b, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_= LINEFEED) -> atset1:91 */ + [Q_KEY_CODE_M] =3D 0x32, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > atset1:50 */ + [Q_KEY_CODE_MAIL] =3D 0xe06c, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:1= 55 (KEY_MAIL) -> atset1:57452 */ + [Q_KEY_CODE_MEDIASELECT] =3D 0xe06d, /* qcode:Q_KEY_CODE_MEDIASELECT (me= diaselect) -> linux:226 (KEY_MEDIA) -> atset1:57453 */ + [Q_KEY_CODE_MENU] =3D 0xe01e, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:1= 39 (KEY_MENU) -> atset1:57374 */ + [Q_KEY_CODE_META_L] =3D 0xe05b, /* qcode:Q_KEY_CODE_META_L (meta_l) -> l= inux:125 (KEY_LEFTMETA) -> atset1:57435 */ + [Q_KEY_CODE_META_R] =3D 0xe05c, /* qcode:Q_KEY_CODE_META_R (meta_r) -> l= inux:126 (KEY_RIGHTMETA) -> atset1:57436 */ + [Q_KEY_CODE_MINUS] =3D 0xc, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:1= 2 (KEY_MINUS) -> atset1:12 */ + [Q_KEY_CODE_N] =3D 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > atset1:49 */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x45, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> atset1:69 */ + [Q_KEY_CODE_O] =3D 0x18, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > atset1:24 */ + [Q_KEY_CODE_OPEN] =3D 0x64, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134= (KEY_OPEN) -> atset1:100 */ + [Q_KEY_CODE_P] =3D 0x19, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > atset1:25 */ + [Q_KEY_CODE_PASTE] =3D 0x65, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:= 135 (KEY_PASTE) -> atset1:101 */ + [Q_KEY_CODE_PAUSE] =3D 0xe046, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linu= x:119 (KEY_PAUSE) -> atset1:57414 */ + [Q_KEY_CODE_PGDN] =3D 0xe051, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:1= 09 (KEY_PAGEDOWN) -> atset1:57425 */ + [Q_KEY_CODE_PGUP] =3D 0xe049, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:1= 04 (KEY_PAGEUP) -> atset1:57417 */ + [Q_KEY_CODE_POWER] =3D 0xe05e, /* qcode:Q_KEY_CODE_POWER (power) -> linu= x:116 (KEY_POWER) -> atset1:57438 */ + [Q_KEY_CODE_PRINT] =3D 0x54, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset1:84 */ + [Q_KEY_CODE_PROPS] =3D 0xe006, /* qcode:Q_KEY_CODE_PROPS (props) -> linu= x:130 (KEY_PROPS) -> atset1:57350 */ + [Q_KEY_CODE_Q] =3D 0x10, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -= > atset1:16 */ + [Q_KEY_CODE_R] =3D 0x13, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -= > atset1:19 */ + [Q_KEY_CODE_RET] =3D 0x1c, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> atset1:28 */ + [Q_KEY_CODE_RIGHT] =3D 0xe04d, /* qcode:Q_KEY_CODE_RIGHT (right) -> linu= x:106 (KEY_RIGHT) -> atset1:57421 */ + [Q_KEY_CODE_RO] =3D 0x73, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_R= O) -> atset1:115 */ + [Q_KEY_CODE_S] =3D 0x1f, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -= > atset1:31 */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x46, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset1:70 */ + [Q_KEY_CODE_SEMICOLON] =3D 0x27, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> atset1:39 */ + [Q_KEY_CODE_SHIFT] =3D 0x2a, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> atset1:42 */ + [Q_KEY_CODE_SHIFT_R] =3D 0x36, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> atset1:54 */ + [Q_KEY_CODE_SLASH] =3D 0x35, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> atset1:53 */ + [Q_KEY_CODE_SLEEP] =3D 0xe05f, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linu= x:142 (KEY_SLEEP) -> atset1:57439 */ + [Q_KEY_CODE_SPC] =3D 0x39, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> atset1:57 */ + [Q_KEY_CODE_STOP] =3D 0xe068, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:1= 28 (KEY_STOP) -> atset1:57448 */ + [Q_KEY_CODE_SYSRQ] =3D 0x54, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset1:84 */ + [Q_KEY_CODE_T] =3D 0x14, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > atset1:20 */ + [Q_KEY_CODE_TAB] =3D 0xf, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY= _TAB) -> atset1:15 */ + [Q_KEY_CODE_U] =3D 0x16, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > atset1:22 */ + [Q_KEY_CODE_UNDO] =3D 0xe007, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:1= 31 (KEY_UNDO) -> atset1:57351 */ + [Q_KEY_CODE_UP] =3D 0xe048, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KE= Y_UP) -> atset1:57416 */ + [Q_KEY_CODE_V] =3D 0x2f, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -= > atset1:47 */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0xe02e, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volu= medown) -> linux:114 (KEY_VOLUMEDOWN) -> atset1:57390 */ + [Q_KEY_CODE_VOLUMEUP] =3D 0xe030, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup= ) -> linux:115 (KEY_VOLUMEUP) -> atset1:57392 */ + [Q_KEY_CODE_W] =3D 0x11, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -= > atset1:17 */ + [Q_KEY_CODE_WAKE] =3D 0xe063, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:1= 43 (KEY_WAKEUP) -> atset1:57443 */ + [Q_KEY_CODE_X] =3D 0x2d, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -= > atset1:45 */ + [Q_KEY_CODE_Y] =3D 0x15, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > atset1:21 */ + [Q_KEY_CODE_YEN] =3D 0x7d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> atset1:125 */ + [Q_KEY_CODE_Z] =3D 0x2c, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -= > atset1:44 */ +}; +const guint qemu_input_map_qcode_to_atset1_len =3D sizeof(qemu_input_map_q= code_to_atset1)/sizeof(qemu_input_map_qcode_to_atset1[0]); diff --git a/ui/input-keymap-qcode-to-atset2.c b/ui/input-keymap-qcode-to-a= tset2.c new file mode 100644 index 0000000000..ba168db5f7 --- /dev/null +++ b/ui/input-keymap-qcode-to-atset2.c @@ -0,0 +1,142 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:06 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_atset2 = code-map keymaps.csv qcode atset2 +*/ +const guint16 qemu_input_map_qcode_to_atset2[Q_KEY_CODE__MAX] =3D { + [Q_KEY_CODE_0] =3D 0x45, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -= > atset2:69 */ + [Q_KEY_CODE_1] =3D 0x16, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) ->= atset2:22 */ + [Q_KEY_CODE_2] =3D 0x1e, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) ->= atset2:30 */ + [Q_KEY_CODE_3] =3D 0x26, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) ->= atset2:38 */ + [Q_KEY_CODE_4] =3D 0x25, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) ->= atset2:37 */ + [Q_KEY_CODE_5] =3D 0x2e, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) ->= atset2:46 */ + [Q_KEY_CODE_6] =3D 0x36, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) ->= atset2:54 */ + [Q_KEY_CODE_7] =3D 0x3d, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) ->= atset2:61 */ + [Q_KEY_CODE_8] =3D 0x3e, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) ->= atset2:62 */ + [Q_KEY_CODE_9] =3D 0x46, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -= > atset2:70 */ + [Q_KEY_CODE_A] =3D 0x1c, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -= > atset2:28 */ + [Q_KEY_CODE_AC_BACK] =3D 0xe038, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -= > linux:158 (KEY_BACK) -> atset2:57400 */ + [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xe018, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (= ac_bookmarks) -> linux:156 (KEY_BOOKMARKS) -> atset2:57368 */ + [Q_KEY_CODE_AC_FORWARD] =3D 0xe030, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_f= orward) -> linux:159 (KEY_FORWARD) -> atset2:57392 */ + [Q_KEY_CODE_AC_HOME] =3D 0xe03a, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -= > linux:172 (KEY_HOMEPAGE) -> atset2:57402 */ + [Q_KEY_CODE_AC_REFRESH] =3D 0xe020, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_r= efresh) -> linux:173 (KEY_REFRESH) -> atset2:57376 */ + [Q_KEY_CODE_ALT] =3D 0x11, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> atset2:17 */ + [Q_KEY_CODE_ALT_R] =3D 0xe011, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linu= x:100 (KEY_RIGHTALT) -> atset2:57361 */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x52, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> atset2:82 */ + [Q_KEY_CODE_ASTERISK] =3D 0x7c, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> atset2:124 */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0xe023, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiom= ute) -> linux:113 (KEY_MUTE) -> atset2:57379 */ + [Q_KEY_CODE_AUDIONEXT] =3D 0xe04d, /* qcode:Q_KEY_CODE_AUDIONEXT (audion= ext) -> linux:163 (KEY_NEXTSONG) -> atset2:57421 */ + [Q_KEY_CODE_AUDIOPLAY] =3D 0xe034, /* qcode:Q_KEY_CODE_AUDIOPLAY (audiop= lay) -> linux:164 (KEY_PLAYPAUSE) -> atset2:57396 */ + [Q_KEY_CODE_AUDIOPREV] =3D 0xe015, /* qcode:Q_KEY_CODE_AUDIOPREV (audiop= rev) -> linux:165 (KEY_PREVIOUSSONG) -> atset2:57365 */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0xe03b, /* qcode:Q_KEY_CODE_AUDIOSTOP (audios= top) -> linux:166 (KEY_STOPCD) -> atset2:57403 */ + [Q_KEY_CODE_B] =3D 0x32, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -= > atset2:50 */ + [Q_KEY_CODE_BACKSLASH] =3D 0x5d, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> atset2:93 */ + [Q_KEY_CODE_BACKSPACE] =3D 0x66, /* qcode:Q_KEY_CODE_BACKSPACE (backspac= e) -> linux:14 (KEY_BACKSPACE) -> atset2:102 */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x54, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> atset2:84 */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x5b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset2:91 */ + [Q_KEY_CODE_C] =3D 0x21, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -= > atset2:33 */ + [Q_KEY_CODE_CALCULATOR] =3D 0xe02b, /* qcode:Q_KEY_CODE_CALCULATOR (calc= ulator) -> linux:140 (KEY_CALC) -> atset2:57387 */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x58, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> atset2:88 */ + [Q_KEY_CODE_COMMA] =3D 0x41, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> atset2:65 */ + [Q_KEY_CODE_COMPOSE] =3D 0xe02f, /* qcode:Q_KEY_CODE_COMPOSE (compose) -= > linux:127 (KEY_COMPOSE) -> atset2:57391 */ + [Q_KEY_CODE_COMPUTER] =3D 0xe040, /* qcode:Q_KEY_CODE_COMPUTER (computer= ) -> linux:157 (KEY_COMPUTER) -> atset2:57408 */ + [Q_KEY_CODE_CTRL] =3D 0x14, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> atset2:20 */ + [Q_KEY_CODE_CTRL_R] =3D 0xe014, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> l= inux:97 (KEY_RIGHTCTRL) -> atset2:57364 */ + [Q_KEY_CODE_D] =3D 0x23, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -= > atset2:35 */ + [Q_KEY_CODE_DELETE] =3D 0xe071, /* qcode:Q_KEY_CODE_DELETE (delete) -> l= inux:111 (KEY_DELETE) -> atset2:57457 */ + [Q_KEY_CODE_DOT] =3D 0x49, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> atset2:73 */ + [Q_KEY_CODE_DOWN] =3D 0xe072, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:1= 08 (KEY_DOWN) -> atset2:57458 */ + [Q_KEY_CODE_E] =3D 0x24, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -= > atset2:36 */ + [Q_KEY_CODE_END] =3D 0xe069, /* qcode:Q_KEY_CODE_END (end) -> linux:107 = (KEY_END) -> atset2:57449 */ + [Q_KEY_CODE_EQUAL] =3D 0x55, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:= 13 (KEY_EQUAL) -> atset2:85 */ + [Q_KEY_CODE_ESC] =3D 0x76, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY= _ESC) -> atset2:118 */ + [Q_KEY_CODE_F] =3D 0x2b, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -= > atset2:43 */ + [Q_KEY_CODE_F1] =3D 0x5, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1= ) -> atset2:5 */ + [Q_KEY_CODE_F10] =3D 0x9, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KEY= _F10) -> atset2:9 */ + [Q_KEY_CODE_F11] =3D 0x78, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> atset2:120 */ + [Q_KEY_CODE_F12] =3D 0x7, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KEY= _F12) -> atset2:7 */ + [Q_KEY_CODE_F2] =3D 0x6, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2= ) -> atset2:6 */ + [Q_KEY_CODE_F3] =3D 0x4, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F3= ) -> atset2:4 */ + [Q_KEY_CODE_F4] =3D 0xc, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F4= ) -> atset2:12 */ + [Q_KEY_CODE_F5] =3D 0x3, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F5= ) -> atset2:3 */ + [Q_KEY_CODE_F6] =3D 0xb, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F6= ) -> atset2:11 */ + [Q_KEY_CODE_F7] =3D 0x83, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> atset2:131 */ + [Q_KEY_CODE_F8] =3D 0xa, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F8= ) -> atset2:10 */ + [Q_KEY_CODE_F9] =3D 0x1, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F9= ) -> atset2:1 */ + [Q_KEY_CODE_G] =3D 0x34, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -= > atset2:52 */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0xe, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gra= ve_accent) -> linux:41 (KEY_GRAVE) -> atset2:14 */ + [Q_KEY_CODE_H] =3D 0x33, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -= > atset2:51 */ + [Q_KEY_CODE_HENKAN] =3D 0x64, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> atset2:100 */ + [Q_KEY_CODE_HIRAGANA] =3D 0x62, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> atset2:98 */ + [Q_KEY_CODE_HOME] =3D 0xe06c, /* qcode:Q_KEY_CODE_HOME (home) -> linux:1= 02 (KEY_HOME) -> atset2:57452 */ + [Q_KEY_CODE_I] =3D 0x43, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > atset2:67 */ + [Q_KEY_CODE_INSERT] =3D 0xe070, /* qcode:Q_KEY_CODE_INSERT (insert) -> l= inux:110 (KEY_INSERT) -> atset2:57456 */ + [Q_KEY_CODE_J] =3D 0x3b, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > atset2:59 */ + [Q_KEY_CODE_K] =3D 0x42, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > atset2:66 */ + [Q_KEY_CODE_KP_0] =3D 0x70, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> atset2:112 */ + [Q_KEY_CODE_KP_1] =3D 0x69, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> atset2:105 */ + [Q_KEY_CODE_KP_2] =3D 0x72, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> atset2:114 */ + [Q_KEY_CODE_KP_3] =3D 0x7a, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> atset2:122 */ + [Q_KEY_CODE_KP_4] =3D 0x6b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> atset2:107 */ + [Q_KEY_CODE_KP_5] =3D 0x73, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> atset2:115 */ + [Q_KEY_CODE_KP_6] =3D 0x74, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> atset2:116 */ + [Q_KEY_CODE_KP_7] =3D 0x6c, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> atset2:108 */ + [Q_KEY_CODE_KP_8] =3D 0x75, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> atset2:117 */ + [Q_KEY_CODE_KP_9] =3D 0x7d, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> atset2:125 */ + [Q_KEY_CODE_KP_ADD] =3D 0x79, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> atset2:121 */ + [Q_KEY_CODE_KP_COMMA] =3D 0x6d, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) = -> linux:121 (KEY_KPCOMMA) -> atset2:109 */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x71, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> atset2:113 */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0xe04a, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_div= ide) -> linux:98 (KEY_KPSLASH) -> atset2:57418 */ + [Q_KEY_CODE_KP_ENTER] =3D 0xe05a, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter= ) -> linux:96 (KEY_KPENTER) -> atset2:57434 */ + [Q_KEY_CODE_KP_EQUALS] =3D 0xf, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equals= ) -> linux:117 (KEY_KPEQUAL) -> atset2:15 */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x7c, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> atset2:124 */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x7b, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> atset2:123 */ + [Q_KEY_CODE_L] =3D 0x4b, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > atset2:75 */ + [Q_KEY_CODE_LEFT] =3D 0xe06b, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:1= 05 (KEY_LEFT) -> atset2:57451 */ + [Q_KEY_CODE_LESS] =3D 0x61, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> atset2:97 */ + [Q_KEY_CODE_M] =3D 0x3a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > atset2:58 */ + [Q_KEY_CODE_MAIL] =3D 0xe048, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:1= 55 (KEY_MAIL) -> atset2:57416 */ + [Q_KEY_CODE_MEDIASELECT] =3D 0xe050, /* qcode:Q_KEY_CODE_MEDIASELECT (me= diaselect) -> linux:226 (KEY_MEDIA) -> atset2:57424 */ + [Q_KEY_CODE_META_L] =3D 0xe01f, /* qcode:Q_KEY_CODE_META_L (meta_l) -> l= inux:125 (KEY_LEFTMETA) -> atset2:57375 */ + [Q_KEY_CODE_META_R] =3D 0xe027, /* qcode:Q_KEY_CODE_META_R (meta_r) -> l= inux:126 (KEY_RIGHTMETA) -> atset2:57383 */ + [Q_KEY_CODE_MINUS] =3D 0x4e, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:= 12 (KEY_MINUS) -> atset2:78 */ + [Q_KEY_CODE_N] =3D 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > atset2:49 */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x77, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> atset2:119 */ + [Q_KEY_CODE_O] =3D 0x44, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > atset2:68 */ + [Q_KEY_CODE_P] =3D 0x4d, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > atset2:77 */ + [Q_KEY_CODE_PAUSE] =3D 0xe077, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linu= x:119 (KEY_PAUSE) -> atset2:57463 */ + [Q_KEY_CODE_PGDN] =3D 0xe07a, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:1= 09 (KEY_PAGEDOWN) -> atset2:57466 */ + [Q_KEY_CODE_PGUP] =3D 0xe07d, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:1= 04 (KEY_PAGEUP) -> atset2:57469 */ + [Q_KEY_CODE_POWER] =3D 0xe037, /* qcode:Q_KEY_CODE_POWER (power) -> linu= x:116 (KEY_POWER) -> atset2:57399 */ + [Q_KEY_CODE_PRINT] =3D 0x7f, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset2:127 */ + [Q_KEY_CODE_Q] =3D 0x15, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -= > atset2:21 */ + [Q_KEY_CODE_R] =3D 0x2d, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -= > atset2:45 */ + [Q_KEY_CODE_RET] =3D 0x5a, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> atset2:90 */ + [Q_KEY_CODE_RIGHT] =3D 0xe074, /* qcode:Q_KEY_CODE_RIGHT (right) -> linu= x:106 (KEY_RIGHT) -> atset2:57460 */ + [Q_KEY_CODE_RO] =3D 0x51, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_R= O) -> atset2:81 */ + [Q_KEY_CODE_S] =3D 0x1b, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -= > atset2:27 */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x7e, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset2:126 */ + [Q_KEY_CODE_SEMICOLON] =3D 0x4c, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> atset2:76 */ + [Q_KEY_CODE_SHIFT] =3D 0x12, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> atset2:18 */ + [Q_KEY_CODE_SHIFT_R] =3D 0x59, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> atset2:89 */ + [Q_KEY_CODE_SLASH] =3D 0x4a, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> atset2:74 */ + [Q_KEY_CODE_SLEEP] =3D 0xe03f, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linu= x:142 (KEY_SLEEP) -> atset2:57407 */ + [Q_KEY_CODE_SPC] =3D 0x29, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> atset2:41 */ + [Q_KEY_CODE_STOP] =3D 0xe028, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:1= 28 (KEY_STOP) -> atset2:57384 */ + [Q_KEY_CODE_SYSRQ] =3D 0x7f, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset2:127 */ + [Q_KEY_CODE_T] =3D 0x2c, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > atset2:44 */ + [Q_KEY_CODE_TAB] =3D 0xd, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY= _TAB) -> atset2:13 */ + [Q_KEY_CODE_U] =3D 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > atset2:60 */ + [Q_KEY_CODE_UP] =3D 0xe075, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KE= Y_UP) -> atset2:57461 */ + [Q_KEY_CODE_V] =3D 0x2a, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -= > atset2:42 */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0xe021, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volu= medown) -> linux:114 (KEY_VOLUMEDOWN) -> atset2:57377 */ + [Q_KEY_CODE_VOLUMEUP] =3D 0xe032, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup= ) -> linux:115 (KEY_VOLUMEUP) -> atset2:57394 */ + [Q_KEY_CODE_W] =3D 0x1d, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -= > atset2:29 */ + [Q_KEY_CODE_WAKE] =3D 0xe05e, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:1= 43 (KEY_WAKEUP) -> atset2:57438 */ + [Q_KEY_CODE_X] =3D 0x22, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -= > atset2:34 */ + [Q_KEY_CODE_Y] =3D 0x35, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > atset2:53 */ + [Q_KEY_CODE_YEN] =3D 0x6a, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> atset2:106 */ + [Q_KEY_CODE_Z] =3D 0x1a, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -= > atset2:26 */ +}; +const guint qemu_input_map_qcode_to_atset2_len =3D sizeof(qemu_input_map_q= code_to_atset2)/sizeof(qemu_input_map_qcode_to_atset2[0]); diff --git a/ui/input-keymap-qcode-to-atset3.c b/ui/input-keymap-qcode-to-a= tset3.c new file mode 100644 index 0000000000..58aaed63a1 --- /dev/null +++ b/ui/input-keymap-qcode-to-atset3.c @@ -0,0 +1,138 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:06 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_atset3 = code-map keymaps.csv qcode atset3 +*/ +const guint16 qemu_input_map_qcode_to_atset3[Q_KEY_CODE__MAX] =3D { + [Q_KEY_CODE_0] =3D 0x45, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -= > atset3:69 */ + [Q_KEY_CODE_1] =3D 0x16, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) ->= atset3:22 */ + [Q_KEY_CODE_2] =3D 0x1e, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) ->= atset3:30 */ + [Q_KEY_CODE_3] =3D 0x26, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) ->= atset3:38 */ + [Q_KEY_CODE_4] =3D 0x25, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) ->= atset3:37 */ + [Q_KEY_CODE_5] =3D 0x2e, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) ->= atset3:46 */ + [Q_KEY_CODE_6] =3D 0x36, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) ->= atset3:54 */ + [Q_KEY_CODE_7] =3D 0x3d, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) ->= atset3:61 */ + [Q_KEY_CODE_8] =3D 0x3e, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) ->= atset3:62 */ + [Q_KEY_CODE_9] =3D 0x46, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -= > atset3:70 */ + [Q_KEY_CODE_A] =3D 0x1c, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) -= > atset3:28 */ + [Q_KEY_CODE_AC_HOME] =3D 0x97, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> = linux:172 (KEY_HOMEPAGE) -> atset3:151 */ + [Q_KEY_CODE_AGAIN] =3D 0xb, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:1= 29 (KEY_AGAIN) -> atset3:11 */ + [Q_KEY_CODE_ALT] =3D 0x19, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> atset3:25 */ + [Q_KEY_CODE_ALT_R] =3D 0x39, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:= 100 (KEY_RIGHTALT) -> atset3:57 */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x52, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> atset3:82 */ + [Q_KEY_CODE_ASTERISK] =3D 0x7e, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> atset3:126 */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0x9c, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomut= e) -> linux:113 (KEY_MUTE) -> atset3:156 */ + [Q_KEY_CODE_AUDIONEXT] =3D 0x93, /* qcode:Q_KEY_CODE_AUDIONEXT (audionex= t) -> linux:163 (KEY_NEXTSONG) -> atset3:147 */ + [Q_KEY_CODE_AUDIOPREV] =3D 0x94, /* qcode:Q_KEY_CODE_AUDIOPREV (audiopre= v) -> linux:165 (KEY_PREVIOUSSONG) -> atset3:148 */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0x98, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiosto= p) -> linux:166 (KEY_STOPCD) -> atset3:152 */ + [Q_KEY_CODE_B] =3D 0x32, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) -= > atset3:50 */ + [Q_KEY_CODE_BACKSLASH] =3D 0x5c, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> atset3:92 */ + [Q_KEY_CODE_BACKSPACE] =3D 0x66, /* qcode:Q_KEY_CODE_BACKSPACE (backspac= e) -> linux:14 (KEY_BACKSPACE) -> atset3:102 */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x54, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> atset3:84 */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x5b, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> atset3:91 */ + [Q_KEY_CODE_C] =3D 0x21, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) -= > atset3:33 */ + [Q_KEY_CODE_CALCULATOR] =3D 0xa3, /* qcode:Q_KEY_CODE_CALCULATOR (calcul= ator) -> linux:140 (KEY_CALC) -> atset3:163 */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x14, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> atset3:20 */ + [Q_KEY_CODE_COMMA] =3D 0x41, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> atset3:65 */ + [Q_KEY_CODE_COMPOSE] =3D 0x8d, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> = linux:127 (KEY_COMPOSE) -> atset3:141 */ + [Q_KEY_CODE_COPY] =3D 0x18, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133= (KEY_COPY) -> atset3:24 */ + [Q_KEY_CODE_CTRL] =3D 0x11, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> atset3:17 */ + [Q_KEY_CODE_CTRL_R] =3D 0x58, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> lin= ux:97 (KEY_RIGHTCTRL) -> atset3:88 */ + [Q_KEY_CODE_CUT] =3D 0x38, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (K= EY_CUT) -> atset3:56 */ + [Q_KEY_CODE_D] =3D 0x23, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) -= > atset3:35 */ + [Q_KEY_CODE_DELETE] =3D 0x64, /* qcode:Q_KEY_CODE_DELETE (delete) -> lin= ux:111 (KEY_DELETE) -> atset3:100 */ + [Q_KEY_CODE_DOT] =3D 0x49, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> atset3:73 */ + [Q_KEY_CODE_DOWN] =3D 0x60, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108= (KEY_DOWN) -> atset3:96 */ + [Q_KEY_CODE_E] =3D 0x24, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) -= > atset3:36 */ + [Q_KEY_CODE_END] =3D 0x65, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (K= EY_END) -> atset3:101 */ + [Q_KEY_CODE_EQUAL] =3D 0x55, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:= 13 (KEY_EQUAL) -> atset3:85 */ + [Q_KEY_CODE_ESC] =3D 0x8, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY_= ESC) -> atset3:8 */ + [Q_KEY_CODE_F] =3D 0x2b, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) -= > atset3:43 */ + [Q_KEY_CODE_F1] =3D 0x7, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F1= ) -> atset3:7 */ + [Q_KEY_CODE_F10] =3D 0x4f, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KE= Y_F10) -> atset3:79 */ + [Q_KEY_CODE_F11] =3D 0x56, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> atset3:86 */ + [Q_KEY_CODE_F12] =3D 0x5e, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KE= Y_F12) -> atset3:94 */ + [Q_KEY_CODE_F2] =3D 0xf, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F2= ) -> atset3:15 */ + [Q_KEY_CODE_F3] =3D 0x17, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F= 3) -> atset3:23 */ + [Q_KEY_CODE_F4] =3D 0x1f, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F= 4) -> atset3:31 */ + [Q_KEY_CODE_F5] =3D 0x27, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F= 5) -> atset3:39 */ + [Q_KEY_CODE_F6] =3D 0x2f, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F= 6) -> atset3:47 */ + [Q_KEY_CODE_F7] =3D 0x37, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> atset3:55 */ + [Q_KEY_CODE_F8] =3D 0x3f, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F= 8) -> atset3:63 */ + [Q_KEY_CODE_F9] =3D 0x47, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F= 9) -> atset3:71 */ + [Q_KEY_CODE_FIND] =3D 0x30, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136= (KEY_FIND) -> atset3:48 */ + [Q_KEY_CODE_G] =3D 0x34, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) -= > atset3:52 */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0xe, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gra= ve_accent) -> linux:41 (KEY_GRAVE) -> atset3:14 */ + [Q_KEY_CODE_H] =3D 0x33, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) -= > atset3:51 */ + [Q_KEY_CODE_HELP] =3D 0x9, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138 = (KEY_HELP) -> atset3:9 */ + [Q_KEY_CODE_HENKAN] =3D 0x86, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> atset3:134 */ + [Q_KEY_CODE_HIRAGANA] =3D 0x87, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> atset3:135 */ + [Q_KEY_CODE_HOME] =3D 0x6e, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102= (KEY_HOME) -> atset3:110 */ + [Q_KEY_CODE_I] =3D 0x43, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > atset3:67 */ + [Q_KEY_CODE_INSERT] =3D 0x67, /* qcode:Q_KEY_CODE_INSERT (insert) -> lin= ux:110 (KEY_INSERT) -> atset3:103 */ + [Q_KEY_CODE_J] =3D 0x3b, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > atset3:59 */ + [Q_KEY_CODE_K] =3D 0x42, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > atset3:66 */ + [Q_KEY_CODE_KP_0] =3D 0x70, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> atset3:112 */ + [Q_KEY_CODE_KP_1] =3D 0x69, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> atset3:105 */ + [Q_KEY_CODE_KP_2] =3D 0x72, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> atset3:114 */ + [Q_KEY_CODE_KP_3] =3D 0x7a, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> atset3:122 */ + [Q_KEY_CODE_KP_4] =3D 0x6b, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> atset3:107 */ + [Q_KEY_CODE_KP_5] =3D 0x73, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> atset3:115 */ + [Q_KEY_CODE_KP_6] =3D 0x74, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> atset3:116 */ + [Q_KEY_CODE_KP_7] =3D 0x6c, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> atset3:108 */ + [Q_KEY_CODE_KP_8] =3D 0x75, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> atset3:117 */ + [Q_KEY_CODE_KP_9] =3D 0x7d, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> atset3:125 */ + [Q_KEY_CODE_KP_ADD] =3D 0x7c, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> atset3:124 */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x71, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> atset3:113 */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0x4a, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divid= e) -> linux:98 (KEY_KPSLASH) -> atset3:74 */ + [Q_KEY_CODE_KP_ENTER] =3D 0x79, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) = -> linux:96 (KEY_KPENTER) -> atset3:121 */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x7e, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> atset3:126 */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4e, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> atset3:78 */ + [Q_KEY_CODE_L] =3D 0x4b, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > atset3:75 */ + [Q_KEY_CODE_LEFT] =3D 0x61, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105= (KEY_LEFT) -> atset3:97 */ + [Q_KEY_CODE_LESS] =3D 0x13, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> atset3:19 */ + [Q_KEY_CODE_M] =3D 0x3a, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > atset3:58 */ + [Q_KEY_CODE_MENU] =3D 0x91, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139= (KEY_MENU) -> atset3:145 */ + [Q_KEY_CODE_META_L] =3D 0x8b, /* qcode:Q_KEY_CODE_META_L (meta_l) -> lin= ux:125 (KEY_LEFTMETA) -> atset3:139 */ + [Q_KEY_CODE_META_R] =3D 0x8c, /* qcode:Q_KEY_CODE_META_R (meta_r) -> lin= ux:126 (KEY_RIGHTMETA) -> atset3:140 */ + [Q_KEY_CODE_MINUS] =3D 0x4e, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:= 12 (KEY_MINUS) -> atset3:78 */ + [Q_KEY_CODE_N] =3D 0x31, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > atset3:49 */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x76, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> atset3:118 */ + [Q_KEY_CODE_O] =3D 0x44, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > atset3:68 */ + [Q_KEY_CODE_OPEN] =3D 0x20, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134= (KEY_OPEN) -> atset3:32 */ + [Q_KEY_CODE_P] =3D 0x4d, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > atset3:77 */ + [Q_KEY_CODE_PASTE] =3D 0x28, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:= 135 (KEY_PASTE) -> atset3:40 */ + [Q_KEY_CODE_PAUSE] =3D 0x62, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:= 119 (KEY_PAUSE) -> atset3:98 */ + [Q_KEY_CODE_PGDN] =3D 0x6d, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109= (KEY_PAGEDOWN) -> atset3:109 */ + [Q_KEY_CODE_PGUP] =3D 0x6f, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104= (KEY_PAGEUP) -> atset3:111 */ + [Q_KEY_CODE_PRINT] =3D 0x57, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset3:87 */ + [Q_KEY_CODE_PROPS] =3D 0xc, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:1= 30 (KEY_PROPS) -> atset3:12 */ + [Q_KEY_CODE_Q] =3D 0x15, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) -= > atset3:21 */ + [Q_KEY_CODE_R] =3D 0x2d, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) -= > atset3:45 */ + [Q_KEY_CODE_RET] =3D 0x5a, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> atset3:90 */ + [Q_KEY_CODE_RIGHT] =3D 0x6a, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:= 106 (KEY_RIGHT) -> atset3:106 */ + [Q_KEY_CODE_S] =3D 0x1b, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) -= > atset3:27 */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x5f, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> atset3:95 */ + [Q_KEY_CODE_SEMICOLON] =3D 0x4c, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> atset3:76 */ + [Q_KEY_CODE_SHIFT] =3D 0x12, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> atset3:18 */ + [Q_KEY_CODE_SHIFT_R] =3D 0x59, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> atset3:89 */ + [Q_KEY_CODE_SLASH] =3D 0x4a, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> atset3:74 */ + [Q_KEY_CODE_SPC] =3D 0x29, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> atset3:41 */ + [Q_KEY_CODE_STOP] =3D 0xa, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128 = (KEY_STOP) -> atset3:10 */ + [Q_KEY_CODE_SYSRQ] =3D 0x57, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> atset3:87 */ + [Q_KEY_CODE_T] =3D 0x2c, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > atset3:44 */ + [Q_KEY_CODE_TAB] =3D 0xd, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KEY= _TAB) -> atset3:13 */ + [Q_KEY_CODE_U] =3D 0x3c, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > atset3:60 */ + [Q_KEY_CODE_UNDO] =3D 0x10, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131= (KEY_UNDO) -> atset3:16 */ + [Q_KEY_CODE_UP] =3D 0x63, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_= UP) -> atset3:99 */ + [Q_KEY_CODE_V] =3D 0x2a, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) -= > atset3:42 */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0x9d, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volume= down) -> linux:114 (KEY_VOLUMEDOWN) -> atset3:157 */ + [Q_KEY_CODE_VOLUMEUP] =3D 0x95, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) = -> linux:115 (KEY_VOLUMEUP) -> atset3:149 */ + [Q_KEY_CODE_W] =3D 0x1d, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) -= > atset3:29 */ + [Q_KEY_CODE_X] =3D 0x22, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) -= > atset3:34 */ + [Q_KEY_CODE_Y] =3D 0x35, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > atset3:53 */ + [Q_KEY_CODE_YEN] =3D 0x5d, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> atset3:93 */ + [Q_KEY_CODE_Z] =3D 0x1a, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) -= > atset3:26 */ +}; +const guint qemu_input_map_qcode_to_atset3_len =3D sizeof(qemu_input_map_q= code_to_atset3)/sizeof(qemu_input_map_qcode_to_atset3[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index 6e543d651f..d90f6a16f7 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -6,6 +6,9 @@ #include "standard-headers/linux/input.h" =20 #include "ui/input-keymap-linux-to-qcode.c" +#include "ui/input-keymap-qcode-to-atset1.c" +#include "ui/input-keymap-qcode-to-atset2.c" +#include "ui/input-keymap-qcode-to-atset3.c" #include "ui/input-keymap-qcode-to-linux.c" #include "ui/input-keymap-qcode-to-qnum.c" #include "ui/input-keymap-qnum-to-qcode.c" --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220158007239.04244305448276; Tue, 12 Sep 2017 05:42:38 -0700 (PDT) Received: from localhost ([::1]:35592 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkWT-0004aj-2M for importer@patchew.org; Tue, 12 Sep 2017 08:42:37 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48640) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkS9-0000lz-4B for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS2-0003SX-TU for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:09 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57440) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS2-0003SC-JS for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:02 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A22EF8553D for ; Tue, 12 Sep 2017 12:38:01 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id CE8BC77DCA; Tue, 12 Sep 2017 12:38:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A22EF8553D Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:39 +0100 Message-Id: <20170912123744.14730-8-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 12 Sep 2017 12:38:01 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 07/12] input: convert the adb device to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the qcode_to_adb_keycode table with automatically generated tables. Missing entries in qcode_to_adb_keycode now fixed: - Q_KEY_CODE_KP_COMMA -> 0x47 Signed-off-by: Daniel P. Berrange --- hw/input/adb.c | 124 +------------------------------- include/hw/input/adb-keys.h | 141 ------------------------------------- include/ui/input.h | 3 + ui/Makefile.objs | 1 + ui/input-keymap-qcode-to-adb.c | 156 +++++++++++++++++++++++++++++++++++++= ++++ ui/input-keymap.c | 1 + 6 files changed, 163 insertions(+), 263 deletions(-) delete mode 100644 include/hw/input/adb-keys.h create mode 100644 ui/input-keymap-qcode-to-adb.c diff --git a/hw/input/adb.c b/hw/input/adb.c index fcca3a8eb9..1fe5d298a3 100644 --- a/hw/input/adb.c +++ b/hw/input/adb.c @@ -25,7 +25,6 @@ #include "hw/hw.h" #include "hw/input/adb.h" #include "ui/console.h" -#include "include/hw/input/adb-keys.h" #include "ui/input.h" #include "sysemu/sysemu.h" =20 @@ -193,125 +192,6 @@ typedef struct ADBKeyboardClass { DeviceRealize parent_realize; } ADBKeyboardClass; =20 -int qcode_to_adb_keycode[] =3D { - /* Make sure future additions are automatically set to NO_KEY */ - [0 ... 0xff] =3D NO_KEY, - - [Q_KEY_CODE_SHIFT] =3D ADB_KEY_LEFT_SHIFT, - [Q_KEY_CODE_SHIFT_R] =3D ADB_KEY_RIGHT_SHIFT, - [Q_KEY_CODE_ALT] =3D ADB_KEY_LEFT_OPTION, - [Q_KEY_CODE_ALT_R] =3D ADB_KEY_RIGHT_OPTION, - [Q_KEY_CODE_CTRL] =3D ADB_KEY_LEFT_CONTROL, - [Q_KEY_CODE_CTRL_R] =3D ADB_KEY_RIGHT_CONTROL, - [Q_KEY_CODE_META_L] =3D ADB_KEY_COMMAND, - [Q_KEY_CODE_META_R] =3D ADB_KEY_COMMAND, - [Q_KEY_CODE_SPC] =3D ADB_KEY_SPACEBAR, - - [Q_KEY_CODE_ESC] =3D ADB_KEY_ESC, - [Q_KEY_CODE_1] =3D ADB_KEY_1, - [Q_KEY_CODE_2] =3D ADB_KEY_2, - [Q_KEY_CODE_3] =3D ADB_KEY_3, - [Q_KEY_CODE_4] =3D ADB_KEY_4, - [Q_KEY_CODE_5] =3D ADB_KEY_5, - [Q_KEY_CODE_6] =3D ADB_KEY_6, - [Q_KEY_CODE_7] =3D ADB_KEY_7, - [Q_KEY_CODE_8] =3D ADB_KEY_8, - [Q_KEY_CODE_9] =3D ADB_KEY_9, - [Q_KEY_CODE_0] =3D ADB_KEY_0, - [Q_KEY_CODE_MINUS] =3D ADB_KEY_MINUS, - [Q_KEY_CODE_EQUAL] =3D ADB_KEY_EQUAL, - [Q_KEY_CODE_BACKSPACE] =3D ADB_KEY_DELETE, - [Q_KEY_CODE_TAB] =3D ADB_KEY_TAB, - [Q_KEY_CODE_Q] =3D ADB_KEY_Q, - [Q_KEY_CODE_W] =3D ADB_KEY_W, - [Q_KEY_CODE_E] =3D ADB_KEY_E, - [Q_KEY_CODE_R] =3D ADB_KEY_R, - [Q_KEY_CODE_T] =3D ADB_KEY_T, - [Q_KEY_CODE_Y] =3D ADB_KEY_Y, - [Q_KEY_CODE_U] =3D ADB_KEY_U, - [Q_KEY_CODE_I] =3D ADB_KEY_I, - [Q_KEY_CODE_O] =3D ADB_KEY_O, - [Q_KEY_CODE_P] =3D ADB_KEY_P, - [Q_KEY_CODE_BRACKET_LEFT] =3D ADB_KEY_LEFT_BRACKET, - [Q_KEY_CODE_BRACKET_RIGHT] =3D ADB_KEY_RIGHT_BRACKET, - [Q_KEY_CODE_RET] =3D ADB_KEY_RETURN, - [Q_KEY_CODE_A] =3D ADB_KEY_A, - [Q_KEY_CODE_S] =3D ADB_KEY_S, - [Q_KEY_CODE_D] =3D ADB_KEY_D, - [Q_KEY_CODE_F] =3D ADB_KEY_F, - [Q_KEY_CODE_G] =3D ADB_KEY_G, - [Q_KEY_CODE_H] =3D ADB_KEY_H, - [Q_KEY_CODE_J] =3D ADB_KEY_J, - [Q_KEY_CODE_K] =3D ADB_KEY_K, - [Q_KEY_CODE_L] =3D ADB_KEY_L, - [Q_KEY_CODE_SEMICOLON] =3D ADB_KEY_SEMICOLON, - [Q_KEY_CODE_APOSTROPHE] =3D ADB_KEY_APOSTROPHE, - [Q_KEY_CODE_GRAVE_ACCENT] =3D ADB_KEY_GRAVE_ACCENT, - [Q_KEY_CODE_BACKSLASH] =3D ADB_KEY_BACKSLASH, - [Q_KEY_CODE_Z] =3D ADB_KEY_Z, - [Q_KEY_CODE_X] =3D ADB_KEY_X, - [Q_KEY_CODE_C] =3D ADB_KEY_C, - [Q_KEY_CODE_V] =3D ADB_KEY_V, - [Q_KEY_CODE_B] =3D ADB_KEY_B, - [Q_KEY_CODE_N] =3D ADB_KEY_N, - [Q_KEY_CODE_M] =3D ADB_KEY_M, - [Q_KEY_CODE_COMMA] =3D ADB_KEY_COMMA, - [Q_KEY_CODE_DOT] =3D ADB_KEY_PERIOD, - [Q_KEY_CODE_SLASH] =3D ADB_KEY_FORWARD_SLASH, - [Q_KEY_CODE_ASTERISK] =3D ADB_KEY_KP_MULTIPLY, - [Q_KEY_CODE_CAPS_LOCK] =3D ADB_KEY_CAPS_LOCK, - - [Q_KEY_CODE_F1] =3D ADB_KEY_F1, - [Q_KEY_CODE_F2] =3D ADB_KEY_F2, - [Q_KEY_CODE_F3] =3D ADB_KEY_F3, - [Q_KEY_CODE_F4] =3D ADB_KEY_F4, - [Q_KEY_CODE_F5] =3D ADB_KEY_F5, - [Q_KEY_CODE_F6] =3D ADB_KEY_F6, - [Q_KEY_CODE_F7] =3D ADB_KEY_F7, - [Q_KEY_CODE_F8] =3D ADB_KEY_F8, - [Q_KEY_CODE_F9] =3D ADB_KEY_F9, - [Q_KEY_CODE_F10] =3D ADB_KEY_F10, - [Q_KEY_CODE_F11] =3D ADB_KEY_F11, - [Q_KEY_CODE_F12] =3D ADB_KEY_F12, - [Q_KEY_CODE_PRINT] =3D ADB_KEY_F13, - [Q_KEY_CODE_SYSRQ] =3D ADB_KEY_F13, - [Q_KEY_CODE_SCROLL_LOCK] =3D ADB_KEY_F14, - [Q_KEY_CODE_PAUSE] =3D ADB_KEY_F15, - - [Q_KEY_CODE_NUM_LOCK] =3D ADB_KEY_KP_CLEAR, - [Q_KEY_CODE_KP_EQUALS] =3D ADB_KEY_KP_EQUAL, - [Q_KEY_CODE_KP_DIVIDE] =3D ADB_KEY_KP_DIVIDE, - [Q_KEY_CODE_KP_MULTIPLY] =3D ADB_KEY_KP_MULTIPLY, - [Q_KEY_CODE_KP_SUBTRACT] =3D ADB_KEY_KP_SUBTRACT, - [Q_KEY_CODE_KP_ADD] =3D ADB_KEY_KP_PLUS, - [Q_KEY_CODE_KP_ENTER] =3D ADB_KEY_KP_ENTER, - [Q_KEY_CODE_KP_DECIMAL] =3D ADB_KEY_KP_PERIOD, - [Q_KEY_CODE_KP_0] =3D ADB_KEY_KP_0, - [Q_KEY_CODE_KP_1] =3D ADB_KEY_KP_1, - [Q_KEY_CODE_KP_2] =3D ADB_KEY_KP_2, - [Q_KEY_CODE_KP_3] =3D ADB_KEY_KP_3, - [Q_KEY_CODE_KP_4] =3D ADB_KEY_KP_4, - [Q_KEY_CODE_KP_5] =3D ADB_KEY_KP_5, - [Q_KEY_CODE_KP_6] =3D ADB_KEY_KP_6, - [Q_KEY_CODE_KP_7] =3D ADB_KEY_KP_7, - [Q_KEY_CODE_KP_8] =3D ADB_KEY_KP_8, - [Q_KEY_CODE_KP_9] =3D ADB_KEY_KP_9, - - [Q_KEY_CODE_UP] =3D ADB_KEY_UP, - [Q_KEY_CODE_DOWN] =3D ADB_KEY_DOWN, - [Q_KEY_CODE_LEFT] =3D ADB_KEY_LEFT, - [Q_KEY_CODE_RIGHT] =3D ADB_KEY_RIGHT, - - [Q_KEY_CODE_HELP] =3D ADB_KEY_HELP, - [Q_KEY_CODE_INSERT] =3D ADB_KEY_HELP, - [Q_KEY_CODE_DELETE] =3D ADB_KEY_FORWARD_DELETE, - [Q_KEY_CODE_HOME] =3D ADB_KEY_HOME, - [Q_KEY_CODE_END] =3D ADB_KEY_END, - [Q_KEY_CODE_PGUP] =3D ADB_KEY_PAGE_UP, - [Q_KEY_CODE_PGDN] =3D ADB_KEY_PAGE_DOWN, - - [Q_KEY_CODE_POWER] =3D ADB_KEY_POWER -}; =20 static void adb_kbd_put_keycode(void *opaque, int keycode) { @@ -439,11 +319,11 @@ static void adb_keyboard_event(DeviceState *dev, Qemu= Console *src, int qcode, keycode; =20 qcode =3D qemu_input_key_value_to_qcode(evt->u.key.data->key); - if (qcode >=3D ARRAY_SIZE(qcode_to_adb_keycode)) { + if (qcode >=3D qemu_input_map_qcode_to_adb_len) { return; } /* FIXME: take handler into account when translating qcode */ - keycode =3D qcode_to_adb_keycode[qcode]; + keycode =3D qemu_input_map_qcode_to_adb[qcode]; if (keycode =3D=3D NO_KEY) { /* We don't want to send this to the gue= st */ ADB_DPRINTF("Ignoring NO_KEY\n"); return; diff --git a/include/hw/input/adb-keys.h b/include/hw/input/adb-keys.h deleted file mode 100644 index 525fba8a61..0000000000 --- a/include/hw/input/adb-keys.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - * QEMU System Emulator - * - * Copyright (c) 2016 John Arbuckle - * - * This work is licensed under the terms of the GNU GPL, version 2 or late= r. - * See the COPYING file in the top-level directory. - */ - -/* - * adb-keys.h - * - * Provides an enum of all the Macintosh keycodes. - * Additional information: http://www.archive.org/stream/apple-guide-maci= ntosh-family-hardware/Apple_Guide_to_the_Macintosh_Family_Hardware_2e#page/= n345/mode/2up - * page 308 - */ - -#ifndef ADB_KEYS_H -#define ADB_KEYS_H - -enum { - ADB_KEY_A =3D 0x00, - ADB_KEY_B =3D 0x0b, - ADB_KEY_C =3D 0x08, - ADB_KEY_D =3D 0x02, - ADB_KEY_E =3D 0x0e, - ADB_KEY_F =3D 0x03, - ADB_KEY_G =3D 0x05, - ADB_KEY_H =3D 0x04, - ADB_KEY_I =3D 0x22, - ADB_KEY_J =3D 0x26, - ADB_KEY_K =3D 0x28, - ADB_KEY_L =3D 0x25, - ADB_KEY_M =3D 0x2e, - ADB_KEY_N =3D 0x2d, - ADB_KEY_O =3D 0x1f, - ADB_KEY_P =3D 0x23, - ADB_KEY_Q =3D 0x0c, - ADB_KEY_R =3D 0x0f, - ADB_KEY_S =3D 0x01, - ADB_KEY_T =3D 0x11, - ADB_KEY_U =3D 0x20, - ADB_KEY_V =3D 0x09, - ADB_KEY_W =3D 0x0d, - ADB_KEY_X =3D 0x07, - ADB_KEY_Y =3D 0x10, - ADB_KEY_Z =3D 0x06, - - ADB_KEY_0 =3D 0x1d, - ADB_KEY_1 =3D 0x12, - ADB_KEY_2 =3D 0x13, - ADB_KEY_3 =3D 0x14, - ADB_KEY_4 =3D 0x15, - ADB_KEY_5 =3D 0x17, - ADB_KEY_6 =3D 0x16, - ADB_KEY_7 =3D 0x1a, - ADB_KEY_8 =3D 0x1c, - ADB_KEY_9 =3D 0x19, - - ADB_KEY_GRAVE_ACCENT =3D 0x32, - ADB_KEY_MINUS =3D 0x1b, - ADB_KEY_EQUAL =3D 0x18, - ADB_KEY_DELETE =3D 0x33, - ADB_KEY_CAPS_LOCK =3D 0x39, - ADB_KEY_TAB =3D 0x30, - ADB_KEY_RETURN =3D 0x24, - ADB_KEY_LEFT_BRACKET =3D 0x21, - ADB_KEY_RIGHT_BRACKET =3D 0x1e, - ADB_KEY_BACKSLASH =3D 0x2a, - ADB_KEY_SEMICOLON =3D 0x29, - ADB_KEY_APOSTROPHE =3D 0x27, - ADB_KEY_COMMA =3D 0x2b, - ADB_KEY_PERIOD =3D 0x2f, - ADB_KEY_FORWARD_SLASH =3D 0x2c, - ADB_KEY_LEFT_SHIFT =3D 0x38, - ADB_KEY_RIGHT_SHIFT =3D 0x7b, - ADB_KEY_SPACEBAR =3D 0x31, - ADB_KEY_LEFT_CONTROL =3D 0x36, - ADB_KEY_RIGHT_CONTROL =3D 0x7d, - ADB_KEY_LEFT_OPTION =3D 0x3a, - ADB_KEY_RIGHT_OPTION =3D 0x7c, - ADB_KEY_COMMAND =3D 0x37, - - ADB_KEY_KP_0 =3D 0x52, - ADB_KEY_KP_1 =3D 0x53, - ADB_KEY_KP_2 =3D 0x54, - ADB_KEY_KP_3 =3D 0x55, - ADB_KEY_KP_4 =3D 0x56, - ADB_KEY_KP_5 =3D 0x57, - ADB_KEY_KP_6 =3D 0x58, - ADB_KEY_KP_7 =3D 0x59, - ADB_KEY_KP_8 =3D 0x5b, - ADB_KEY_KP_9 =3D 0x5c, - ADB_KEY_KP_PERIOD =3D 0x41, - ADB_KEY_KP_ENTER =3D 0x4c, - ADB_KEY_KP_PLUS =3D 0x45, - ADB_KEY_KP_SUBTRACT =3D 0x4e, - ADB_KEY_KP_MULTIPLY =3D 0x43, - ADB_KEY_KP_DIVIDE =3D 0x4b, - ADB_KEY_KP_EQUAL =3D 0x51, - ADB_KEY_KP_CLEAR =3D 0x47, - - ADB_KEY_UP =3D 0x3e, - ADB_KEY_DOWN =3D 0x3d, - ADB_KEY_LEFT =3D 0x3b, - ADB_KEY_RIGHT =3D 0x3c, - - ADB_KEY_HELP =3D 0x72, - ADB_KEY_HOME =3D 0x73, - ADB_KEY_PAGE_UP =3D 0x74, - ADB_KEY_PAGE_DOWN =3D 0x79, - ADB_KEY_END =3D 0x77, - ADB_KEY_FORWARD_DELETE =3D 0x75, - - ADB_KEY_ESC =3D 0x35, - ADB_KEY_F1 =3D 0x7a, - ADB_KEY_F2 =3D 0x78, - ADB_KEY_F3 =3D 0x63, - ADB_KEY_F4 =3D 0x76, - ADB_KEY_F5 =3D 0x60, - ADB_KEY_F6 =3D 0x61, - ADB_KEY_F7 =3D 0x62, - ADB_KEY_F8 =3D 0x64, - ADB_KEY_F9 =3D 0x65, - ADB_KEY_F10 =3D 0x6d, - ADB_KEY_F11 =3D 0x67, - ADB_KEY_F12 =3D 0x6f, - ADB_KEY_F13 =3D 0x69, - ADB_KEY_F14 =3D 0x6b, - ADB_KEY_F15 =3D 0x71, - - ADB_KEY_VOLUME_UP =3D 0x48, - ADB_KEY_VOLUME_DOWN =3D 0x49, - ADB_KEY_VOLUME_MUTE =3D 0x4a, - ADB_KEY_POWER =3D 0x7f7f -}; - -/* Could not find the value for this key. */ -/* #define ADB_KEY_EJECT */ - -#endif /* ADB_KEYS_H */ diff --git a/include/ui/input.h b/include/ui/input.h index 76235ba97a..4aa5655a0b 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -71,6 +71,9 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *not= ify); extern const guint qemu_input_map_linux_to_qcode_len; extern const guint16 qemu_input_map_linux_to_qcode[]; =20 +extern const guint qemu_input_map_qcode_to_adb_len; +extern const guint16 qemu_input_map_qcode_to_adb[]; + extern const guint qemu_input_map_qcode_to_atset1_len; extern const guint16 qemu_input_map_qcode_to_atset1[]; =20 diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 8ba843c0c9..6846636f39 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -55,6 +55,7 @@ KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keyma= ps.csv =20 KEYCODEMAP_FILES =3D \ ui/input-keymap-linux-to-qcode.c \ + ui/input-keymap-qcode-to-adb.c \ ui/input-keymap-qcode-to-atset1.c \ ui/input-keymap-qcode-to-atset2.c \ ui/input-keymap-qcode-to-atset3.c \ diff --git a/ui/input-keymap-qcode-to-adb.c b/ui/input-keymap-qcode-to-adb.c new file mode 100644 index 0000000000..979f40a953 --- /dev/null +++ b/ui/input-keymap-qcode-to-adb.c @@ -0,0 +1,156 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:07 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_qcode_to_adb cod= e-map keymaps.csv qcode adb +*/ +const guint16 qemu_input_map_qcode_to_adb[Q_KEY_CODE__MAX] =3D { + [0 ... Q_KEY_CODE__MAX-1] =3D 0xff, + [Q_KEY_CODE_0] =3D 0x1d, /* qcode:Q_KEY_CODE_0 (0) -> linux:11 (KEY_0) -= > adb:29 */ + [Q_KEY_CODE_1] =3D 0x12, /* qcode:Q_KEY_CODE_1 (1) -> linux:2 (KEY_1) ->= adb:18 */ + [Q_KEY_CODE_2] =3D 0x13, /* qcode:Q_KEY_CODE_2 (2) -> linux:3 (KEY_2) ->= adb:19 */ + [Q_KEY_CODE_3] =3D 0x14, /* qcode:Q_KEY_CODE_3 (3) -> linux:4 (KEY_3) ->= adb:20 */ + [Q_KEY_CODE_4] =3D 0x15, /* qcode:Q_KEY_CODE_4 (4) -> linux:5 (KEY_4) ->= adb:21 */ + [Q_KEY_CODE_5] =3D 0x17, /* qcode:Q_KEY_CODE_5 (5) -> linux:6 (KEY_5) ->= adb:23 */ + [Q_KEY_CODE_6] =3D 0x16, /* qcode:Q_KEY_CODE_6 (6) -> linux:7 (KEY_6) ->= adb:22 */ + [Q_KEY_CODE_7] =3D 0x1a, /* qcode:Q_KEY_CODE_7 (7) -> linux:8 (KEY_7) ->= adb:26 */ + [Q_KEY_CODE_8] =3D 0x1c, /* qcode:Q_KEY_CODE_8 (8) -> linux:9 (KEY_8) ->= adb:28 */ + [Q_KEY_CODE_9] =3D 0x19, /* qcode:Q_KEY_CODE_9 (9) -> linux:10 (KEY_9) -= > adb:25 */ + [Q_KEY_CODE_A] =3D 0x0, /* qcode:Q_KEY_CODE_A (a) -> linux:30 (KEY_A) ->= adb:0 */ + [Q_KEY_CODE_AC_BACK] =3D 0xff, /* qcode:Q_KEY_CODE_AC_BACK (ac_back) -> = linux:158 (KEY_BACK) -> adb:255 */ + [Q_KEY_CODE_AC_BOOKMARKS] =3D 0xff, /* qcode:Q_KEY_CODE_AC_BOOKMARKS (ac= _bookmarks) -> linux:156 (KEY_BOOKMARKS) -> adb:255 */ + [Q_KEY_CODE_AC_FORWARD] =3D 0xff, /* qcode:Q_KEY_CODE_AC_FORWARD (ac_for= ward) -> linux:159 (KEY_FORWARD) -> adb:255 */ + [Q_KEY_CODE_AC_HOME] =3D 0xff, /* qcode:Q_KEY_CODE_AC_HOME (ac_home) -> = linux:172 (KEY_HOMEPAGE) -> adb:255 */ + [Q_KEY_CODE_AC_REFRESH] =3D 0xff, /* qcode:Q_KEY_CODE_AC_REFRESH (ac_ref= resh) -> linux:173 (KEY_REFRESH) -> adb:255 */ + [Q_KEY_CODE_AGAIN] =3D 0xff, /* qcode:Q_KEY_CODE_AGAIN (again) -> linux:= 129 (KEY_AGAIN) -> adb:255 */ + [Q_KEY_CODE_ALT] =3D 0x3a, /* qcode:Q_KEY_CODE_ALT (alt) -> linux:56 (KE= Y_LEFTALT) -> adb:58 */ + [Q_KEY_CODE_ALT_R] =3D 0x7c, /* qcode:Q_KEY_CODE_ALT_R (alt_r) -> linux:= 100 (KEY_RIGHTALT) -> adb:124 */ + [Q_KEY_CODE_APOSTROPHE] =3D 0x27, /* qcode:Q_KEY_CODE_APOSTROPHE (apostr= ophe) -> linux:40 (KEY_APOSTROPHE) -> adb:39 */ + [Q_KEY_CODE_ASTERISK] =3D 0x43, /* qcode:Q_KEY_CODE_ASTERISK (kp_multipl= y) -> linux:55 (KEY_KPASTERISK) -> adb:67 */ + [Q_KEY_CODE_AUDIOMUTE] =3D 0xff, /* qcode:Q_KEY_CODE_AUDIOMUTE (audiomut= e) -> linux:113 (KEY_MUTE) -> adb:255 */ + [Q_KEY_CODE_AUDIONEXT] =3D 0xff, /* qcode:Q_KEY_CODE_AUDIONEXT (audionex= t) -> linux:163 (KEY_NEXTSONG) -> adb:255 */ + [Q_KEY_CODE_AUDIOPLAY] =3D 0xff, /* qcode:Q_KEY_CODE_AUDIOPLAY (audiopla= y) -> linux:164 (KEY_PLAYPAUSE) -> adb:255 */ + [Q_KEY_CODE_AUDIOPREV] =3D 0xff, /* qcode:Q_KEY_CODE_AUDIOPREV (audiopre= v) -> linux:165 (KEY_PREVIOUSSONG) -> adb:255 */ + [Q_KEY_CODE_AUDIOSTOP] =3D 0xff, /* qcode:Q_KEY_CODE_AUDIOSTOP (audiosto= p) -> linux:166 (KEY_STOPCD) -> adb:255 */ + [Q_KEY_CODE_B] =3D 0xb, /* qcode:Q_KEY_CODE_B (b) -> linux:48 (KEY_B) ->= adb:11 */ + [Q_KEY_CODE_BACKSLASH] =3D 0x2a, /* qcode:Q_KEY_CODE_BACKSLASH (backslas= h) -> linux:43 (KEY_BACKSLASH) -> adb:42 */ + [Q_KEY_CODE_BACKSPACE] =3D 0x33, /* qcode:Q_KEY_CODE_BACKSPACE (backspac= e) -> linux:14 (KEY_BACKSPACE) -> adb:51 */ + [Q_KEY_CODE_BRACKET_LEFT] =3D 0x21, /* qcode:Q_KEY_CODE_BRACKET_LEFT (br= acket_left) -> linux:26 (KEY_LEFTBRACE) -> adb:33 */ + [Q_KEY_CODE_BRACKET_RIGHT] =3D 0x1e, /* qcode:Q_KEY_CODE_BRACKET_RIGHT (= bracket_right) -> linux:27 (KEY_RIGHTBRACE) -> adb:30 */ + [Q_KEY_CODE_C] =3D 0x8, /* qcode:Q_KEY_CODE_C (c) -> linux:46 (KEY_C) ->= adb:8 */ + [Q_KEY_CODE_CALCULATOR] =3D 0xff, /* qcode:Q_KEY_CODE_CALCULATOR (calcul= ator) -> linux:140 (KEY_CALC) -> adb:255 */ + [Q_KEY_CODE_CAPS_LOCK] =3D 0x39, /* qcode:Q_KEY_CODE_CAPS_LOCK (caps_loc= k) -> linux:58 (KEY_CAPSLOCK) -> adb:57 */ + [Q_KEY_CODE_COMMA] =3D 0x2b, /* qcode:Q_KEY_CODE_COMMA (comma) -> linux:= 51 (KEY_COMMA) -> adb:43 */ + [Q_KEY_CODE_COMPOSE] =3D 0xff, /* qcode:Q_KEY_CODE_COMPOSE (compose) -> = linux:127 (KEY_COMPOSE) -> adb:255 */ + [Q_KEY_CODE_COMPUTER] =3D 0xff, /* qcode:Q_KEY_CODE_COMPUTER (computer) = -> linux:157 (KEY_COMPUTER) -> adb:255 */ + [Q_KEY_CODE_COPY] =3D 0xff, /* qcode:Q_KEY_CODE_COPY (copy) -> linux:133= (KEY_COPY) -> adb:255 */ + [Q_KEY_CODE_CTRL] =3D 0x36, /* qcode:Q_KEY_CODE_CTRL (ctrl) -> linux:29 = (KEY_LEFTCTRL) -> adb:54 */ + [Q_KEY_CODE_CTRL_R] =3D 0x7d, /* qcode:Q_KEY_CODE_CTRL_R (ctrl_r) -> lin= ux:97 (KEY_RIGHTCTRL) -> adb:125 */ + [Q_KEY_CODE_CUT] =3D 0xff, /* qcode:Q_KEY_CODE_CUT (cut) -> linux:137 (K= EY_CUT) -> adb:255 */ + [Q_KEY_CODE_D] =3D 0x2, /* qcode:Q_KEY_CODE_D (d) -> linux:32 (KEY_D) ->= adb:2 */ + [Q_KEY_CODE_DELETE] =3D 0x75, /* qcode:Q_KEY_CODE_DELETE (delete) -> lin= ux:111 (KEY_DELETE) -> adb:117 */ + [Q_KEY_CODE_DOT] =3D 0x2f, /* qcode:Q_KEY_CODE_DOT (dot) -> linux:52 (KE= Y_DOT) -> adb:47 */ + [Q_KEY_CODE_DOWN] =3D 0x3d, /* qcode:Q_KEY_CODE_DOWN (down) -> linux:108= (KEY_DOWN) -> adb:61 */ + [Q_KEY_CODE_E] =3D 0xe, /* qcode:Q_KEY_CODE_E (e) -> linux:18 (KEY_E) ->= adb:14 */ + [Q_KEY_CODE_END] =3D 0x77, /* qcode:Q_KEY_CODE_END (end) -> linux:107 (K= EY_END) -> adb:119 */ + [Q_KEY_CODE_EQUAL] =3D 0x18, /* qcode:Q_KEY_CODE_EQUAL (equal) -> linux:= 13 (KEY_EQUAL) -> adb:24 */ + [Q_KEY_CODE_ESC] =3D 0x35, /* qcode:Q_KEY_CODE_ESC (esc) -> linux:1 (KEY= _ESC) -> adb:53 */ + [Q_KEY_CODE_F] =3D 0x3, /* qcode:Q_KEY_CODE_F (f) -> linux:33 (KEY_F) ->= adb:3 */ + [Q_KEY_CODE_F1] =3D 0x7a, /* qcode:Q_KEY_CODE_F1 (f1) -> linux:59 (KEY_F= 1) -> adb:122 */ + [Q_KEY_CODE_F10] =3D 0x6d, /* qcode:Q_KEY_CODE_F10 (f10) -> linux:68 (KE= Y_F10) -> adb:109 */ + [Q_KEY_CODE_F11] =3D 0x67, /* qcode:Q_KEY_CODE_F11 (f11) -> linux:87 (KE= Y_F11) -> adb:103 */ + [Q_KEY_CODE_F12] =3D 0x6f, /* qcode:Q_KEY_CODE_F12 (f12) -> linux:88 (KE= Y_F12) -> adb:111 */ + [Q_KEY_CODE_F2] =3D 0x78, /* qcode:Q_KEY_CODE_F2 (f2) -> linux:60 (KEY_F= 2) -> adb:120 */ + [Q_KEY_CODE_F3] =3D 0x63, /* qcode:Q_KEY_CODE_F3 (f3) -> linux:61 (KEY_F= 3) -> adb:99 */ + [Q_KEY_CODE_F4] =3D 0x76, /* qcode:Q_KEY_CODE_F4 (f4) -> linux:62 (KEY_F= 4) -> adb:118 */ + [Q_KEY_CODE_F5] =3D 0x60, /* qcode:Q_KEY_CODE_F5 (f5) -> linux:63 (KEY_F= 5) -> adb:96 */ + [Q_KEY_CODE_F6] =3D 0x61, /* qcode:Q_KEY_CODE_F6 (f6) -> linux:64 (KEY_F= 6) -> adb:97 */ + [Q_KEY_CODE_F7] =3D 0x62, /* qcode:Q_KEY_CODE_F7 (f7) -> linux:65 (KEY_F= 7) -> adb:98 */ + [Q_KEY_CODE_F8] =3D 0x64, /* qcode:Q_KEY_CODE_F8 (f8) -> linux:66 (KEY_F= 8) -> adb:100 */ + [Q_KEY_CODE_F9] =3D 0x65, /* qcode:Q_KEY_CODE_F9 (f9) -> linux:67 (KEY_F= 9) -> adb:101 */ + [Q_KEY_CODE_FIND] =3D 0xff, /* qcode:Q_KEY_CODE_FIND (find) -> linux:136= (KEY_FIND) -> adb:255 */ + [Q_KEY_CODE_FRONT] =3D 0xff, /* qcode:Q_KEY_CODE_FRONT (front) -> linux:= 132 (KEY_FRONT) -> adb:255 */ + [Q_KEY_CODE_G] =3D 0x5, /* qcode:Q_KEY_CODE_G (g) -> linux:34 (KEY_G) ->= adb:5 */ + [Q_KEY_CODE_GRAVE_ACCENT] =3D 0x32, /* qcode:Q_KEY_CODE_GRAVE_ACCENT (gr= ave_accent) -> linux:41 (KEY_GRAVE) -> adb:50 */ + [Q_KEY_CODE_H] =3D 0x4, /* qcode:Q_KEY_CODE_H (h) -> linux:35 (KEY_H) ->= adb:4 */ + [Q_KEY_CODE_HELP] =3D 0xff, /* qcode:Q_KEY_CODE_HELP (help) -> linux:138= (KEY_HELP) -> adb:255 */ + [Q_KEY_CODE_HENKAN] =3D 0xff, /* qcode:Q_KEY_CODE_HENKAN (henkan) -> lin= ux:92 (KEY_HENKAN) -> adb:255 */ + [Q_KEY_CODE_HIRAGANA] =3D 0xff, /* qcode:Q_KEY_CODE_HIRAGANA (hiragana) = -> linux:91 (KEY_HIRAGANA) -> adb:255 */ + [Q_KEY_CODE_HOME] =3D 0x73, /* qcode:Q_KEY_CODE_HOME (home) -> linux:102= (KEY_HOME) -> adb:115 */ + [Q_KEY_CODE_I] =3D 0x22, /* qcode:Q_KEY_CODE_I (i) -> linux:23 (KEY_I) -= > adb:34 */ + [Q_KEY_CODE_INSERT] =3D 0x72, /* qcode:Q_KEY_CODE_INSERT (insert) -> lin= ux:110 (KEY_INSERT) -> adb:114 */ + [Q_KEY_CODE_J] =3D 0x26, /* qcode:Q_KEY_CODE_J (j) -> linux:36 (KEY_J) -= > adb:38 */ + [Q_KEY_CODE_K] =3D 0x28, /* qcode:Q_KEY_CODE_K (k) -> linux:37 (KEY_K) -= > adb:40 */ + [Q_KEY_CODE_KP_0] =3D 0x52, /* qcode:Q_KEY_CODE_KP_0 (kp_0) -> linux:82 = (KEY_KP0) -> adb:82 */ + [Q_KEY_CODE_KP_1] =3D 0x53, /* qcode:Q_KEY_CODE_KP_1 (kp_1) -> linux:79 = (KEY_KP1) -> adb:83 */ + [Q_KEY_CODE_KP_2] =3D 0x54, /* qcode:Q_KEY_CODE_KP_2 (kp_2) -> linux:80 = (KEY_KP2) -> adb:84 */ + [Q_KEY_CODE_KP_3] =3D 0x55, /* qcode:Q_KEY_CODE_KP_3 (kp_3) -> linux:81 = (KEY_KP3) -> adb:85 */ + [Q_KEY_CODE_KP_4] =3D 0x56, /* qcode:Q_KEY_CODE_KP_4 (kp_4) -> linux:75 = (KEY_KP4) -> adb:86 */ + [Q_KEY_CODE_KP_5] =3D 0x57, /* qcode:Q_KEY_CODE_KP_5 (kp_5) -> linux:76 = (KEY_KP5) -> adb:87 */ + [Q_KEY_CODE_KP_6] =3D 0x58, /* qcode:Q_KEY_CODE_KP_6 (kp_6) -> linux:77 = (KEY_KP6) -> adb:88 */ + [Q_KEY_CODE_KP_7] =3D 0x59, /* qcode:Q_KEY_CODE_KP_7 (kp_7) -> linux:71 = (KEY_KP7) -> adb:89 */ + [Q_KEY_CODE_KP_8] =3D 0x5b, /* qcode:Q_KEY_CODE_KP_8 (kp_8) -> linux:72 = (KEY_KP8) -> adb:91 */ + [Q_KEY_CODE_KP_9] =3D 0x5c, /* qcode:Q_KEY_CODE_KP_9 (kp_9) -> linux:73 = (KEY_KP9) -> adb:92 */ + [Q_KEY_CODE_KP_ADD] =3D 0x45, /* qcode:Q_KEY_CODE_KP_ADD (kp_add) -> lin= ux:78 (KEY_KPPLUS) -> adb:69 */ + [Q_KEY_CODE_KP_COMMA] =3D 0xff, /* qcode:Q_KEY_CODE_KP_COMMA (kp_comma) = -> linux:121 (KEY_KPCOMMA) -> adb:255 */ + [Q_KEY_CODE_KP_DECIMAL] =3D 0x41, /* qcode:Q_KEY_CODE_KP_DECIMAL (kp_dec= imal) -> linux:83 (KEY_KPDOT) -> adb:65 */ + [Q_KEY_CODE_KP_DIVIDE] =3D 0x4b, /* qcode:Q_KEY_CODE_KP_DIVIDE (kp_divid= e) -> linux:98 (KEY_KPSLASH) -> adb:75 */ + [Q_KEY_CODE_KP_ENTER] =3D 0x4c, /* qcode:Q_KEY_CODE_KP_ENTER (kp_enter) = -> linux:96 (KEY_KPENTER) -> adb:76 */ + [Q_KEY_CODE_KP_EQUALS] =3D 0x51, /* qcode:Q_KEY_CODE_KP_EQUALS (kp_equal= s) -> linux:117 (KEY_KPEQUAL) -> adb:81 */ + [Q_KEY_CODE_KP_MULTIPLY] =3D 0x43, /* qcode:Q_KEY_CODE_KP_MULTIPLY (kp_m= ultiply) -> linux:55 (KEY_KPASTERISK) -> adb:67 */ + [Q_KEY_CODE_KP_SUBTRACT] =3D 0x4e, /* qcode:Q_KEY_CODE_KP_SUBTRACT (kp_s= ubtract) -> linux:74 (KEY_KPMINUS) -> adb:78 */ + [Q_KEY_CODE_L] =3D 0x25, /* qcode:Q_KEY_CODE_L (l) -> linux:38 (KEY_L) -= > adb:37 */ + [Q_KEY_CODE_LEFT] =3D 0x3b, /* qcode:Q_KEY_CODE_LEFT (left) -> linux:105= (KEY_LEFT) -> adb:59 */ + [Q_KEY_CODE_LESS] =3D 0xff, /* qcode:Q_KEY_CODE_LESS (less) -> linux:86 = (KEY_102ND) -> adb:255 */ + [Q_KEY_CODE_LF] =3D 0xff, /* qcode:Q_KEY_CODE_LF (lf) -> linux:101 (KEY_= LINEFEED) -> adb:255 */ + [Q_KEY_CODE_M] =3D 0x2e, /* qcode:Q_KEY_CODE_M (m) -> linux:50 (KEY_M) -= > adb:46 */ + [Q_KEY_CODE_MAIL] =3D 0xff, /* qcode:Q_KEY_CODE_MAIL (mail) -> linux:155= (KEY_MAIL) -> adb:255 */ + [Q_KEY_CODE_MEDIASELECT] =3D 0xff, /* qcode:Q_KEY_CODE_MEDIASELECT (medi= aselect) -> linux:226 (KEY_MEDIA) -> adb:255 */ + [Q_KEY_CODE_MENU] =3D 0xff, /* qcode:Q_KEY_CODE_MENU (menu) -> linux:139= (KEY_MENU) -> adb:255 */ + [Q_KEY_CODE_META_L] =3D 0x37, /* qcode:Q_KEY_CODE_META_L (meta_l) -> lin= ux:125 (KEY_LEFTMETA) -> adb:55 */ + [Q_KEY_CODE_META_R] =3D 0x37, /* qcode:Q_KEY_CODE_META_R (meta_r) -> lin= ux:126 (KEY_RIGHTMETA) -> adb:55 */ + [Q_KEY_CODE_MINUS] =3D 0x1b, /* qcode:Q_KEY_CODE_MINUS (minus) -> linux:= 12 (KEY_MINUS) -> adb:27 */ + [Q_KEY_CODE_N] =3D 0x2d, /* qcode:Q_KEY_CODE_N (n) -> linux:49 (KEY_N) -= > adb:45 */ + [Q_KEY_CODE_NUM_LOCK] =3D 0x47, /* qcode:Q_KEY_CODE_NUM_LOCK (num_lock) = -> linux:69 (KEY_NUMLOCK) -> adb:71 */ + [Q_KEY_CODE_O] =3D 0x1f, /* qcode:Q_KEY_CODE_O (o) -> linux:24 (KEY_O) -= > adb:31 */ + [Q_KEY_CODE_OPEN] =3D 0xff, /* qcode:Q_KEY_CODE_OPEN (open) -> linux:134= (KEY_OPEN) -> adb:255 */ + [Q_KEY_CODE_P] =3D 0x23, /* qcode:Q_KEY_CODE_P (p) -> linux:25 (KEY_P) -= > adb:35 */ + [Q_KEY_CODE_PASTE] =3D 0xff, /* qcode:Q_KEY_CODE_PASTE (paste) -> linux:= 135 (KEY_PASTE) -> adb:255 */ + [Q_KEY_CODE_PAUSE] =3D 0x71, /* qcode:Q_KEY_CODE_PAUSE (pause) -> linux:= 119 (KEY_PAUSE) -> adb:113 */ + [Q_KEY_CODE_PGDN] =3D 0x79, /* qcode:Q_KEY_CODE_PGDN (pgdn) -> linux:109= (KEY_PAGEDOWN) -> adb:121 */ + [Q_KEY_CODE_PGUP] =3D 0x74, /* qcode:Q_KEY_CODE_PGUP (pgup) -> linux:104= (KEY_PAGEUP) -> adb:116 */ + [Q_KEY_CODE_POWER] =3D 0x7f7f, /* qcode:Q_KEY_CODE_POWER (power) -> linu= x:116 (KEY_POWER) -> adb:32639 */ + [Q_KEY_CODE_PRINT] =3D 0x69, /* qcode:Q_KEY_CODE_PRINT (sysrq) -> linux:= 99 (KEY_SYSRQ) -> adb:105 */ + [Q_KEY_CODE_PROPS] =3D 0xff, /* qcode:Q_KEY_CODE_PROPS (props) -> linux:= 130 (KEY_PROPS) -> adb:255 */ + [Q_KEY_CODE_Q] =3D 0xc, /* qcode:Q_KEY_CODE_Q (q) -> linux:16 (KEY_Q) ->= adb:12 */ + [Q_KEY_CODE_R] =3D 0xf, /* qcode:Q_KEY_CODE_R (r) -> linux:19 (KEY_R) ->= adb:15 */ + [Q_KEY_CODE_RET] =3D 0x24, /* qcode:Q_KEY_CODE_RET (ret) -> linux:28 (KE= Y_ENTER) -> adb:36 */ + [Q_KEY_CODE_RIGHT] =3D 0x3c, /* qcode:Q_KEY_CODE_RIGHT (right) -> linux:= 106 (KEY_RIGHT) -> adb:60 */ + [Q_KEY_CODE_RO] =3D 0xff, /* qcode:Q_KEY_CODE_RO (ro) -> linux:89 (KEY_R= O) -> adb:255 */ + [Q_KEY_CODE_S] =3D 0x1, /* qcode:Q_KEY_CODE_S (s) -> linux:31 (KEY_S) ->= adb:1 */ + [Q_KEY_CODE_SCROLL_LOCK] =3D 0x6b, /* qcode:Q_KEY_CODE_SCROLL_LOCK (scro= ll_lock) -> linux:70 (KEY_SCROLLLOCK) -> adb:107 */ + [Q_KEY_CODE_SEMICOLON] =3D 0x29, /* qcode:Q_KEY_CODE_SEMICOLON (semicolo= n) -> linux:39 (KEY_SEMICOLON) -> adb:41 */ + [Q_KEY_CODE_SHIFT] =3D 0x38, /* qcode:Q_KEY_CODE_SHIFT (shift) -> linux:= 42 (KEY_LEFTSHIFT) -> adb:56 */ + [Q_KEY_CODE_SHIFT_R] =3D 0x7b, /* qcode:Q_KEY_CODE_SHIFT_R (shift_r) -> = linux:54 (KEY_RIGHTSHIFT) -> adb:123 */ + [Q_KEY_CODE_SLASH] =3D 0x2c, /* qcode:Q_KEY_CODE_SLASH (slash) -> linux:= 53 (KEY_SLASH) -> adb:44 */ + [Q_KEY_CODE_SLEEP] =3D 0xff, /* qcode:Q_KEY_CODE_SLEEP (sleep) -> linux:= 142 (KEY_SLEEP) -> adb:255 */ + [Q_KEY_CODE_SPC] =3D 0x31, /* qcode:Q_KEY_CODE_SPC (spc) -> linux:57 (KE= Y_SPACE) -> adb:49 */ + [Q_KEY_CODE_STOP] =3D 0xff, /* qcode:Q_KEY_CODE_STOP (stop) -> linux:128= (KEY_STOP) -> adb:255 */ + [Q_KEY_CODE_SYSRQ] =3D 0x69, /* qcode:Q_KEY_CODE_SYSRQ (sysrq) -> linux:= 99 (KEY_SYSRQ) -> adb:105 */ + [Q_KEY_CODE_T] =3D 0x11, /* qcode:Q_KEY_CODE_T (t) -> linux:20 (KEY_T) -= > adb:17 */ + [Q_KEY_CODE_TAB] =3D 0x30, /* qcode:Q_KEY_CODE_TAB (tab) -> linux:15 (KE= Y_TAB) -> adb:48 */ + [Q_KEY_CODE_U] =3D 0x20, /* qcode:Q_KEY_CODE_U (u) -> linux:22 (KEY_U) -= > adb:32 */ + [Q_KEY_CODE_UNDO] =3D 0xff, /* qcode:Q_KEY_CODE_UNDO (undo) -> linux:131= (KEY_UNDO) -> adb:255 */ + [Q_KEY_CODE_UNMAPPED] =3D 0xff, /* qcode:Q_KEY_CODE_UNMAPPED (unmapped) = -> linux:0 (KEY_RESERVED) -> adb:255 */ + [Q_KEY_CODE_UP] =3D 0x3e, /* qcode:Q_KEY_CODE_UP (up) -> linux:103 (KEY_= UP) -> adb:62 */ + [Q_KEY_CODE_V] =3D 0x9, /* qcode:Q_KEY_CODE_V (v) -> linux:47 (KEY_V) ->= adb:9 */ + [Q_KEY_CODE_VOLUMEDOWN] =3D 0xff, /* qcode:Q_KEY_CODE_VOLUMEDOWN (volume= down) -> linux:114 (KEY_VOLUMEDOWN) -> adb:255 */ + [Q_KEY_CODE_VOLUMEUP] =3D 0xff, /* qcode:Q_KEY_CODE_VOLUMEUP (volumeup) = -> linux:115 (KEY_VOLUMEUP) -> adb:255 */ + [Q_KEY_CODE_W] =3D 0xd, /* qcode:Q_KEY_CODE_W (w) -> linux:17 (KEY_W) ->= adb:13 */ + [Q_KEY_CODE_WAKE] =3D 0xff, /* qcode:Q_KEY_CODE_WAKE (wake) -> linux:143= (KEY_WAKEUP) -> adb:255 */ + [Q_KEY_CODE_X] =3D 0x7, /* qcode:Q_KEY_CODE_X (x) -> linux:45 (KEY_X) ->= adb:7 */ + [Q_KEY_CODE_Y] =3D 0x10, /* qcode:Q_KEY_CODE_Y (y) -> linux:21 (KEY_Y) -= > adb:16 */ + [Q_KEY_CODE_YEN] =3D 0xff, /* qcode:Q_KEY_CODE_YEN (yen) -> linux:124 (K= EY_YEN) -> adb:255 */ + [Q_KEY_CODE_Z] =3D 0x6, /* qcode:Q_KEY_CODE_Z (z) -> linux:44 (KEY_Z) ->= adb:6 */ +}; +const guint qemu_input_map_qcode_to_adb_len =3D sizeof(qemu_input_map_qcod= e_to_adb)/sizeof(qemu_input_map_qcode_to_adb[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index d90f6a16f7..5d97a38c42 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -6,6 +6,7 @@ #include "standard-headers/linux/input.h" =20 #include "ui/input-keymap-linux-to-qcode.c" +#include "ui/input-keymap-qcode-to-adb.c" #include "ui/input-keymap-qcode-to-atset1.c" #include "ui/input-keymap-qcode-to-atset2.c" #include "ui/input-keymap-qcode-to-atset3.c" --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220154966540.899975715934; Tue, 12 Sep 2017 05:42:34 -0700 (PDT) Received: from localhost ([::1]:35590 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkWQ-0004Xn-20 for importer@patchew.org; Tue, 12 Sep 2017 08:42:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48612) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkS7-0000jK-2n for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS3-0003St-WA for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:07 -0400 Received: from mx1.redhat.com ([209.132.183.28]:36980) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS3-0003Se-Ny for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:03 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C8D4B81DED for ; Tue, 12 Sep 2017 12:38:02 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id DA0BC77D65; Tue, 12 Sep 2017 12:38:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C8D4B81DED Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:40 +0100 Message-Id: <20170912123744.14730-9-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 12 Sep 2017 12:38:02 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 08/12] char: convert the escc device to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the qcode_to_keycode table with automatically generated tables. Missing entries in qcode_to_keycode now fixed: - Q_KEY_CODE_KP_COMMA -> 0x2d Signed-off-by: Daniel P. Berrange --- hw/char/escc.c | 126 +++----------------------------------------------= ---- include/ui/input.h | 3 ++ ui/Makefile.objs | 1 + ui/input-keymap.c | 1 + 4 files changed, 10 insertions(+), 121 deletions(-) diff --git a/hw/char/escc.c b/hw/char/escc.c index 3ab831a6a7..449bf2fc63 100644 --- a/hw/char/escc.c +++ b/hw/char/escc.c @@ -717,126 +717,6 @@ MemoryRegion *escc_init(hwaddr base, qemu_irq irqA, q= emu_irq irqB, return &d->mmio; } =20 -static const uint8_t qcode_to_keycode[Q_KEY_CODE__MAX] =3D { - [Q_KEY_CODE_SHIFT] =3D 99, - [Q_KEY_CODE_SHIFT_R] =3D 110, - [Q_KEY_CODE_ALT] =3D 19, - [Q_KEY_CODE_ALT_R] =3D 13, - [Q_KEY_CODE_CTRL] =3D 76, - [Q_KEY_CODE_CTRL_R] =3D 76, - [Q_KEY_CODE_ESC] =3D 29, - [Q_KEY_CODE_1] =3D 30, - [Q_KEY_CODE_2] =3D 31, - [Q_KEY_CODE_3] =3D 32, - [Q_KEY_CODE_4] =3D 33, - [Q_KEY_CODE_5] =3D 34, - [Q_KEY_CODE_6] =3D 35, - [Q_KEY_CODE_7] =3D 36, - [Q_KEY_CODE_8] =3D 37, - [Q_KEY_CODE_9] =3D 38, - [Q_KEY_CODE_0] =3D 39, - [Q_KEY_CODE_MINUS] =3D 40, - [Q_KEY_CODE_EQUAL] =3D 41, - [Q_KEY_CODE_BACKSPACE] =3D 43, - [Q_KEY_CODE_TAB] =3D 53, - [Q_KEY_CODE_Q] =3D 54, - [Q_KEY_CODE_W] =3D 55, - [Q_KEY_CODE_E] =3D 56, - [Q_KEY_CODE_R] =3D 57, - [Q_KEY_CODE_T] =3D 58, - [Q_KEY_CODE_Y] =3D 59, - [Q_KEY_CODE_U] =3D 60, - [Q_KEY_CODE_I] =3D 61, - [Q_KEY_CODE_O] =3D 62, - [Q_KEY_CODE_P] =3D 63, - [Q_KEY_CODE_BRACKET_LEFT] =3D 64, - [Q_KEY_CODE_BRACKET_RIGHT] =3D 65, - [Q_KEY_CODE_RET] =3D 89, - [Q_KEY_CODE_A] =3D 77, - [Q_KEY_CODE_S] =3D 78, - [Q_KEY_CODE_D] =3D 79, - [Q_KEY_CODE_F] =3D 80, - [Q_KEY_CODE_G] =3D 81, - [Q_KEY_CODE_H] =3D 82, - [Q_KEY_CODE_J] =3D 83, - [Q_KEY_CODE_K] =3D 84, - [Q_KEY_CODE_L] =3D 85, - [Q_KEY_CODE_SEMICOLON] =3D 86, - [Q_KEY_CODE_APOSTROPHE] =3D 87, - [Q_KEY_CODE_GRAVE_ACCENT] =3D 42, - [Q_KEY_CODE_BACKSLASH] =3D 88, - [Q_KEY_CODE_Z] =3D 100, - [Q_KEY_CODE_X] =3D 101, - [Q_KEY_CODE_C] =3D 102, - [Q_KEY_CODE_V] =3D 103, - [Q_KEY_CODE_B] =3D 104, - [Q_KEY_CODE_N] =3D 105, - [Q_KEY_CODE_M] =3D 106, - [Q_KEY_CODE_COMMA] =3D 107, - [Q_KEY_CODE_DOT] =3D 108, - [Q_KEY_CODE_SLASH] =3D 109, - [Q_KEY_CODE_ASTERISK] =3D 47, - [Q_KEY_CODE_SPC] =3D 121, - [Q_KEY_CODE_CAPS_LOCK] =3D 119, - [Q_KEY_CODE_F1] =3D 5, - [Q_KEY_CODE_F2] =3D 6, - [Q_KEY_CODE_F3] =3D 8, - [Q_KEY_CODE_F4] =3D 10, - [Q_KEY_CODE_F5] =3D 12, - [Q_KEY_CODE_F6] =3D 14, - [Q_KEY_CODE_F7] =3D 16, - [Q_KEY_CODE_F8] =3D 17, - [Q_KEY_CODE_F9] =3D 18, - [Q_KEY_CODE_F10] =3D 7, - [Q_KEY_CODE_NUM_LOCK] =3D 98, - [Q_KEY_CODE_SCROLL_LOCK] =3D 23, - [Q_KEY_CODE_KP_DIVIDE] =3D 46, - [Q_KEY_CODE_KP_MULTIPLY] =3D 47, - [Q_KEY_CODE_KP_SUBTRACT] =3D 71, - [Q_KEY_CODE_KP_ADD] =3D 125, - [Q_KEY_CODE_KP_ENTER] =3D 90, - [Q_KEY_CODE_KP_DECIMAL] =3D 50, - [Q_KEY_CODE_KP_0] =3D 94, - [Q_KEY_CODE_KP_1] =3D 112, - [Q_KEY_CODE_KP_2] =3D 113, - [Q_KEY_CODE_KP_3] =3D 114, - [Q_KEY_CODE_KP_4] =3D 91, - [Q_KEY_CODE_KP_5] =3D 92, - [Q_KEY_CODE_KP_6] =3D 93, - [Q_KEY_CODE_KP_7] =3D 68, - [Q_KEY_CODE_KP_8] =3D 69, - [Q_KEY_CODE_KP_9] =3D 70, - [Q_KEY_CODE_LESS] =3D 124, - [Q_KEY_CODE_F11] =3D 9, - [Q_KEY_CODE_F12] =3D 11, - [Q_KEY_CODE_HOME] =3D 52, - [Q_KEY_CODE_PGUP] =3D 96, - [Q_KEY_CODE_PGDN] =3D 123, - [Q_KEY_CODE_END] =3D 74, - [Q_KEY_CODE_LEFT] =3D 24, - [Q_KEY_CODE_UP] =3D 20, - [Q_KEY_CODE_DOWN] =3D 27, - [Q_KEY_CODE_RIGHT] =3D 28, - [Q_KEY_CODE_INSERT] =3D 44, - [Q_KEY_CODE_DELETE] =3D 66, - [Q_KEY_CODE_STOP] =3D 1, - [Q_KEY_CODE_AGAIN] =3D 3, - [Q_KEY_CODE_PROPS] =3D 25, - [Q_KEY_CODE_UNDO] =3D 26, - [Q_KEY_CODE_FRONT] =3D 49, - [Q_KEY_CODE_COPY] =3D 51, - [Q_KEY_CODE_OPEN] =3D 72, - [Q_KEY_CODE_PASTE] =3D 73, - [Q_KEY_CODE_FIND] =3D 95, - [Q_KEY_CODE_CUT] =3D 97, - [Q_KEY_CODE_LF] =3D 111, - [Q_KEY_CODE_HELP] =3D 118, - [Q_KEY_CODE_META_L] =3D 120, - [Q_KEY_CODE_META_R] =3D 122, - [Q_KEY_CODE_COMPOSE] =3D 67, - [Q_KEY_CODE_PRINT] =3D 22, - [Q_KEY_CODE_SYSRQ] =3D 21, -}; =20 static void sunkbd_handle_event(DeviceState *dev, QemuConsole *src, InputEvent *evt) @@ -879,7 +759,11 @@ static void sunkbd_handle_event(DeviceState *dev, Qemu= Console *src, } } =20 - keycode =3D qcode_to_keycode[qcode]; + if (qcode > qemu_input_map_qcode_to_sun_len) { + return; + } + + keycode =3D qemu_input_map_qcode_to_sun[qcode]; if (!key->down) { keycode |=3D 0x80; } diff --git a/include/ui/input.h b/include/ui/input.h index 4aa5655a0b..4ba7340b7b 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -89,6 +89,9 @@ extern const guint16 qemu_input_map_qcode_to_linux[]; extern const guint qemu_input_map_qcode_to_qnum_len; extern const guint16 qemu_input_map_qcode_to_qnum[]; =20 +extern const guint qemu_input_map_qcode_to_sun_len; +extern const guint16 qemu_input_map_qcode_to_sun[]; + extern const guint qemu_input_map_qnum_to_qcode_len; extern const guint16 qemu_input_map_qnum_to_qcode[]; =20 diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 6846636f39..3cd1122ea9 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -61,6 +61,7 @@ KEYCODEMAP_FILES =3D \ ui/input-keymap-qcode-to-atset3.c \ ui/input-keymap-qcode-to-linux.c \ ui/input-keymap-qcode-to-qnum.c \ + ui/input-keymap-qcode-to-sun.c \ ui/input-keymap-qnum-to-qcode.c \ $(NULL) =20 diff --git a/ui/input-keymap.c b/ui/input-keymap.c index 5d97a38c42..1b53cb4d0a 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -12,6 +12,7 @@ #include "ui/input-keymap-qcode-to-atset3.c" #include "ui/input-keymap-qcode-to-linux.c" #include "ui/input-keymap-qcode-to-qnum.c" +#include "ui/input-keymap-qcode-to-sun.c" #include "ui/input-keymap-qnum-to-qcode.c" =20 int qemu_input_linux_to_qcode(unsigned int lnx) --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220322269869.7960846948334; Tue, 12 Sep 2017 05:45:22 -0700 (PDT) Received: from localhost ([::1]:35605 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkZ7-0007M7-DH for importer@patchew.org; Tue, 12 Sep 2017 08:45:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48706) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkSG-0000sx-AC for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS5-0003Td-4P for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:57538) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS4-0003T8-QN for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:05 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D40587EA85 for ; Tue, 12 Sep 2017 12:38:03 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0D02F77D65; Tue, 12 Sep 2017 12:38:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com D40587EA85 Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx04.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:41 +0100 Message-Id: <20170912123744.14730-10-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Tue, 12 Sep 2017 12:38:03 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 09/12] ui: convert cocoa frontend to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the mac_to_qkeycode_map table with automatically generated table. Signed-off-by: Daniel P. Berrange --- include/ui/input.h | 3 + ui/Makefile.objs | 1 + ui/cocoa.m | 129 +------------------------------------= ---- ui/input-keymap-osx-to-qcode.c | 128 +++++++++++++++++++++++++++++++++++++= +++ ui/input-keymap.c | 1 + 5 files changed, 135 insertions(+), 127 deletions(-) create mode 100644 ui/input-keymap-osx-to-qcode.c diff --git a/include/ui/input.h b/include/ui/input.h index 4ba7340b7b..df3eb439bf 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -71,6 +71,9 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *not= ify); extern const guint qemu_input_map_linux_to_qcode_len; extern const guint16 qemu_input_map_linux_to_qcode[]; =20 +extern const guint qemu_input_map_osx_to_qcode_len; +extern const guint16 qemu_input_map_osx_to_qcode[]; + extern const guint qemu_input_map_qcode_to_adb_len; extern const guint16 qemu_input_map_qcode_to_adb[]; =20 diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 3cd1122ea9..9cf398e5c6 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -55,6 +55,7 @@ KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keyma= ps.csv =20 KEYCODEMAP_FILES =3D \ ui/input-keymap-linux-to-qcode.c \ + ui/input-keymap-osx-to-qcode.c \ ui/input-keymap-qcode-to-adb.c \ ui/input-keymap-qcode-to-atset1.c \ ui/input-keymap-qcode-to-atset2.c \ diff --git a/ui/cocoa.m b/ui/cocoa.m index 93e56d0518..e966605914 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -106,139 +106,14 @@ bool stretch_video; NSTextField *pauseLabel; NSArray * supportedImageFileTypes; =20 -// Mac to QKeyCode conversion -const int mac_to_qkeycode_map[] =3D { - [kVK_ANSI_A] =3D Q_KEY_CODE_A, - [kVK_ANSI_B] =3D Q_KEY_CODE_B, - [kVK_ANSI_C] =3D Q_KEY_CODE_C, - [kVK_ANSI_D] =3D Q_KEY_CODE_D, - [kVK_ANSI_E] =3D Q_KEY_CODE_E, - [kVK_ANSI_F] =3D Q_KEY_CODE_F, - [kVK_ANSI_G] =3D Q_KEY_CODE_G, - [kVK_ANSI_H] =3D Q_KEY_CODE_H, - [kVK_ANSI_I] =3D Q_KEY_CODE_I, - [kVK_ANSI_J] =3D Q_KEY_CODE_J, - [kVK_ANSI_K] =3D Q_KEY_CODE_K, - [kVK_ANSI_L] =3D Q_KEY_CODE_L, - [kVK_ANSI_M] =3D Q_KEY_CODE_M, - [kVK_ANSI_N] =3D Q_KEY_CODE_N, - [kVK_ANSI_O] =3D Q_KEY_CODE_O, - [kVK_ANSI_P] =3D Q_KEY_CODE_P, - [kVK_ANSI_Q] =3D Q_KEY_CODE_Q, - [kVK_ANSI_R] =3D Q_KEY_CODE_R, - [kVK_ANSI_S] =3D Q_KEY_CODE_S, - [kVK_ANSI_T] =3D Q_KEY_CODE_T, - [kVK_ANSI_U] =3D Q_KEY_CODE_U, - [kVK_ANSI_V] =3D Q_KEY_CODE_V, - [kVK_ANSI_W] =3D Q_KEY_CODE_W, - [kVK_ANSI_X] =3D Q_KEY_CODE_X, - [kVK_ANSI_Y] =3D Q_KEY_CODE_Y, - [kVK_ANSI_Z] =3D Q_KEY_CODE_Z, - - [kVK_ANSI_0] =3D Q_KEY_CODE_0, - [kVK_ANSI_1] =3D Q_KEY_CODE_1, - [kVK_ANSI_2] =3D Q_KEY_CODE_2, - [kVK_ANSI_3] =3D Q_KEY_CODE_3, - [kVK_ANSI_4] =3D Q_KEY_CODE_4, - [kVK_ANSI_5] =3D Q_KEY_CODE_5, - [kVK_ANSI_6] =3D Q_KEY_CODE_6, - [kVK_ANSI_7] =3D Q_KEY_CODE_7, - [kVK_ANSI_8] =3D Q_KEY_CODE_8, - [kVK_ANSI_9] =3D Q_KEY_CODE_9, - - [kVK_ANSI_Grave] =3D Q_KEY_CODE_GRAVE_ACCENT, - [kVK_ANSI_Minus] =3D Q_KEY_CODE_MINUS, - [kVK_ANSI_Equal] =3D Q_KEY_CODE_EQUAL, - [kVK_Delete] =3D Q_KEY_CODE_BACKSPACE, - [kVK_CapsLock] =3D Q_KEY_CODE_CAPS_LOCK, - [kVK_Tab] =3D Q_KEY_CODE_TAB, - [kVK_Return] =3D Q_KEY_CODE_RET, - [kVK_ANSI_LeftBracket] =3D Q_KEY_CODE_BRACKET_LEFT, - [kVK_ANSI_RightBracket] =3D Q_KEY_CODE_BRACKET_RIGHT, - [kVK_ANSI_Backslash] =3D Q_KEY_CODE_BACKSLASH, - [kVK_ANSI_Semicolon] =3D Q_KEY_CODE_SEMICOLON, - [kVK_ANSI_Quote] =3D Q_KEY_CODE_APOSTROPHE, - [kVK_ANSI_Comma] =3D Q_KEY_CODE_COMMA, - [kVK_ANSI_Period] =3D Q_KEY_CODE_DOT, - [kVK_ANSI_Slash] =3D Q_KEY_CODE_SLASH, - [kVK_Shift] =3D Q_KEY_CODE_SHIFT, - [kVK_RightShift] =3D Q_KEY_CODE_SHIFT_R, - [kVK_Control] =3D Q_KEY_CODE_CTRL, - [kVK_RightControl] =3D Q_KEY_CODE_CTRL_R, - [kVK_Option] =3D Q_KEY_CODE_ALT, - [kVK_RightOption] =3D Q_KEY_CODE_ALT_R, - [kVK_Command] =3D Q_KEY_CODE_META_L, - [0x36] =3D Q_KEY_CODE_META_R, /* There is no kVK_RightCommand */ - [kVK_Space] =3D Q_KEY_CODE_SPC, - - [kVK_ANSI_Keypad0] =3D Q_KEY_CODE_KP_0, - [kVK_ANSI_Keypad1] =3D Q_KEY_CODE_KP_1, - [kVK_ANSI_Keypad2] =3D Q_KEY_CODE_KP_2, - [kVK_ANSI_Keypad3] =3D Q_KEY_CODE_KP_3, - [kVK_ANSI_Keypad4] =3D Q_KEY_CODE_KP_4, - [kVK_ANSI_Keypad5] =3D Q_KEY_CODE_KP_5, - [kVK_ANSI_Keypad6] =3D Q_KEY_CODE_KP_6, - [kVK_ANSI_Keypad7] =3D Q_KEY_CODE_KP_7, - [kVK_ANSI_Keypad8] =3D Q_KEY_CODE_KP_8, - [kVK_ANSI_Keypad9] =3D Q_KEY_CODE_KP_9, - [kVK_ANSI_KeypadDecimal] =3D Q_KEY_CODE_KP_DECIMAL, - [kVK_ANSI_KeypadEnter] =3D Q_KEY_CODE_KP_ENTER, - [kVK_ANSI_KeypadPlus] =3D Q_KEY_CODE_KP_ADD, - [kVK_ANSI_KeypadMinus] =3D Q_KEY_CODE_KP_SUBTRACT, - [kVK_ANSI_KeypadMultiply] =3D Q_KEY_CODE_KP_MULTIPLY, - [kVK_ANSI_KeypadDivide] =3D Q_KEY_CODE_KP_DIVIDE, - [kVK_ANSI_KeypadEquals] =3D Q_KEY_CODE_KP_EQUALS, - [kVK_ANSI_KeypadClear] =3D Q_KEY_CODE_NUM_LOCK, - - [kVK_UpArrow] =3D Q_KEY_CODE_UP, - [kVK_DownArrow] =3D Q_KEY_CODE_DOWN, - [kVK_LeftArrow] =3D Q_KEY_CODE_LEFT, - [kVK_RightArrow] =3D Q_KEY_CODE_RIGHT, - - [kVK_Help] =3D Q_KEY_CODE_INSERT, - [kVK_Home] =3D Q_KEY_CODE_HOME, - [kVK_PageUp] =3D Q_KEY_CODE_PGUP, - [kVK_PageDown] =3D Q_KEY_CODE_PGDN, - [kVK_End] =3D Q_KEY_CODE_END, - [kVK_ForwardDelete] =3D Q_KEY_CODE_DELETE, - - [kVK_Escape] =3D Q_KEY_CODE_ESC, - - /* The Power key can't be used directly because the operating system u= ses - * it. This key can be emulated by using it in place of another key su= ch as - * F1. Don't forget to disable the real key binding. - */ - /* [kVK_F1] =3D Q_KEY_CODE_POWER, */ - - [kVK_F1] =3D Q_KEY_CODE_F1, - [kVK_F2] =3D Q_KEY_CODE_F2, - [kVK_F3] =3D Q_KEY_CODE_F3, - [kVK_F4] =3D Q_KEY_CODE_F4, - [kVK_F5] =3D Q_KEY_CODE_F5, - [kVK_F6] =3D Q_KEY_CODE_F6, - [kVK_F7] =3D Q_KEY_CODE_F7, - [kVK_F8] =3D Q_KEY_CODE_F8, - [kVK_F9] =3D Q_KEY_CODE_F9, - [kVK_F10] =3D Q_KEY_CODE_F10, - [kVK_F11] =3D Q_KEY_CODE_F11, - [kVK_F12] =3D Q_KEY_CODE_F12, - [kVK_F13] =3D Q_KEY_CODE_PRINT, - [kVK_F14] =3D Q_KEY_CODE_SCROLL_LOCK, - [kVK_F15] =3D Q_KEY_CODE_PAUSE, - - /* - * The eject and volume keys can't be used here because they are handl= ed at - * a lower level than what an Application can see. - */ -}; =20 static int cocoa_keycode_to_qemu(int keycode) { - if (ARRAY_SIZE(mac_to_qkeycode_map) <=3D keycode) { + if (keycode >=3D qemu_input_map_osx_to_qcode_len) { fprintf(stderr, "(cocoa) warning unknown keycode 0x%x\n", keycode); return 0; } - return mac_to_qkeycode_map[keycode]; + return qemu_input_map_osx_to_qcode[keycode]; } =20 /* Displays an alert dialog box with the specified message */ diff --git a/ui/input-keymap-osx-to-qcode.c b/ui/input-keymap-osx-to-qcode.c new file mode 100644 index 0000000000..450d22fa6d --- /dev/null +++ b/ui/input-keymap-osx-to-qcode.c @@ -0,0 +1,128 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_osx_to_qcode cod= e-map keymaps.csv osx qcode +*/ +const guint16 qemu_input_map_osx_to_qcode[256] =3D { + [0x0] =3D Q_KEY_CODE_A, /* osx:0 (ANSI_A) -> linux:30 (KEY_A) -> qcode:Q= _KEY_CODE_A (a) */ + [0x1] =3D Q_KEY_CODE_S, /* osx:1 (ANSI_S) -> linux:31 (KEY_S) -> qcode:Q= _KEY_CODE_S (s) */ + [0x2] =3D Q_KEY_CODE_D, /* osx:2 (ANSI_D) -> linux:32 (KEY_D) -> qcode:Q= _KEY_CODE_D (d) */ + [0x3] =3D Q_KEY_CODE_F, /* osx:3 (ANSI_F) -> linux:33 (KEY_F) -> qcode:Q= _KEY_CODE_F (f) */ + [0x4] =3D Q_KEY_CODE_H, /* osx:4 (ANSI_H) -> linux:35 (KEY_H) -> qcode:Q= _KEY_CODE_H (h) */ + [0x5] =3D Q_KEY_CODE_G, /* osx:5 (ANSI_G) -> linux:34 (KEY_G) -> qcode:Q= _KEY_CODE_G (g) */ + [0x6] =3D Q_KEY_CODE_Z, /* osx:6 (ANSI_Z) -> linux:44 (KEY_Z) -> qcode:Q= _KEY_CODE_Z (z) */ + [0x7] =3D Q_KEY_CODE_X, /* osx:7 (ANSI_X) -> linux:45 (KEY_X) -> qcode:Q= _KEY_CODE_X (x) */ + [0x8] =3D Q_KEY_CODE_C, /* osx:8 (ANSI_C) -> linux:46 (KEY_C) -> qcode:Q= _KEY_CODE_C (c) */ + [0x9] =3D Q_KEY_CODE_V, /* osx:9 (ANSI_V) -> linux:47 (KEY_V) -> qcode:Q= _KEY_CODE_V (v) */ + [0xa] =3D Q_KEY_CODE_UNMAPPED, /* osx:10 (ISO_Section) -> linux:170 (KEY= _ISO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb] =3D Q_KEY_CODE_B, /* osx:11 (ANSI_B) -> linux:48 (KEY_B) -> qcode:= Q_KEY_CODE_B (b) */ + [0xc] =3D Q_KEY_CODE_Q, /* osx:12 (ANSI_Q) -> linux:16 (KEY_Q) -> qcode:= Q_KEY_CODE_Q (q) */ + [0xd] =3D Q_KEY_CODE_W, /* osx:13 (ANSI_W) -> linux:17 (KEY_W) -> qcode:= Q_KEY_CODE_W (w) */ + [0xe] =3D Q_KEY_CODE_E, /* osx:14 (ANSI_E) -> linux:18 (KEY_E) -> qcode:= Q_KEY_CODE_E (e) */ + [0xf] =3D Q_KEY_CODE_R, /* osx:15 (ANSI_R) -> linux:19 (KEY_R) -> qcode:= Q_KEY_CODE_R (r) */ + [0x10] =3D Q_KEY_CODE_Y, /* osx:16 (ANSI_Y) -> linux:21 (KEY_Y) -> qcode= :Q_KEY_CODE_Y (y) */ + [0x11] =3D Q_KEY_CODE_T, /* osx:17 (ANSI_T) -> linux:20 (KEY_T) -> qcode= :Q_KEY_CODE_T (t) */ + [0x12] =3D Q_KEY_CODE_1, /* osx:18 (ANSI_1) -> linux:2 (KEY_1) -> qcode:= Q_KEY_CODE_1 (1) */ + [0x13] =3D Q_KEY_CODE_2, /* osx:19 (ANSI_2) -> linux:3 (KEY_2) -> qcode:= Q_KEY_CODE_2 (2) */ + [0x14] =3D Q_KEY_CODE_3, /* osx:20 (ANSI_3) -> linux:4 (KEY_3) -> qcode:= Q_KEY_CODE_3 (3) */ + [0x15] =3D Q_KEY_CODE_4, /* osx:21 (ANSI_4) -> linux:5 (KEY_4) -> qcode:= Q_KEY_CODE_4 (4) */ + [0x16] =3D Q_KEY_CODE_6, /* osx:22 (ANSI_6) -> linux:7 (KEY_6) -> qcode:= Q_KEY_CODE_6 (6) */ + [0x17] =3D Q_KEY_CODE_5, /* osx:23 (ANSI_5) -> linux:6 (KEY_5) -> qcode:= Q_KEY_CODE_5 (5) */ + [0x18] =3D Q_KEY_CODE_EQUAL, /* osx:24 (ANSI_Equal) -> linux:13 (KEY_EQU= AL) -> qcode:Q_KEY_CODE_EQUAL (equal) */ + [0x19] =3D Q_KEY_CODE_9, /* osx:25 (ANSI_9) -> linux:10 (KEY_9) -> qcode= :Q_KEY_CODE_9 (9) */ + [0x1a] =3D Q_KEY_CODE_7, /* osx:26 (ANSI_7) -> linux:8 (KEY_7) -> qcode:= Q_KEY_CODE_7 (7) */ + [0x1b] =3D Q_KEY_CODE_MINUS, /* osx:27 (ANSI_Minus) -> linux:12 (KEY_MIN= US) -> qcode:Q_KEY_CODE_MINUS (minus) */ + [0x1c] =3D Q_KEY_CODE_8, /* osx:28 (ANSI_8) -> linux:9 (KEY_8) -> qcode:= Q_KEY_CODE_8 (8) */ + [0x1d] =3D Q_KEY_CODE_0, /* osx:29 (ANSI_0) -> linux:11 (KEY_0) -> qcode= :Q_KEY_CODE_0 (0) */ + [0x1e] =3D Q_KEY_CODE_BRACKET_RIGHT, /* osx:30 (ANSI_RightBracket) -> li= nux:27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x1f] =3D Q_KEY_CODE_O, /* osx:31 (ANSI_O) -> linux:24 (KEY_O) -> qcode= :Q_KEY_CODE_O (o) */ + [0x20] =3D Q_KEY_CODE_U, /* osx:32 (ANSI_U) -> linux:22 (KEY_U) -> qcode= :Q_KEY_CODE_U (u) */ + [0x21] =3D Q_KEY_CODE_BRACKET_LEFT, /* osx:33 (ANSI_LeftBracket) -> linu= x:26 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x22] =3D Q_KEY_CODE_I, /* osx:34 (ANSI_I) -> linux:23 (KEY_I) -> qcode= :Q_KEY_CODE_I (i) */ + [0x23] =3D Q_KEY_CODE_P, /* osx:35 (ANSI_P) -> linux:25 (KEY_P) -> qcode= :Q_KEY_CODE_P (p) */ + [0x24] =3D Q_KEY_CODE_RET, /* osx:36 (Return) -> linux:28 (KEY_ENTER) ->= qcode:Q_KEY_CODE_RET (ret) */ + [0x25] =3D Q_KEY_CODE_L, /* osx:37 (ANSI_L) -> linux:38 (KEY_L) -> qcode= :Q_KEY_CODE_L (l) */ + [0x26] =3D Q_KEY_CODE_J, /* osx:38 (ANSI_J) -> linux:36 (KEY_J) -> qcode= :Q_KEY_CODE_J (j) */ + [0x27] =3D Q_KEY_CODE_APOSTROPHE, /* osx:39 (ANSI_Quote) -> linux:40 (KE= Y_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x28] =3D Q_KEY_CODE_K, /* osx:40 (ANSI_K) -> linux:37 (KEY_K) -> qcode= :Q_KEY_CODE_K (k) */ + [0x29] =3D Q_KEY_CODE_SEMICOLON, /* osx:41 (ANSI_Semicolon) -> linux:39 = (KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x2a] =3D Q_KEY_CODE_BACKSLASH, /* osx:42 (ANSI_Backslash) -> linux:43 = (KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x2b] =3D Q_KEY_CODE_COMMA, /* osx:43 (ANSI_Comma) -> linux:51 (KEY_COM= MA) -> qcode:Q_KEY_CODE_COMMA (comma) */ + [0x2c] =3D Q_KEY_CODE_SLASH, /* osx:44 (ANSI_Slash) -> linux:53 (KEY_SLA= SH) -> qcode:Q_KEY_CODE_SLASH (slash) */ + [0x2d] =3D Q_KEY_CODE_N, /* osx:45 (ANSI_N) -> linux:49 (KEY_N) -> qcode= :Q_KEY_CODE_N (n) */ + [0x2e] =3D Q_KEY_CODE_M, /* osx:46 (ANSI_M) -> linux:50 (KEY_M) -> qcode= :Q_KEY_CODE_M (m) */ + [0x2f] =3D Q_KEY_CODE_DOT, /* osx:47 (ANSI_Period) -> linux:52 (KEY_DOT)= -> qcode:Q_KEY_CODE_DOT (dot) */ + [0x30] =3D Q_KEY_CODE_TAB, /* osx:48 (Tab) -> linux:15 (KEY_TAB) -> qcod= e:Q_KEY_CODE_TAB (tab) */ + [0x31] =3D Q_KEY_CODE_SPC, /* osx:49 (Space) -> linux:57 (KEY_SPACE) -> = qcode:Q_KEY_CODE_SPC (spc) */ + [0x32] =3D Q_KEY_CODE_GRAVE_ACCENT, /* osx:50 (ANSI_Grave) -> linux:41 (= KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x33] =3D Q_KEY_CODE_BACKSPACE, /* osx:51 (Delete) -> linux:14 (KEY_BAC= KSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x35] =3D Q_KEY_CODE_ESC, /* osx:53 (Escape) -> linux:1 (KEY_ESC) -> qc= ode:Q_KEY_CODE_ESC (esc) */ + [0x36] =3D Q_KEY_CODE_META_R, /* osx:54 (RightCommand) -> linux:126 (KEY= _RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x37] =3D Q_KEY_CODE_META_L, /* osx:55 (Command) -> linux:125 (KEY_LEFT= META) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x38] =3D Q_KEY_CODE_SHIFT, /* osx:56 (Shift) -> linux:42 (KEY_LEFTSHIF= T) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x39] =3D Q_KEY_CODE_CAPS_LOCK, /* osx:57 (CapsLock) -> linux:58 (KEY_C= APSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x3a] =3D Q_KEY_CODE_ALT, /* osx:58 (Option) -> linux:56 (KEY_LEFTALT) = -> qcode:Q_KEY_CODE_ALT (alt) */ + [0x3b] =3D Q_KEY_CODE_CTRL, /* osx:59 (Control) -> linux:29 (KEY_LEFTCTR= L) -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x3c] =3D Q_KEY_CODE_SHIFT_R, /* osx:60 (RightShift) -> linux:54 (KEY_R= IGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x3d] =3D Q_KEY_CODE_ALT_R, /* osx:61 (RightOption) -> linux:100 (KEY_R= IGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x3e] =3D Q_KEY_CODE_CTRL_R, /* osx:62 (RightControl) -> linux:97 (KEY_= RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x3f] =3D Q_KEY_CODE_UNMAPPED, /* osx:63 (Function) -> linux:464 (KEY_F= N) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x40] =3D Q_KEY_CODE_UNMAPPED, /* osx:64 (F17) -> linux:187 (KEY_F17) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x41] =3D Q_KEY_CODE_KP_DECIMAL, /* osx:65 (ANSI_KeypadDecimal) -> linu= x:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x43] =3D Q_KEY_CODE_KP_MULTIPLY, /* osx:67 (ANSI_KeypadMultiply) -> li= nux:55 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x45] =3D Q_KEY_CODE_KP_ADD, /* osx:69 (ANSI_KeypadPlus) -> linux:78 (K= EY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x47] =3D Q_KEY_CODE_NUM_LOCK, /* osx:71 (ANSI_KeypadClear) -> linux:69= (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x48] =3D Q_KEY_CODE_VOLUMEUP, /* osx:72 (VolumeUp) -> linux:115 (KEY_V= OLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0x49] =3D Q_KEY_CODE_VOLUMEDOWN, /* osx:73 (VolumeDown) -> linux:114 (K= EY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0x4a] =3D Q_KEY_CODE_AUDIOMUTE, /* osx:74 (Mute) -> linux:113 (KEY_MUTE= ) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0x4b] =3D Q_KEY_CODE_KP_DIVIDE, /* osx:75 (ANSI_KeypadDivide) -> linux:= 98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x4c] =3D Q_KEY_CODE_KP_ENTER, /* osx:76 (ANSI_KeypadEnter) -> linux:96= (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x4e] =3D Q_KEY_CODE_KP_SUBTRACT, /* osx:78 (ANSI_KeypadMinus) -> linux= :74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x4f] =3D Q_KEY_CODE_UNMAPPED, /* osx:79 (F18) -> linux:188 (KEY_F18) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x50] =3D Q_KEY_CODE_UNMAPPED, /* osx:80 (F19) -> linux:189 (KEY_F19) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x51] =3D Q_KEY_CODE_KP_EQUALS, /* osx:81 (ANSI_KeypadEquals) -> linux:= 117 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x52] =3D Q_KEY_CODE_KP_0, /* osx:82 (ANSI_Keypad0) -> linux:82 (KEY_KP= 0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */ + [0x53] =3D Q_KEY_CODE_KP_1, /* osx:83 (ANSI_Keypad1) -> linux:79 (KEY_KP= 1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */ + [0x54] =3D Q_KEY_CODE_KP_2, /* osx:84 (ANSI_Keypad2) -> linux:80 (KEY_KP= 2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */ + [0x55] =3D Q_KEY_CODE_KP_3, /* osx:85 (ANSI_Keypad3) -> linux:81 (KEY_KP= 3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */ + [0x56] =3D Q_KEY_CODE_KP_4, /* osx:86 (ANSI_Keypad4) -> linux:75 (KEY_KP= 4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */ + [0x57] =3D Q_KEY_CODE_KP_5, /* osx:87 (ANSI_Keypad5) -> linux:76 (KEY_KP= 5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */ + [0x58] =3D Q_KEY_CODE_KP_6, /* osx:88 (ANSI_Keypad6) -> linux:77 (KEY_KP= 6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */ + [0x59] =3D Q_KEY_CODE_KP_7, /* osx:89 (ANSI_Keypad7) -> linux:71 (KEY_KP= 7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */ + [0x5a] =3D Q_KEY_CODE_UNMAPPED, /* osx:90 (F20) -> linux:190 (KEY_F20) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5b] =3D Q_KEY_CODE_KP_8, /* osx:91 (ANSI_Keypad8) -> linux:72 (KEY_KP= 8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */ + [0x5c] =3D Q_KEY_CODE_KP_9, /* osx:92 (ANSI_Keypad9) -> linux:73 (KEY_KP= 9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */ + [0x5d] =3D Q_KEY_CODE_YEN, /* osx:93 (JIS_Yen) -> linux:124 (KEY_YEN) ->= qcode:Q_KEY_CODE_YEN (yen) */ + [0x5f] =3D Q_KEY_CODE_UNMAPPED, /* osx:95 (JIS_KeypadComma) -> linux:95 = (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x60] =3D Q_KEY_CODE_F5, /* osx:96 (F5) -> linux:63 (KEY_F5) -> qcode:Q= _KEY_CODE_F5 (f5) */ + [0x61] =3D Q_KEY_CODE_F6, /* osx:97 (F6) -> linux:64 (KEY_F6) -> qcode:Q= _KEY_CODE_F6 (f6) */ + [0x62] =3D Q_KEY_CODE_F7, /* osx:98 (F7) -> linux:65 (KEY_F7) -> qcode:Q= _KEY_CODE_F7 (f7) */ + [0x63] =3D Q_KEY_CODE_F3, /* osx:99 (F3) -> linux:61 (KEY_F3) -> qcode:Q= _KEY_CODE_F3 (f3) */ + [0x64] =3D Q_KEY_CODE_F8, /* osx:100 (F8) -> linux:66 (KEY_F8) -> qcode:= Q_KEY_CODE_F8 (f8) */ + [0x65] =3D Q_KEY_CODE_F9, /* osx:101 (F9) -> linux:67 (KEY_F9) -> qcode:= Q_KEY_CODE_F9 (f9) */ + [0x67] =3D Q_KEY_CODE_F11, /* osx:103 (F11) -> linux:87 (KEY_F11) -> qco= de:Q_KEY_CODE_F11 (f11) */ + [0x68] =3D Q_KEY_CODE_UNMAPPED, /* osx:104 (JIS_Kana) -> linux:90 (KEY_K= ATAKANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x69] =3D Q_KEY_CODE_UNMAPPED, /* osx:105 (F13) -> linux:183 (KEY_F13) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6a] =3D Q_KEY_CODE_UNMAPPED, /* osx:106 (F16) -> linux:186 (KEY_F16) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6b] =3D Q_KEY_CODE_UNMAPPED, /* osx:107 (F14) -> linux:184 (KEY_F14) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6d] =3D Q_KEY_CODE_F10, /* osx:109 (F10) -> linux:68 (KEY_F10) -> qco= de:Q_KEY_CODE_F10 (f10) */ + [0x6e] =3D Q_KEY_CODE_COMPOSE, /* osx:110 (unnamed) -> linux:127 (KEY_CO= MPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x6f] =3D Q_KEY_CODE_F12, /* osx:111 (F12) -> linux:88 (KEY_F12) -> qco= de:Q_KEY_CODE_F12 (f12) */ + [0x71] =3D Q_KEY_CODE_UNMAPPED, /* osx:113 (F15) -> linux:185 (KEY_F15) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x72] =3D Q_KEY_CODE_HELP, /* osx:114 (Help) -> linux:138 (KEY_HELP) ->= qcode:Q_KEY_CODE_HELP (help) */ + [0x73] =3D Q_KEY_CODE_HOME, /* osx:115 (Home) -> linux:102 (KEY_HOME) ->= qcode:Q_KEY_CODE_HOME (home) */ + [0x74] =3D Q_KEY_CODE_PGUP, /* osx:116 (PageUp) -> linux:104 (KEY_PAGEUP= ) -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x75] =3D Q_KEY_CODE_DELETE, /* osx:117 (ForwardDelete) -> linux:111 (K= EY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x76] =3D Q_KEY_CODE_F4, /* osx:118 (F4) -> linux:62 (KEY_F4) -> qcode:= Q_KEY_CODE_F4 (f4) */ + [0x77] =3D Q_KEY_CODE_END, /* osx:119 (End) -> linux:107 (KEY_END) -> qc= ode:Q_KEY_CODE_END (end) */ + [0x78] =3D Q_KEY_CODE_F2, /* osx:120 (F2) -> linux:60 (KEY_F2) -> qcode:= Q_KEY_CODE_F2 (f2) */ + [0x79] =3D Q_KEY_CODE_PGDN, /* osx:121 (PageDown) -> linux:109 (KEY_PAGE= DOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x7a] =3D Q_KEY_CODE_F1, /* osx:122 (F1) -> linux:59 (KEY_F1) -> qcode:= Q_KEY_CODE_F1 (f1) */ + [0x7b] =3D Q_KEY_CODE_LEFT, /* osx:123 (LeftArrow) -> linux:105 (KEY_LEF= T) -> qcode:Q_KEY_CODE_LEFT (left) */ + [0x7c] =3D Q_KEY_CODE_RIGHT, /* osx:124 (RightArrow) -> linux:106 (KEY_R= IGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0x7d] =3D Q_KEY_CODE_DOWN, /* osx:125 (DownArrow) -> linux:108 (KEY_DOW= N) -> qcode:Q_KEY_CODE_DOWN (down) */ + [0x7e] =3D Q_KEY_CODE_UP, /* osx:126 (UpArrow) -> linux:103 (KEY_UP) -> = qcode:Q_KEY_CODE_UP (up) */ + [0xff] =3D Q_KEY_CODE_UNMAPPED, /* osx:255 (unnamed) -> linux:0 (KEY_RES= ERVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */ +}; +const guint qemu_input_map_osx_to_qcode_len =3D sizeof(qemu_input_map_osx_= to_qcode)/sizeof(qemu_input_map_osx_to_qcode[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index 1b53cb4d0a..de11205dca 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -6,6 +6,7 @@ #include "standard-headers/linux/input.h" =20 #include "ui/input-keymap-linux-to-qcode.c" +#include "ui/input-keymap-osx-to-qcode.c" #include "ui/input-keymap-qcode-to-adb.c" #include "ui/input-keymap-qcode-to-atset1.c" #include "ui/input-keymap-qcode-to-atset2.c" --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220177662131.38395575612094; Tue, 12 Sep 2017 05:42:57 -0700 (PDT) Received: from localhost ([::1]:35594 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkWm-0004x3-OI for importer@patchew.org; Tue, 12 Sep 2017 08:42:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48655) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkS9-0000ns-Vs for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS6-0003UP-8E for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50442) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS5-0003Tr-Tg for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:06 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E9B0234C2 for ; Tue, 12 Sep 2017 12:38:04 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1847E77D65; Tue, 12 Sep 2017 12:38:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com E9B0234C2 Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:42 +0100 Message-Id: <20170912123744.14730-11-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 12 Sep 2017 12:38:05 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 10/12] ui: convert the SDL2 frontend to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The SDL2 scancodes are conveniently identical to the USB scancodes. Replace the sdl2_scancode_to_qcode table with an automatically generated table. Missing entries in sdl2_scancode_to_qcode now fixed: - 0x32 -> Q_KEY_CODE_BACKSLASH - 0x66 -> Q_KEY_CODE_POWER - 0x67 -> Q_KEY_CODE_KP_EQUALS - 0x74 -> Q_KEY_CODE_OPEN - 0x77 -> Q_KEY_CODE_FRONT - 0x7f -> Q_KEY_CODE_AUDIOMUTE - 0x80 -> Q_KEY_CODE_VOLUMEUP - 0x81 -> Q_KEY_CODE_VOLUMEDOWN - 0x85 -> Q_KEY_CODE_KP_COMMA - 0x87 -> Q_KEY_CODE_RO - 0x89 -> Q_KEY_CODE_YEN - 0x8a -> Q_KEY_CODE_HENKAN - 0x93 -> Q_KEY_CODE_HIRAGANA - 0xe8 -> Q_KEY_CODE_AUDIOPLAY - 0xe9 -> Q_KEY_CODE_AUDIOSTOP - 0xea -> Q_KEY_CODE_AUDIOPREV - 0xeb -> Q_KEY_CODE_AUDIONEXT - 0xed -> Q_KEY_CODE_VOLUMEUP - 0xee -> Q_KEY_CODE_VOLUMEDOWN - 0xef -> Q_KEY_CODE_AUDIOMUTE - 0xf1 -> Q_KEY_CODE_AC_BACK - 0xf2 -> Q_KEY_CODE_AC_FORWARD - 0xf3 -> Q_KEY_CODE_STOP - 0xf4 -> Q_KEY_CODE_FIND - 0xf8 -> Q_KEY_CODE_SLEEP - 0xfa -> Q_KEY_CODE_AC_REFRESH - 0xfb -> Q_KEY_CODE_CALCULATOR And some mistakes corrected: - 0x65 -> Q_KEY_CODE_COMPOSE, not duplicating Q_KEY_CODE_MENU Signed-off-by: Daniel P. Berrange --- include/ui/input.h | 3 + ui/Makefile.objs | 1 + ui/input-keymap-usb-to-qcode.c | 177 +++++++++++++++++++++++++++ ui/input-keymap.c | 1 + ui/sdl2-input.c | 16 ++- ui/sdl2-keymap.h | 267 -------------------------------------= ---- 6 files changed, 193 insertions(+), 272 deletions(-) create mode 100644 ui/input-keymap-usb-to-qcode.c delete mode 100644 ui/sdl2-keymap.h diff --git a/include/ui/input.h b/include/ui/input.h index df3eb439bf..dcf7e0e731 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -98,4 +98,7 @@ extern const guint16 qemu_input_map_qcode_to_sun[]; extern const guint qemu_input_map_qnum_to_qcode_len; extern const guint16 qemu_input_map_qnum_to_qcode[]; =20 +extern const guint qemu_input_map_usb_to_qcode_len; +extern const guint16 qemu_input_map_usb_to_qcode[]; + #endif /* INPUT_H */ diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 9cf398e5c6..7823e85d7c 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -64,6 +64,7 @@ KEYCODEMAP_FILES =3D \ ui/input-keymap-qcode-to-qnum.c \ ui/input-keymap-qcode-to-sun.c \ ui/input-keymap-qnum-to-qcode.c \ + ui/input-keymap-usb-to-qcode.c \ $(NULL) =20 # Generated input-keymap-XXX.c files are kept in GIT, so diff --git a/ui/input-keymap-usb-to-qcode.c b/ui/input-keymap-usb-to-qcode.c new file mode 100644 index 0000000000..b63c351ec7 --- /dev/null +++ b/ui/input-keymap-usb-to-qcode.c @@ -0,0 +1,177 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_usb_to_qcode cod= e-map keymaps.csv usb qcode +*/ +const guint16 qemu_input_map_usb_to_qcode[252] =3D { + [0x4] =3D Q_KEY_CODE_A, /* usb:4 -> linux:30 (KEY_A) -> qcode:Q_KEY_CODE= _A (a) */ + [0x5] =3D Q_KEY_CODE_B, /* usb:5 -> linux:48 (KEY_B) -> qcode:Q_KEY_CODE= _B (b) */ + [0x6] =3D Q_KEY_CODE_C, /* usb:6 -> linux:46 (KEY_C) -> qcode:Q_KEY_CODE= _C (c) */ + [0x7] =3D Q_KEY_CODE_D, /* usb:7 -> linux:32 (KEY_D) -> qcode:Q_KEY_CODE= _D (d) */ + [0x8] =3D Q_KEY_CODE_E, /* usb:8 -> linux:18 (KEY_E) -> qcode:Q_KEY_CODE= _E (e) */ + [0x9] =3D Q_KEY_CODE_F, /* usb:9 -> linux:33 (KEY_F) -> qcode:Q_KEY_CODE= _F (f) */ + [0xa] =3D Q_KEY_CODE_G, /* usb:10 -> linux:34 (KEY_G) -> qcode:Q_KEY_COD= E_G (g) */ + [0xb] =3D Q_KEY_CODE_H, /* usb:11 -> linux:35 (KEY_H) -> qcode:Q_KEY_COD= E_H (h) */ + [0xc] =3D Q_KEY_CODE_I, /* usb:12 -> linux:23 (KEY_I) -> qcode:Q_KEY_COD= E_I (i) */ + [0xd] =3D Q_KEY_CODE_J, /* usb:13 -> linux:36 (KEY_J) -> qcode:Q_KEY_COD= E_J (j) */ + [0xe] =3D Q_KEY_CODE_K, /* usb:14 -> linux:37 (KEY_K) -> qcode:Q_KEY_COD= E_K (k) */ + [0xf] =3D Q_KEY_CODE_L, /* usb:15 -> linux:38 (KEY_L) -> qcode:Q_KEY_COD= E_L (l) */ + [0x10] =3D Q_KEY_CODE_M, /* usb:16 -> linux:50 (KEY_M) -> qcode:Q_KEY_CO= DE_M (m) */ + [0x11] =3D Q_KEY_CODE_N, /* usb:17 -> linux:49 (KEY_N) -> qcode:Q_KEY_CO= DE_N (n) */ + [0x12] =3D Q_KEY_CODE_O, /* usb:18 -> linux:24 (KEY_O) -> qcode:Q_KEY_CO= DE_O (o) */ + [0x13] =3D Q_KEY_CODE_P, /* usb:19 -> linux:25 (KEY_P) -> qcode:Q_KEY_CO= DE_P (p) */ + [0x14] =3D Q_KEY_CODE_Q, /* usb:20 -> linux:16 (KEY_Q) -> qcode:Q_KEY_CO= DE_Q (q) */ + [0x15] =3D Q_KEY_CODE_R, /* usb:21 -> linux:19 (KEY_R) -> qcode:Q_KEY_CO= DE_R (r) */ + [0x16] =3D Q_KEY_CODE_S, /* usb:22 -> linux:31 (KEY_S) -> qcode:Q_KEY_CO= DE_S (s) */ + [0x17] =3D Q_KEY_CODE_T, /* usb:23 -> linux:20 (KEY_T) -> qcode:Q_KEY_CO= DE_T (t) */ + [0x18] =3D Q_KEY_CODE_U, /* usb:24 -> linux:22 (KEY_U) -> qcode:Q_KEY_CO= DE_U (u) */ + [0x19] =3D Q_KEY_CODE_V, /* usb:25 -> linux:47 (KEY_V) -> qcode:Q_KEY_CO= DE_V (v) */ + [0x1a] =3D Q_KEY_CODE_W, /* usb:26 -> linux:17 (KEY_W) -> qcode:Q_KEY_CO= DE_W (w) */ + [0x1b] =3D Q_KEY_CODE_X, /* usb:27 -> linux:45 (KEY_X) -> qcode:Q_KEY_CO= DE_X (x) */ + [0x1c] =3D Q_KEY_CODE_Y, /* usb:28 -> linux:21 (KEY_Y) -> qcode:Q_KEY_CO= DE_Y (y) */ + [0x1d] =3D Q_KEY_CODE_Z, /* usb:29 -> linux:44 (KEY_Z) -> qcode:Q_KEY_CO= DE_Z (z) */ + [0x1e] =3D Q_KEY_CODE_1, /* usb:30 -> linux:2 (KEY_1) -> qcode:Q_KEY_COD= E_1 (1) */ + [0x1f] =3D Q_KEY_CODE_2, /* usb:31 -> linux:3 (KEY_2) -> qcode:Q_KEY_COD= E_2 (2) */ + [0x20] =3D Q_KEY_CODE_3, /* usb:32 -> linux:4 (KEY_3) -> qcode:Q_KEY_COD= E_3 (3) */ + [0x21] =3D Q_KEY_CODE_4, /* usb:33 -> linux:5 (KEY_4) -> qcode:Q_KEY_COD= E_4 (4) */ + [0x22] =3D Q_KEY_CODE_5, /* usb:34 -> linux:6 (KEY_5) -> qcode:Q_KEY_COD= E_5 (5) */ + [0x23] =3D Q_KEY_CODE_6, /* usb:35 -> linux:7 (KEY_6) -> qcode:Q_KEY_COD= E_6 (6) */ + [0x24] =3D Q_KEY_CODE_7, /* usb:36 -> linux:8 (KEY_7) -> qcode:Q_KEY_COD= E_7 (7) */ + [0x25] =3D Q_KEY_CODE_8, /* usb:37 -> linux:9 (KEY_8) -> qcode:Q_KEY_COD= E_8 (8) */ + [0x26] =3D Q_KEY_CODE_9, /* usb:38 -> linux:10 (KEY_9) -> qcode:Q_KEY_CO= DE_9 (9) */ + [0x27] =3D Q_KEY_CODE_0, /* usb:39 -> linux:11 (KEY_0) -> qcode:Q_KEY_CO= DE_0 (0) */ + [0x28] =3D Q_KEY_CODE_RET, /* usb:40 -> linux:28 (KEY_ENTER) -> qcode:Q_= KEY_CODE_RET (ret) */ + [0x29] =3D Q_KEY_CODE_ESC, /* usb:41 -> linux:1 (KEY_ESC) -> qcode:Q_KEY= _CODE_ESC (esc) */ + [0x2a] =3D Q_KEY_CODE_BACKSPACE, /* usb:42 -> linux:14 (KEY_BACKSPACE) -= > qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x2b] =3D Q_KEY_CODE_TAB, /* usb:43 -> linux:15 (KEY_TAB) -> qcode:Q_KE= Y_CODE_TAB (tab) */ + [0x2c] =3D Q_KEY_CODE_SPC, /* usb:44 -> linux:57 (KEY_SPACE) -> qcode:Q_= KEY_CODE_SPC (spc) */ + [0x2d] =3D Q_KEY_CODE_MINUS, /* usb:45 -> linux:12 (KEY_MINUS) -> qcode:= Q_KEY_CODE_MINUS (minus) */ + [0x2e] =3D Q_KEY_CODE_EQUAL, /* usb:46 -> linux:13 (KEY_EQUAL) -> qcode:= Q_KEY_CODE_EQUAL (equal) */ + [0x2f] =3D Q_KEY_CODE_BRACKET_LEFT, /* usb:47 -> linux:26 (KEY_LEFTBRACE= ) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x30] =3D Q_KEY_CODE_BRACKET_RIGHT, /* usb:48 -> linux:27 (KEY_RIGHTBRA= CE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x31] =3D Q_KEY_CODE_BACKSLASH, /* usb:49 -> linux:43 (KEY_BACKSLASH) -= > qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x32] =3D Q_KEY_CODE_BACKSLASH, /* usb:50 -> linux:43 (KEY_BACKSLASH) -= > qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x33] =3D Q_KEY_CODE_SEMICOLON, /* usb:51 -> linux:39 (KEY_SEMICOLON) -= > qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x34] =3D Q_KEY_CODE_APOSTROPHE, /* usb:52 -> linux:40 (KEY_APOSTROPHE)= -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x35] =3D Q_KEY_CODE_GRAVE_ACCENT, /* usb:53 -> linux:41 (KEY_GRAVE) ->= qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x36] =3D Q_KEY_CODE_COMMA, /* usb:54 -> linux:51 (KEY_COMMA) -> qcode:= Q_KEY_CODE_COMMA (comma) */ + [0x37] =3D Q_KEY_CODE_DOT, /* usb:55 -> linux:52 (KEY_DOT) -> qcode:Q_KE= Y_CODE_DOT (dot) */ + [0x38] =3D Q_KEY_CODE_SLASH, /* usb:56 -> linux:53 (KEY_SLASH) -> qcode:= Q_KEY_CODE_SLASH (slash) */ + [0x39] =3D Q_KEY_CODE_CAPS_LOCK, /* usb:57 -> linux:58 (KEY_CAPSLOCK) ->= qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x3a] =3D Q_KEY_CODE_F1, /* usb:58 -> linux:59 (KEY_F1) -> qcode:Q_KEY_= CODE_F1 (f1) */ + [0x3b] =3D Q_KEY_CODE_F2, /* usb:59 -> linux:60 (KEY_F2) -> qcode:Q_KEY_= CODE_F2 (f2) */ + [0x3c] =3D Q_KEY_CODE_F3, /* usb:60 -> linux:61 (KEY_F3) -> qcode:Q_KEY_= CODE_F3 (f3) */ + [0x3d] =3D Q_KEY_CODE_F4, /* usb:61 -> linux:62 (KEY_F4) -> qcode:Q_KEY_= CODE_F4 (f4) */ + [0x3e] =3D Q_KEY_CODE_F5, /* usb:62 -> linux:63 (KEY_F5) -> qcode:Q_KEY_= CODE_F5 (f5) */ + [0x3f] =3D Q_KEY_CODE_F6, /* usb:63 -> linux:64 (KEY_F6) -> qcode:Q_KEY_= CODE_F6 (f6) */ + [0x40] =3D Q_KEY_CODE_F7, /* usb:64 -> linux:65 (KEY_F7) -> qcode:Q_KEY_= CODE_F7 (f7) */ + [0x41] =3D Q_KEY_CODE_F8, /* usb:65 -> linux:66 (KEY_F8) -> qcode:Q_KEY_= CODE_F8 (f8) */ + [0x42] =3D Q_KEY_CODE_F9, /* usb:66 -> linux:67 (KEY_F9) -> qcode:Q_KEY_= CODE_F9 (f9) */ + [0x43] =3D Q_KEY_CODE_F10, /* usb:67 -> linux:68 (KEY_F10) -> qcode:Q_KE= Y_CODE_F10 (f10) */ + [0x44] =3D Q_KEY_CODE_F11, /* usb:68 -> linux:87 (KEY_F11) -> qcode:Q_KE= Y_CODE_F11 (f11) */ + [0x45] =3D Q_KEY_CODE_F12, /* usb:69 -> linux:88 (KEY_F12) -> qcode:Q_KE= Y_CODE_F12 (f12) */ + [0x46] =3D Q_KEY_CODE_SYSRQ, /* usb:70 -> linux:99 (KEY_SYSRQ) -> qcode:= Q_KEY_CODE_SYSRQ (sysrq) */ + [0x47] =3D Q_KEY_CODE_SCROLL_LOCK, /* usb:71 -> linux:70 (KEY_SCROLLLOCK= ) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x48] =3D Q_KEY_CODE_PAUSE, /* usb:72 -> linux:119 (KEY_PAUSE) -> qcode= :Q_KEY_CODE_PAUSE (pause) */ + [0x49] =3D Q_KEY_CODE_INSERT, /* usb:73 -> linux:110 (KEY_INSERT) -> qco= de:Q_KEY_CODE_INSERT (insert) */ + [0x4a] =3D Q_KEY_CODE_HOME, /* usb:74 -> linux:102 (KEY_HOME) -> qcode:Q= _KEY_CODE_HOME (home) */ + [0x4b] =3D Q_KEY_CODE_PGUP, /* usb:75 -> linux:104 (KEY_PAGEUP) -> qcode= :Q_KEY_CODE_PGUP (pgup) */ + [0x4c] =3D Q_KEY_CODE_DELETE, /* usb:76 -> linux:111 (KEY_DELETE) -> qco= de:Q_KEY_CODE_DELETE (delete) */ + [0x4d] =3D Q_KEY_CODE_END, /* usb:77 -> linux:107 (KEY_END) -> qcode:Q_K= EY_CODE_END (end) */ + [0x4e] =3D Q_KEY_CODE_PGDN, /* usb:78 -> linux:109 (KEY_PAGEDOWN) -> qco= de:Q_KEY_CODE_PGDN (pgdn) */ + [0x4f] =3D Q_KEY_CODE_RIGHT, /* usb:79 -> linux:106 (KEY_RIGHT) -> qcode= :Q_KEY_CODE_RIGHT (right) */ + [0x50] =3D Q_KEY_CODE_LEFT, /* usb:80 -> linux:105 (KEY_LEFT) -> qcode:Q= _KEY_CODE_LEFT (left) */ + [0x51] =3D Q_KEY_CODE_DOWN, /* usb:81 -> linux:108 (KEY_DOWN) -> qcode:Q= _KEY_CODE_DOWN (down) */ + [0x52] =3D Q_KEY_CODE_UP, /* usb:82 -> linux:103 (KEY_UP) -> qcode:Q_KEY= _CODE_UP (up) */ + [0x53] =3D Q_KEY_CODE_NUM_LOCK, /* usb:83 -> linux:69 (KEY_NUMLOCK) -> q= code:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x54] =3D Q_KEY_CODE_KP_DIVIDE, /* usb:84 -> linux:98 (KEY_KPSLASH) -> = qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x55] =3D Q_KEY_CODE_KP_MULTIPLY, /* usb:85 -> linux:55 (KEY_KPASTERISK= ) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x56] =3D Q_KEY_CODE_KP_SUBTRACT, /* usb:86 -> linux:74 (KEY_KPMINUS) -= > qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x57] =3D Q_KEY_CODE_KP_ADD, /* usb:87 -> linux:78 (KEY_KPPLUS) -> qcod= e:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x58] =3D Q_KEY_CODE_KP_ENTER, /* usb:88 -> linux:96 (KEY_KPENTER) -> q= code:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x59] =3D Q_KEY_CODE_KP_1, /* usb:89 -> linux:79 (KEY_KP1) -> qcode:Q_K= EY_CODE_KP_1 (kp_1) */ + [0x5a] =3D Q_KEY_CODE_KP_2, /* usb:90 -> linux:80 (KEY_KP2) -> qcode:Q_K= EY_CODE_KP_2 (kp_2) */ + [0x5b] =3D Q_KEY_CODE_KP_3, /* usb:91 -> linux:81 (KEY_KP3) -> qcode:Q_K= EY_CODE_KP_3 (kp_3) */ + [0x5c] =3D Q_KEY_CODE_KP_4, /* usb:92 -> linux:75 (KEY_KP4) -> qcode:Q_K= EY_CODE_KP_4 (kp_4) */ + [0x5d] =3D Q_KEY_CODE_KP_5, /* usb:93 -> linux:76 (KEY_KP5) -> qcode:Q_K= EY_CODE_KP_5 (kp_5) */ + [0x5e] =3D Q_KEY_CODE_KP_6, /* usb:94 -> linux:77 (KEY_KP6) -> qcode:Q_K= EY_CODE_KP_6 (kp_6) */ + [0x5f] =3D Q_KEY_CODE_KP_7, /* usb:95 -> linux:71 (KEY_KP7) -> qcode:Q_K= EY_CODE_KP_7 (kp_7) */ + [0x60] =3D Q_KEY_CODE_KP_8, /* usb:96 -> linux:72 (KEY_KP8) -> qcode:Q_K= EY_CODE_KP_8 (kp_8) */ + [0x61] =3D Q_KEY_CODE_KP_9, /* usb:97 -> linux:73 (KEY_KP9) -> qcode:Q_K= EY_CODE_KP_9 (kp_9) */ + [0x62] =3D Q_KEY_CODE_KP_0, /* usb:98 -> linux:82 (KEY_KP0) -> qcode:Q_K= EY_CODE_KP_0 (kp_0) */ + [0x63] =3D Q_KEY_CODE_KP_DECIMAL, /* usb:99 -> linux:83 (KEY_KPDOT) -> q= code:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x64] =3D Q_KEY_CODE_LESS, /* usb:100 -> linux:86 (KEY_102ND) -> qcode:= Q_KEY_CODE_LESS (less) */ + [0x65] =3D Q_KEY_CODE_COMPOSE, /* usb:101 -> linux:127 (KEY_COMPOSE) -> = qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x66] =3D Q_KEY_CODE_POWER, /* usb:102 -> linux:116 (KEY_POWER) -> qcod= e:Q_KEY_CODE_POWER (power) */ + [0x67] =3D Q_KEY_CODE_KP_EQUALS, /* usb:103 -> linux:117 (KEY_KPEQUAL) -= > qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x68] =3D Q_KEY_CODE_UNMAPPED, /* usb:104 -> linux:183 (KEY_F13) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x69] =3D Q_KEY_CODE_UNMAPPED, /* usb:105 -> linux:184 (KEY_F14) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6a] =3D Q_KEY_CODE_UNMAPPED, /* usb:106 -> linux:185 (KEY_F15) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6b] =3D Q_KEY_CODE_UNMAPPED, /* usb:107 -> linux:186 (KEY_F16) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6c] =3D Q_KEY_CODE_UNMAPPED, /* usb:108 -> linux:187 (KEY_F17) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6d] =3D Q_KEY_CODE_UNMAPPED, /* usb:109 -> linux:188 (KEY_F18) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6e] =3D Q_KEY_CODE_UNMAPPED, /* usb:110 -> linux:189 (KEY_F19) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6f] =3D Q_KEY_CODE_UNMAPPED, /* usb:111 -> linux:190 (KEY_F20) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x70] =3D Q_KEY_CODE_UNMAPPED, /* usb:112 -> linux:191 (KEY_F21) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x71] =3D Q_KEY_CODE_UNMAPPED, /* usb:113 -> linux:192 (KEY_F22) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x72] =3D Q_KEY_CODE_UNMAPPED, /* usb:114 -> linux:193 (KEY_F23) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x73] =3D Q_KEY_CODE_UNMAPPED, /* usb:115 -> linux:194 (KEY_F24) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x74] =3D Q_KEY_CODE_OPEN, /* usb:116 -> linux:134 (KEY_OPEN) -> qcode:= Q_KEY_CODE_OPEN (open) */ + [0x75] =3D Q_KEY_CODE_HELP, /* usb:117 -> linux:138 (KEY_HELP) -> qcode:= Q_KEY_CODE_HELP (help) */ + [0x76] =3D Q_KEY_CODE_MENU, /* usb:118 -> linux:139 (KEY_MENU) -> qcode:= Q_KEY_CODE_MENU (menu) */ + [0x77] =3D Q_KEY_CODE_FRONT, /* usb:119 -> linux:132 (KEY_FRONT) -> qcod= e:Q_KEY_CODE_FRONT (front) */ + [0x78] =3D Q_KEY_CODE_STOP, /* usb:120 -> linux:128 (KEY_STOP) -> qcode:= Q_KEY_CODE_STOP (stop) */ + [0x79] =3D Q_KEY_CODE_AGAIN, /* usb:121 -> linux:129 (KEY_AGAIN) -> qcod= e:Q_KEY_CODE_AGAIN (again) */ + [0x7a] =3D Q_KEY_CODE_UNDO, /* usb:122 -> linux:131 (KEY_UNDO) -> qcode:= Q_KEY_CODE_UNDO (undo) */ + [0x7b] =3D Q_KEY_CODE_CUT, /* usb:123 -> linux:137 (KEY_CUT) -> qcode:Q_= KEY_CODE_CUT (cut) */ + [0x7c] =3D Q_KEY_CODE_COPY, /* usb:124 -> linux:133 (KEY_COPY) -> qcode:= Q_KEY_CODE_COPY (copy) */ + [0x7d] =3D Q_KEY_CODE_PASTE, /* usb:125 -> linux:135 (KEY_PASTE) -> qcod= e:Q_KEY_CODE_PASTE (paste) */ + [0x7e] =3D Q_KEY_CODE_FIND, /* usb:126 -> linux:136 (KEY_FIND) -> qcode:= Q_KEY_CODE_FIND (find) */ + [0x7f] =3D Q_KEY_CODE_AUDIOMUTE, /* usb:127 -> linux:113 (KEY_MUTE) -> q= code:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0x80] =3D Q_KEY_CODE_VOLUMEUP, /* usb:128 -> linux:115 (KEY_VOLUMEUP) -= > qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0x81] =3D Q_KEY_CODE_VOLUMEDOWN, /* usb:129 -> linux:114 (KEY_VOLUMEDOW= N) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0x85] =3D Q_KEY_CODE_KP_COMMA, /* usb:133 -> linux:121 (KEY_KPCOMMA) ->= qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0x87] =3D Q_KEY_CODE_RO, /* usb:135 -> linux:89 (KEY_RO) -> qcode:Q_KEY= _CODE_RO (ro) */ + [0x88] =3D Q_KEY_CODE_UNMAPPED, /* usb:136 -> linux:93 (KEY_KATAKANAHIRA= GANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x89] =3D Q_KEY_CODE_YEN, /* usb:137 -> linux:124 (KEY_YEN) -> qcode:Q_= KEY_CODE_YEN (yen) */ + [0x8a] =3D Q_KEY_CODE_HENKAN, /* usb:138 -> linux:92 (KEY_HENKAN) -> qco= de:Q_KEY_CODE_HENKAN (henkan) */ + [0x8b] =3D Q_KEY_CODE_UNMAPPED, /* usb:139 -> linux:94 (KEY_MUHENKAN) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8c] =3D Q_KEY_CODE_UNMAPPED, /* usb:140 -> linux:95 (KEY_KPJPCOMMA) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x90] =3D Q_KEY_CODE_UNMAPPED, /* usb:144 -> linux:122 (KEY_HANGEUL) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x91] =3D Q_KEY_CODE_UNMAPPED, /* usb:145 -> linux:123 (KEY_HANJA) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x92] =3D Q_KEY_CODE_UNMAPPED, /* usb:146 -> linux:90 (KEY_KATAKANA) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x93] =3D Q_KEY_CODE_HIRAGANA, /* usb:147 -> linux:91 (KEY_HIRAGANA) ->= qcode:Q_KEY_CODE_HIRAGANA (hiragana) */ + [0x94] =3D Q_KEY_CODE_UNMAPPED, /* usb:148 -> linux:85 (KEY_ZENKAKUHANKA= KU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb6] =3D Q_KEY_CODE_UNMAPPED, /* usb:182 -> linux:179 (KEY_KPLEFTPAREN= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb7] =3D Q_KEY_CODE_UNMAPPED, /* usb:183 -> linux:180 (KEY_KPRIGHTPARE= N) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe0] =3D Q_KEY_CODE_CTRL, /* usb:224 -> linux:29 (KEY_LEFTCTRL) -> qco= de:Q_KEY_CODE_CTRL (ctrl) */ + [0xe1] =3D Q_KEY_CODE_SHIFT, /* usb:225 -> linux:42 (KEY_LEFTSHIFT) -> q= code:Q_KEY_CODE_SHIFT (shift) */ + [0xe2] =3D Q_KEY_CODE_ALT, /* usb:226 -> linux:56 (KEY_LEFTALT) -> qcode= :Q_KEY_CODE_ALT (alt) */ + [0xe3] =3D Q_KEY_CODE_META_L, /* usb:227 -> linux:125 (KEY_LEFTMETA) -> = qcode:Q_KEY_CODE_META_L (meta_l) */ + [0xe4] =3D Q_KEY_CODE_CTRL_R, /* usb:228 -> linux:97 (KEY_RIGHTCTRL) -> = qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0xe5] =3D Q_KEY_CODE_SHIFT_R, /* usb:229 -> linux:54 (KEY_RIGHTSHIFT) -= > qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0xe6] =3D Q_KEY_CODE_ALT_R, /* usb:230 -> linux:100 (KEY_RIGHTALT) -> q= code:Q_KEY_CODE_ALT_R (alt_r) */ + [0xe7] =3D Q_KEY_CODE_META_R, /* usb:231 -> linux:126 (KEY_RIGHTMETA) ->= qcode:Q_KEY_CODE_META_R (meta_r) */ + [0xe8] =3D Q_KEY_CODE_AUDIOPLAY, /* usb:232 -> linux:164 (KEY_PLAYPAUSE)= -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xe9] =3D Q_KEY_CODE_AUDIOSTOP, /* usb:233 -> linux:166 (KEY_STOPCD) ->= qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xea] =3D Q_KEY_CODE_AUDIOPREV, /* usb:234 -> linux:165 (KEY_PREVIOUSSO= NG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0xeb] =3D Q_KEY_CODE_AUDIONEXT, /* usb:235 -> linux:163 (KEY_NEXTSONG) = -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0xec] =3D Q_KEY_CODE_UNMAPPED, /* usb:236 -> linux:161 (KEY_EJECTCD) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xed] =3D Q_KEY_CODE_VOLUMEUP, /* usb:237 -> linux:115 (KEY_VOLUMEUP) -= > qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0xee] =3D Q_KEY_CODE_VOLUMEDOWN, /* usb:238 -> linux:114 (KEY_VOLUMEDOW= N) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0xef] =3D Q_KEY_CODE_AUDIOMUTE, /* usb:239 -> linux:113 (KEY_MUTE) -> q= code:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0xf0] =3D Q_KEY_CODE_UNMAPPED, /* usb:240 -> linux:150 (KEY_WWW) -> qco= de:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf1] =3D Q_KEY_CODE_AC_BACK, /* usb:241 -> linux:158 (KEY_BACK) -> qco= de:Q_KEY_CODE_AC_BACK (ac_back) */ + [0xf2] =3D Q_KEY_CODE_AC_FORWARD, /* usb:242 -> linux:159 (KEY_FORWARD) = -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xf3] =3D Q_KEY_CODE_STOP, /* usb:243 -> linux:128 (KEY_STOP) -> qcode:= Q_KEY_CODE_STOP (stop) */ + [0xf4] =3D Q_KEY_CODE_FIND, /* usb:244 -> linux:136 (KEY_FIND) -> qcode:= Q_KEY_CODE_FIND (find) */ + [0xf5] =3D Q_KEY_CODE_UNMAPPED, /* usb:245 -> linux:177 (KEY_SCROLLUP) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf6] =3D Q_KEY_CODE_UNMAPPED, /* usb:246 -> linux:178 (KEY_SCROLLDOWN)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf7] =3D Q_KEY_CODE_UNMAPPED, /* usb:247 -> linux:176 (KEY_EDIT) -> qc= ode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf8] =3D Q_KEY_CODE_SLEEP, /* usb:248 -> linux:142 (KEY_SLEEP) -> qcod= e:Q_KEY_CODE_SLEEP (sleep) */ + [0xf9] =3D Q_KEY_CODE_UNMAPPED, /* usb:249 -> linux:152 (KEY_SCREENLOCK)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfa] =3D Q_KEY_CODE_AC_REFRESH, /* usb:250 -> linux:173 (KEY_REFRESH) = -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xfb] =3D Q_KEY_CODE_CALCULATOR, /* usb:251 -> linux:140 (KEY_CALC) -> = qcode:Q_KEY_CODE_CALCULATOR (calculator) */ +}; +const guint qemu_input_map_usb_to_qcode_len =3D sizeof(qemu_input_map_usb_= to_qcode)/sizeof(qemu_input_map_usb_to_qcode[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index de11205dca..ad98b153cf 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -15,6 +15,7 @@ #include "ui/input-keymap-qcode-to-qnum.c" #include "ui/input-keymap-qcode-to-sun.c" #include "ui/input-keymap-qnum-to-qcode.c" +#include "ui/input-keymap-usb-to-qcode.c" =20 int qemu_input_linux_to_qcode(unsigned int lnx) { diff --git a/ui/sdl2-input.c b/ui/sdl2-input.c index 6e315ae800..605d781971 100644 --- a/ui/sdl2-input.c +++ b/ui/sdl2-input.c @@ -30,8 +30,6 @@ #include "ui/sdl2.h" #include "sysemu/sysemu.h" =20 -#include "sdl2-keymap.h" - static uint8_t modifiers_state[SDL_NUM_SCANCODES]; =20 void sdl2_reset_keys(struct sdl2_console *scon) @@ -39,9 +37,11 @@ void sdl2_reset_keys(struct sdl2_console *scon) QemuConsole *con =3D scon ? scon->dcl.con : NULL; int i; =20 - for (i =3D 0; i < SDL_NUM_SCANCODES; i++) { + for (i =3D 0 ; + i < SDL_NUM_SCANCODES && i < qemu_input_map_usb_to_qcode_len ; + i++) { if (modifiers_state[i]) { - int qcode =3D sdl2_scancode_to_qcode[i]; + int qcode =3D qemu_input_map_usb_to_qcode[i]; qemu_input_event_send_key_qcode(con, qcode, false); modifiers_state[i] =3D 0; } @@ -51,9 +51,15 @@ void sdl2_reset_keys(struct sdl2_console *scon) void sdl2_process_key(struct sdl2_console *scon, SDL_KeyboardEvent *ev) { - int qcode =3D sdl2_scancode_to_qcode[ev->keysym.scancode]; + int qcode; QemuConsole *con =3D scon ? scon->dcl.con : NULL; =20 + if (ev->keysym.scancode >=3D qemu_input_map_usb_to_qcode_len) { + return; + } + + qcode =3D qemu_input_map_usb_to_qcode[ev->keysym.scancode]; + if (!qemu_console_is_graphic(con)) { if (ev->type =3D=3D SDL_KEYDOWN) { switch (ev->keysym.scancode) { diff --git a/ui/sdl2-keymap.h b/ui/sdl2-keymap.h deleted file mode 100644 index cbedaa477d..0000000000 --- a/ui/sdl2-keymap.h +++ /dev/null @@ -1,267 +0,0 @@ - -/* map SDL2 scancodes to QKeyCode */ - -static const int sdl2_scancode_to_qcode[SDL_NUM_SCANCODES] =3D { - [SDL_SCANCODE_A] =3D Q_KEY_CODE_A, - [SDL_SCANCODE_B] =3D Q_KEY_CODE_B, - [SDL_SCANCODE_C] =3D Q_KEY_CODE_C, - [SDL_SCANCODE_D] =3D Q_KEY_CODE_D, - [SDL_SCANCODE_E] =3D Q_KEY_CODE_E, - [SDL_SCANCODE_F] =3D Q_KEY_CODE_F, - [SDL_SCANCODE_G] =3D Q_KEY_CODE_G, - [SDL_SCANCODE_H] =3D Q_KEY_CODE_H, - [SDL_SCANCODE_I] =3D Q_KEY_CODE_I, - [SDL_SCANCODE_J] =3D Q_KEY_CODE_J, - [SDL_SCANCODE_K] =3D Q_KEY_CODE_K, - [SDL_SCANCODE_L] =3D Q_KEY_CODE_L, - [SDL_SCANCODE_M] =3D Q_KEY_CODE_M, - [SDL_SCANCODE_N] =3D Q_KEY_CODE_N, - [SDL_SCANCODE_O] =3D Q_KEY_CODE_O, - [SDL_SCANCODE_P] =3D Q_KEY_CODE_P, - [SDL_SCANCODE_Q] =3D Q_KEY_CODE_Q, - [SDL_SCANCODE_R] =3D Q_KEY_CODE_R, - [SDL_SCANCODE_S] =3D Q_KEY_CODE_S, - [SDL_SCANCODE_T] =3D Q_KEY_CODE_T, - [SDL_SCANCODE_U] =3D Q_KEY_CODE_U, - [SDL_SCANCODE_V] =3D Q_KEY_CODE_V, - [SDL_SCANCODE_W] =3D Q_KEY_CODE_W, - [SDL_SCANCODE_X] =3D Q_KEY_CODE_X, - [SDL_SCANCODE_Y] =3D Q_KEY_CODE_Y, - [SDL_SCANCODE_Z] =3D Q_KEY_CODE_Z, - - [SDL_SCANCODE_1] =3D Q_KEY_CODE_1, - [SDL_SCANCODE_2] =3D Q_KEY_CODE_2, - [SDL_SCANCODE_3] =3D Q_KEY_CODE_3, - [SDL_SCANCODE_4] =3D Q_KEY_CODE_4, - [SDL_SCANCODE_5] =3D Q_KEY_CODE_5, - [SDL_SCANCODE_6] =3D Q_KEY_CODE_6, - [SDL_SCANCODE_7] =3D Q_KEY_CODE_7, - [SDL_SCANCODE_8] =3D Q_KEY_CODE_8, - [SDL_SCANCODE_9] =3D Q_KEY_CODE_9, - [SDL_SCANCODE_0] =3D Q_KEY_CODE_0, - - [SDL_SCANCODE_RETURN] =3D Q_KEY_CODE_RET, - [SDL_SCANCODE_ESCAPE] =3D Q_KEY_CODE_ESC, - [SDL_SCANCODE_BACKSPACE] =3D Q_KEY_CODE_BACKSPACE, - [SDL_SCANCODE_TAB] =3D Q_KEY_CODE_TAB, - [SDL_SCANCODE_SPACE] =3D Q_KEY_CODE_SPC, - [SDL_SCANCODE_MINUS] =3D Q_KEY_CODE_MINUS, - [SDL_SCANCODE_EQUALS] =3D Q_KEY_CODE_EQUAL, - [SDL_SCANCODE_LEFTBRACKET] =3D Q_KEY_CODE_BRACKET_LEFT, - [SDL_SCANCODE_RIGHTBRACKET] =3D Q_KEY_CODE_BRACKET_RIGHT, - [SDL_SCANCODE_BACKSLASH] =3D Q_KEY_CODE_BACKSLASH, -#if 0 - [SDL_SCANCODE_NONUSHASH] =3D Q_KEY_CODE_NONUSHASH, -#endif - [SDL_SCANCODE_SEMICOLON] =3D Q_KEY_CODE_SEMICOLON, - [SDL_SCANCODE_APOSTROPHE] =3D Q_KEY_CODE_APOSTROPHE, - [SDL_SCANCODE_GRAVE] =3D Q_KEY_CODE_GRAVE_ACCENT, - [SDL_SCANCODE_COMMA] =3D Q_KEY_CODE_COMMA, - [SDL_SCANCODE_PERIOD] =3D Q_KEY_CODE_DOT, - [SDL_SCANCODE_SLASH] =3D Q_KEY_CODE_SLASH, - [SDL_SCANCODE_CAPSLOCK] =3D Q_KEY_CODE_CAPS_LOCK, - - [SDL_SCANCODE_F1] =3D Q_KEY_CODE_F1, - [SDL_SCANCODE_F2] =3D Q_KEY_CODE_F2, - [SDL_SCANCODE_F3] =3D Q_KEY_CODE_F3, - [SDL_SCANCODE_F4] =3D Q_KEY_CODE_F4, - [SDL_SCANCODE_F5] =3D Q_KEY_CODE_F5, - [SDL_SCANCODE_F6] =3D Q_KEY_CODE_F6, - [SDL_SCANCODE_F7] =3D Q_KEY_CODE_F7, - [SDL_SCANCODE_F8] =3D Q_KEY_CODE_F8, - [SDL_SCANCODE_F9] =3D Q_KEY_CODE_F9, - [SDL_SCANCODE_F10] =3D Q_KEY_CODE_F10, - [SDL_SCANCODE_F11] =3D Q_KEY_CODE_F11, - [SDL_SCANCODE_F12] =3D Q_KEY_CODE_F12, - - [SDL_SCANCODE_PRINTSCREEN] =3D Q_KEY_CODE_PRINT, - [SDL_SCANCODE_SCROLLLOCK] =3D Q_KEY_CODE_SCROLL_LOCK, - [SDL_SCANCODE_PAUSE] =3D Q_KEY_CODE_PAUSE, - [SDL_SCANCODE_INSERT] =3D Q_KEY_CODE_INSERT, - [SDL_SCANCODE_HOME] =3D Q_KEY_CODE_HOME, - [SDL_SCANCODE_PAGEUP] =3D Q_KEY_CODE_PGUP, - [SDL_SCANCODE_DELETE] =3D Q_KEY_CODE_DELETE, - [SDL_SCANCODE_END] =3D Q_KEY_CODE_END, - [SDL_SCANCODE_PAGEDOWN] =3D Q_KEY_CODE_PGDN, - [SDL_SCANCODE_RIGHT] =3D Q_KEY_CODE_RIGHT, - [SDL_SCANCODE_LEFT] =3D Q_KEY_CODE_LEFT, - [SDL_SCANCODE_DOWN] =3D Q_KEY_CODE_DOWN, - [SDL_SCANCODE_UP] =3D Q_KEY_CODE_UP, - [SDL_SCANCODE_NUMLOCKCLEAR] =3D Q_KEY_CODE_NUM_LOCK, - - [SDL_SCANCODE_KP_DIVIDE] =3D Q_KEY_CODE_KP_DIVIDE, - [SDL_SCANCODE_KP_MULTIPLY] =3D Q_KEY_CODE_KP_MULTIPLY, - [SDL_SCANCODE_KP_MINUS] =3D Q_KEY_CODE_KP_SUBTRACT, - [SDL_SCANCODE_KP_PLUS] =3D Q_KEY_CODE_KP_ADD, - [SDL_SCANCODE_KP_ENTER] =3D Q_KEY_CODE_KP_ENTER, - [SDL_SCANCODE_KP_1] =3D Q_KEY_CODE_KP_1, - [SDL_SCANCODE_KP_2] =3D Q_KEY_CODE_KP_2, - [SDL_SCANCODE_KP_3] =3D Q_KEY_CODE_KP_3, - [SDL_SCANCODE_KP_4] =3D Q_KEY_CODE_KP_4, - [SDL_SCANCODE_KP_5] =3D Q_KEY_CODE_KP_5, - [SDL_SCANCODE_KP_6] =3D Q_KEY_CODE_KP_6, - [SDL_SCANCODE_KP_7] =3D Q_KEY_CODE_KP_7, - [SDL_SCANCODE_KP_8] =3D Q_KEY_CODE_KP_8, - [SDL_SCANCODE_KP_9] =3D Q_KEY_CODE_KP_9, - [SDL_SCANCODE_KP_0] =3D Q_KEY_CODE_KP_0, - [SDL_SCANCODE_KP_PERIOD] =3D Q_KEY_CODE_KP_DECIMAL, - - [SDL_SCANCODE_NONUSBACKSLASH] =3D Q_KEY_CODE_LESS, - [SDL_SCANCODE_APPLICATION] =3D Q_KEY_CODE_MENU, -#if 0 - [SDL_SCANCODE_POWER] =3D Q_KEY_CODE_POWER, - [SDL_SCANCODE_KP_EQUALS] =3D Q_KEY_CODE_KP_EQUALS, - - [SDL_SCANCODE_F13] =3D Q_KEY_CODE_F13, - [SDL_SCANCODE_F14] =3D Q_KEY_CODE_F14, - [SDL_SCANCODE_F15] =3D Q_KEY_CODE_F15, - [SDL_SCANCODE_F16] =3D Q_KEY_CODE_F16, - [SDL_SCANCODE_F17] =3D Q_KEY_CODE_F17, - [SDL_SCANCODE_F18] =3D Q_KEY_CODE_F18, - [SDL_SCANCODE_F19] =3D Q_KEY_CODE_F19, - [SDL_SCANCODE_F20] =3D Q_KEY_CODE_F20, - [SDL_SCANCODE_F21] =3D Q_KEY_CODE_F21, - [SDL_SCANCODE_F22] =3D Q_KEY_CODE_F22, - [SDL_SCANCODE_F23] =3D Q_KEY_CODE_F23, - [SDL_SCANCODE_F24] =3D Q_KEY_CODE_F24, - - [SDL_SCANCODE_EXECUTE] =3D Q_KEY_CODE_EXECUTE, -#endif - [SDL_SCANCODE_HELP] =3D Q_KEY_CODE_HELP, - [SDL_SCANCODE_MENU] =3D Q_KEY_CODE_MENU, -#if 0 - [SDL_SCANCODE_SELECT] =3D Q_KEY_CODE_SELECT, -#endif - [SDL_SCANCODE_STOP] =3D Q_KEY_CODE_STOP, - [SDL_SCANCODE_AGAIN] =3D Q_KEY_CODE_AGAIN, - [SDL_SCANCODE_UNDO] =3D Q_KEY_CODE_UNDO, - [SDL_SCANCODE_CUT] =3D Q_KEY_CODE_CUT, - [SDL_SCANCODE_COPY] =3D Q_KEY_CODE_COPY, - [SDL_SCANCODE_PASTE] =3D Q_KEY_CODE_PASTE, - [SDL_SCANCODE_FIND] =3D Q_KEY_CODE_FIND, -#if 0 - [SDL_SCANCODE_MUTE] =3D Q_KEY_CODE_MUTE, - [SDL_SCANCODE_VOLUMEUP] =3D Q_KEY_CODE_VOLUMEUP, - [SDL_SCANCODE_VOLUMEDOWN] =3D Q_KEY_CODE_VOLUMEDOWN, - - [SDL_SCANCODE_KP_COMMA] =3D Q_KEY_CODE_KP_COMMA, - [SDL_SCANCODE_KP_EQUALSAS400] =3D Q_KEY_CODE_KP_EQUALSAS400, - - [SDL_SCANCODE_INTERNATIONAL1] =3D Q_KEY_CODE_INTERNATIONAL1, - [SDL_SCANCODE_INTERNATIONAL2] =3D Q_KEY_CODE_INTERNATIONAL2, - [SDL_SCANCODE_INTERNATIONAL3] =3D Q_KEY_CODE_INTERNATIONAL3, - [SDL_SCANCODE_INTERNATIONAL4] =3D Q_KEY_CODE_INTERNATIONAL4, - [SDL_SCANCODE_INTERNATIONAL5] =3D Q_KEY_CODE_INTERNATIONAL5, - [SDL_SCANCODE_INTERNATIONAL6] =3D Q_KEY_CODE_INTERNATIONAL6, - [SDL_SCANCODE_INTERNATIONAL7] =3D Q_KEY_CODE_INTERNATIONAL7, - [SDL_SCANCODE_INTERNATIONAL8] =3D Q_KEY_CODE_INTERNATIONAL8, - [SDL_SCANCODE_INTERNATIONAL9] =3D Q_KEY_CODE_INTERNATIONAL9, - [SDL_SCANCODE_LANG1] =3D Q_KEY_CODE_LANG1, - [SDL_SCANCODE_LANG2] =3D Q_KEY_CODE_LANG2, - [SDL_SCANCODE_LANG3] =3D Q_KEY_CODE_LANG3, - [SDL_SCANCODE_LANG4] =3D Q_KEY_CODE_LANG4, - [SDL_SCANCODE_LANG5] =3D Q_KEY_CODE_LANG5, - [SDL_SCANCODE_LANG6] =3D Q_KEY_CODE_LANG6, - [SDL_SCANCODE_LANG7] =3D Q_KEY_CODE_LANG7, - [SDL_SCANCODE_LANG8] =3D Q_KEY_CODE_LANG8, - [SDL_SCANCODE_LANG9] =3D Q_KEY_CODE_LANG9, - [SDL_SCANCODE_ALTERASE] =3D Q_KEY_CODE_ALTERASE, -#endif - [SDL_SCANCODE_SYSREQ] =3D Q_KEY_CODE_SYSRQ, -#if 0 - [SDL_SCANCODE_CANCEL] =3D Q_KEY_CODE_CANCEL, - [SDL_SCANCODE_CLEAR] =3D Q_KEY_CODE_CLEAR, - [SDL_SCANCODE_PRIOR] =3D Q_KEY_CODE_PRIOR, - [SDL_SCANCODE_RETURN2] =3D Q_KEY_CODE_RETURN2, - [SDL_SCANCODE_SEPARATOR] =3D Q_KEY_CODE_SEPARATOR, - [SDL_SCANCODE_OUT] =3D Q_KEY_CODE_OUT, - [SDL_SCANCODE_OPER] =3D Q_KEY_CODE_OPER, - [SDL_SCANCODE_CLEARAGAIN] =3D Q_KEY_CODE_CLEARAGAIN, - [SDL_SCANCODE_CRSEL] =3D Q_KEY_CODE_CRSEL, - [SDL_SCANCODE_EXSEL] =3D Q_KEY_CODE_EXSEL, - [SDL_SCANCODE_KP_00] =3D Q_KEY_CODE_KP_00, - [SDL_SCANCODE_KP_000] =3D Q_KEY_CODE_KP_000, - [SDL_SCANCODE_THOUSANDSSEPARATOR] =3D Q_KEY_CODE_THOUSANDSSEPARATOR, - [SDL_SCANCODE_DECIMALSEPARATOR] =3D Q_KEY_CODE_DECIMALSEPARATOR, - [SDL_SCANCODE_CURRENCYUNIT] =3D Q_KEY_CODE_CURRENCYUNIT, - [SDL_SCANCODE_CURRENCYSUBUNIT] =3D Q_KEY_CODE_CURRENCYSUBUNIT, - [SDL_SCANCODE_KP_LEFTPAREN] =3D Q_KEY_CODE_KP_LEFTPAREN, - [SDL_SCANCODE_KP_RIGHTPAREN] =3D Q_KEY_CODE_KP_RIGHTPAREN, - [SDL_SCANCODE_KP_LEFTBRACE] =3D Q_KEY_CODE_KP_LEFTBRACE, - [SDL_SCANCODE_KP_RIGHTBRACE] =3D Q_KEY_CODE_KP_RIGHTBRACE, - [SDL_SCANCODE_KP_TAB] =3D Q_KEY_CODE_KP_TAB, - [SDL_SCANCODE_KP_BACKSPACE] =3D Q_KEY_CODE_KP_BACKSPACE, - [SDL_SCANCODE_KP_A] =3D Q_KEY_CODE_KP_A, - [SDL_SCANCODE_KP_B] =3D Q_KEY_CODE_KP_B, - [SDL_SCANCODE_KP_C] =3D Q_KEY_CODE_KP_C, - [SDL_SCANCODE_KP_D] =3D Q_KEY_CODE_KP_D, - [SDL_SCANCODE_KP_E] =3D Q_KEY_CODE_KP_E, - [SDL_SCANCODE_KP_F] =3D Q_KEY_CODE_KP_F, - [SDL_SCANCODE_KP_XOR] =3D Q_KEY_CODE_KP_XOR, - [SDL_SCANCODE_KP_POWER] =3D Q_KEY_CODE_KP_POWER, - [SDL_SCANCODE_KP_PERCENT] =3D Q_KEY_CODE_KP_PERCENT, - [SDL_SCANCODE_KP_LESS] =3D Q_KEY_CODE_KP_LESS, - [SDL_SCANCODE_KP_GREATER] =3D Q_KEY_CODE_KP_GREATER, - [SDL_SCANCODE_KP_AMPERSAND] =3D Q_KEY_CODE_KP_AMPERSAND, - [SDL_SCANCODE_KP_DBLAMPERSAND] =3D Q_KEY_CODE_KP_DBLAMPERSAND, - [SDL_SCANCODE_KP_VERTICALBAR] =3D Q_KEY_CODE_KP_VERTICALBAR, - [SDL_SCANCODE_KP_DBLVERTICALBAR] =3D Q_KEY_CODE_KP_DBLVERTICALBAR, - [SDL_SCANCODE_KP_COLON] =3D Q_KEY_CODE_KP_COLON, - [SDL_SCANCODE_KP_HASH] =3D Q_KEY_CODE_KP_HASH, - [SDL_SCANCODE_KP_SPACE] =3D Q_KEY_CODE_KP_SPACE, - [SDL_SCANCODE_KP_AT] =3D Q_KEY_CODE_KP_AT, - [SDL_SCANCODE_KP_EXCLAM] =3D Q_KEY_CODE_KP_EXCLAM, - [SDL_SCANCODE_KP_MEMSTORE] =3D Q_KEY_CODE_KP_MEMSTORE, - [SDL_SCANCODE_KP_MEMRECALL] =3D Q_KEY_CODE_KP_MEMRECALL, - [SDL_SCANCODE_KP_MEMCLEAR] =3D Q_KEY_CODE_KP_MEMCLEAR, - [SDL_SCANCODE_KP_MEMADD] =3D Q_KEY_CODE_KP_MEMADD, - [SDL_SCANCODE_KP_MEMSUBTRACT] =3D Q_KEY_CODE_KP_MEMSUBTRACT, - [SDL_SCANCODE_KP_MEMMULTIPLY] =3D Q_KEY_CODE_KP_MEMMULTIPLY, - [SDL_SCANCODE_KP_MEMDIVIDE] =3D Q_KEY_CODE_KP_MEMDIVIDE, - [SDL_SCANCODE_KP_PLUSMINUS] =3D Q_KEY_CODE_KP_PLUSMINUS, - [SDL_SCANCODE_KP_CLEAR] =3D Q_KEY_CODE_KP_CLEAR, - [SDL_SCANCODE_KP_CLEARENTRY] =3D Q_KEY_CODE_KP_CLEARENTRY, - [SDL_SCANCODE_KP_BINARY] =3D Q_KEY_CODE_KP_BINARY, - [SDL_SCANCODE_KP_OCTAL] =3D Q_KEY_CODE_KP_OCTAL, - [SDL_SCANCODE_KP_DECIMAL] =3D Q_KEY_CODE_KP_DECIMAL, - [SDL_SCANCODE_KP_HEXADECIMAL] =3D Q_KEY_CODE_KP_HEXADECIMAL, -#endif - [SDL_SCANCODE_LCTRL] =3D Q_KEY_CODE_CTRL, - [SDL_SCANCODE_LSHIFT] =3D Q_KEY_CODE_SHIFT, - [SDL_SCANCODE_LALT] =3D Q_KEY_CODE_ALT, - [SDL_SCANCODE_LGUI] =3D Q_KEY_CODE_META_L, - [SDL_SCANCODE_RCTRL] =3D Q_KEY_CODE_CTRL_R, - [SDL_SCANCODE_RSHIFT] =3D Q_KEY_CODE_SHIFT_R, - [SDL_SCANCODE_RALT] =3D Q_KEY_CODE_ALT_R, - [SDL_SCANCODE_RGUI] =3D Q_KEY_CODE_META_R, -#if 0 - [SDL_SCANCODE_MODE] =3D Q_KEY_CODE_MODE, - [SDL_SCANCODE_AUDIONEXT] =3D Q_KEY_CODE_AUDIONEXT, - [SDL_SCANCODE_AUDIOPREV] =3D Q_KEY_CODE_AUDIOPREV, - [SDL_SCANCODE_AUDIOSTOP] =3D Q_KEY_CODE_AUDIOSTOP, - [SDL_SCANCODE_AUDIOPLAY] =3D Q_KEY_CODE_AUDIOPLAY, - [SDL_SCANCODE_AUDIOMUTE] =3D Q_KEY_CODE_AUDIOMUTE, - [SDL_SCANCODE_MEDIASELECT] =3D Q_KEY_CODE_MEDIASELECT, - [SDL_SCANCODE_WWW] =3D Q_KEY_CODE_WWW, - [SDL_SCANCODE_MAIL] =3D Q_KEY_CODE_MAIL, - [SDL_SCANCODE_CALCULATOR] =3D Q_KEY_CODE_CALCULATOR, - [SDL_SCANCODE_COMPUTER] =3D Q_KEY_CODE_COMPUTER, - [SDL_SCANCODE_AC_SEARCH] =3D Q_KEY_CODE_AC_SEARCH, - [SDL_SCANCODE_AC_HOME] =3D Q_KEY_CODE_AC_HOME, - [SDL_SCANCODE_AC_BACK] =3D Q_KEY_CODE_AC_BACK, - [SDL_SCANCODE_AC_FORWARD] =3D Q_KEY_CODE_AC_FORWARD, - [SDL_SCANCODE_AC_STOP] =3D Q_KEY_CODE_AC_STOP, - [SDL_SCANCODE_AC_REFRESH] =3D Q_KEY_CODE_AC_REFRESH, - [SDL_SCANCODE_AC_BOOKMARKS] =3D Q_KEY_CODE_AC_BOOKMARKS, - [SDL_SCANCODE_BRIGHTNESSDOWN] =3D Q_KEY_CODE_BRIGHTNESSDOWN, - [SDL_SCANCODE_BRIGHTNESSUP] =3D Q_KEY_CODE_BRIGHTNESSUP, - [SDL_SCANCODE_DISPLAYSWITCH] =3D Q_KEY_CODE_DISPLAYSWITCH, - [SDL_SCANCODE_KBDILLUMTOGGLE] =3D Q_KEY_CODE_KBDILLUMTOGGLE, - [SDL_SCANCODE_KBDILLUMDOWN] =3D Q_KEY_CODE_KBDILLUMDOWN, - [SDL_SCANCODE_KBDILLUMUP] =3D Q_KEY_CODE_KBDILLUMUP, - [SDL_SCANCODE_EJECT] =3D Q_KEY_CODE_EJECT, - [SDL_SCANCODE_SLEEP] =3D Q_KEY_CODE_SLEEP, - [SDL_SCANCODE_APP1] =3D Q_KEY_CODE_APP1, - [SDL_SCANCODE_APP2] =3D Q_KEY_CODE_APP2, -#endif -}; --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220530305394.15993177282576; Tue, 12 Sep 2017 05:48:50 -0700 (PDT) Received: from localhost ([::1]:35622 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkcT-0001Pa-91 for importer@patchew.org; Tue, 12 Sep 2017 08:48:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48826) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkST-00013L-4U for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS7-0003VA-L5 for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37172) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS7-0003UW-00 for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:07 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 1BC4981DFF for ; Tue, 12 Sep 2017 12:38:06 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 264A277D65; Tue, 12 Sep 2017 12:38:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 1BC4981DFF Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:43 +0100 Message-Id: <20170912123744.14730-12-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Tue, 12 Sep 2017 12:38:06 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 11/12] ui: convert GTK and SDL1 frontends to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The x_keycode_to_pc_keycode and evdev_keycode_to_pc_keycode tables are replaced with automatically generated tables. In addition the X11 heuristics are improved to detect running on XQuartz and XWin X11 servers, to activate the correct OS-X and Win32 keycode maps. Signed-off-by: Daniel P. Berrange --- include/ui/input.h | 21 ++ ui/Makefile.objs | 12 +- ui/gtk.c | 205 +++++++++------ ui/input-keymap-atset1-to-qcode.c | 245 +++++++++++++++++ ui/input-keymap-win32-to-qcode.c | 157 +++++++++++ ui/input-keymap-x11-to-qcode.c | 163 ++++++++++++ ui/input-keymap-xorgevdev-to-qcode.c | 463 +++++++++++++++++++++++++++++= ++++ ui/input-keymap-xorgkbd-to-qcode.c | 122 +++++++++ ui/input-keymap-xorgxquartz-to-qcode.c | 128 +++++++++ ui/input-keymap-xorgxwin-to-qcode.c | 122 +++++++++ ui/input-keymap.c | 7 + ui/sdl.c | 105 +++----- ui/trace-events | 9 +- ui/x_keymap.c | 250 +++++++----------- ui/x_keymap.h | 8 +- 15 files changed, 1700 insertions(+), 317 deletions(-) create mode 100644 ui/input-keymap-atset1-to-qcode.c create mode 100644 ui/input-keymap-win32-to-qcode.c create mode 100644 ui/input-keymap-x11-to-qcode.c create mode 100644 ui/input-keymap-xorgevdev-to-qcode.c create mode 100644 ui/input-keymap-xorgkbd-to-qcode.c create mode 100644 ui/input-keymap-xorgxquartz-to-qcode.c create mode 100644 ui/input-keymap-xorgxwin-to-qcode.c diff --git a/include/ui/input.h b/include/ui/input.h index dcf7e0e731..1c1731ef18 100644 --- a/include/ui/input.h +++ b/include/ui/input.h @@ -68,6 +68,9 @@ void qemu_input_check_mode_change(void); void qemu_add_mouse_mode_change_notifier(Notifier *notify); void qemu_remove_mouse_mode_change_notifier(Notifier *notify); =20 +extern const guint qemu_input_map_atset1_to_qcode_len; +extern const guint16 qemu_input_map_atset1_to_qcode[]; + extern const guint qemu_input_map_linux_to_qcode_len; extern const guint16 qemu_input_map_linux_to_qcode[]; =20 @@ -101,4 +104,22 @@ extern const guint16 qemu_input_map_qnum_to_qcode[]; extern const guint qemu_input_map_usb_to_qcode_len; extern const guint16 qemu_input_map_usb_to_qcode[]; =20 +extern const guint qemu_input_map_win32_to_qcode_len; +extern const guint16 qemu_input_map_win32_to_qcode[]; + +extern const guint qemu_input_map_x11_to_qcode_len; +extern const guint16 qemu_input_map_x11_to_qcode[]; + +extern const guint qemu_input_map_xorgevdev_to_qcode_len; +extern const guint16 qemu_input_map_xorgevdev_to_qcode[]; + +extern const guint qemu_input_map_xorgkbd_to_qcode_len; +extern const guint16 qemu_input_map_xorgkbd_to_qcode[]; + +extern const guint qemu_input_map_xorgxquartz_to_qcode_len; +extern const guint16 qemu_input_map_xorgxquartz_to_qcode[]; + +extern const guint qemu_input_map_xorgxwin_to_qcode_len; +extern const guint16 qemu_input_map_xorgxwin_to_qcode[]; + #endif /* INPUT_H */ diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 7823e85d7c..b6512e3dc2 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -11,11 +11,12 @@ common-obj-y +=3D keymaps.o console.o cursor.o qemu-pix= man.o common-obj-y +=3D input.o input-keymap.o input-legacy.o common-obj-$(CONFIG_LINUX) +=3D input-linux.o common-obj-$(CONFIG_SPICE) +=3D spice-core.o spice-input.o spice-display.o -common-obj-$(CONFIG_SDL) +=3D sdl.mo x_keymap.o +common-obj-$(CONFIG_SDL) +=3D sdl.mo common-obj-$(CONFIG_COCOA) +=3D cocoa.o common-obj-$(CONFIG_CURSES) +=3D curses.o common-obj-$(CONFIG_VNC) +=3D $(vnc-obj-y) -common-obj-$(CONFIG_GTK) +=3D gtk.o x_keymap.o +common-obj-$(CONFIG_GTK) +=3D gtk.o +common-obj-$(if $(CONFIG_WIN32),n,$(if $(CONFIG_SDL),y,$(CONFIG_GTK))) += =3D x_keymap.o =20 ifeq ($(CONFIG_SDLABI),1.2) sdl.mo-objs :=3D sdl.o sdl_zoom.o @@ -54,6 +55,7 @@ KEYCODEMAP_GEN =3D $(SRC_PATH)/ui/keycodemapdb/tools/keym= ap-gen KEYCODEMAP_CSV =3D $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv =20 KEYCODEMAP_FILES =3D \ + ui/input-keymap-atset1-to-qcode.c \ ui/input-keymap-linux-to-qcode.c \ ui/input-keymap-osx-to-qcode.c \ ui/input-keymap-qcode-to-adb.c \ @@ -65,6 +67,12 @@ KEYCODEMAP_FILES =3D \ ui/input-keymap-qcode-to-sun.c \ ui/input-keymap-qnum-to-qcode.c \ ui/input-keymap-usb-to-qcode.c \ + ui/input-keymap-win32-to-qcode.c \ + ui/input-keymap-x11-to-qcode.c \ + ui/input-keymap-xorgevdev-to-qcode.c \ + ui/input-keymap-xorgkbd-to-qcode.c \ + ui/input-keymap-xorgxquartz-to-qcode.c \ + ui/input-keymap-xorgxwin-to-qcode.c \ $(NULL) =20 # Generated input-keymap-XXX.c files are kept in GIT, so diff --git a/ui/gtk.c b/ui/gtk.c index 5bd87c265a..398f3aad81 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -52,7 +52,6 @@ #include "ui/input.h" #include "sysemu/sysemu.h" #include "qmp-commands.h" -#include "x_keymap.h" #include "keymaps.h" #include "chardev/char.h" #include "qom/object.h" @@ -65,6 +64,48 @@ #define VC_SCALE_MIN 0.25 #define VC_SCALE_STEP 0.25 =20 +#ifdef GDK_WINDOWING_X11 +#include "ui/x_keymap.h" + +/* Gtk2 compat */ +#ifndef GDK_IS_X11_DISPLAY +#define GDK_IS_X11_DISPLAY(dpy) (dpy !=3D NULL) +#endif +#endif + + +#ifdef GDK_WINDOWING_WAYLAND +/* Gtk2 compat */ +#ifndef GDK_IS_WAYLAND_DISPLAY +#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy !=3D NULL) +#endif +#endif + + +#ifdef GDK_WINDOWING_WIN32 +/* Gtk2 compat */ +#ifndef GDK_IS_WIN32_DISPLAY +#define GDK_IS_WIN32_DISPLAY(dpy) (dpy !=3D NULL) +#endif +#endif + + +#ifdef GDK_WINDOWING_BROADWAY +/* Gtk2 compat */ +#ifndef GDK_IS_BROADWAY_DISPLAY +#define GDK_IS_BROADWAY_DISPLAY(dpy) (dpy !=3D NULL) +#endif +#endif + + +#ifdef GDK_WINDOWING_QUARTZ +/* Gtk2 compat */ +#ifndef GDK_IS_QUARTZ_DISPLAY +#define GDK_IS_QUARTZ_DISPLAY(dpy) (dpy !=3D NULL) +#endif +#endif + + #if !defined(CONFIG_VTE) # define VTE_CHECK_VERSION(a, b, c) 0 #endif @@ -123,10 +164,19 @@ #define HOTKEY_MODIFIERS (GDK_CONTROL_MASK | GDK_MOD1_MASK) =20 static const int modifier_keycode[] =3D { - /* shift, control, alt keys, meta keys, both left & right */ - 0x2a, 0x36, 0x1d, 0x9d, 0x38, 0xb8, 0xdb, 0xdd, + Q_KEY_CODE_SHIFT, + Q_KEY_CODE_SHIFT_R, + Q_KEY_CODE_CTRL, + Q_KEY_CODE_CTRL_R, + Q_KEY_CODE_ALT, + Q_KEY_CODE_ALT_R, + Q_KEY_CODE_META_L, + Q_KEY_CODE_META_R, }; =20 +static const guint16 *keycode_map; +static size_t keycode_maplen; + struct GtkDisplayState { GtkWidget *window; =20 @@ -178,7 +228,6 @@ struct GtkDisplayState { bool external_pause_update; =20 bool modifier_pressed[ARRAY_SIZE(modifier_keycode)]; - bool has_evdev; bool ignore_keys; }; =20 @@ -412,18 +461,18 @@ static void gd_update_full_redraw(VirtualConsole *vc) static void gtk_release_modifiers(GtkDisplayState *s) { VirtualConsole *vc =3D gd_vc_find_current(s); - int i, keycode; + int i, qcode; =20 if (vc->type !=3D GD_VC_GFX || !qemu_console_is_graphic(vc->gfx.dcl.con)) { return; } for (i =3D 0; i < ARRAY_SIZE(modifier_keycode); i++) { - keycode =3D modifier_keycode[i]; + qcode =3D modifier_keycode[i]; if (!s->modifier_pressed[i]) { continue; } - qemu_input_event_send_key_number(vc->gfx.dcl.con, keycode, false); + qemu_input_event_send_key_qcode(vc->gfx.dcl.con, qcode, false); s->modifier_pressed[i] =3D false; } } @@ -1057,47 +1106,75 @@ static gboolean gd_scroll_event(GtkWidget *widget, = GdkEventScroll *scroll, return TRUE; } =20 -static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_key= code) + +static const guint16 *gd_get_keymap(size_t *maplen) { - int qemu_keycode; + GdkDisplay *dpy =3D gdk_display_get_default(); + +#ifdef GDK_WINDOWING_X11 + if (GDK_IS_X11_DISPLAY(dpy)) { + trace_gd_keymap_windowing("x11"); + return qemu_xkeymap_mapping_table( + gdk_x11_display_get_xdisplay(dpy), maplen); + } +#endif + +#ifdef GDK_WINDOWING_WAYLAND + if (GDK_IS_WAYLAND_DISPLAY(dpy)) { + trace_gd_keymap_windowing("wayland"); + *maplen =3D qemu_input_map_xorgevdev_to_qcode_len; + return qemu_input_map_xorgevdev_to_qcode; + } +#endif =20 #ifdef GDK_WINDOWING_WIN32 if (GDK_IS_WIN32_DISPLAY(dpy)) { - qemu_keycode =3D MapVirtualKey(gdk_keycode, MAPVK_VK_TO_VSC); - switch (qemu_keycode) { - case 103: /* alt gr */ - qemu_keycode =3D 56 | SCANCODE_GREY; - break; - } - return qemu_keycode; + trace_gd_keymap_windowing("win32"); + *maplen =3D qemu_input_map_win32_to_qcode_len; + return qemu_input_map_win32_to_qcode; } #endif =20 - if (gdk_keycode < 9) { - qemu_keycode =3D 0; - } else if (gdk_keycode < 97) { - qemu_keycode =3D gdk_keycode - 8; -#ifdef GDK_WINDOWING_X11 - } else if (GDK_IS_X11_DISPLAY(dpy) && gdk_keycode < 158) { - if (s->has_evdev) { - qemu_keycode =3D translate_evdev_keycode(gdk_keycode - 97); - } else { - qemu_keycode =3D translate_xfree86_keycode(gdk_keycode - 97); - } +#ifdef GDK_WINDOWING_QUARTZ + if (GDK_IS_QUARTZ_DISPLAY(dpy)) { + trace_gd_keymap_windowing("quartz"); + *maplen =3D qemu_input_map_osx_to_qcode_len; + return qemu_input_map_osx_to_qcode; + } #endif -#ifdef GDK_WINDOWING_WAYLAND - } else if (GDK_IS_WAYLAND_DISPLAY(dpy) && gdk_keycode < 158) { - qemu_keycode =3D translate_evdev_keycode(gdk_keycode - 97); + +#ifdef GDK_WINDOWING_BROADWAY + if (GDK_IS_BROADWAY_DISPLAY(dpy)) { + trace_gd_keymap_windowing("broadway"); + g_warning("experimental: using broadway, x11 virtual keysym\n" + "mapping - with very limited support. See also\n" + "https://bugzilla.gnome.org/show_bug.cgi?id=3D700105"); + *maplen =3D qemu_input_map_x11_to_qcode_len; + return qemu_input_map_x11_to_qcode; + } #endif - } else if (gdk_keycode =3D=3D 208) { /* Hiragana_Katakana */ - qemu_keycode =3D 0x70; - } else if (gdk_keycode =3D=3D 211) { /* backslash */ - qemu_keycode =3D 0x73; - } else { - qemu_keycode =3D 0; + + g_warning("Unsupported GDK Windowing platform.\n" + "Disabling extended keycode tables.\n" + "Please report to qemu-devel@nongnu.org\n" + "including the following information:\n" + "\n" + " - Operating system\n" + " - GDK Windowing system build\n"); + return NULL; +} + + +static int gd_map_keycode(int scancode) +{ + if (!keycode_map) { + return 0; + } + if (scancode > keycode_maplen) { + return 0; } =20 - return qemu_keycode; + return keycode_map[scancode]; } =20 static gboolean gd_text_key_down(GtkWidget *widget, @@ -1111,9 +1188,7 @@ static gboolean gd_text_key_down(GtkWidget *widget, } else if (key->length) { kbd_put_string_console(con, key->string, key->length); } else { - int num =3D gd_map_keycode(vc->s, gtk_widget_get_display(widget), - key->hardware_keycode); - int qcode =3D qemu_input_key_number_to_qcode(num); + int qcode =3D gd_map_keycode(key->hardware_keycode); kbd_put_qcode_console(con, qcode); } return TRUE; @@ -1123,8 +1198,7 @@ static gboolean gd_key_event(GtkWidget *widget, GdkEv= entKey *key, void *opaque) { VirtualConsole *vc =3D opaque; GtkDisplayState *s =3D vc->s; - int gdk_keycode =3D key->hardware_keycode; - int qemu_keycode; + int qcode; int i; =20 if (s->ignore_keys) { @@ -1138,20 +1212,19 @@ static gboolean gd_key_event(GtkWidget *widget, Gdk= EventKey *key, void *opaque) return TRUE; } =20 - qemu_keycode =3D gd_map_keycode(s, gtk_widget_get_display(widget), - gdk_keycode); + qcode =3D gd_map_keycode(key->hardware_keycode); =20 - trace_gd_key_event(vc->label, gdk_keycode, qemu_keycode, + trace_gd_key_event(vc->label, key->hardware_keycode, qcode, (key->type =3D=3D GDK_KEY_PRESS) ? "down" : "up"); =20 for (i =3D 0; i < ARRAY_SIZE(modifier_keycode); i++) { - if (qemu_keycode =3D=3D modifier_keycode[i]) { + if (qcode =3D=3D modifier_keycode[i]) { s->modifier_pressed[i] =3D (key->type =3D=3D GDK_KEY_PRESS); } } =20 - qemu_input_event_send_key_number(vc->gfx.dcl.con, qemu_keycode, - key->type =3D=3D GDK_KEY_PRESS); + qemu_input_event_send_key_qcode(vc->gfx.dcl.con, qcode, + key->type =3D=3D GDK_KEY_PRESS); =20 return TRUE; } @@ -2195,38 +2268,6 @@ static void gd_create_menus(GtkDisplayState *s) gtk_window_add_accel_group(GTK_WINDOW(s->window), s->accel_group); } =20 -static void gd_set_keycode_type(GtkDisplayState *s) -{ -#ifdef GDK_WINDOWING_X11 - GdkDisplay *display =3D gtk_widget_get_display(s->window); - if (GDK_IS_X11_DISPLAY(display)) { - Display *x11_display =3D gdk_x11_display_get_xdisplay(display); - XkbDescPtr desc =3D XkbGetMap(x11_display, XkbGBN_AllComponentsMas= k, - XkbUseCoreKbd); - char *keycodes =3D NULL; - - if (desc && - (XkbGetNames(x11_display, XkbKeycodesNameMask, desc) =3D=3D Su= ccess)) { - keycodes =3D XGetAtomName(x11_display, desc->names->keycodes); - } - if (keycodes =3D=3D NULL) { - fprintf(stderr, "could not lookup keycode name\n"); - } else if (strstart(keycodes, "evdev", NULL)) { - s->has_evdev =3D true; - } else if (!strstart(keycodes, "xfree86", NULL)) { - fprintf(stderr, "unknown keycodes `%s', please report to " - "qemu-devel@nongnu.org\n", keycodes); - } - - if (desc) { - XkbFreeKeyboard(desc, XkbGBN_AllComponentsMask, True); - } - if (keycodes) { - XFree(keycodes); - } - } -#endif -} =20 static gboolean gtkinit; =20 @@ -2329,8 +2370,6 @@ void gtk_display_init(DisplayState *ds, bool full_scr= een, bool grab_on_hover) if (grab_on_hover) { gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item)); } - - gd_set_keycode_type(s); } =20 void early_gtk_display_init(int opengl) @@ -2377,6 +2416,8 @@ void early_gtk_display_init(int opengl) break; } =20 + keycode_map =3D gd_get_keymap(&keycode_maplen); + #if defined(CONFIG_VTE) type_register(&char_gd_vc_type_info); #endif diff --git a/ui/input-keymap-atset1-to-qcode.c b/ui/input-keymap-atset1-to-= qcode.c new file mode 100644 index 0000000000..7882724e36 --- /dev/null +++ b/ui/input-keymap-atset1-to-qcode.c @@ -0,0 +1,245 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_atset1_to_qcode = code-map keymaps.csv atset1 qcode +*/ +const guint16 qemu_input_map_atset1_to_qcode[57470] =3D { + [0x1] =3D Q_KEY_CODE_ESC, /* atset1:1 -> linux:1 (KEY_ESC) -> qcode:Q_KE= Y_CODE_ESC (esc) */ + [0x2] =3D Q_KEY_CODE_1, /* atset1:2 -> linux:2 (KEY_1) -> qcode:Q_KEY_CO= DE_1 (1) */ + [0x3] =3D Q_KEY_CODE_2, /* atset1:3 -> linux:3 (KEY_2) -> qcode:Q_KEY_CO= DE_2 (2) */ + [0x4] =3D Q_KEY_CODE_3, /* atset1:4 -> linux:4 (KEY_3) -> qcode:Q_KEY_CO= DE_3 (3) */ + [0x5] =3D Q_KEY_CODE_4, /* atset1:5 -> linux:5 (KEY_4) -> qcode:Q_KEY_CO= DE_4 (4) */ + [0x6] =3D Q_KEY_CODE_5, /* atset1:6 -> linux:6 (KEY_5) -> qcode:Q_KEY_CO= DE_5 (5) */ + [0x7] =3D Q_KEY_CODE_6, /* atset1:7 -> linux:7 (KEY_6) -> qcode:Q_KEY_CO= DE_6 (6) */ + [0x8] =3D Q_KEY_CODE_7, /* atset1:8 -> linux:8 (KEY_7) -> qcode:Q_KEY_CO= DE_7 (7) */ + [0x9] =3D Q_KEY_CODE_8, /* atset1:9 -> linux:9 (KEY_8) -> qcode:Q_KEY_CO= DE_8 (8) */ + [0xa] =3D Q_KEY_CODE_9, /* atset1:10 -> linux:10 (KEY_9) -> qcode:Q_KEY_= CODE_9 (9) */ + [0xb] =3D Q_KEY_CODE_0, /* atset1:11 -> linux:11 (KEY_0) -> qcode:Q_KEY_= CODE_0 (0) */ + [0xc] =3D Q_KEY_CODE_MINUS, /* atset1:12 -> linux:12 (KEY_MINUS) -> qcod= e:Q_KEY_CODE_MINUS (minus) */ + [0xd] =3D Q_KEY_CODE_EQUAL, /* atset1:13 -> linux:13 (KEY_EQUAL) -> qcod= e:Q_KEY_CODE_EQUAL (equal) */ + [0xe] =3D Q_KEY_CODE_BACKSPACE, /* atset1:14 -> linux:14 (KEY_BACKSPACE)= -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0xf] =3D Q_KEY_CODE_TAB, /* atset1:15 -> linux:15 (KEY_TAB) -> qcode:Q_= KEY_CODE_TAB (tab) */ + [0x10] =3D Q_KEY_CODE_Q, /* atset1:16 -> linux:16 (KEY_Q) -> qcode:Q_KEY= _CODE_Q (q) */ + [0x11] =3D Q_KEY_CODE_W, /* atset1:17 -> linux:17 (KEY_W) -> qcode:Q_KEY= _CODE_W (w) */ + [0x12] =3D Q_KEY_CODE_E, /* atset1:18 -> linux:18 (KEY_E) -> qcode:Q_KEY= _CODE_E (e) */ + [0x13] =3D Q_KEY_CODE_R, /* atset1:19 -> linux:19 (KEY_R) -> qcode:Q_KEY= _CODE_R (r) */ + [0x14] =3D Q_KEY_CODE_T, /* atset1:20 -> linux:20 (KEY_T) -> qcode:Q_KEY= _CODE_T (t) */ + [0x15] =3D Q_KEY_CODE_Y, /* atset1:21 -> linux:21 (KEY_Y) -> qcode:Q_KEY= _CODE_Y (y) */ + [0x16] =3D Q_KEY_CODE_U, /* atset1:22 -> linux:22 (KEY_U) -> qcode:Q_KEY= _CODE_U (u) */ + [0x17] =3D Q_KEY_CODE_I, /* atset1:23 -> linux:23 (KEY_I) -> qcode:Q_KEY= _CODE_I (i) */ + [0x18] =3D Q_KEY_CODE_O, /* atset1:24 -> linux:24 (KEY_O) -> qcode:Q_KEY= _CODE_O (o) */ + [0x19] =3D Q_KEY_CODE_P, /* atset1:25 -> linux:25 (KEY_P) -> qcode:Q_KEY= _CODE_P (p) */ + [0x1a] =3D Q_KEY_CODE_BRACKET_LEFT, /* atset1:26 -> linux:26 (KEY_LEFTBR= ACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x1b] =3D Q_KEY_CODE_BRACKET_RIGHT, /* atset1:27 -> linux:27 (KEY_RIGHT= BRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x1c] =3D Q_KEY_CODE_RET, /* atset1:28 -> linux:28 (KEY_ENTER) -> qcode= :Q_KEY_CODE_RET (ret) */ + [0x1d] =3D Q_KEY_CODE_CTRL, /* atset1:29 -> linux:29 (KEY_LEFTCTRL) -> q= code:Q_KEY_CODE_CTRL (ctrl) */ + [0x1e] =3D Q_KEY_CODE_A, /* atset1:30 -> linux:30 (KEY_A) -> qcode:Q_KEY= _CODE_A (a) */ + [0x1f] =3D Q_KEY_CODE_S, /* atset1:31 -> linux:31 (KEY_S) -> qcode:Q_KEY= _CODE_S (s) */ + [0x20] =3D Q_KEY_CODE_D, /* atset1:32 -> linux:32 (KEY_D) -> qcode:Q_KEY= _CODE_D (d) */ + [0x21] =3D Q_KEY_CODE_F, /* atset1:33 -> linux:33 (KEY_F) -> qcode:Q_KEY= _CODE_F (f) */ + [0x22] =3D Q_KEY_CODE_G, /* atset1:34 -> linux:34 (KEY_G) -> qcode:Q_KEY= _CODE_G (g) */ + [0x23] =3D Q_KEY_CODE_H, /* atset1:35 -> linux:35 (KEY_H) -> qcode:Q_KEY= _CODE_H (h) */ + [0x24] =3D Q_KEY_CODE_J, /* atset1:36 -> linux:36 (KEY_J) -> qcode:Q_KEY= _CODE_J (j) */ + [0x25] =3D Q_KEY_CODE_K, /* atset1:37 -> linux:37 (KEY_K) -> qcode:Q_KEY= _CODE_K (k) */ + [0x26] =3D Q_KEY_CODE_L, /* atset1:38 -> linux:38 (KEY_L) -> qcode:Q_KEY= _CODE_L (l) */ + [0x27] =3D Q_KEY_CODE_SEMICOLON, /* atset1:39 -> linux:39 (KEY_SEMICOLON= ) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x28] =3D Q_KEY_CODE_APOSTROPHE, /* atset1:40 -> linux:40 (KEY_APOSTROP= HE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x29] =3D Q_KEY_CODE_GRAVE_ACCENT, /* atset1:41 -> linux:41 (KEY_GRAVE)= -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x2a] =3D Q_KEY_CODE_SHIFT, /* atset1:42 -> linux:42 (KEY_LEFTSHIFT) ->= qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x2b] =3D Q_KEY_CODE_BACKSLASH, /* atset1:43 -> linux:43 (KEY_BACKSLASH= ) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x2c] =3D Q_KEY_CODE_Z, /* atset1:44 -> linux:44 (KEY_Z) -> qcode:Q_KEY= _CODE_Z (z) */ + [0x2d] =3D Q_KEY_CODE_X, /* atset1:45 -> linux:45 (KEY_X) -> qcode:Q_KEY= _CODE_X (x) */ + [0x2e] =3D Q_KEY_CODE_C, /* atset1:46 -> linux:46 (KEY_C) -> qcode:Q_KEY= _CODE_C (c) */ + [0x2f] =3D Q_KEY_CODE_V, /* atset1:47 -> linux:47 (KEY_V) -> qcode:Q_KEY= _CODE_V (v) */ + [0x30] =3D Q_KEY_CODE_B, /* atset1:48 -> linux:48 (KEY_B) -> qcode:Q_KEY= _CODE_B (b) */ + [0x31] =3D Q_KEY_CODE_N, /* atset1:49 -> linux:49 (KEY_N) -> qcode:Q_KEY= _CODE_N (n) */ + [0x32] =3D Q_KEY_CODE_M, /* atset1:50 -> linux:50 (KEY_M) -> qcode:Q_KEY= _CODE_M (m) */ + [0x33] =3D Q_KEY_CODE_COMMA, /* atset1:51 -> linux:51 (KEY_COMMA) -> qco= de:Q_KEY_CODE_COMMA (comma) */ + [0x34] =3D Q_KEY_CODE_DOT, /* atset1:52 -> linux:52 (KEY_DOT) -> qcode:Q= _KEY_CODE_DOT (dot) */ + [0x35] =3D Q_KEY_CODE_SLASH, /* atset1:53 -> linux:53 (KEY_SLASH) -> qco= de:Q_KEY_CODE_SLASH (slash) */ + [0x36] =3D Q_KEY_CODE_SHIFT_R, /* atset1:54 -> linux:54 (KEY_RIGHTSHIFT)= -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x37] =3D Q_KEY_CODE_KP_MULTIPLY, /* atset1:55 -> linux:55 (KEY_KPASTER= ISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x38] =3D Q_KEY_CODE_ALT, /* atset1:56 -> linux:56 (KEY_LEFTALT) -> qco= de:Q_KEY_CODE_ALT (alt) */ + [0x39] =3D Q_KEY_CODE_SPC, /* atset1:57 -> linux:57 (KEY_SPACE) -> qcode= :Q_KEY_CODE_SPC (spc) */ + [0x3a] =3D Q_KEY_CODE_CAPS_LOCK, /* atset1:58 -> linux:58 (KEY_CAPSLOCK)= -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x3b] =3D Q_KEY_CODE_F1, /* atset1:59 -> linux:59 (KEY_F1) -> qcode:Q_K= EY_CODE_F1 (f1) */ + [0x3c] =3D Q_KEY_CODE_F2, /* atset1:60 -> linux:60 (KEY_F2) -> qcode:Q_K= EY_CODE_F2 (f2) */ + [0x3d] =3D Q_KEY_CODE_F3, /* atset1:61 -> linux:61 (KEY_F3) -> qcode:Q_K= EY_CODE_F3 (f3) */ + [0x3e] =3D Q_KEY_CODE_F4, /* atset1:62 -> linux:62 (KEY_F4) -> qcode:Q_K= EY_CODE_F4 (f4) */ + [0x3f] =3D Q_KEY_CODE_F5, /* atset1:63 -> linux:63 (KEY_F5) -> qcode:Q_K= EY_CODE_F5 (f5) */ + [0x40] =3D Q_KEY_CODE_F6, /* atset1:64 -> linux:64 (KEY_F6) -> qcode:Q_K= EY_CODE_F6 (f6) */ + [0x41] =3D Q_KEY_CODE_F7, /* atset1:65 -> linux:65 (KEY_F7) -> qcode:Q_K= EY_CODE_F7 (f7) */ + [0x42] =3D Q_KEY_CODE_F8, /* atset1:66 -> linux:66 (KEY_F8) -> qcode:Q_K= EY_CODE_F8 (f8) */ + [0x43] =3D Q_KEY_CODE_F9, /* atset1:67 -> linux:67 (KEY_F9) -> qcode:Q_K= EY_CODE_F9 (f9) */ + [0x44] =3D Q_KEY_CODE_F10, /* atset1:68 -> linux:68 (KEY_F10) -> qcode:Q= _KEY_CODE_F10 (f10) */ + [0x45] =3D Q_KEY_CODE_NUM_LOCK, /* atset1:69 -> linux:69 (KEY_NUMLOCK) -= > qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x46] =3D Q_KEY_CODE_SCROLL_LOCK, /* atset1:70 -> linux:70 (KEY_SCROLLL= OCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x47] =3D Q_KEY_CODE_KP_7, /* atset1:71 -> linux:71 (KEY_KP7) -> qcode:= Q_KEY_CODE_KP_7 (kp_7) */ + [0x48] =3D Q_KEY_CODE_KP_8, /* atset1:72 -> linux:72 (KEY_KP8) -> qcode:= Q_KEY_CODE_KP_8 (kp_8) */ + [0x49] =3D Q_KEY_CODE_KP_9, /* atset1:73 -> linux:73 (KEY_KP9) -> qcode:= Q_KEY_CODE_KP_9 (kp_9) */ + [0x4a] =3D Q_KEY_CODE_KP_SUBTRACT, /* atset1:74 -> linux:74 (KEY_KPMINUS= ) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x4b] =3D Q_KEY_CODE_KP_4, /* atset1:75 -> linux:75 (KEY_KP4) -> qcode:= Q_KEY_CODE_KP_4 (kp_4) */ + [0x4c] =3D Q_KEY_CODE_KP_5, /* atset1:76 -> linux:76 (KEY_KP5) -> qcode:= Q_KEY_CODE_KP_5 (kp_5) */ + [0x4d] =3D Q_KEY_CODE_KP_6, /* atset1:77 -> linux:77 (KEY_KP6) -> qcode:= Q_KEY_CODE_KP_6 (kp_6) */ + [0x4e] =3D Q_KEY_CODE_KP_ADD, /* atset1:78 -> linux:78 (KEY_KPPLUS) -> q= code:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x4f] =3D Q_KEY_CODE_KP_1, /* atset1:79 -> linux:79 (KEY_KP1) -> qcode:= Q_KEY_CODE_KP_1 (kp_1) */ + [0x50] =3D Q_KEY_CODE_KP_2, /* atset1:80 -> linux:80 (KEY_KP2) -> qcode:= Q_KEY_CODE_KP_2 (kp_2) */ + [0x51] =3D Q_KEY_CODE_KP_3, /* atset1:81 -> linux:81 (KEY_KP3) -> qcode:= Q_KEY_CODE_KP_3 (kp_3) */ + [0x52] =3D Q_KEY_CODE_KP_0, /* atset1:82 -> linux:82 (KEY_KP0) -> qcode:= Q_KEY_CODE_KP_0 (kp_0) */ + [0x53] =3D Q_KEY_CODE_KP_DECIMAL, /* atset1:83 -> linux:83 (KEY_KPDOT) -= > qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x54] =3D Q_KEY_CODE_SYSRQ, /* atset1:84 -> linux:99 (KEY_SYSRQ) -> qco= de:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x55] =3D Q_KEY_CODE_UNMAPPED, /* atset1:85 -> linux:186 (KEY_F16) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x56] =3D Q_KEY_CODE_LESS, /* atset1:86 -> linux:86 (KEY_102ND) -> qcod= e:Q_KEY_CODE_LESS (less) */ + [0x57] =3D Q_KEY_CODE_F11, /* atset1:87 -> linux:87 (KEY_F11) -> qcode:Q= _KEY_CODE_F11 (f11) */ + [0x58] =3D Q_KEY_CODE_F12, /* atset1:88 -> linux:88 (KEY_F12) -> qcode:Q= _KEY_CODE_F12 (f12) */ + [0x59] =3D Q_KEY_CODE_KP_EQUALS, /* atset1:89 -> linux:117 (KEY_KPEQUAL)= -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x5a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:90 -> linux:190 (KEY_F20) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5b] =3D Q_KEY_CODE_LF, /* atset1:91 -> linux:101 (KEY_LINEFEED) -> qc= ode:Q_KEY_CODE_LF (lf) */ + [0x5c] =3D Q_KEY_CODE_UNMAPPED, /* atset1:92 -> linux:95 (KEY_KPJPCOMMA)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:93 -> linux:183 (KEY_F13) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5e] =3D Q_KEY_CODE_UNMAPPED, /* atset1:94 -> linux:184 (KEY_F14) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:95 -> linux:185 (KEY_F15) -> q= code:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x63] =3D Q_KEY_CODE_UNMAPPED, /* atset1:99 -> linux:169 (KEY_PHONE) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x64] =3D Q_KEY_CODE_OPEN, /* atset1:100 -> linux:134 (KEY_OPEN) -> qco= de:Q_KEY_CODE_OPEN (open) */ + [0x65] =3D Q_KEY_CODE_PASTE, /* atset1:101 -> linux:135 (KEY_PASTE) -> q= code:Q_KEY_CODE_PASTE (paste) */ + [0x66] =3D Q_KEY_CODE_UNMAPPED, /* atset1:102 -> linux:141 (KEY_SETUP) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x67] =3D Q_KEY_CODE_UNMAPPED, /* atset1:103 -> linux:144 (KEY_FILE) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x68] =3D Q_KEY_CODE_UNMAPPED, /* atset1:104 -> linux:145 (KEY_SENDFILE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x69] =3D Q_KEY_CODE_UNMAPPED, /* atset1:105 -> linux:146 (KEY_DELETEFI= LE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:106 -> linux:151 (KEY_MSDOS) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:107 -> linux:153 (KEY_DIRECTIO= N) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6c] =3D Q_KEY_CODE_UNMAPPED, /* atset1:108 -> linux:161 (KEY_EJECTCD)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:109 -> linux:193 (KEY_F23) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:111 -> linux:194 (KEY_F24) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x70] =3D Q_KEY_CODE_UNMAPPED, /* atset1:112 -> linux:170 (KEY_ISO) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x71] =3D Q_KEY_CODE_UNMAPPED, /* atset1:113 -> linux:174 (KEY_EXIT) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x72] =3D Q_KEY_CODE_UNMAPPED, /* atset1:114 -> linux:175 (KEY_MOVE) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x73] =3D Q_KEY_CODE_RO, /* atset1:115 -> linux:89 (KEY_RO) -> qcode:Q_= KEY_CODE_RO (ro) */ + [0x74] =3D Q_KEY_CODE_UNMAPPED, /* atset1:116 -> linux:191 (KEY_F21) -> = qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x75] =3D Q_KEY_CODE_UNMAPPED, /* atset1:117 -> linux:177 (KEY_SCROLLUP= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x76] =3D Q_KEY_CODE_UNMAPPED, /* atset1:118 -> linux:85 (KEY_ZENKAKUHA= NKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x77] =3D Q_KEY_CODE_HIRAGANA, /* atset1:119 -> linux:91 (KEY_HIRAGANA)= -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* atset1:120 -> linux:90 (KEY_KATAKANA)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_HENKAN, /* atset1:121 -> linux:92 (KEY_HENKAN) -> = qcode:Q_KEY_CODE_HENKAN (henkan) */ + [0x7b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:123 -> linux:94 (KEY_MUHENKAN)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7d] =3D Q_KEY_CODE_YEN, /* atset1:125 -> linux:124 (KEY_YEN) -> qcode= :Q_KEY_CODE_YEN (yen) */ + [0x7e] =3D Q_KEY_CODE_KP_COMMA, /* atset1:126 -> linux:121 (KEY_KPCOMMA)= -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0xe001] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57345 -> linux:171 (KEY_CONF= IG) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe002] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57346 -> linux:150 (KEY_WWW)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe003] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57347 -> linux:187 (KEY_F17)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe004] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57348 -> linux:189 (KEY_F19)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe005] =3D Q_KEY_CODE_AGAIN, /* atset1:57349 -> linux:129 (KEY_AGAIN) = -> qcode:Q_KEY_CODE_AGAIN (again) */ + [0xe006] =3D Q_KEY_CODE_PROPS, /* atset1:57350 -> linux:130 (KEY_PROPS) = -> qcode:Q_KEY_CODE_PROPS (props) */ + [0xe007] =3D Q_KEY_CODE_UNDO, /* atset1:57351 -> linux:131 (KEY_UNDO) ->= qcode:Q_KEY_CODE_UNDO (undo) */ + [0xe008] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57352 -> linux:176 (KEY_EDIT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe009] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57353 -> linux:181 (KEY_NEW)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe00a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57354 -> linux:182 (KEY_REDO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe00b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57355 -> linux:120 (KEY_SCAL= E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe00c] =3D Q_KEY_CODE_FRONT, /* atset1:57356 -> linux:132 (KEY_FRONT) = -> qcode:Q_KEY_CODE_FRONT (front) */ + [0xe00d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57357 -> linux:123 (KEY_HANJ= A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe00e] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57358 -> linux:233 (KEY_FORW= ARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe00f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57359 -> linux:178 (KEY_SCRO= LLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe010] =3D Q_KEY_CODE_AUDIOPREV, /* atset1:57360 -> linux:165 (KEY_PRE= VIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0xe012] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57362 -> linux:152 (KEY_SCRE= ENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe013] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57363 -> linux:147 (KEY_XFER= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe014] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57364 -> linux:222 (KEY_ALTE= RASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe015] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57365 -> linux:195 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe016] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57366 -> linux:196 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe017] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57367 -> linux:149 (KEY_PROG= 2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe018] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57368 -> linux:168 (KEY_REWI= ND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe019] =3D Q_KEY_CODE_AUDIONEXT, /* atset1:57369 -> linux:163 (KEY_NEX= TSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0xe01a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57370 -> linux:197 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe01b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57371 -> linux:198 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe01c] =3D Q_KEY_CODE_KP_ENTER, /* atset1:57372 -> linux:96 (KEY_KPENT= ER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0xe01d] =3D Q_KEY_CODE_CTRL_R, /* atset1:57373 -> linux:97 (KEY_RIGHTCT= RL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0xe01e] =3D Q_KEY_CODE_MENU, /* atset1:57374 -> linux:139 (KEY_MENU) ->= qcode:Q_KEY_CODE_MENU (menu) */ + [0xe01f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57375 -> linux:148 (KEY_PROG= 1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe020] =3D Q_KEY_CODE_AUDIOMUTE, /* atset1:57376 -> linux:113 (KEY_MUT= E) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0xe021] =3D Q_KEY_CODE_CALCULATOR, /* atset1:57377 -> linux:140 (KEY_CA= LC) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */ + [0xe022] =3D Q_KEY_CODE_AUDIOPLAY, /* atset1:57378 -> linux:164 (KEY_PLA= YPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xe023] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57379 -> linux:160 (KEY_CLOS= ECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe024] =3D Q_KEY_CODE_AUDIOSTOP, /* atset1:57380 -> linux:166 (KEY_STO= PCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xe025] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57381 -> linux:205 (KEY_SUSP= END) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe026] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57382 -> linux:154 (KEY_CYCL= EWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe027] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57383 -> linux:199 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe028] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57384 -> linux:200 (KEY_PLAY= CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe029] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57385 -> linux:201 (KEY_PAUS= ECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe02b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57387 -> linux:202 (KEY_PROG= 3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe02c] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57388 -> linux:203 (KEY_PROG= 4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe02d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57389 -> linux:204 (KEY_DASH= BOARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe02e] =3D Q_KEY_CODE_VOLUMEDOWN, /* atset1:57390 -> linux:114 (KEY_VO= LUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0xe02f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57391 -> linux:206 (KEY_CLOS= E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe030] =3D Q_KEY_CODE_VOLUMEUP, /* atset1:57392 -> linux:115 (KEY_VOLU= MEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0xe031] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57393 -> linux:167 (KEY_RECO= RD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe032] =3D Q_KEY_CODE_AC_HOME, /* atset1:57394 -> linux:172 (KEY_HOMEP= AGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */ + [0xe033] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57395 -> linux:207 (KEY_PLAY= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe034] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57396 -> linux:208 (KEY_FAST= FORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe035] =3D Q_KEY_CODE_KP_DIVIDE, /* atset1:57397 -> linux:98 (KEY_KPSL= ASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0xe036] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57398 -> linux:209 (KEY_BASS= BOOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe038] =3D Q_KEY_CODE_ALT_R, /* atset1:57400 -> linux:100 (KEY_RIGHTAL= T) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0xe039] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57401 -> linux:210 (KEY_PRIN= T) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe03a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57402 -> linux:211 (KEY_HP) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe03b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57403 -> linux:212 (KEY_CAME= RA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe03c] =3D Q_KEY_CODE_CUT, /* atset1:57404 -> linux:137 (KEY_CUT) -> q= code:Q_KEY_CODE_CUT (cut) */ + [0xe03d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57405 -> linux:213 (KEY_SOUN= D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe03e] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57406 -> linux:214 (KEY_QUES= TION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe03f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57407 -> linux:215 (KEY_EMAI= L) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe040] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57408 -> linux:216 (KEY_CHAT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe041] =3D Q_KEY_CODE_FIND, /* atset1:57409 -> linux:136 (KEY_FIND) ->= qcode:Q_KEY_CODE_FIND (find) */ + [0xe042] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57410 -> linux:218 (KEY_CONN= ECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe043] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57411 -> linux:219 (KEY_FINA= NCE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe044] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57412 -> linux:220 (KEY_SPOR= T) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe045] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57413 -> linux:221 (KEY_SHOP= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe046] =3D Q_KEY_CODE_PAUSE, /* atset1:57414 -> linux:119 (KEY_PAUSE) = -> qcode:Q_KEY_CODE_PAUSE (pause) */ + [0xe047] =3D Q_KEY_CODE_HOME, /* atset1:57415 -> linux:102 (KEY_HOME) ->= qcode:Q_KEY_CODE_HOME (home) */ + [0xe048] =3D Q_KEY_CODE_UP, /* atset1:57416 -> linux:103 (KEY_UP) -> qco= de:Q_KEY_CODE_UP (up) */ + [0xe049] =3D Q_KEY_CODE_PGUP, /* atset1:57417 -> linux:104 (KEY_PAGEUP) = -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0xe04a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57418 -> linux:223 (KEY_CANC= EL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe04b] =3D Q_KEY_CODE_LEFT, /* atset1:57419 -> linux:105 (KEY_LEFT) ->= qcode:Q_KEY_CODE_LEFT (left) */ + [0xe04c] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57420 -> linux:224 (KEY_BRIG= HTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe04d] =3D Q_KEY_CODE_RIGHT, /* atset1:57421 -> linux:106 (KEY_RIGHT) = -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0xe04e] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57422 -> linux:118 (KEY_KPPL= USMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe04f] =3D Q_KEY_CODE_END, /* atset1:57423 -> linux:107 (KEY_END) -> q= code:Q_KEY_CODE_END (end) */ + [0xe050] =3D Q_KEY_CODE_DOWN, /* atset1:57424 -> linux:108 (KEY_DOWN) ->= qcode:Q_KEY_CODE_DOWN (down) */ + [0xe051] =3D Q_KEY_CODE_PGDN, /* atset1:57425 -> linux:109 (KEY_PAGEDOWN= ) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0xe052] =3D Q_KEY_CODE_INSERT, /* atset1:57426 -> linux:110 (KEY_INSERT= ) -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0xe053] =3D Q_KEY_CODE_DELETE, /* atset1:57427 -> linux:111 (KEY_DELETE= ) -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0xe054] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57428 -> linux:225 (KEY_BRIG= HTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe055] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57429 -> linux:234 (KEY_SAVE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe056] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57430 -> linux:227 (KEY_SWIT= CHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe057] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57431 -> linux:228 (KEY_KBDI= LLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe058] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57432 -> linux:229 (KEY_KBDI= LLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe059] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57433 -> linux:230 (KEY_KBDI= LLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe05a] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57434 -> linux:231 (KEY_SEND= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe05b] =3D Q_KEY_CODE_META_L, /* atset1:57435 -> linux:125 (KEY_LEFTME= TA) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0xe05c] =3D Q_KEY_CODE_META_R, /* atset1:57436 -> linux:126 (KEY_RIGHTM= ETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0xe05d] =3D Q_KEY_CODE_COMPOSE, /* atset1:57437 -> linux:127 (KEY_COMPO= SE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0xe05e] =3D Q_KEY_CODE_POWER, /* atset1:57438 -> linux:116 (KEY_POWER) = -> qcode:Q_KEY_CODE_POWER (power) */ + [0xe05f] =3D Q_KEY_CODE_SLEEP, /* atset1:57439 -> linux:142 (KEY_SLEEP) = -> qcode:Q_KEY_CODE_SLEEP (sleep) */ + [0xe063] =3D Q_KEY_CODE_WAKE, /* atset1:57443 -> linux:143 (KEY_WAKEUP) = -> qcode:Q_KEY_CODE_WAKE (wake) */ + [0xe064] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57444 -> linux:232 (KEY_REPL= Y) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe065] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57445 -> linux:217 (KEY_SEAR= CH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe066] =3D Q_KEY_CODE_AC_BOOKMARKS, /* atset1:57446 -> linux:156 (KEY_= BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */ + [0xe067] =3D Q_KEY_CODE_AC_REFRESH, /* atset1:57447 -> linux:173 (KEY_RE= FRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xe068] =3D Q_KEY_CODE_STOP, /* atset1:57448 -> linux:128 (KEY_STOP) ->= qcode:Q_KEY_CODE_STOP (stop) */ + [0xe069] =3D Q_KEY_CODE_AC_FORWARD, /* atset1:57449 -> linux:159 (KEY_FO= RWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xe06a] =3D Q_KEY_CODE_AC_BACK, /* atset1:57450 -> linux:158 (KEY_BACK)= -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */ + [0xe06b] =3D Q_KEY_CODE_COMPUTER, /* atset1:57451 -> linux:157 (KEY_COMP= UTER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */ + [0xe06c] =3D Q_KEY_CODE_MAIL, /* atset1:57452 -> linux:155 (KEY_MAIL) ->= qcode:Q_KEY_CODE_MAIL (mail) */ + [0xe06d] =3D Q_KEY_CODE_MEDIASELECT, /* atset1:57453 -> linux:226 (KEY_M= EDIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */ + [0xe06f] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57455 -> linux:112 (KEY_MACR= O) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe070] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57456 -> linux:235 (KEY_DOCU= MENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe071] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57457 -> linux:236 (KEY_BATT= ERY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe072] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57458 -> linux:237 (KEY_BLUE= TOOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe073] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57459 -> linux:238 (KEY_WLAN= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe074] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57460 -> linux:239 (KEY_UWB)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe075] =3D Q_KEY_CODE_HELP, /* atset1:57461 -> linux:138 (KEY_HELP) ->= qcode:Q_KEY_CODE_HELP (help) */ + [0xe076] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57462 -> linux:179 (KEY_KPLE= FTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe077] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57463 -> linux:188 (KEY_F18)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe078] =3D Q_KEY_CODE_COPY, /* atset1:57464 -> linux:133 (KEY_COPY) ->= qcode:Q_KEY_CODE_COPY (copy) */ + [0xe079] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57465 -> linux:192 (KEY_F22)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe07b] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57467 -> linux:180 (KEY_KPRI= GHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe07d] =3D Q_KEY_CODE_UNMAPPED, /* atset1:57469 -> linux:162 (KEY_EJEC= TCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_atset1_to_qcode_len =3D sizeof(qemu_input_map_a= tset1_to_qcode)/sizeof(qemu_input_map_atset1_to_qcode[0]); diff --git a/ui/input-keymap-win32-to-qcode.c b/ui/input-keymap-win32-to-qc= ode.c new file mode 100644 index 0000000000..c05dfb9106 --- /dev/null +++ b/ui/input-keymap-win32-to-qcode.c @@ -0,0 +1,157 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_win32_to_qcode c= ode-map keymaps.csv win32 qcode +*/ +const guint16 qemu_input_map_win32_to_qcode[252] =3D { + [0x1] =3D Q_KEY_CODE_UNMAPPED, /* win32:1 (VK_LBUTTON) -> linux:256 (BTN= _0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x2] =3D Q_KEY_CODE_UNMAPPED, /* win32:2 (VK_RBUTTON) -> linux:257 (BTN= _1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x4] =3D Q_KEY_CODE_UNMAPPED, /* win32:4 (VK_MBUTTON) -> linux:258 (BTN= _2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5] =3D Q_KEY_CODE_UNMAPPED, /* win32:5 (VK_XBUTTON1) -> linux:259 (BT= N_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x6] =3D Q_KEY_CODE_UNMAPPED, /* win32:6 (VK_XBUTTON2) -> linux:260 (BT= N_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x8] =3D Q_KEY_CODE_BACKSPACE, /* win32:8 (VK_BACK) -> linux:14 (KEY_BA= CKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x9] =3D Q_KEY_CODE_TAB, /* win32:9 (VK_TAB) -> linux:15 (KEY_TAB) -> q= code:Q_KEY_CODE_TAB (tab) */ + [0xd] =3D Q_KEY_CODE_RET, /* win32:13 (VK_RETURN) -> linux:28 (KEY_ENTER= ) -> qcode:Q_KEY_CODE_RET (ret) */ + [0x10] =3D Q_KEY_CODE_SHIFT, /* win32:16 (VK_LSHIFT) -> linux:42 (KEY_LE= FTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x11] =3D Q_KEY_CODE_CTRL, /* win32:17 (VK_CONTROL) -> linux:29 (KEY_LE= FTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x12] =3D Q_KEY_CODE_ALT, /* win32:18 (VK_MENU) -> linux:56 (KEY_LEFTAL= T) -> qcode:Q_KEY_CODE_ALT (alt) */ + [0x13] =3D Q_KEY_CODE_PAUSE, /* win32:19 (VK_PAUSE) -> linux:119 (KEY_PA= USE) -> qcode:Q_KEY_CODE_PAUSE (pause) */ + [0x14] =3D Q_KEY_CODE_CAPS_LOCK, /* win32:20 (VK_CAPITAL) -> linux:58 (K= EY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x15] =3D Q_KEY_CODE_UNMAPPED, /* win32:21 (VK_HANGEUL) -> linux:122 (K= EY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19] =3D Q_KEY_CODE_UNMAPPED, /* win32:25 (VK_HANJA) -> linux:123 (KEY= _HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b] =3D Q_KEY_CODE_ESC, /* win32:27 (VK_ESCAPE) -> linux:1 (KEY_ESC) = -> qcode:Q_KEY_CODE_ESC (esc) */ + [0x20] =3D Q_KEY_CODE_SPC, /* win32:32 (VK_SPACE) -> linux:57 (KEY_SPACE= ) -> qcode:Q_KEY_CODE_SPC (spc) */ + [0x21] =3D Q_KEY_CODE_PGUP, /* win32:33 (VK_PRIOR) -> linux:104 (KEY_PAG= EUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x22] =3D Q_KEY_CODE_PGDN, /* win32:34 (VK_NEXT) -> linux:109 (KEY_PAGE= DOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x23] =3D Q_KEY_CODE_END, /* win32:35 (VK_END) -> linux:107 (KEY_END) -= > qcode:Q_KEY_CODE_END (end) */ + [0x24] =3D Q_KEY_CODE_HOME, /* win32:36 (VK_HOME) -> linux:102 (KEY_HOME= ) -> qcode:Q_KEY_CODE_HOME (home) */ + [0x25] =3D Q_KEY_CODE_LEFT, /* win32:37 (VK_LEFT) -> linux:105 (KEY_LEFT= ) -> qcode:Q_KEY_CODE_LEFT (left) */ + [0x26] =3D Q_KEY_CODE_UP, /* win32:38 (VK_UP) -> linux:103 (KEY_UP) -> q= code:Q_KEY_CODE_UP (up) */ + [0x27] =3D Q_KEY_CODE_RIGHT, /* win32:39 (VK_RIGHT) -> linux:106 (KEY_RI= GHT) -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0x28] =3D Q_KEY_CODE_DOWN, /* win32:40 (VK_DOWN) -> linux:108 (KEY_DOWN= ) -> qcode:Q_KEY_CODE_DOWN (down) */ + [0x29] =3D Q_KEY_CODE_UNMAPPED, /* win32:41 (VK_SELECT) -> linux:353 (KE= Y_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x2a] =3D Q_KEY_CODE_UNMAPPED, /* win32:42 (VK_PRINT) -> linux:210 (KEY= _PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x2c] =3D Q_KEY_CODE_SYSRQ, /* win32:44 (VK_SNAPSHOT) -> linux:99 (KEY_= SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x2d] =3D Q_KEY_CODE_INSERT, /* win32:45 (VK_INSERT) -> linux:110 (KEY_= INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0x2e] =3D Q_KEY_CODE_DELETE, /* win32:46 (VK_DELETE) -> linux:111 (KEY_= DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x2f] =3D Q_KEY_CODE_HELP, /* win32:47 (VK_HELP) -> linux:138 (KEY_HELP= ) -> qcode:Q_KEY_CODE_HELP (help) */ + [0x30] =3D Q_KEY_CODE_0, /* win32:48 (VK_0) -> linux:11 (KEY_0) -> qcode= :Q_KEY_CODE_0 (0) */ + [0x31] =3D Q_KEY_CODE_1, /* win32:49 (VK_1) -> linux:2 (KEY_1) -> qcode:= Q_KEY_CODE_1 (1) */ + [0x32] =3D Q_KEY_CODE_2, /* win32:50 (VK_2) -> linux:3 (KEY_2) -> qcode:= Q_KEY_CODE_2 (2) */ + [0x33] =3D Q_KEY_CODE_3, /* win32:51 (VK_3) -> linux:4 (KEY_3) -> qcode:= Q_KEY_CODE_3 (3) */ + [0x34] =3D Q_KEY_CODE_4, /* win32:52 (VK_4) -> linux:5 (KEY_4) -> qcode:= Q_KEY_CODE_4 (4) */ + [0x35] =3D Q_KEY_CODE_5, /* win32:53 (VK_5) -> linux:6 (KEY_5) -> qcode:= Q_KEY_CODE_5 (5) */ + [0x36] =3D Q_KEY_CODE_6, /* win32:54 (VK_6) -> linux:7 (KEY_6) -> qcode:= Q_KEY_CODE_6 (6) */ + [0x37] =3D Q_KEY_CODE_7, /* win32:55 (VK_7) -> linux:8 (KEY_7) -> qcode:= Q_KEY_CODE_7 (7) */ + [0x38] =3D Q_KEY_CODE_8, /* win32:56 (VK_8) -> linux:9 (KEY_8) -> qcode:= Q_KEY_CODE_8 (8) */ + [0x39] =3D Q_KEY_CODE_9, /* win32:57 (VK_9) -> linux:10 (KEY_9) -> qcode= :Q_KEY_CODE_9 (9) */ + [0x41] =3D Q_KEY_CODE_A, /* win32:65 (VK_A) -> linux:30 (KEY_A) -> qcode= :Q_KEY_CODE_A (a) */ + [0x42] =3D Q_KEY_CODE_B, /* win32:66 (VK_B) -> linux:48 (KEY_B) -> qcode= :Q_KEY_CODE_B (b) */ + [0x43] =3D Q_KEY_CODE_C, /* win32:67 (VK_C) -> linux:46 (KEY_C) -> qcode= :Q_KEY_CODE_C (c) */ + [0x44] =3D Q_KEY_CODE_D, /* win32:68 (VK_D) -> linux:32 (KEY_D) -> qcode= :Q_KEY_CODE_D (d) */ + [0x45] =3D Q_KEY_CODE_E, /* win32:69 (VK_E) -> linux:18 (KEY_E) -> qcode= :Q_KEY_CODE_E (e) */ + [0x46] =3D Q_KEY_CODE_F, /* win32:70 (VK_F) -> linux:33 (KEY_F) -> qcode= :Q_KEY_CODE_F (f) */ + [0x47] =3D Q_KEY_CODE_G, /* win32:71 (VK_G) -> linux:34 (KEY_G) -> qcode= :Q_KEY_CODE_G (g) */ + [0x48] =3D Q_KEY_CODE_H, /* win32:72 (VK_H) -> linux:35 (KEY_H) -> qcode= :Q_KEY_CODE_H (h) */ + [0x49] =3D Q_KEY_CODE_I, /* win32:73 (VK_I) -> linux:23 (KEY_I) -> qcode= :Q_KEY_CODE_I (i) */ + [0x4a] =3D Q_KEY_CODE_J, /* win32:74 (VK_J) -> linux:36 (KEY_J) -> qcode= :Q_KEY_CODE_J (j) */ + [0x4b] =3D Q_KEY_CODE_K, /* win32:75 (VK_K) -> linux:37 (KEY_K) -> qcode= :Q_KEY_CODE_K (k) */ + [0x4c] =3D Q_KEY_CODE_L, /* win32:76 (VK_L) -> linux:38 (KEY_L) -> qcode= :Q_KEY_CODE_L (l) */ + [0x4d] =3D Q_KEY_CODE_M, /* win32:77 (VK_M) -> linux:50 (KEY_M) -> qcode= :Q_KEY_CODE_M (m) */ + [0x4e] =3D Q_KEY_CODE_N, /* win32:78 (VK_N) -> linux:49 (KEY_N) -> qcode= :Q_KEY_CODE_N (n) */ + [0x4f] =3D Q_KEY_CODE_O, /* win32:79 (VK_O) -> linux:24 (KEY_O) -> qcode= :Q_KEY_CODE_O (o) */ + [0x50] =3D Q_KEY_CODE_P, /* win32:80 (VK_P) -> linux:25 (KEY_P) -> qcode= :Q_KEY_CODE_P (p) */ + [0x51] =3D Q_KEY_CODE_Q, /* win32:81 (VK_Q) -> linux:16 (KEY_Q) -> qcode= :Q_KEY_CODE_Q (q) */ + [0x52] =3D Q_KEY_CODE_R, /* win32:82 (VK_R) -> linux:19 (KEY_R) -> qcode= :Q_KEY_CODE_R (r) */ + [0x53] =3D Q_KEY_CODE_S, /* win32:83 (VK_S) -> linux:31 (KEY_S) -> qcode= :Q_KEY_CODE_S (s) */ + [0x54] =3D Q_KEY_CODE_T, /* win32:84 (VK_T) -> linux:20 (KEY_T) -> qcode= :Q_KEY_CODE_T (t) */ + [0x55] =3D Q_KEY_CODE_U, /* win32:85 (VK_U) -> linux:22 (KEY_U) -> qcode= :Q_KEY_CODE_U (u) */ + [0x56] =3D Q_KEY_CODE_V, /* win32:86 (VK_V) -> linux:47 (KEY_V) -> qcode= :Q_KEY_CODE_V (v) */ + [0x57] =3D Q_KEY_CODE_W, /* win32:87 (VK_W) -> linux:17 (KEY_W) -> qcode= :Q_KEY_CODE_W (w) */ + [0x58] =3D Q_KEY_CODE_X, /* win32:88 (VK_X) -> linux:45 (KEY_X) -> qcode= :Q_KEY_CODE_X (x) */ + [0x59] =3D Q_KEY_CODE_Y, /* win32:89 (VK_Y) -> linux:21 (KEY_Y) -> qcode= :Q_KEY_CODE_Y (y) */ + [0x5a] =3D Q_KEY_CODE_Z, /* win32:90 (VK_Z) -> linux:44 (KEY_Z) -> qcode= :Q_KEY_CODE_Z (z) */ + [0x5b] =3D Q_KEY_CODE_META_L, /* win32:91 (VK_LWIN) -> linux:125 (KEY_LE= FTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x5c] =3D Q_KEY_CODE_META_R, /* win32:92 (VK_RWIN) -> linux:126 (KEY_RI= GHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x5d] =3D Q_KEY_CODE_COMPOSE, /* win32:93 (VK_APPS) -> linux:127 (KEY_C= OMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x5f] =3D Q_KEY_CODE_SLEEP, /* win32:95 (VK_SLEEP) -> linux:142 (KEY_SL= EEP) -> qcode:Q_KEY_CODE_SLEEP (sleep) */ + [0x60] =3D Q_KEY_CODE_KP_0, /* win32:96 (VK_NUMPAD0) -> linux:82 (KEY_KP= 0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */ + [0x61] =3D Q_KEY_CODE_KP_1, /* win32:97 (VK_NUMPAD1) -> linux:79 (KEY_KP= 1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */ + [0x62] =3D Q_KEY_CODE_KP_2, /* win32:98 (VK_NUMPAD2) -> linux:80 (KEY_KP= 2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */ + [0x63] =3D Q_KEY_CODE_KP_3, /* win32:99 (VK_NUMPAD3) -> linux:81 (KEY_KP= 3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */ + [0x64] =3D Q_KEY_CODE_KP_4, /* win32:100 (VK_NUMPAD4) -> linux:75 (KEY_K= P4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */ + [0x65] =3D Q_KEY_CODE_KP_5, /* win32:101 (VK_NUMPAD5) -> linux:76 (KEY_K= P5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */ + [0x66] =3D Q_KEY_CODE_KP_6, /* win32:102 (VK_NUMPAD6) -> linux:77 (KEY_K= P6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */ + [0x67] =3D Q_KEY_CODE_KP_7, /* win32:103 (VK_NUMPAD7) -> linux:71 (KEY_K= P7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */ + [0x68] =3D Q_KEY_CODE_KP_8, /* win32:104 (VK_NUMPAD8) -> linux:72 (KEY_K= P8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */ + [0x69] =3D Q_KEY_CODE_KP_9, /* win32:105 (VK_NUMPAD9) -> linux:73 (KEY_K= P9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */ + [0x6a] =3D Q_KEY_CODE_KP_MULTIPLY, /* win32:106 (VK_MULTIPLY) -> linux:5= 5 (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x6b] =3D Q_KEY_CODE_KP_ADD, /* win32:107 (VK_ADD) -> linux:78 (KEY_KPP= LUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x6c] =3D Q_KEY_CODE_KP_COMMA, /* win32:108 (VK_SEPARATOR??) -> linux:1= 21 (KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0x6d] =3D Q_KEY_CODE_KP_SUBTRACT, /* win32:109 (VK_SUBTRACT) -> linux:7= 4 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x6e] =3D Q_KEY_CODE_KP_DECIMAL, /* win32:110 (VK_DECIMAL) -> linux:83 = (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x6f] =3D Q_KEY_CODE_KP_DIVIDE, /* win32:111 (VK_DIVIDE) -> linux:98 (K= EY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x70] =3D Q_KEY_CODE_F1, /* win32:112 (VK_F1) -> linux:59 (KEY_F1) -> q= code:Q_KEY_CODE_F1 (f1) */ + [0x71] =3D Q_KEY_CODE_F2, /* win32:113 (VK_F2) -> linux:60 (KEY_F2) -> q= code:Q_KEY_CODE_F2 (f2) */ + [0x72] =3D Q_KEY_CODE_F3, /* win32:114 (VK_F3) -> linux:61 (KEY_F3) -> q= code:Q_KEY_CODE_F3 (f3) */ + [0x73] =3D Q_KEY_CODE_F4, /* win32:115 (VK_F4) -> linux:62 (KEY_F4) -> q= code:Q_KEY_CODE_F4 (f4) */ + [0x74] =3D Q_KEY_CODE_F5, /* win32:116 (VK_F5) -> linux:63 (KEY_F5) -> q= code:Q_KEY_CODE_F5 (f5) */ + [0x75] =3D Q_KEY_CODE_F6, /* win32:117 (VK_F6) -> linux:64 (KEY_F6) -> q= code:Q_KEY_CODE_F6 (f6) */ + [0x76] =3D Q_KEY_CODE_F7, /* win32:118 (VK_F7) -> linux:65 (KEY_F7) -> q= code:Q_KEY_CODE_F7 (f7) */ + [0x77] =3D Q_KEY_CODE_F8, /* win32:119 (VK_F8) -> linux:66 (KEY_F8) -> q= code:Q_KEY_CODE_F8 (f8) */ + [0x78] =3D Q_KEY_CODE_F9, /* win32:120 (VK_F9) -> linux:67 (KEY_F9) -> q= code:Q_KEY_CODE_F9 (f9) */ + [0x79] =3D Q_KEY_CODE_F10, /* win32:121 (VK_F10) -> linux:68 (KEY_F10) -= > qcode:Q_KEY_CODE_F10 (f10) */ + [0x7a] =3D Q_KEY_CODE_F11, /* win32:122 (VK_F11) -> linux:87 (KEY_F11) -= > qcode:Q_KEY_CODE_F11 (f11) */ + [0x7b] =3D Q_KEY_CODE_F12, /* win32:123 (VK_F12) -> linux:88 (KEY_F12) -= > qcode:Q_KEY_CODE_F12 (f12) */ + [0x7c] =3D Q_KEY_CODE_UNMAPPED, /* win32:124 (VK_F13) -> linux:183 (KEY_= F13) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7d] =3D Q_KEY_CODE_UNMAPPED, /* win32:125 (VK_F14) -> linux:184 (KEY_= F14) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7e] =3D Q_KEY_CODE_UNMAPPED, /* win32:126 (VK_F15) -> linux:185 (KEY_= F15) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7f] =3D Q_KEY_CODE_UNMAPPED, /* win32:127 (VK_F16) -> linux:186 (KEY_= F16) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x80] =3D Q_KEY_CODE_UNMAPPED, /* win32:128 (VK_F17) -> linux:187 (KEY_= F17) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x81] =3D Q_KEY_CODE_UNMAPPED, /* win32:129 (VK_F18) -> linux:188 (KEY_= F18) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x82] =3D Q_KEY_CODE_UNMAPPED, /* win32:130 (VK_F19) -> linux:189 (KEY_= F19) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x83] =3D Q_KEY_CODE_UNMAPPED, /* win32:131 (VK_F20) -> linux:190 (KEY_= F20) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x84] =3D Q_KEY_CODE_UNMAPPED, /* win32:132 (VK_F21) -> linux:191 (KEY_= F21) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x85] =3D Q_KEY_CODE_UNMAPPED, /* win32:133 (VK_F22) -> linux:192 (KEY_= F22) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x86] =3D Q_KEY_CODE_UNMAPPED, /* win32:134 (VK_F23) -> linux:193 (KEY_= F23) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x87] =3D Q_KEY_CODE_UNMAPPED, /* win32:135 (VK_F24) -> linux:194 (KEY_= F24) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x90] =3D Q_KEY_CODE_NUM_LOCK, /* win32:144 (VK_NUMLOCK) -> linux:69 (K= EY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x91] =3D Q_KEY_CODE_SCROLL_LOCK, /* win32:145 (VK_SCROLL) -> linux:70 = (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0xa0] =3D Q_KEY_CODE_SHIFT, /* win32:160 (VK_LSHIFT) -> linux:42 (KEY_L= EFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0xa1] =3D Q_KEY_CODE_SHIFT_R, /* win32:161 (VK_RSHIFT) -> linux:54 (KEY= _RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0xa2] =3D Q_KEY_CODE_CTRL, /* win32:162 (VK_CONTROL) -> linux:29 (KEY_L= EFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0xa3] =3D Q_KEY_CODE_CTRL_R, /* win32:163 (VK_RCONTROL) -> linux:97 (KE= Y_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0xa4] =3D Q_KEY_CODE_ALT, /* win32:164 (VK_MENU) -> linux:56 (KEY_LEFTA= LT) -> qcode:Q_KEY_CODE_ALT (alt) */ + [0xa5] =3D Q_KEY_CODE_ALT_R, /* win32:165 (VK_RMENU) -> linux:100 (KEY_R= IGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0xa6] =3D Q_KEY_CODE_AC_BACK, /* win32:166 (VK_BROWSER_BACK) -> linux:1= 58 (KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */ + [0xa7] =3D Q_KEY_CODE_AC_FORWARD, /* win32:167 (VK_BROWSER_FORWARD) -> l= inux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xa8] =3D Q_KEY_CODE_AC_REFRESH, /* win32:168 (VK_BROWSER_REFRESH) -> l= inux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xa9] =3D Q_KEY_CODE_STOP, /* win32:169 (VK_BROWSER_STOP) -> linux:128 = (KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */ + [0xaa] =3D Q_KEY_CODE_UNMAPPED, /* win32:170 (VK_BROWSER_SEARCH) -> linu= x:217 (KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xab] =3D Q_KEY_CODE_UNMAPPED, /* win32:171 (VK_BROWSER_FAVOURITES) -> = linux:364 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xac] =3D Q_KEY_CODE_AC_HOME, /* win32:172 (VK_BROWSER_HOME) -> linux:1= 72 (KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */ + [0xad] =3D Q_KEY_CODE_AUDIOMUTE, /* win32:173 (VK_VOLUME_MUTE) -> linux:= 113 (KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0xae] =3D Q_KEY_CODE_VOLUMEDOWN, /* win32:174 (VK_VOLUME_DOWN) -> linux= :114 (KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0xaf] =3D Q_KEY_CODE_VOLUMEUP, /* win32:175 (VK_VOLUME_UP) -> linux:115= (KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0xb0] =3D Q_KEY_CODE_AUDIONEXT, /* win32:176 (VK_MEDIA_NEXT_TRACK) -> l= inux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0xb1] =3D Q_KEY_CODE_AUDIOPREV, /* win32:177 (VK_MEDIA_PREV_TRACK) -> l= inux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0xb2] =3D Q_KEY_CODE_AUDIOSTOP, /* win32:178 (VK_MEDIA_STOP) -> linux:1= 66 (KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xb3] =3D Q_KEY_CODE_AUDIOPLAY, /* win32:179 (VK_MEDIA_PLAY_PAUSE) -> l= inux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xb4] =3D Q_KEY_CODE_UNMAPPED, /* win32:180 (VK_LAUNCH_MAIL) -> linux:2= 15 (KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xba] =3D Q_KEY_CODE_SEMICOLON, /* win32:186 (VK_OEM_1) -> linux:39 (KE= Y_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0xbb] =3D Q_KEY_CODE_EQUAL, /* win32:187 (VK_OEM_PLUS) -> linux:13 (KEY= _EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */ + [0xbc] =3D Q_KEY_CODE_COMMA, /* win32:188 (VK_OEM_COMMA) -> linux:51 (KE= Y_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */ + [0xbd] =3D Q_KEY_CODE_MINUS, /* win32:189 (VK_OEM_MINUS) -> linux:12 (KE= Y_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */ + [0xbe] =3D Q_KEY_CODE_DOT, /* win32:190 (VK_OEM_PERIOD) -> linux:52 (KEY= _DOT) -> qcode:Q_KEY_CODE_DOT (dot) */ + [0xbf] =3D Q_KEY_CODE_SLASH, /* win32:191 (VK_OEM_2) -> linux:53 (KEY_SL= ASH) -> qcode:Q_KEY_CODE_SLASH (slash) */ + [0xc0] =3D Q_KEY_CODE_GRAVE_ACCENT, /* win32:192 (VK_OEM_3) -> linux:41 = (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0xdb] =3D Q_KEY_CODE_BRACKET_LEFT, /* win32:219 (VK_OEM_4) -> linux:26 = (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0xdc] =3D Q_KEY_CODE_BACKSLASH, /* win32:220 (VK_OEM_5) -> linux:43 (KE= Y_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0xdd] =3D Q_KEY_CODE_BRACKET_RIGHT, /* win32:221 (VK_OEM_6) -> linux:27= (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0xde] =3D Q_KEY_CODE_APOSTROPHE, /* win32:222 (VK_OEM_7) -> linux:40 (K= EY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0xe1] =3D Q_KEY_CODE_LESS, /* win32:225 (VK_OEM_102) -> linux:86 (KEY_1= 02ND) -> qcode:Q_KEY_CODE_LESS (less) */ + [0xfa] =3D Q_KEY_CODE_UNMAPPED, /* win32:250 (VK_PLAY) -> linux:207 (KEY= _PLAY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfb] =3D Q_KEY_CODE_UNMAPPED, /* win32:251 (VK_ZOOM) -> linux:372 (KEY= _ZOOM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_win32_to_qcode_len =3D sizeof(qemu_input_map_wi= n32_to_qcode)/sizeof(qemu_input_map_win32_to_qcode[0]); diff --git a/ui/input-keymap-x11-to-qcode.c b/ui/input-keymap-x11-to-qcode.c new file mode 100644 index 0000000000..5802a1d052 --- /dev/null +++ b/ui/input-keymap-x11-to-qcode.c @@ -0,0 +1,163 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_x11_to_qcode cod= e-map keymaps.csv x11 qcode +*/ +const guint16 qemu_input_map_x11_to_qcode[65536] =3D { + [0x20] =3D Q_KEY_CODE_SPC, /* x11:32 (XK_space) -> linux:57 (KEY_SPACE) = -> qcode:Q_KEY_CODE_SPC (spc) */ + [0x21] =3D Q_KEY_CODE_1, /* x11:33 (XK_exclam) -> linux:2 (KEY_1) -> qco= de:Q_KEY_CODE_1 (1) */ + [0x22] =3D Q_KEY_CODE_APOSTROPHE, /* x11:34 (XK_quotedbl) -> linux:40 (K= EY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x23] =3D Q_KEY_CODE_3, /* x11:35 (XK_numbersign) -> linux:4 (KEY_3) ->= qcode:Q_KEY_CODE_3 (3) */ + [0x24] =3D Q_KEY_CODE_4, /* x11:36 (XK_dollar) -> linux:5 (KEY_4) -> qco= de:Q_KEY_CODE_4 (4) */ + [0x25] =3D Q_KEY_CODE_5, /* x11:37 (XK_percent) -> linux:6 (KEY_5) -> qc= ode:Q_KEY_CODE_5 (5) */ + [0x26] =3D Q_KEY_CODE_7, /* x11:38 (XK_ampersand) -> linux:8 (KEY_7) -> = qcode:Q_KEY_CODE_7 (7) */ + [0x27] =3D Q_KEY_CODE_APOSTROPHE, /* x11:39 (XK_quotedbl) -> linux:40 (K= EY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x28] =3D Q_KEY_CODE_9, /* x11:40 (XK_parenleft) -> linux:10 (KEY_9) ->= qcode:Q_KEY_CODE_9 (9) */ + [0x29] =3D Q_KEY_CODE_0, /* x11:41 (XK_parenright) -> linux:11 (KEY_0) -= > qcode:Q_KEY_CODE_0 (0) */ + [0x2a] =3D Q_KEY_CODE_8, /* x11:42 (XK_asterisk) -> linux:9 (KEY_8) -> q= code:Q_KEY_CODE_8 (8) */ + [0x2b] =3D Q_KEY_CODE_EQUAL, /* x11:43 (XK_plus) -> linux:13 (KEY_EQUAL)= -> qcode:Q_KEY_CODE_EQUAL (equal) */ + [0x2c] =3D Q_KEY_CODE_COMMA, /* x11:44 (XK_less) -> linux:51 (KEY_COMMA)= -> qcode:Q_KEY_CODE_COMMA (comma) */ + [0x2d] =3D Q_KEY_CODE_MINUS, /* x11:45 (XK_underscore) -> linux:12 (KEY_= MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */ + [0x2e] =3D Q_KEY_CODE_DOT, /* x11:46 (XK_greater) -> linux:52 (KEY_DOT) = -> qcode:Q_KEY_CODE_DOT (dot) */ + [0x2f] =3D Q_KEY_CODE_SLASH, /* x11:47 (XK_question) -> linux:53 (KEY_SL= ASH) -> qcode:Q_KEY_CODE_SLASH (slash) */ + [0x30] =3D Q_KEY_CODE_0, /* x11:48 (XK_parenright) -> linux:11 (KEY_0) -= > qcode:Q_KEY_CODE_0 (0) */ + [0x31] =3D Q_KEY_CODE_1, /* x11:49 (XK_exclam) -> linux:2 (KEY_1) -> qco= de:Q_KEY_CODE_1 (1) */ + [0x32] =3D Q_KEY_CODE_2, /* x11:50 (XK_at) -> linux:3 (KEY_2) -> qcode:Q= _KEY_CODE_2 (2) */ + [0x33] =3D Q_KEY_CODE_3, /* x11:51 (XK_numbersign) -> linux:4 (KEY_3) ->= qcode:Q_KEY_CODE_3 (3) */ + [0x34] =3D Q_KEY_CODE_4, /* x11:52 (XK_dollar) -> linux:5 (KEY_4) -> qco= de:Q_KEY_CODE_4 (4) */ + [0x35] =3D Q_KEY_CODE_5, /* x11:53 (XK_percent) -> linux:6 (KEY_5) -> qc= ode:Q_KEY_CODE_5 (5) */ + [0x36] =3D Q_KEY_CODE_6, /* x11:54 (XK_asciicircum) -> linux:7 (KEY_6) -= > qcode:Q_KEY_CODE_6 (6) */ + [0x37] =3D Q_KEY_CODE_7, /* x11:55 (XK_ampersand) -> linux:8 (KEY_7) -> = qcode:Q_KEY_CODE_7 (7) */ + [0x38] =3D Q_KEY_CODE_8, /* x11:56 (XK_asterisk) -> linux:9 (KEY_8) -> q= code:Q_KEY_CODE_8 (8) */ + [0x39] =3D Q_KEY_CODE_9, /* x11:57 (XK_parenleft) -> linux:10 (KEY_9) ->= qcode:Q_KEY_CODE_9 (9) */ + [0x3a] =3D Q_KEY_CODE_SEMICOLON, /* x11:58 (XK_colon) -> linux:39 (KEY_S= EMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x3b] =3D Q_KEY_CODE_SEMICOLON, /* x11:59 (XK_colon) -> linux:39 (KEY_S= EMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x3c] =3D Q_KEY_CODE_COMMA, /* x11:60 (XK_less) -> linux:51 (KEY_COMMA)= -> qcode:Q_KEY_CODE_COMMA (comma) */ + [0x3d] =3D Q_KEY_CODE_EQUAL, /* x11:61 (XK_plus) -> linux:13 (KEY_EQUAL)= -> qcode:Q_KEY_CODE_EQUAL (equal) */ + [0x3e] =3D Q_KEY_CODE_DOT, /* x11:62 (XK_greater) -> linux:52 (KEY_DOT) = -> qcode:Q_KEY_CODE_DOT (dot) */ + [0x3f] =3D Q_KEY_CODE_SLASH, /* x11:63 (XK_question) -> linux:53 (KEY_SL= ASH) -> qcode:Q_KEY_CODE_SLASH (slash) */ + [0x40] =3D Q_KEY_CODE_2, /* x11:64 (XK_at) -> linux:3 (KEY_2) -> qcode:Q= _KEY_CODE_2 (2) */ + [0x41] =3D Q_KEY_CODE_A, /* x11:65 (XK_a) -> linux:30 (KEY_A) -> qcode:Q= _KEY_CODE_A (a) */ + [0x42] =3D Q_KEY_CODE_B, /* x11:66 (XK_b) -> linux:48 (KEY_B) -> qcode:Q= _KEY_CODE_B (b) */ + [0x43] =3D Q_KEY_CODE_C, /* x11:67 (XK_c) -> linux:46 (KEY_C) -> qcode:Q= _KEY_CODE_C (c) */ + [0x44] =3D Q_KEY_CODE_D, /* x11:68 (XK_d) -> linux:32 (KEY_D) -> qcode:Q= _KEY_CODE_D (d) */ + [0x45] =3D Q_KEY_CODE_E, /* x11:69 (XK_e) -> linux:18 (KEY_E) -> qcode:Q= _KEY_CODE_E (e) */ + [0x46] =3D Q_KEY_CODE_F, /* x11:70 (XK_f) -> linux:33 (KEY_F) -> qcode:Q= _KEY_CODE_F (f) */ + [0x47] =3D Q_KEY_CODE_G, /* x11:71 (XK_g) -> linux:34 (KEY_G) -> qcode:Q= _KEY_CODE_G (g) */ + [0x48] =3D Q_KEY_CODE_H, /* x11:72 (XK_h) -> linux:35 (KEY_H) -> qcode:Q= _KEY_CODE_H (h) */ + [0x49] =3D Q_KEY_CODE_I, /* x11:73 (XK_i) -> linux:23 (KEY_I) -> qcode:Q= _KEY_CODE_I (i) */ + [0x4a] =3D Q_KEY_CODE_J, /* x11:74 (XK_j) -> linux:36 (KEY_J) -> qcode:Q= _KEY_CODE_J (j) */ + [0x4b] =3D Q_KEY_CODE_K, /* x11:75 (XK_k) -> linux:37 (KEY_K) -> qcode:Q= _KEY_CODE_K (k) */ + [0x4c] =3D Q_KEY_CODE_L, /* x11:76 (XK_l) -> linux:38 (KEY_L) -> qcode:Q= _KEY_CODE_L (l) */ + [0x4d] =3D Q_KEY_CODE_M, /* x11:77 (XK_m) -> linux:50 (KEY_M) -> qcode:Q= _KEY_CODE_M (m) */ + [0x4e] =3D Q_KEY_CODE_N, /* x11:78 (XK_n) -> linux:49 (KEY_N) -> qcode:Q= _KEY_CODE_N (n) */ + [0x4f] =3D Q_KEY_CODE_O, /* x11:79 (XK_o) -> linux:24 (KEY_O) -> qcode:Q= _KEY_CODE_O (o) */ + [0x50] =3D Q_KEY_CODE_P, /* x11:80 (XK_p) -> linux:25 (KEY_P) -> qcode:Q= _KEY_CODE_P (p) */ + [0x51] =3D Q_KEY_CODE_Q, /* x11:81 (XK_q) -> linux:16 (KEY_Q) -> qcode:Q= _KEY_CODE_Q (q) */ + [0x52] =3D Q_KEY_CODE_R, /* x11:82 (XK_r) -> linux:19 (KEY_R) -> qcode:Q= _KEY_CODE_R (r) */ + [0x53] =3D Q_KEY_CODE_S, /* x11:83 (XK_s) -> linux:31 (KEY_S) -> qcode:Q= _KEY_CODE_S (s) */ + [0x54] =3D Q_KEY_CODE_T, /* x11:84 (XK_t) -> linux:20 (KEY_T) -> qcode:Q= _KEY_CODE_T (t) */ + [0x55] =3D Q_KEY_CODE_U, /* x11:85 (XK_u) -> linux:22 (KEY_U) -> qcode:Q= _KEY_CODE_U (u) */ + [0x56] =3D Q_KEY_CODE_V, /* x11:86 (XK_v) -> linux:47 (KEY_V) -> qcode:Q= _KEY_CODE_V (v) */ + [0x57] =3D Q_KEY_CODE_W, /* x11:87 (XK_w) -> linux:17 (KEY_W) -> qcode:Q= _KEY_CODE_W (w) */ + [0x58] =3D Q_KEY_CODE_X, /* x11:88 (XK_x) -> linux:45 (KEY_X) -> qcode:Q= _KEY_CODE_X (x) */ + [0x59] =3D Q_KEY_CODE_Y, /* x11:89 (XK_y) -> linux:21 (KEY_Y) -> qcode:Q= _KEY_CODE_Y (y) */ + [0x5a] =3D Q_KEY_CODE_Z, /* x11:90 (XK_z) -> linux:44 (KEY_Z) -> qcode:Q= _KEY_CODE_Z (z) */ + [0x5b] =3D Q_KEY_CODE_BRACKET_LEFT, /* x11:91 (XK_braceleft) -> linux:26= (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x5c] =3D Q_KEY_CODE_BACKSLASH, /* x11:92 (XK_bar) -> linux:43 (KEY_BAC= KSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x5d] =3D Q_KEY_CODE_BRACKET_RIGHT, /* x11:93 (XK_braceright) -> linux:= 27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x5e] =3D Q_KEY_CODE_6, /* x11:94 (XK_asciicircum) -> linux:7 (KEY_6) -= > qcode:Q_KEY_CODE_6 (6) */ + [0x5f] =3D Q_KEY_CODE_MINUS, /* x11:95 (XK_underscore) -> linux:12 (KEY_= MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */ + [0x60] =3D Q_KEY_CODE_GRAVE_ACCENT, /* x11:96 (XK_asciitilde) -> linux:4= 1 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x61] =3D Q_KEY_CODE_A, /* x11:97 (XK_a) -> linux:30 (KEY_A) -> qcode:Q= _KEY_CODE_A (a) */ + [0x62] =3D Q_KEY_CODE_B, /* x11:98 (XK_b) -> linux:48 (KEY_B) -> qcode:Q= _KEY_CODE_B (b) */ + [0x63] =3D Q_KEY_CODE_C, /* x11:99 (XK_c) -> linux:46 (KEY_C) -> qcode:Q= _KEY_CODE_C (c) */ + [0x64] =3D Q_KEY_CODE_D, /* x11:100 (XK_d) -> linux:32 (KEY_D) -> qcode:= Q_KEY_CODE_D (d) */ + [0x65] =3D Q_KEY_CODE_E, /* x11:101 (XK_e) -> linux:18 (KEY_E) -> qcode:= Q_KEY_CODE_E (e) */ + [0x66] =3D Q_KEY_CODE_F, /* x11:102 (XK_f) -> linux:33 (KEY_F) -> qcode:= Q_KEY_CODE_F (f) */ + [0x67] =3D Q_KEY_CODE_G, /* x11:103 (XK_g) -> linux:34 (KEY_G) -> qcode:= Q_KEY_CODE_G (g) */ + [0x68] =3D Q_KEY_CODE_H, /* x11:104 (XK_h) -> linux:35 (KEY_H) -> qcode:= Q_KEY_CODE_H (h) */ + [0x69] =3D Q_KEY_CODE_I, /* x11:105 (XK_i) -> linux:23 (KEY_I) -> qcode:= Q_KEY_CODE_I (i) */ + [0x6a] =3D Q_KEY_CODE_J, /* x11:106 (XK_j) -> linux:36 (KEY_J) -> qcode:= Q_KEY_CODE_J (j) */ + [0x6b] =3D Q_KEY_CODE_K, /* x11:107 (XK_k) -> linux:37 (KEY_K) -> qcode:= Q_KEY_CODE_K (k) */ + [0x6c] =3D Q_KEY_CODE_L, /* x11:108 (XK_l) -> linux:38 (KEY_L) -> qcode:= Q_KEY_CODE_L (l) */ + [0x6d] =3D Q_KEY_CODE_M, /* x11:109 (XK_m) -> linux:50 (KEY_M) -> qcode:= Q_KEY_CODE_M (m) */ + [0x6e] =3D Q_KEY_CODE_N, /* x11:110 (XK_n) -> linux:49 (KEY_N) -> qcode:= Q_KEY_CODE_N (n) */ + [0x6f] =3D Q_KEY_CODE_O, /* x11:111 (XK_o) -> linux:24 (KEY_O) -> qcode:= Q_KEY_CODE_O (o) */ + [0x70] =3D Q_KEY_CODE_P, /* x11:112 (XK_p) -> linux:25 (KEY_P) -> qcode:= Q_KEY_CODE_P (p) */ + [0x71] =3D Q_KEY_CODE_Q, /* x11:113 (XK_q) -> linux:16 (KEY_Q) -> qcode:= Q_KEY_CODE_Q (q) */ + [0x72] =3D Q_KEY_CODE_R, /* x11:114 (XK_r) -> linux:19 (KEY_R) -> qcode:= Q_KEY_CODE_R (r) */ + [0x73] =3D Q_KEY_CODE_S, /* x11:115 (XK_s) -> linux:31 (KEY_S) -> qcode:= Q_KEY_CODE_S (s) */ + [0x74] =3D Q_KEY_CODE_T, /* x11:116 (XK_t) -> linux:20 (KEY_T) -> qcode:= Q_KEY_CODE_T (t) */ + [0x75] =3D Q_KEY_CODE_U, /* x11:117 (XK_u) -> linux:22 (KEY_U) -> qcode:= Q_KEY_CODE_U (u) */ + [0x76] =3D Q_KEY_CODE_V, /* x11:118 (XK_v) -> linux:47 (KEY_V) -> qcode:= Q_KEY_CODE_V (v) */ + [0x77] =3D Q_KEY_CODE_W, /* x11:119 (XK_w) -> linux:17 (KEY_W) -> qcode:= Q_KEY_CODE_W (w) */ + [0x78] =3D Q_KEY_CODE_X, /* x11:120 (XK_x) -> linux:45 (KEY_X) -> qcode:= Q_KEY_CODE_X (x) */ + [0x79] =3D Q_KEY_CODE_Y, /* x11:121 (XK_y) -> linux:21 (KEY_Y) -> qcode:= Q_KEY_CODE_Y (y) */ + [0x7a] =3D Q_KEY_CODE_Z, /* x11:122 (XK_z) -> linux:44 (KEY_Z) -> qcode:= Q_KEY_CODE_Z (z) */ + [0x7b] =3D Q_KEY_CODE_BRACKET_LEFT, /* x11:123 (XK_braceleft) -> linux:2= 6 (KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x7c] =3D Q_KEY_CODE_BACKSLASH, /* x11:124 (XK_bar) -> linux:43 (KEY_BA= CKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x7d] =3D Q_KEY_CODE_BRACKET_RIGHT, /* x11:125 (XK_braceright) -> linux= :27 (KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x7e] =3D Q_KEY_CODE_GRAVE_ACCENT, /* x11:126 (XK_asciitilde) -> linux:= 41 (KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0xd7] =3D Q_KEY_CODE_KP_MULTIPLY, /* x11:215 (XK_multiply) -> linux:55 = (KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0xff08] =3D Q_KEY_CODE_BACKSPACE, /* x11:65288 (XK_BackSpace) -> linux:= 14 (KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0xff09] =3D Q_KEY_CODE_TAB, /* x11:65289 (XK_Tab) -> linux:15 (KEY_TAB)= -> qcode:Q_KEY_CODE_TAB (tab) */ + [0xff0d] =3D Q_KEY_CODE_RET, /* x11:65293 (XK_Return) -> linux:28 (KEY_E= NTER) -> qcode:Q_KEY_CODE_RET (ret) */ + [0xff13] =3D Q_KEY_CODE_PAUSE, /* x11:65299 (XK_Pause) -> linux:119 (KEY= _PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */ + [0xff14] =3D Q_KEY_CODE_SCROLL_LOCK, /* x11:65300 (XK_Scroll_Lock) -> li= nux:70 (KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0xff15] =3D Q_KEY_CODE_SYSRQ, /* x11:65301 (XK_Sys_Req) -> linux:99 (KE= Y_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */ + [0xff1b] =3D Q_KEY_CODE_ESC, /* x11:65307 (XK_Escape) -> linux:1 (KEY_ES= C) -> qcode:Q_KEY_CODE_ESC (esc) */ + [0xff50] =3D Q_KEY_CODE_HOME, /* x11:65360 (XK_Home) -> linux:102 (KEY_H= OME) -> qcode:Q_KEY_CODE_HOME (home) */ + [0xff51] =3D Q_KEY_CODE_LEFT, /* x11:65361 (XK_Left) -> linux:105 (KEY_L= EFT) -> qcode:Q_KEY_CODE_LEFT (left) */ + [0xff52] =3D Q_KEY_CODE_UP, /* x11:65362 (XK_Up) -> linux:103 (KEY_UP) -= > qcode:Q_KEY_CODE_UP (up) */ + [0xff53] =3D Q_KEY_CODE_RIGHT, /* x11:65363 (XK_Right) -> linux:106 (KEY= _RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0xff54] =3D Q_KEY_CODE_DOWN, /* x11:65364 (XK_Down) -> linux:108 (KEY_D= OWN) -> qcode:Q_KEY_CODE_DOWN (down) */ + [0xff55] =3D Q_KEY_CODE_PGUP, /* x11:65365 (XK_Page_Up) -> linux:104 (KE= Y_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0xff56] =3D Q_KEY_CODE_PGDN, /* x11:65366 (XK_Page_Down) -> linux:109 (= KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0xff57] =3D Q_KEY_CODE_END, /* x11:65367 (XK_End) -> linux:107 (KEY_END= ) -> qcode:Q_KEY_CODE_END (end) */ + [0xff60] =3D Q_KEY_CODE_UNMAPPED, /* x11:65376 (XK_Select) -> linux:353 = (KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xff63] =3D Q_KEY_CODE_INSERT, /* x11:65379 (XK_Insert) -> linux:110 (K= EY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0xff6a] =3D Q_KEY_CODE_HELP, /* x11:65386 (XK_Help) -> linux:138 (KEY_H= ELP) -> qcode:Q_KEY_CODE_HELP (help) */ + [0xff7f] =3D Q_KEY_CODE_NUM_LOCK, /* x11:65407 (XK_Num_Lock) -> linux:69= (KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0xff8d] =3D Q_KEY_CODE_KP_ENTER, /* x11:65421 (XK_KP_Enter) -> linux:96= (KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0xffab] =3D Q_KEY_CODE_KP_ADD, /* x11:65451 (XK_KP_Add) -> linux:78 (KE= Y_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0xffac] =3D Q_KEY_CODE_UNMAPPED, /* x11:65452 (XK_KP_Separator) -> linu= x:95 (KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xffad] =3D Q_KEY_CODE_KP_SUBTRACT, /* x11:65453 (XK_KP_Subtract) -> li= nux:74 (KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0xffae] =3D Q_KEY_CODE_KP_DECIMAL, /* x11:65454 (XK_KP_Decimal) -> linu= x:83 (KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0xffaf] =3D Q_KEY_CODE_KP_DIVIDE, /* x11:65455 (XK_KP_Divide) -> linux:= 98 (KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0xffb0] =3D Q_KEY_CODE_KP_0, /* x11:65456 (XK_KP_0) -> linux:82 (KEY_KP= 0) -> qcode:Q_KEY_CODE_KP_0 (kp_0) */ + [0xffb1] =3D Q_KEY_CODE_KP_1, /* x11:65457 (XK_KP_1) -> linux:79 (KEY_KP= 1) -> qcode:Q_KEY_CODE_KP_1 (kp_1) */ + [0xffb2] =3D Q_KEY_CODE_KP_2, /* x11:65458 (XK_KP_2) -> linux:80 (KEY_KP= 2) -> qcode:Q_KEY_CODE_KP_2 (kp_2) */ + [0xffb3] =3D Q_KEY_CODE_KP_3, /* x11:65459 (XK_KP_3) -> linux:81 (KEY_KP= 3) -> qcode:Q_KEY_CODE_KP_3 (kp_3) */ + [0xffb4] =3D Q_KEY_CODE_KP_4, /* x11:65460 (XK_KP_4) -> linux:75 (KEY_KP= 4) -> qcode:Q_KEY_CODE_KP_4 (kp_4) */ + [0xffb5] =3D Q_KEY_CODE_KP_5, /* x11:65461 (XK_KP_5) -> linux:76 (KEY_KP= 5) -> qcode:Q_KEY_CODE_KP_5 (kp_5) */ + [0xffb6] =3D Q_KEY_CODE_KP_6, /* x11:65462 (XK_KP_6) -> linux:77 (KEY_KP= 6) -> qcode:Q_KEY_CODE_KP_6 (kp_6) */ + [0xffb7] =3D Q_KEY_CODE_KP_7, /* x11:65463 (XK_KP_7) -> linux:71 (KEY_KP= 7) -> qcode:Q_KEY_CODE_KP_7 (kp_7) */ + [0xffb8] =3D Q_KEY_CODE_KP_8, /* x11:65464 (XK_KP_8) -> linux:72 (KEY_KP= 8) -> qcode:Q_KEY_CODE_KP_8 (kp_8) */ + [0xffb9] =3D Q_KEY_CODE_KP_9, /* x11:65465 (XK_KP_9) -> linux:73 (KEY_KP= 9) -> qcode:Q_KEY_CODE_KP_9 (kp_9) */ + [0xffbd] =3D Q_KEY_CODE_KP_EQUALS, /* x11:65469 (XK_KP_Equal) -> linux:1= 17 (KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0xffbe] =3D Q_KEY_CODE_F1, /* x11:65470 (XK_F1) -> linux:59 (KEY_F1) ->= qcode:Q_KEY_CODE_F1 (f1) */ + [0xffbf] =3D Q_KEY_CODE_F2, /* x11:65471 (XK_F2) -> linux:60 (KEY_F2) ->= qcode:Q_KEY_CODE_F2 (f2) */ + [0xffc0] =3D Q_KEY_CODE_F3, /* x11:65472 (XK_F3) -> linux:61 (KEY_F3) ->= qcode:Q_KEY_CODE_F3 (f3) */ + [0xffc1] =3D Q_KEY_CODE_F4, /* x11:65473 (XK_F4) -> linux:62 (KEY_F4) ->= qcode:Q_KEY_CODE_F4 (f4) */ + [0xffc2] =3D Q_KEY_CODE_F5, /* x11:65474 (XK_F5) -> linux:63 (KEY_F5) ->= qcode:Q_KEY_CODE_F5 (f5) */ + [0xffc3] =3D Q_KEY_CODE_F6, /* x11:65475 (XK_F6) -> linux:64 (KEY_F6) ->= qcode:Q_KEY_CODE_F6 (f6) */ + [0xffc4] =3D Q_KEY_CODE_F7, /* x11:65476 (XK_F7) -> linux:65 (KEY_F7) ->= qcode:Q_KEY_CODE_F7 (f7) */ + [0xffc5] =3D Q_KEY_CODE_F8, /* x11:65477 (XK_F8) -> linux:66 (KEY_F8) ->= qcode:Q_KEY_CODE_F8 (f8) */ + [0xffc6] =3D Q_KEY_CODE_F9, /* x11:65478 (XK_F9) -> linux:67 (KEY_F9) ->= qcode:Q_KEY_CODE_F9 (f9) */ + [0xffc7] =3D Q_KEY_CODE_F10, /* x11:65479 (XK_F10) -> linux:68 (KEY_F10)= -> qcode:Q_KEY_CODE_F10 (f10) */ + [0xffc8] =3D Q_KEY_CODE_F11, /* x11:65480 (XK_F11) -> linux:87 (KEY_F11)= -> qcode:Q_KEY_CODE_F11 (f11) */ + [0xffc9] =3D Q_KEY_CODE_F12, /* x11:65481 (XK_F12) -> linux:88 (KEY_F12)= -> qcode:Q_KEY_CODE_F12 (f12) */ + [0xffe1] =3D Q_KEY_CODE_SHIFT, /* x11:65505 (XK_Shift_L) -> linux:42 (KE= Y_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0xffe2] =3D Q_KEY_CODE_SHIFT_R, /* x11:65506 (XK_Shift_R) -> linux:54 (= KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0xffe3] =3D Q_KEY_CODE_CTRL, /* x11:65507 (XK_Control_L) -> linux:29 (K= EY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0xffe4] =3D Q_KEY_CODE_CTRL_R, /* x11:65508 (XK_Control_R) -> linux:97 = (KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0xffe5] =3D Q_KEY_CODE_CAPS_LOCK, /* x11:65509 (XK_Caps_Lock) -> linux:= 58 (KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0xffe7] =3D Q_KEY_CODE_META_L, /* x11:65511 (XK_Meta_L) -> linux:125 (K= EY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0xffe8] =3D Q_KEY_CODE_META_R, /* x11:65512 (XK_Meta_R) -> linux:126 (K= EY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0xffe9] =3D Q_KEY_CODE_ALT, /* x11:65513 (XK_Alt_L) -> linux:56 (KEY_LE= FTALT) -> qcode:Q_KEY_CODE_ALT (alt) */ + [0xffea] =3D Q_KEY_CODE_ALT_R, /* x11:65514 (XK_Alt_R) -> linux:100 (KEY= _RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0xffff] =3D Q_KEY_CODE_DELETE, /* x11:65535 (XK_Delete) -> linux:111 (K= EY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */ +}; +const guint qemu_input_map_x11_to_qcode_len =3D sizeof(qemu_input_map_x11_= to_qcode)/sizeof(qemu_input_map_x11_to_qcode[0]); diff --git a/ui/input-keymap-xorgevdev-to-qcode.c b/ui/input-keymap-xorgevd= ev-to-qcode.c new file mode 100644 index 0000000000..8e6de616d9 --- /dev/null +++ b/ui/input-keymap-xorgevdev-to-qcode.c @@ -0,0 +1,463 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_xorgevdev_to_qco= de code-map keymaps.csv xorgevdev qcode +*/ +const guint16 qemu_input_map_xorgevdev_to_qcode[533] =3D { + [0x8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:8 -> linux:0 (KEY_RESERVED) = -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */ + [0x9] =3D Q_KEY_CODE_ESC, /* xorgevdev:9 -> linux:1 (KEY_ESC) -> qcode:Q= _KEY_CODE_ESC (esc) */ + [0xa] =3D Q_KEY_CODE_1, /* xorgevdev:10 -> linux:2 (KEY_1) -> qcode:Q_KE= Y_CODE_1 (1) */ + [0xb] =3D Q_KEY_CODE_2, /* xorgevdev:11 -> linux:3 (KEY_2) -> qcode:Q_KE= Y_CODE_2 (2) */ + [0xc] =3D Q_KEY_CODE_3, /* xorgevdev:12 -> linux:4 (KEY_3) -> qcode:Q_KE= Y_CODE_3 (3) */ + [0xd] =3D Q_KEY_CODE_4, /* xorgevdev:13 -> linux:5 (KEY_4) -> qcode:Q_KE= Y_CODE_4 (4) */ + [0xe] =3D Q_KEY_CODE_5, /* xorgevdev:14 -> linux:6 (KEY_5) -> qcode:Q_KE= Y_CODE_5 (5) */ + [0xf] =3D Q_KEY_CODE_6, /* xorgevdev:15 -> linux:7 (KEY_6) -> qcode:Q_KE= Y_CODE_6 (6) */ + [0x10] =3D Q_KEY_CODE_7, /* xorgevdev:16 -> linux:8 (KEY_7) -> qcode:Q_K= EY_CODE_7 (7) */ + [0x11] =3D Q_KEY_CODE_8, /* xorgevdev:17 -> linux:9 (KEY_8) -> qcode:Q_K= EY_CODE_8 (8) */ + [0x12] =3D Q_KEY_CODE_9, /* xorgevdev:18 -> linux:10 (KEY_9) -> qcode:Q_= KEY_CODE_9 (9) */ + [0x13] =3D Q_KEY_CODE_0, /* xorgevdev:19 -> linux:11 (KEY_0) -> qcode:Q_= KEY_CODE_0 (0) */ + [0x14] =3D Q_KEY_CODE_MINUS, /* xorgevdev:20 -> linux:12 (KEY_MINUS) -> = qcode:Q_KEY_CODE_MINUS (minus) */ + [0x15] =3D Q_KEY_CODE_EQUAL, /* xorgevdev:21 -> linux:13 (KEY_EQUAL) -> = qcode:Q_KEY_CODE_EQUAL (equal) */ + [0x16] =3D Q_KEY_CODE_BACKSPACE, /* xorgevdev:22 -> linux:14 (KEY_BACKSP= ACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x17] =3D Q_KEY_CODE_TAB, /* xorgevdev:23 -> linux:15 (KEY_TAB) -> qcod= e:Q_KEY_CODE_TAB (tab) */ + [0x18] =3D Q_KEY_CODE_Q, /* xorgevdev:24 -> linux:16 (KEY_Q) -> qcode:Q_= KEY_CODE_Q (q) */ + [0x19] =3D Q_KEY_CODE_W, /* xorgevdev:25 -> linux:17 (KEY_W) -> qcode:Q_= KEY_CODE_W (w) */ + [0x1a] =3D Q_KEY_CODE_E, /* xorgevdev:26 -> linux:18 (KEY_E) -> qcode:Q_= KEY_CODE_E (e) */ + [0x1b] =3D Q_KEY_CODE_R, /* xorgevdev:27 -> linux:19 (KEY_R) -> qcode:Q_= KEY_CODE_R (r) */ + [0x1c] =3D Q_KEY_CODE_T, /* xorgevdev:28 -> linux:20 (KEY_T) -> qcode:Q_= KEY_CODE_T (t) */ + [0x1d] =3D Q_KEY_CODE_Y, /* xorgevdev:29 -> linux:21 (KEY_Y) -> qcode:Q_= KEY_CODE_Y (y) */ + [0x1e] =3D Q_KEY_CODE_U, /* xorgevdev:30 -> linux:22 (KEY_U) -> qcode:Q_= KEY_CODE_U (u) */ + [0x1f] =3D Q_KEY_CODE_I, /* xorgevdev:31 -> linux:23 (KEY_I) -> qcode:Q_= KEY_CODE_I (i) */ + [0x20] =3D Q_KEY_CODE_O, /* xorgevdev:32 -> linux:24 (KEY_O) -> qcode:Q_= KEY_CODE_O (o) */ + [0x21] =3D Q_KEY_CODE_P, /* xorgevdev:33 -> linux:25 (KEY_P) -> qcode:Q_= KEY_CODE_P (p) */ + [0x22] =3D Q_KEY_CODE_BRACKET_LEFT, /* xorgevdev:34 -> linux:26 (KEY_LEF= TBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x23] =3D Q_KEY_CODE_BRACKET_RIGHT, /* xorgevdev:35 -> linux:27 (KEY_RI= GHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x24] =3D Q_KEY_CODE_RET, /* xorgevdev:36 -> linux:28 (KEY_ENTER) -> qc= ode:Q_KEY_CODE_RET (ret) */ + [0x25] =3D Q_KEY_CODE_CTRL, /* xorgevdev:37 -> linux:29 (KEY_LEFTCTRL) -= > qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x26] =3D Q_KEY_CODE_A, /* xorgevdev:38 -> linux:30 (KEY_A) -> qcode:Q_= KEY_CODE_A (a) */ + [0x27] =3D Q_KEY_CODE_S, /* xorgevdev:39 -> linux:31 (KEY_S) -> qcode:Q_= KEY_CODE_S (s) */ + [0x28] =3D Q_KEY_CODE_D, /* xorgevdev:40 -> linux:32 (KEY_D) -> qcode:Q_= KEY_CODE_D (d) */ + [0x29] =3D Q_KEY_CODE_F, /* xorgevdev:41 -> linux:33 (KEY_F) -> qcode:Q_= KEY_CODE_F (f) */ + [0x2a] =3D Q_KEY_CODE_G, /* xorgevdev:42 -> linux:34 (KEY_G) -> qcode:Q_= KEY_CODE_G (g) */ + [0x2b] =3D Q_KEY_CODE_H, /* xorgevdev:43 -> linux:35 (KEY_H) -> qcode:Q_= KEY_CODE_H (h) */ + [0x2c] =3D Q_KEY_CODE_J, /* xorgevdev:44 -> linux:36 (KEY_J) -> qcode:Q_= KEY_CODE_J (j) */ + [0x2d] =3D Q_KEY_CODE_K, /* xorgevdev:45 -> linux:37 (KEY_K) -> qcode:Q_= KEY_CODE_K (k) */ + [0x2e] =3D Q_KEY_CODE_L, /* xorgevdev:46 -> linux:38 (KEY_L) -> qcode:Q_= KEY_CODE_L (l) */ + [0x2f] =3D Q_KEY_CODE_SEMICOLON, /* xorgevdev:47 -> linux:39 (KEY_SEMICO= LON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x30] =3D Q_KEY_CODE_APOSTROPHE, /* xorgevdev:48 -> linux:40 (KEY_APOST= ROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x31] =3D Q_KEY_CODE_GRAVE_ACCENT, /* xorgevdev:49 -> linux:41 (KEY_GRA= VE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x32] =3D Q_KEY_CODE_SHIFT, /* xorgevdev:50 -> linux:42 (KEY_LEFTSHIFT)= -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x33] =3D Q_KEY_CODE_BACKSLASH, /* xorgevdev:51 -> linux:43 (KEY_BACKSL= ASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x34] =3D Q_KEY_CODE_Z, /* xorgevdev:52 -> linux:44 (KEY_Z) -> qcode:Q_= KEY_CODE_Z (z) */ + [0x35] =3D Q_KEY_CODE_X, /* xorgevdev:53 -> linux:45 (KEY_X) -> qcode:Q_= KEY_CODE_X (x) */ + [0x36] =3D Q_KEY_CODE_C, /* xorgevdev:54 -> linux:46 (KEY_C) -> qcode:Q_= KEY_CODE_C (c) */ + [0x37] =3D Q_KEY_CODE_V, /* xorgevdev:55 -> linux:47 (KEY_V) -> qcode:Q_= KEY_CODE_V (v) */ + [0x38] =3D Q_KEY_CODE_B, /* xorgevdev:56 -> linux:48 (KEY_B) -> qcode:Q_= KEY_CODE_B (b) */ + [0x39] =3D Q_KEY_CODE_N, /* xorgevdev:57 -> linux:49 (KEY_N) -> qcode:Q_= KEY_CODE_N (n) */ + [0x3a] =3D Q_KEY_CODE_M, /* xorgevdev:58 -> linux:50 (KEY_M) -> qcode:Q_= KEY_CODE_M (m) */ + [0x3b] =3D Q_KEY_CODE_COMMA, /* xorgevdev:59 -> linux:51 (KEY_COMMA) -> = qcode:Q_KEY_CODE_COMMA (comma) */ + [0x3c] =3D Q_KEY_CODE_DOT, /* xorgevdev:60 -> linux:52 (KEY_DOT) -> qcod= e:Q_KEY_CODE_DOT (dot) */ + [0x3d] =3D Q_KEY_CODE_SLASH, /* xorgevdev:61 -> linux:53 (KEY_SLASH) -> = qcode:Q_KEY_CODE_SLASH (slash) */ + [0x3e] =3D Q_KEY_CODE_SHIFT_R, /* xorgevdev:62 -> linux:54 (KEY_RIGHTSHI= FT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x3f] =3D Q_KEY_CODE_KP_MULTIPLY, /* xorgevdev:63 -> linux:55 (KEY_KPAS= TERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x40] =3D Q_KEY_CODE_ALT, /* xorgevdev:64 -> linux:56 (KEY_LEFTALT) -> = qcode:Q_KEY_CODE_ALT (alt) */ + [0x41] =3D Q_KEY_CODE_SPC, /* xorgevdev:65 -> linux:57 (KEY_SPACE) -> qc= ode:Q_KEY_CODE_SPC (spc) */ + [0x42] =3D Q_KEY_CODE_CAPS_LOCK, /* xorgevdev:66 -> linux:58 (KEY_CAPSLO= CK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x43] =3D Q_KEY_CODE_F1, /* xorgevdev:67 -> linux:59 (KEY_F1) -> qcode:= Q_KEY_CODE_F1 (f1) */ + [0x44] =3D Q_KEY_CODE_F2, /* xorgevdev:68 -> linux:60 (KEY_F2) -> qcode:= Q_KEY_CODE_F2 (f2) */ + [0x45] =3D Q_KEY_CODE_F3, /* xorgevdev:69 -> linux:61 (KEY_F3) -> qcode:= Q_KEY_CODE_F3 (f3) */ + [0x46] =3D Q_KEY_CODE_F4, /* xorgevdev:70 -> linux:62 (KEY_F4) -> qcode:= Q_KEY_CODE_F4 (f4) */ + [0x47] =3D Q_KEY_CODE_F5, /* xorgevdev:71 -> linux:63 (KEY_F5) -> qcode:= Q_KEY_CODE_F5 (f5) */ + [0x48] =3D Q_KEY_CODE_F6, /* xorgevdev:72 -> linux:64 (KEY_F6) -> qcode:= Q_KEY_CODE_F6 (f6) */ + [0x49] =3D Q_KEY_CODE_F7, /* xorgevdev:73 -> linux:65 (KEY_F7) -> qcode:= Q_KEY_CODE_F7 (f7) */ + [0x4a] =3D Q_KEY_CODE_F8, /* xorgevdev:74 -> linux:66 (KEY_F8) -> qcode:= Q_KEY_CODE_F8 (f8) */ + [0x4b] =3D Q_KEY_CODE_F9, /* xorgevdev:75 -> linux:67 (KEY_F9) -> qcode:= Q_KEY_CODE_F9 (f9) */ + [0x4c] =3D Q_KEY_CODE_F10, /* xorgevdev:76 -> linux:68 (KEY_F10) -> qcod= e:Q_KEY_CODE_F10 (f10) */ + [0x4d] =3D Q_KEY_CODE_NUM_LOCK, /* xorgevdev:77 -> linux:69 (KEY_NUMLOCK= ) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x4e] =3D Q_KEY_CODE_SCROLL_LOCK, /* xorgevdev:78 -> linux:70 (KEY_SCRO= LLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x4f] =3D Q_KEY_CODE_KP_7, /* xorgevdev:79 -> linux:71 (KEY_KP7) -> qco= de:Q_KEY_CODE_KP_7 (kp_7) */ + [0x50] =3D Q_KEY_CODE_KP_8, /* xorgevdev:80 -> linux:72 (KEY_KP8) -> qco= de:Q_KEY_CODE_KP_8 (kp_8) */ + [0x51] =3D Q_KEY_CODE_KP_9, /* xorgevdev:81 -> linux:73 (KEY_KP9) -> qco= de:Q_KEY_CODE_KP_9 (kp_9) */ + [0x52] =3D Q_KEY_CODE_KP_SUBTRACT, /* xorgevdev:82 -> linux:74 (KEY_KPMI= NUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x53] =3D Q_KEY_CODE_KP_4, /* xorgevdev:83 -> linux:75 (KEY_KP4) -> qco= de:Q_KEY_CODE_KP_4 (kp_4) */ + [0x54] =3D Q_KEY_CODE_KP_5, /* xorgevdev:84 -> linux:76 (KEY_KP5) -> qco= de:Q_KEY_CODE_KP_5 (kp_5) */ + [0x55] =3D Q_KEY_CODE_KP_6, /* xorgevdev:85 -> linux:77 (KEY_KP6) -> qco= de:Q_KEY_CODE_KP_6 (kp_6) */ + [0x56] =3D Q_KEY_CODE_KP_ADD, /* xorgevdev:86 -> linux:78 (KEY_KPPLUS) -= > qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x57] =3D Q_KEY_CODE_KP_1, /* xorgevdev:87 -> linux:79 (KEY_KP1) -> qco= de:Q_KEY_CODE_KP_1 (kp_1) */ + [0x58] =3D Q_KEY_CODE_KP_2, /* xorgevdev:88 -> linux:80 (KEY_KP2) -> qco= de:Q_KEY_CODE_KP_2 (kp_2) */ + [0x59] =3D Q_KEY_CODE_KP_3, /* xorgevdev:89 -> linux:81 (KEY_KP3) -> qco= de:Q_KEY_CODE_KP_3 (kp_3) */ + [0x5a] =3D Q_KEY_CODE_KP_0, /* xorgevdev:90 -> linux:82 (KEY_KP0) -> qco= de:Q_KEY_CODE_KP_0 (kp_0) */ + [0x5b] =3D Q_KEY_CODE_KP_DECIMAL, /* xorgevdev:91 -> linux:83 (KEY_KPDOT= ) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x5c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:92 -> linux:84 (unnamed) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:93 -> linux:85 (KEY_ZENKAKU= HANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x5e] =3D Q_KEY_CODE_LESS, /* xorgevdev:94 -> linux:86 (KEY_102ND) -> q= code:Q_KEY_CODE_LESS (less) */ + [0x5f] =3D Q_KEY_CODE_F11, /* xorgevdev:95 -> linux:87 (KEY_F11) -> qcod= e:Q_KEY_CODE_F11 (f11) */ + [0x60] =3D Q_KEY_CODE_F12, /* xorgevdev:96 -> linux:88 (KEY_F12) -> qcod= e:Q_KEY_CODE_F12 (f12) */ + [0x61] =3D Q_KEY_CODE_RO, /* xorgevdev:97 -> linux:89 (KEY_RO) -> qcode:= Q_KEY_CODE_RO (ro) */ + [0x62] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:98 -> linux:90 (KEY_KATAKAN= A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x63] =3D Q_KEY_CODE_HIRAGANA, /* xorgevdev:99 -> linux:91 (KEY_HIRAGAN= A) -> qcode:Q_KEY_CODE_HIRAGANA (hiragana) */ + [0x64] =3D Q_KEY_CODE_HENKAN, /* xorgevdev:100 -> linux:92 (KEY_HENKAN) = -> qcode:Q_KEY_CODE_HENKAN (henkan) */ + [0x65] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:101 -> linux:93 (KEY_KATAKA= NAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x66] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:102 -> linux:94 (KEY_MUHENK= AN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x67] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:103 -> linux:95 (KEY_KPJPCO= MMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x68] =3D Q_KEY_CODE_KP_ENTER, /* xorgevdev:104 -> linux:96 (KEY_KPENTE= R) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x69] =3D Q_KEY_CODE_CTRL_R, /* xorgevdev:105 -> linux:97 (KEY_RIGHTCTR= L) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x6a] =3D Q_KEY_CODE_KP_DIVIDE, /* xorgevdev:106 -> linux:98 (KEY_KPSLA= SH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x6b] =3D Q_KEY_CODE_SYSRQ, /* xorgevdev:107 -> linux:99 (KEY_SYSRQ) ->= qcode:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x6c] =3D Q_KEY_CODE_ALT_R, /* xorgevdev:108 -> linux:100 (KEY_RIGHTALT= ) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x6d] =3D Q_KEY_CODE_LF, /* xorgevdev:109 -> linux:101 (KEY_LINEFEED) -= > qcode:Q_KEY_CODE_LF (lf) */ + [0x6e] =3D Q_KEY_CODE_HOME, /* xorgevdev:110 -> linux:102 (KEY_HOME) -> = qcode:Q_KEY_CODE_HOME (home) */ + [0x6f] =3D Q_KEY_CODE_UP, /* xorgevdev:111 -> linux:103 (KEY_UP) -> qcod= e:Q_KEY_CODE_UP (up) */ + [0x70] =3D Q_KEY_CODE_PGUP, /* xorgevdev:112 -> linux:104 (KEY_PAGEUP) -= > qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x71] =3D Q_KEY_CODE_LEFT, /* xorgevdev:113 -> linux:105 (KEY_LEFT) -> = qcode:Q_KEY_CODE_LEFT (left) */ + [0x72] =3D Q_KEY_CODE_RIGHT, /* xorgevdev:114 -> linux:106 (KEY_RIGHT) -= > qcode:Q_KEY_CODE_RIGHT (right) */ + [0x73] =3D Q_KEY_CODE_END, /* xorgevdev:115 -> linux:107 (KEY_END) -> qc= ode:Q_KEY_CODE_END (end) */ + [0x74] =3D Q_KEY_CODE_DOWN, /* xorgevdev:116 -> linux:108 (KEY_DOWN) -> = qcode:Q_KEY_CODE_DOWN (down) */ + [0x75] =3D Q_KEY_CODE_PGDN, /* xorgevdev:117 -> linux:109 (KEY_PAGEDOWN)= -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x76] =3D Q_KEY_CODE_INSERT, /* xorgevdev:118 -> linux:110 (KEY_INSERT)= -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0x77] =3D Q_KEY_CODE_DELETE, /* xorgevdev:119 -> linux:111 (KEY_DELETE)= -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:120 -> linux:112 (KEY_MACRO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_AUDIOMUTE, /* xorgevdev:121 -> linux:113 (KEY_MUTE= ) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0x7a] =3D Q_KEY_CODE_VOLUMEDOWN, /* xorgevdev:122 -> linux:114 (KEY_VOL= UMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0x7b] =3D Q_KEY_CODE_VOLUMEUP, /* xorgevdev:123 -> linux:115 (KEY_VOLUM= EUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0x7c] =3D Q_KEY_CODE_POWER, /* xorgevdev:124 -> linux:116 (KEY_POWER) -= > qcode:Q_KEY_CODE_POWER (power) */ + [0x7d] =3D Q_KEY_CODE_KP_EQUALS, /* xorgevdev:125 -> linux:117 (KEY_KPEQ= UAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x7e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:126 -> linux:118 (KEY_KPPLU= SMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7f] =3D Q_KEY_CODE_PAUSE, /* xorgevdev:127 -> linux:119 (KEY_PAUSE) -= > qcode:Q_KEY_CODE_PAUSE (pause) */ + [0x80] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:128 -> linux:120 (KEY_SCALE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x81] =3D Q_KEY_CODE_KP_COMMA, /* xorgevdev:129 -> linux:121 (KEY_KPCOM= MA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */ + [0x82] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:130 -> linux:122 (KEY_HANGE= UL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x83] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:131 -> linux:123 (KEY_HANJA= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x84] =3D Q_KEY_CODE_YEN, /* xorgevdev:132 -> linux:124 (KEY_YEN) -> qc= ode:Q_KEY_CODE_YEN (yen) */ + [0x85] =3D Q_KEY_CODE_META_L, /* xorgevdev:133 -> linux:125 (KEY_LEFTMET= A) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x86] =3D Q_KEY_CODE_META_R, /* xorgevdev:134 -> linux:126 (KEY_RIGHTME= TA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x87] =3D Q_KEY_CODE_COMPOSE, /* xorgevdev:135 -> linux:127 (KEY_COMPOS= E) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x88] =3D Q_KEY_CODE_STOP, /* xorgevdev:136 -> linux:128 (KEY_STOP) -> = qcode:Q_KEY_CODE_STOP (stop) */ + [0x89] =3D Q_KEY_CODE_AGAIN, /* xorgevdev:137 -> linux:129 (KEY_AGAIN) -= > qcode:Q_KEY_CODE_AGAIN (again) */ + [0x8a] =3D Q_KEY_CODE_PROPS, /* xorgevdev:138 -> linux:130 (KEY_PROPS) -= > qcode:Q_KEY_CODE_PROPS (props) */ + [0x8b] =3D Q_KEY_CODE_UNDO, /* xorgevdev:139 -> linux:131 (KEY_UNDO) -> = qcode:Q_KEY_CODE_UNDO (undo) */ + [0x8c] =3D Q_KEY_CODE_FRONT, /* xorgevdev:140 -> linux:132 (KEY_FRONT) -= > qcode:Q_KEY_CODE_FRONT (front) */ + [0x8d] =3D Q_KEY_CODE_COPY, /* xorgevdev:141 -> linux:133 (KEY_COPY) -> = qcode:Q_KEY_CODE_COPY (copy) */ + [0x8e] =3D Q_KEY_CODE_OPEN, /* xorgevdev:142 -> linux:134 (KEY_OPEN) -> = qcode:Q_KEY_CODE_OPEN (open) */ + [0x8f] =3D Q_KEY_CODE_PASTE, /* xorgevdev:143 -> linux:135 (KEY_PASTE) -= > qcode:Q_KEY_CODE_PASTE (paste) */ + [0x90] =3D Q_KEY_CODE_FIND, /* xorgevdev:144 -> linux:136 (KEY_FIND) -> = qcode:Q_KEY_CODE_FIND (find) */ + [0x91] =3D Q_KEY_CODE_CUT, /* xorgevdev:145 -> linux:137 (KEY_CUT) -> qc= ode:Q_KEY_CODE_CUT (cut) */ + [0x92] =3D Q_KEY_CODE_HELP, /* xorgevdev:146 -> linux:138 (KEY_HELP) -> = qcode:Q_KEY_CODE_HELP (help) */ + [0x93] =3D Q_KEY_CODE_MENU, /* xorgevdev:147 -> linux:139 (KEY_MENU) -> = qcode:Q_KEY_CODE_MENU (menu) */ + [0x94] =3D Q_KEY_CODE_CALCULATOR, /* xorgevdev:148 -> linux:140 (KEY_CAL= C) -> qcode:Q_KEY_CODE_CALCULATOR (calculator) */ + [0x95] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:149 -> linux:141 (KEY_SETUP= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x96] =3D Q_KEY_CODE_SLEEP, /* xorgevdev:150 -> linux:142 (KEY_SLEEP) -= > qcode:Q_KEY_CODE_SLEEP (sleep) */ + [0x97] =3D Q_KEY_CODE_WAKE, /* xorgevdev:151 -> linux:143 (KEY_WAKEUP) -= > qcode:Q_KEY_CODE_WAKE (wake) */ + [0x98] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:152 -> linux:144 (KEY_FILE)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x99] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:153 -> linux:145 (KEY_SENDF= ILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:154 -> linux:146 (KEY_DELET= EFILE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:155 -> linux:147 (KEY_XFER)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:156 -> linux:148 (KEY_PROG1= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:157 -> linux:149 (KEY_PROG2= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:158 -> linux:150 (KEY_WWW) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x9f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:159 -> linux:151 (KEY_MSDOS= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:160 -> linux:152 (KEY_SCREE= NLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:161 -> linux:153 (KEY_DIREC= TION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:162 -> linux:154 (KEY_CYCLE= WINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa3] =3D Q_KEY_CODE_MAIL, /* xorgevdev:163 -> linux:155 (KEY_MAIL) -> = qcode:Q_KEY_CODE_MAIL (mail) */ + [0xa4] =3D Q_KEY_CODE_AC_BOOKMARKS, /* xorgevdev:164 -> linux:156 (KEY_B= OOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */ + [0xa5] =3D Q_KEY_CODE_COMPUTER, /* xorgevdev:165 -> linux:157 (KEY_COMPU= TER) -> qcode:Q_KEY_CODE_COMPUTER (computer) */ + [0xa6] =3D Q_KEY_CODE_AC_BACK, /* xorgevdev:166 -> linux:158 (KEY_BACK) = -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */ + [0xa7] =3D Q_KEY_CODE_AC_FORWARD, /* xorgevdev:167 -> linux:159 (KEY_FOR= WARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */ + [0xa8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:168 -> linux:160 (KEY_CLOSE= CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xa9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:169 -> linux:161 (KEY_EJECT= CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xaa] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:170 -> linux:162 (KEY_EJECT= CLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xab] =3D Q_KEY_CODE_AUDIONEXT, /* xorgevdev:171 -> linux:163 (KEY_NEXT= SONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */ + [0xac] =3D Q_KEY_CODE_AUDIOPLAY, /* xorgevdev:172 -> linux:164 (KEY_PLAY= PAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */ + [0xad] =3D Q_KEY_CODE_AUDIOPREV, /* xorgevdev:173 -> linux:165 (KEY_PREV= IOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */ + [0xae] =3D Q_KEY_CODE_AUDIOSTOP, /* xorgevdev:174 -> linux:166 (KEY_STOP= CD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */ + [0xaf] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:175 -> linux:167 (KEY_RECOR= D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:176 -> linux:168 (KEY_REWIN= D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:177 -> linux:169 (KEY_PHONE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:178 -> linux:170 (KEY_ISO) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:179 -> linux:171 (KEY_CONFI= G) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb4] =3D Q_KEY_CODE_AC_HOME, /* xorgevdev:180 -> linux:172 (KEY_HOMEPA= GE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */ + [0xb5] =3D Q_KEY_CODE_AC_REFRESH, /* xorgevdev:181 -> linux:173 (KEY_REF= RESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */ + [0xb6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:182 -> linux:174 (KEY_EXIT)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:183 -> linux:175 (KEY_MOVE)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:184 -> linux:176 (KEY_EDIT)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xb9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:185 -> linux:177 (KEY_SCROL= LUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xba] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:186 -> linux:178 (KEY_SCROL= LDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:187 -> linux:179 (KEY_KPLEF= TPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:188 -> linux:180 (KEY_KPRIG= HTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:189 -> linux:181 (KEY_NEW) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbe] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:190 -> linux:182 (KEY_REDO)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xbf] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:191 -> linux:183 (KEY_F13) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:192 -> linux:184 (KEY_F14) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:193 -> linux:185 (KEY_F15) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:194 -> linux:186 (KEY_F16) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:195 -> linux:187 (KEY_F17) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:196 -> linux:188 (KEY_F18) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:197 -> linux:189 (KEY_F19) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:198 -> linux:190 (KEY_F20) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:199 -> linux:191 (KEY_F21) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:200 -> linux:192 (KEY_F22) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xc9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:201 -> linux:193 (KEY_F23) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xca] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:202 -> linux:194 (KEY_F24) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:203 -> linux:195 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:204 -> linux:196 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:205 -> linux:197 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xce] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:206 -> linux:198 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xcf] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:207 -> linux:199 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:208 -> linux:200 (KEY_PLAYC= D) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:209 -> linux:201 (KEY_PAUSE= CD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:210 -> linux:202 (KEY_PROG3= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:211 -> linux:203 (KEY_PROG4= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:212 -> linux:204 (KEY_DASHB= OARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:213 -> linux:205 (KEY_SUSPE= ND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:214 -> linux:206 (KEY_CLOSE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:215 -> linux:207 (KEY_PLAY)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:216 -> linux:208 (KEY_FASTF= ORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xd9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:217 -> linux:209 (KEY_BASSB= OOST) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xda] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:218 -> linux:210 (KEY_PRINT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:219 -> linux:211 (KEY_HP) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:220 -> linux:212 (KEY_CAMER= A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:221 -> linux:213 (KEY_SOUND= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xde] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:222 -> linux:214 (KEY_QUEST= ION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xdf] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:223 -> linux:215 (KEY_EMAIL= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:224 -> linux:216 (KEY_CHAT)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:225 -> linux:217 (KEY_SEARC= H) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:226 -> linux:218 (KEY_CONNE= CT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:227 -> linux:219 (KEY_FINAN= CE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:228 -> linux:220 (KEY_SPORT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:229 -> linux:221 (KEY_SHOP)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:230 -> linux:222 (KEY_ALTER= ASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:231 -> linux:223 (KEY_CANCE= L) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:232 -> linux:224 (KEY_BRIGH= TNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xe9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:233 -> linux:225 (KEY_BRIGH= TNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xea] =3D Q_KEY_CODE_MEDIASELECT, /* xorgevdev:234 -> linux:226 (KEY_ME= DIA) -> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */ + [0xeb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:235 -> linux:227 (KEY_SWITC= HVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xec] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:236 -> linux:228 (KEY_KBDIL= LUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xed] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:237 -> linux:229 (KEY_KBDIL= LUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xee] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:238 -> linux:230 (KEY_KBDIL= LUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xef] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:239 -> linux:231 (KEY_SEND)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:240 -> linux:232 (KEY_REPLY= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:241 -> linux:233 (KEY_FORWA= RDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:242 -> linux:234 (KEY_SAVE)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:243 -> linux:235 (KEY_DOCUM= ENTS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:244 -> linux:236 (KEY_BATTE= RY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:245 -> linux:237 (KEY_BLUET= OOTH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:246 -> linux:238 (KEY_WLAN)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:247 -> linux:239 (KEY_UWB) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:248 -> linux:240 (KEY_UNKNO= WN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xf9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:249 -> linux:241 (KEY_VIDEO= _NEXT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfa] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:250 -> linux:242 (KEY_VIDEO= _PREV) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:251 -> linux:243 (KEY_BRIGH= TNESS_CYCLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:252 -> linux:244 (KEY_BRIGH= TNESS_ZERO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:253 -> linux:245 (KEY_DISPL= AY_OFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xfe] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:254 -> linux:246 (KEY_WIMAX= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0xff] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:255 -> linux:247 (unnamed) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x100] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:256 -> linux:248 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x101] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:257 -> linux:249 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x102] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:258 -> linux:250 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x103] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:259 -> linux:251 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x104] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:260 -> linux:252 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x105] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:261 -> linux:253 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x106] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:262 -> linux:254 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x107] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:263 -> linux:255 (unnamed)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x108] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:264 -> linux:256 (BTN_0) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x109] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:265 -> linux:257 (BTN_1) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:266 -> linux:258 (BTN_2) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:267 -> linux:259 (BTN_3) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:268 -> linux:260 (BTN_4) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:269 -> linux:261 (BTN_5) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:270 -> linux:262 (BTN_6) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x10f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:271 -> linux:263 (BTN_7) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x110] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:272 -> linux:264 (BTN_8) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x111] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:273 -> linux:265 (BTN_9) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x118] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:280 -> linux:272 (BTN_LEFT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x119] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:281 -> linux:273 (BTN_RIGH= T) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:282 -> linux:274 (BTN_MIDD= LE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:283 -> linux:275 (BTN_SIDE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:284 -> linux:276 (BTN_EXTR= A) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:285 -> linux:277 (BTN_FORW= ARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:286 -> linux:278 (BTN_BACK= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x11f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:287 -> linux:279 (BTN_TASK= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x128] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:296 -> linux:288 (BTN_TRIG= GER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x129] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:297 -> linux:289 (BTN_THUM= B) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:298 -> linux:290 (BTN_THUM= B2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:299 -> linux:291 (BTN_TOP)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:300 -> linux:292 (BTN_TOP2= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:301 -> linux:293 (BTN_PINK= IE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:302 -> linux:294 (BTN_BASE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x12f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:303 -> linux:295 (BTN_BASE= 2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x130] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:304 -> linux:296 (BTN_BASE= 3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x131] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:305 -> linux:297 (BTN_BASE= 4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x132] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:306 -> linux:298 (BTN_BASE= 5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x133] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:307 -> linux:299 (BTN_BASE= 6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x137] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:311 -> linux:303 (BTN_DEAD= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x138] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:312 -> linux:304 (BTN_A) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x139] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:313 -> linux:305 (BTN_B) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:314 -> linux:306 (BTN_C) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:315 -> linux:307 (BTN_X) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:316 -> linux:308 (BTN_Y) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:317 -> linux:309 (BTN_Z) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:318 -> linux:310 (BTN_TL) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:319 -> linux:311 (BTN_TR) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x140] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:320 -> linux:312 (BTN_TL2)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x141] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:321 -> linux:313 (BTN_TR2)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x142] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:322 -> linux:314 (BTN_SELE= CT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x143] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:323 -> linux:315 (BTN_STAR= T) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x144] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:324 -> linux:316 (BTN_MODE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x145] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:325 -> linux:317 (BTN_THUM= BL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x146] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:326 -> linux:318 (BTN_THUM= BR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x148] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:328 -> linux:320 (BTN_TOOL= _PEN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x149] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:329 -> linux:321 (BTN_TOOL= _RUBBER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:330 -> linux:322 (BTN_TOOL= _BRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:331 -> linux:323 (BTN_TOOL= _PENCIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:332 -> linux:324 (BTN_TOOL= _AIRBRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:333 -> linux:325 (BTN_TOOL= _FINGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:334 -> linux:326 (BTN_TOOL= _MOUSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x14f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:335 -> linux:327 (BTN_TOOL= _LENS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x152] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:338 -> linux:330 (BTN_TOUC= H) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x153] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:339 -> linux:331 (BTN_STYL= US) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x154] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:340 -> linux:332 (BTN_STYL= US2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x155] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:341 -> linux:333 (BTN_TOOL= _DOUBLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x156] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:342 -> linux:334 (BTN_TOOL= _TRIPLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x157] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:343 -> linux:335 (BTN_TOOL= _QUADTAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x158] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:344 -> linux:336 (BTN_GEAR= _DOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x159] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:345 -> linux:337 (BTN_GEAR= _UP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x168] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:360 -> linux:352 (KEY_OK) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x169] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:361 -> linux:353 (KEY_SELE= CT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:362 -> linux:354 (KEY_GOTO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:363 -> linux:355 (KEY_CLEA= R) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:364 -> linux:356 (KEY_POWE= R2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:365 -> linux:357 (KEY_OPTI= ON) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:366 -> linux:358 (KEY_INFO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x16f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:367 -> linux:359 (KEY_TIME= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x170] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:368 -> linux:360 (KEY_VEND= OR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x171] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:369 -> linux:361 (KEY_ARCH= IVE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x172] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:370 -> linux:362 (KEY_PROG= RAM) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x173] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:371 -> linux:363 (KEY_CHAN= NEL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x174] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:372 -> linux:364 (KEY_FAVO= RITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x175] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:373 -> linux:365 (KEY_EPG)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x176] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:374 -> linux:366 (KEY_PVR)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x177] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:375 -> linux:367 (KEY_MHP)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x178] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:376 -> linux:368 (KEY_LANG= UAGE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x179] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:377 -> linux:369 (KEY_TITL= E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:378 -> linux:370 (KEY_SUBT= ITLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:379 -> linux:371 (KEY_ANGL= E) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:380 -> linux:372 (KEY_ZOOM= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:381 -> linux:373 (KEY_MODE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:382 -> linux:374 (KEY_KEYB= OARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x17f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:383 -> linux:375 (KEY_SCRE= EN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x180] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:384 -> linux:376 (KEY_PC) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x181] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:385 -> linux:377 (KEY_TV) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x182] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:386 -> linux:378 (KEY_TV2)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x183] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:387 -> linux:379 (KEY_VCR)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x184] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:388 -> linux:380 (KEY_VCR2= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x185] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:389 -> linux:381 (KEY_SAT)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x186] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:390 -> linux:382 (KEY_SAT2= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x187] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:391 -> linux:383 (KEY_CD) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x188] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:392 -> linux:384 (KEY_TAPE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x189] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:393 -> linux:385 (KEY_RADI= O) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:394 -> linux:386 (KEY_TUNE= R) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:395 -> linux:387 (KEY_PLAY= ER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:396 -> linux:388 (KEY_TEXT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:397 -> linux:389 (KEY_DVD)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:398 -> linux:390 (KEY_AUX)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x18f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:399 -> linux:391 (KEY_MP3)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x190] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:400 -> linux:392 (KEY_AUDI= O) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x191] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:401 -> linux:393 (KEY_VIDE= O) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x192] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:402 -> linux:394 (KEY_DIRE= CTORY) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x193] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:403 -> linux:395 (KEY_LIST= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x194] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:404 -> linux:396 (KEY_MEMO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x195] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:405 -> linux:397 (KEY_CALE= NDAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x196] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:406 -> linux:398 (KEY_RED)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x197] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:407 -> linux:399 (KEY_GREE= N) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x198] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:408 -> linux:400 (KEY_YELL= OW) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x199] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:409 -> linux:401 (KEY_BLUE= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:410 -> linux:402 (KEY_CHAN= NELUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:411 -> linux:403 (KEY_CHAN= NELDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:412 -> linux:404 (KEY_FIRS= T) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:413 -> linux:405 (KEY_LAST= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:414 -> linux:406 (KEY_AB) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x19f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:415 -> linux:407 (KEY_NEXT= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:416 -> linux:408 (KEY_REST= ART) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:417 -> linux:409 (KEY_SLOW= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:418 -> linux:410 (KEY_SHUF= FLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:419 -> linux:411 (KEY_BREA= K) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:420 -> linux:412 (KEY_PREV= IOUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:421 -> linux:413 (KEY_DIGI= TS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:422 -> linux:414 (KEY_TEEN= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:423 -> linux:415 (KEY_TWEN= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:424 -> linux:416 (KEY_VIDE= OPHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1a9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:425 -> linux:417 (KEY_GAME= S) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1aa] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:426 -> linux:418 (KEY_ZOOM= IN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ab] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:427 -> linux:419 (KEY_ZOOM= OUT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ac] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:428 -> linux:420 (KEY_ZOOM= RESET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ad] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:429 -> linux:421 (KEY_WORD= PROCESSOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ae] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:430 -> linux:422 (KEY_EDIT= OR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1af] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:431 -> linux:423 (KEY_SPRE= ADSHEET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:432 -> linux:424 (KEY_GRAP= HICSEDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:433 -> linux:425 (KEY_PRES= ENTATION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:434 -> linux:426 (KEY_DATA= BASE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:435 -> linux:427 (KEY_NEWS= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:436 -> linux:428 (KEY_VOIC= EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:437 -> linux:429 (KEY_ADDR= ESSBOOK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:438 -> linux:430 (KEY_MESS= ENGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:439 -> linux:431 (KEY_DISP= LAYTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:440 -> linux:432 (KEY_SPEL= LCHECK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1b9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:441 -> linux:433 (KEY_LOGO= FF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ba] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:442 -> linux:434 (KEY_DOLL= AR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1bb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:443 -> linux:435 (KEY_EURO= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1bc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:444 -> linux:436 (KEY_FRAM= EBACK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1bd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:445 -> linux:437 (KEY_FRAM= EFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1be] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:446 -> linux:438 (KEY_CONT= EXT_MENU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1bf] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:447 -> linux:439 (KEY_MEDI= A_REPEAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:456 -> linux:448 (KEY_DEL_= EOL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1c9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:457 -> linux:449 (KEY_DEL_= EOS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ca] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:458 -> linux:450 (KEY_INS_= LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1cb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:459 -> linux:451 (KEY_DEL_= LINE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:472 -> linux:464 (KEY_FN) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1d9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:473 -> linux:465 (KEY_FN_E= SC) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1da] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:474 -> linux:466 (KEY_FN_F= 1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1db] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:475 -> linux:467 (KEY_FN_F= 2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1dc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:476 -> linux:468 (KEY_FN_F= 3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1dd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:477 -> linux:469 (KEY_FN_F= 4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1de] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:478 -> linux:470 (KEY_FN_F= 5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1df] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:479 -> linux:471 (KEY_FN_F= 6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e0] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:480 -> linux:472 (KEY_FN_F= 7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e1] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:481 -> linux:473 (KEY_FN_F= 8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e2] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:482 -> linux:474 (KEY_FN_F= 9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e3] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:483 -> linux:475 (KEY_FN_F= 10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e4] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:484 -> linux:476 (KEY_FN_F= 11) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e5] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:485 -> linux:477 (KEY_FN_F= 12) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e6] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:486 -> linux:478 (KEY_FN_1= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e7] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:487 -> linux:479 (KEY_FN_2= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e8] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:488 -> linux:480 (KEY_FN_D= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1e9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:489 -> linux:481 (KEY_FN_E= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ea] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:490 -> linux:482 (KEY_FN_F= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1eb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:491 -> linux:483 (KEY_FN_S= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ec] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:492 -> linux:484 (KEY_FN_B= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1f9] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:505 -> linux:497 (KEY_BRL_= DOT1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fa] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:506 -> linux:498 (KEY_BRL_= DOT2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fb] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:507 -> linux:499 (KEY_BRL_= DOT3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fc] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:508 -> linux:500 (KEY_BRL_= DOT4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fd] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:509 -> linux:501 (KEY_BRL_= DOT5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1fe] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:510 -> linux:502 (KEY_BRL_= DOT6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x1ff] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:511 -> linux:503 (KEY_BRL_= DOT7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x200] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:512 -> linux:504 (KEY_BRL_= DOT8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x201] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:513 -> linux:505 (KEY_BRL_= DOT9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x202] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:514 -> linux:506 (KEY_BRL_= DOT10) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x208] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:520 -> linux:512 (KEY_NUME= RIC_0) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x209] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:521 -> linux:513 (KEY_NUME= RIC_1) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20a] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:522 -> linux:514 (KEY_NUME= RIC_2) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20b] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:523 -> linux:515 (KEY_NUME= RIC_3) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20c] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:524 -> linux:516 (KEY_NUME= RIC_4) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20d] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:525 -> linux:517 (KEY_NUME= RIC_5) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20e] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:526 -> linux:518 (KEY_NUME= RIC_6) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x20f] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:527 -> linux:519 (KEY_NUME= RIC_7) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x210] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:528 -> linux:520 (KEY_NUME= RIC_8) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x211] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:529 -> linux:521 (KEY_NUME= RIC_9) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x212] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:530 -> linux:522 (KEY_NUME= RIC_STAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x213] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:531 -> linux:523 (KEY_NUME= RIC_POUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x214] =3D Q_KEY_CODE_UNMAPPED, /* xorgevdev:532 -> linux:524 (KEY_RFKI= LL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_xorgevdev_to_qcode_len =3D sizeof(qemu_input_ma= p_xorgevdev_to_qcode)/sizeof(qemu_input_map_xorgevdev_to_qcode[0]); diff --git a/ui/input-keymap-xorgkbd-to-qcode.c b/ui/input-keymap-xorgkbd-t= o-qcode.c new file mode 100644 index 0000000000..c46097a0e8 --- /dev/null +++ b/ui/input-keymap-xorgkbd-to-qcode.c @@ -0,0 +1,122 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_xorgkbd_to_qcode= code-map keymaps.csv xorgkbd qcode +*/ +const guint16 qemu_input_map_xorgkbd_to_qcode[209] =3D { + [0x9] =3D Q_KEY_CODE_ESC, /* xorgkbd:9 -> linux:1 (KEY_ESC) -> qcode:Q_K= EY_CODE_ESC (esc) */ + [0xa] =3D Q_KEY_CODE_1, /* xorgkbd:10 -> linux:2 (KEY_1) -> qcode:Q_KEY_= CODE_1 (1) */ + [0xb] =3D Q_KEY_CODE_2, /* xorgkbd:11 -> linux:3 (KEY_2) -> qcode:Q_KEY_= CODE_2 (2) */ + [0xc] =3D Q_KEY_CODE_3, /* xorgkbd:12 -> linux:4 (KEY_3) -> qcode:Q_KEY_= CODE_3 (3) */ + [0xd] =3D Q_KEY_CODE_4, /* xorgkbd:13 -> linux:5 (KEY_4) -> qcode:Q_KEY_= CODE_4 (4) */ + [0xe] =3D Q_KEY_CODE_5, /* xorgkbd:14 -> linux:6 (KEY_5) -> qcode:Q_KEY_= CODE_5 (5) */ + [0xf] =3D Q_KEY_CODE_6, /* xorgkbd:15 -> linux:7 (KEY_6) -> qcode:Q_KEY_= CODE_6 (6) */ + [0x10] =3D Q_KEY_CODE_7, /* xorgkbd:16 -> linux:8 (KEY_7) -> qcode:Q_KEY= _CODE_7 (7) */ + [0x11] =3D Q_KEY_CODE_8, /* xorgkbd:17 -> linux:9 (KEY_8) -> qcode:Q_KEY= _CODE_8 (8) */ + [0x12] =3D Q_KEY_CODE_9, /* xorgkbd:18 -> linux:10 (KEY_9) -> qcode:Q_KE= Y_CODE_9 (9) */ + [0x13] =3D Q_KEY_CODE_0, /* xorgkbd:19 -> linux:11 (KEY_0) -> qcode:Q_KE= Y_CODE_0 (0) */ + [0x14] =3D Q_KEY_CODE_MINUS, /* xorgkbd:20 -> linux:12 (KEY_MINUS) -> qc= ode:Q_KEY_CODE_MINUS (minus) */ + [0x15] =3D Q_KEY_CODE_EQUAL, /* xorgkbd:21 -> linux:13 (KEY_EQUAL) -> qc= ode:Q_KEY_CODE_EQUAL (equal) */ + [0x16] =3D Q_KEY_CODE_BACKSPACE, /* xorgkbd:22 -> linux:14 (KEY_BACKSPAC= E) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x17] =3D Q_KEY_CODE_TAB, /* xorgkbd:23 -> linux:15 (KEY_TAB) -> qcode:= Q_KEY_CODE_TAB (tab) */ + [0x18] =3D Q_KEY_CODE_Q, /* xorgkbd:24 -> linux:16 (KEY_Q) -> qcode:Q_KE= Y_CODE_Q (q) */ + [0x19] =3D Q_KEY_CODE_W, /* xorgkbd:25 -> linux:17 (KEY_W) -> qcode:Q_KE= Y_CODE_W (w) */ + [0x1a] =3D Q_KEY_CODE_E, /* xorgkbd:26 -> linux:18 (KEY_E) -> qcode:Q_KE= Y_CODE_E (e) */ + [0x1b] =3D Q_KEY_CODE_R, /* xorgkbd:27 -> linux:19 (KEY_R) -> qcode:Q_KE= Y_CODE_R (r) */ + [0x1c] =3D Q_KEY_CODE_T, /* xorgkbd:28 -> linux:20 (KEY_T) -> qcode:Q_KE= Y_CODE_T (t) */ + [0x1d] =3D Q_KEY_CODE_Y, /* xorgkbd:29 -> linux:21 (KEY_Y) -> qcode:Q_KE= Y_CODE_Y (y) */ + [0x1e] =3D Q_KEY_CODE_U, /* xorgkbd:30 -> linux:22 (KEY_U) -> qcode:Q_KE= Y_CODE_U (u) */ + [0x1f] =3D Q_KEY_CODE_I, /* xorgkbd:31 -> linux:23 (KEY_I) -> qcode:Q_KE= Y_CODE_I (i) */ + [0x20] =3D Q_KEY_CODE_O, /* xorgkbd:32 -> linux:24 (KEY_O) -> qcode:Q_KE= Y_CODE_O (o) */ + [0x21] =3D Q_KEY_CODE_P, /* xorgkbd:33 -> linux:25 (KEY_P) -> qcode:Q_KE= Y_CODE_P (p) */ + [0x22] =3D Q_KEY_CODE_BRACKET_LEFT, /* xorgkbd:34 -> linux:26 (KEY_LEFTB= RACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x23] =3D Q_KEY_CODE_BRACKET_RIGHT, /* xorgkbd:35 -> linux:27 (KEY_RIGH= TBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x24] =3D Q_KEY_CODE_RET, /* xorgkbd:36 -> linux:28 (KEY_ENTER) -> qcod= e:Q_KEY_CODE_RET (ret) */ + [0x25] =3D Q_KEY_CODE_CTRL, /* xorgkbd:37 -> linux:29 (KEY_LEFTCTRL) -> = qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x26] =3D Q_KEY_CODE_A, /* xorgkbd:38 -> linux:30 (KEY_A) -> qcode:Q_KE= Y_CODE_A (a) */ + [0x27] =3D Q_KEY_CODE_S, /* xorgkbd:39 -> linux:31 (KEY_S) -> qcode:Q_KE= Y_CODE_S (s) */ + [0x28] =3D Q_KEY_CODE_D, /* xorgkbd:40 -> linux:32 (KEY_D) -> qcode:Q_KE= Y_CODE_D (d) */ + [0x29] =3D Q_KEY_CODE_F, /* xorgkbd:41 -> linux:33 (KEY_F) -> qcode:Q_KE= Y_CODE_F (f) */ + [0x2a] =3D Q_KEY_CODE_G, /* xorgkbd:42 -> linux:34 (KEY_G) -> qcode:Q_KE= Y_CODE_G (g) */ + [0x2b] =3D Q_KEY_CODE_H, /* xorgkbd:43 -> linux:35 (KEY_H) -> qcode:Q_KE= Y_CODE_H (h) */ + [0x2c] =3D Q_KEY_CODE_J, /* xorgkbd:44 -> linux:36 (KEY_J) -> qcode:Q_KE= Y_CODE_J (j) */ + [0x2d] =3D Q_KEY_CODE_K, /* xorgkbd:45 -> linux:37 (KEY_K) -> qcode:Q_KE= Y_CODE_K (k) */ + [0x2e] =3D Q_KEY_CODE_L, /* xorgkbd:46 -> linux:38 (KEY_L) -> qcode:Q_KE= Y_CODE_L (l) */ + [0x2f] =3D Q_KEY_CODE_SEMICOLON, /* xorgkbd:47 -> linux:39 (KEY_SEMICOLO= N) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x30] =3D Q_KEY_CODE_APOSTROPHE, /* xorgkbd:48 -> linux:40 (KEY_APOSTRO= PHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x31] =3D Q_KEY_CODE_GRAVE_ACCENT, /* xorgkbd:49 -> linux:41 (KEY_GRAVE= ) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x32] =3D Q_KEY_CODE_SHIFT, /* xorgkbd:50 -> linux:42 (KEY_LEFTSHIFT) -= > qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x33] =3D Q_KEY_CODE_BACKSLASH, /* xorgkbd:51 -> linux:43 (KEY_BACKSLAS= H) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x34] =3D Q_KEY_CODE_Z, /* xorgkbd:52 -> linux:44 (KEY_Z) -> qcode:Q_KE= Y_CODE_Z (z) */ + [0x35] =3D Q_KEY_CODE_X, /* xorgkbd:53 -> linux:45 (KEY_X) -> qcode:Q_KE= Y_CODE_X (x) */ + [0x36] =3D Q_KEY_CODE_C, /* xorgkbd:54 -> linux:46 (KEY_C) -> qcode:Q_KE= Y_CODE_C (c) */ + [0x37] =3D Q_KEY_CODE_V, /* xorgkbd:55 -> linux:47 (KEY_V) -> qcode:Q_KE= Y_CODE_V (v) */ + [0x38] =3D Q_KEY_CODE_B, /* xorgkbd:56 -> linux:48 (KEY_B) -> qcode:Q_KE= Y_CODE_B (b) */ + [0x39] =3D Q_KEY_CODE_N, /* xorgkbd:57 -> linux:49 (KEY_N) -> qcode:Q_KE= Y_CODE_N (n) */ + [0x3a] =3D Q_KEY_CODE_M, /* xorgkbd:58 -> linux:50 (KEY_M) -> qcode:Q_KE= Y_CODE_M (m) */ + [0x3b] =3D Q_KEY_CODE_COMMA, /* xorgkbd:59 -> linux:51 (KEY_COMMA) -> qc= ode:Q_KEY_CODE_COMMA (comma) */ + [0x3c] =3D Q_KEY_CODE_DOT, /* xorgkbd:60 -> linux:52 (KEY_DOT) -> qcode:= Q_KEY_CODE_DOT (dot) */ + [0x3d] =3D Q_KEY_CODE_SLASH, /* xorgkbd:61 -> linux:53 (KEY_SLASH) -> qc= ode:Q_KEY_CODE_SLASH (slash) */ + [0x3e] =3D Q_KEY_CODE_SHIFT_R, /* xorgkbd:62 -> linux:54 (KEY_RIGHTSHIFT= ) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x3f] =3D Q_KEY_CODE_KP_MULTIPLY, /* xorgkbd:63 -> linux:55 (KEY_KPASTE= RISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x40] =3D Q_KEY_CODE_ALT, /* xorgkbd:64 -> linux:56 (KEY_LEFTALT) -> qc= ode:Q_KEY_CODE_ALT (alt) */ + [0x41] =3D Q_KEY_CODE_SPC, /* xorgkbd:65 -> linux:57 (KEY_SPACE) -> qcod= e:Q_KEY_CODE_SPC (spc) */ + [0x42] =3D Q_KEY_CODE_CAPS_LOCK, /* xorgkbd:66 -> linux:58 (KEY_CAPSLOCK= ) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x43] =3D Q_KEY_CODE_F1, /* xorgkbd:67 -> linux:59 (KEY_F1) -> qcode:Q_= KEY_CODE_F1 (f1) */ + [0x44] =3D Q_KEY_CODE_F2, /* xorgkbd:68 -> linux:60 (KEY_F2) -> qcode:Q_= KEY_CODE_F2 (f2) */ + [0x45] =3D Q_KEY_CODE_F3, /* xorgkbd:69 -> linux:61 (KEY_F3) -> qcode:Q_= KEY_CODE_F3 (f3) */ + [0x46] =3D Q_KEY_CODE_F4, /* xorgkbd:70 -> linux:62 (KEY_F4) -> qcode:Q_= KEY_CODE_F4 (f4) */ + [0x47] =3D Q_KEY_CODE_F5, /* xorgkbd:71 -> linux:63 (KEY_F5) -> qcode:Q_= KEY_CODE_F5 (f5) */ + [0x48] =3D Q_KEY_CODE_F6, /* xorgkbd:72 -> linux:64 (KEY_F6) -> qcode:Q_= KEY_CODE_F6 (f6) */ + [0x49] =3D Q_KEY_CODE_F7, /* xorgkbd:73 -> linux:65 (KEY_F7) -> qcode:Q_= KEY_CODE_F7 (f7) */ + [0x4a] =3D Q_KEY_CODE_F8, /* xorgkbd:74 -> linux:66 (KEY_F8) -> qcode:Q_= KEY_CODE_F8 (f8) */ + [0x4b] =3D Q_KEY_CODE_F9, /* xorgkbd:75 -> linux:67 (KEY_F9) -> qcode:Q_= KEY_CODE_F9 (f9) */ + [0x4c] =3D Q_KEY_CODE_F10, /* xorgkbd:76 -> linux:68 (KEY_F10) -> qcode:= Q_KEY_CODE_F10 (f10) */ + [0x4d] =3D Q_KEY_CODE_NUM_LOCK, /* xorgkbd:77 -> linux:69 (KEY_NUMLOCK) = -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x4e] =3D Q_KEY_CODE_SCROLL_LOCK, /* xorgkbd:78 -> linux:70 (KEY_SCROLL= LOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x4f] =3D Q_KEY_CODE_KP_7, /* xorgkbd:79 -> linux:71 (KEY_KP7) -> qcode= :Q_KEY_CODE_KP_7 (kp_7) */ + [0x50] =3D Q_KEY_CODE_KP_8, /* xorgkbd:80 -> linux:72 (KEY_KP8) -> qcode= :Q_KEY_CODE_KP_8 (kp_8) */ + [0x51] =3D Q_KEY_CODE_KP_9, /* xorgkbd:81 -> linux:73 (KEY_KP9) -> qcode= :Q_KEY_CODE_KP_9 (kp_9) */ + [0x52] =3D Q_KEY_CODE_KP_SUBTRACT, /* xorgkbd:82 -> linux:74 (KEY_KPMINU= S) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x53] =3D Q_KEY_CODE_KP_4, /* xorgkbd:83 -> linux:75 (KEY_KP4) -> qcode= :Q_KEY_CODE_KP_4 (kp_4) */ + [0x54] =3D Q_KEY_CODE_KP_5, /* xorgkbd:84 -> linux:76 (KEY_KP5) -> qcode= :Q_KEY_CODE_KP_5 (kp_5) */ + [0x55] =3D Q_KEY_CODE_KP_6, /* xorgkbd:85 -> linux:77 (KEY_KP6) -> qcode= :Q_KEY_CODE_KP_6 (kp_6) */ + [0x56] =3D Q_KEY_CODE_KP_ADD, /* xorgkbd:86 -> linux:78 (KEY_KPPLUS) -> = qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x57] =3D Q_KEY_CODE_KP_1, /* xorgkbd:87 -> linux:79 (KEY_KP1) -> qcode= :Q_KEY_CODE_KP_1 (kp_1) */ + [0x58] =3D Q_KEY_CODE_KP_2, /* xorgkbd:88 -> linux:80 (KEY_KP2) -> qcode= :Q_KEY_CODE_KP_2 (kp_2) */ + [0x59] =3D Q_KEY_CODE_KP_3, /* xorgkbd:89 -> linux:81 (KEY_KP3) -> qcode= :Q_KEY_CODE_KP_3 (kp_3) */ + [0x5a] =3D Q_KEY_CODE_KP_0, /* xorgkbd:90 -> linux:82 (KEY_KP0) -> qcode= :Q_KEY_CODE_KP_0 (kp_0) */ + [0x5b] =3D Q_KEY_CODE_KP_DECIMAL, /* xorgkbd:91 -> linux:83 (KEY_KPDOT) = -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x5e] =3D Q_KEY_CODE_LESS, /* xorgkbd:94 -> linux:86 (KEY_102ND) -> qco= de:Q_KEY_CODE_LESS (less) */ + [0x5f] =3D Q_KEY_CODE_F11, /* xorgkbd:95 -> linux:87 (KEY_F11) -> qcode:= Q_KEY_CODE_F11 (f11) */ + [0x60] =3D Q_KEY_CODE_F12, /* xorgkbd:96 -> linux:88 (KEY_F12) -> qcode:= Q_KEY_CODE_F12 (f12) */ + [0x61] =3D Q_KEY_CODE_HOME, /* xorgkbd:97 -> linux:102 (KEY_HOME) -> qco= de:Q_KEY_CODE_HOME (home) */ + [0x62] =3D Q_KEY_CODE_UP, /* xorgkbd:98 -> linux:103 (KEY_UP) -> qcode:Q= _KEY_CODE_UP (up) */ + [0x63] =3D Q_KEY_CODE_PGUP, /* xorgkbd:99 -> linux:104 (KEY_PAGEUP) -> q= code:Q_KEY_CODE_PGUP (pgup) */ + [0x64] =3D Q_KEY_CODE_LEFT, /* xorgkbd:100 -> linux:105 (KEY_LEFT) -> qc= ode:Q_KEY_CODE_LEFT (left) */ + [0x66] =3D Q_KEY_CODE_RIGHT, /* xorgkbd:102 -> linux:106 (KEY_RIGHT) -> = qcode:Q_KEY_CODE_RIGHT (right) */ + [0x67] =3D Q_KEY_CODE_END, /* xorgkbd:103 -> linux:107 (KEY_END) -> qcod= e:Q_KEY_CODE_END (end) */ + [0x68] =3D Q_KEY_CODE_DOWN, /* xorgkbd:104 -> linux:108 (KEY_DOWN) -> qc= ode:Q_KEY_CODE_DOWN (down) */ + [0x69] =3D Q_KEY_CODE_PGDN, /* xorgkbd:105 -> linux:109 (KEY_PAGEDOWN) -= > qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x6a] =3D Q_KEY_CODE_INSERT, /* xorgkbd:106 -> linux:110 (KEY_INSERT) -= > qcode:Q_KEY_CODE_INSERT (insert) */ + [0x6b] =3D Q_KEY_CODE_DELETE, /* xorgkbd:107 -> linux:111 (KEY_DELETE) -= > qcode:Q_KEY_CODE_DELETE (delete) */ + [0x6c] =3D Q_KEY_CODE_KP_ENTER, /* xorgkbd:108 -> linux:96 (KEY_KPENTER)= -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x6d] =3D Q_KEY_CODE_CTRL_R, /* xorgkbd:109 -> linux:97 (KEY_RIGHTCTRL)= -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x6e] =3D Q_KEY_CODE_PAUSE, /* xorgkbd:110 -> linux:119 (KEY_PAUSE) -> = qcode:Q_KEY_CODE_PAUSE (pause) */ + [0x6f] =3D Q_KEY_CODE_SYSRQ, /* xorgkbd:111 -> linux:99 (KEY_SYSRQ) -> q= code:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x70] =3D Q_KEY_CODE_KP_DIVIDE, /* xorgkbd:112 -> linux:98 (KEY_KPSLASH= ) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x71] =3D Q_KEY_CODE_ALT_R, /* xorgkbd:113 -> linux:100 (KEY_RIGHTALT) = -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x73] =3D Q_KEY_CODE_META_L, /* xorgkbd:115 -> linux:125 (KEY_LEFTMETA)= -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x74] =3D Q_KEY_CODE_META_R, /* xorgkbd:116 -> linux:126 (KEY_RIGHTMETA= ) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x75] =3D Q_KEY_CODE_COMPOSE, /* xorgkbd:117 -> linux:127 (KEY_COMPOSE)= -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x76] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:118 -> linux:183 (KEY_F13) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x77] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:119 -> linux:184 (KEY_F14) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:120 -> linux:185 (KEY_F15) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:121 -> linux:186 (KEY_F16) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7a] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:122 -> linux:187 (KEY_F17) ->= qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7e] =3D Q_KEY_CODE_KP_EQUALS, /* xorgkbd:126 -> linux:117 (KEY_KPEQUA= L) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x85] =3D Q_KEY_CODE_YEN, /* xorgkbd:133 -> linux:124 (KEY_YEN) -> qcod= e:Q_KEY_CODE_YEN (yen) */ + [0xd0] =3D Q_KEY_CODE_UNMAPPED, /* xorgkbd:208 -> linux:93 (KEY_KATAKANA= HIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_xorgkbd_to_qcode_len =3D sizeof(qemu_input_map_= xorgkbd_to_qcode)/sizeof(qemu_input_map_xorgkbd_to_qcode[0]); diff --git a/ui/input-keymap-xorgxquartz-to-qcode.c b/ui/input-keymap-xorgx= quartz-to-qcode.c new file mode 100644 index 0000000000..5758ecd223 --- /dev/null +++ b/ui/input-keymap-xorgxquartz-to-qcode.c @@ -0,0 +1,128 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_xorgxquartz_to_q= code code-map keymaps.csv xorgxquartz qcode +*/ +const guint16 qemu_input_map_xorgxquartz_to_qcode[264] =3D { + [0x8] =3D Q_KEY_CODE_A, /* xorgxquartz:8 -> linux:30 (KEY_A) -> qcode:Q_= KEY_CODE_A (a) */ + [0x9] =3D Q_KEY_CODE_S, /* xorgxquartz:9 -> linux:31 (KEY_S) -> qcode:Q_= KEY_CODE_S (s) */ + [0xa] =3D Q_KEY_CODE_D, /* xorgxquartz:10 -> linux:32 (KEY_D) -> qcode:Q= _KEY_CODE_D (d) */ + [0xb] =3D Q_KEY_CODE_F, /* xorgxquartz:11 -> linux:33 (KEY_F) -> qcode:Q= _KEY_CODE_F (f) */ + [0xc] =3D Q_KEY_CODE_H, /* xorgxquartz:12 -> linux:35 (KEY_H) -> qcode:Q= _KEY_CODE_H (h) */ + [0xd] =3D Q_KEY_CODE_G, /* xorgxquartz:13 -> linux:34 (KEY_G) -> qcode:Q= _KEY_CODE_G (g) */ + [0xe] =3D Q_KEY_CODE_Z, /* xorgxquartz:14 -> linux:44 (KEY_Z) -> qcode:Q= _KEY_CODE_Z (z) */ + [0xf] =3D Q_KEY_CODE_X, /* xorgxquartz:15 -> linux:45 (KEY_X) -> qcode:Q= _KEY_CODE_X (x) */ + [0x10] =3D Q_KEY_CODE_C, /* xorgxquartz:16 -> linux:46 (KEY_C) -> qcode:= Q_KEY_CODE_C (c) */ + [0x11] =3D Q_KEY_CODE_V, /* xorgxquartz:17 -> linux:47 (KEY_V) -> qcode:= Q_KEY_CODE_V (v) */ + [0x12] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:18 -> linux:170 (KEY_ISO)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x13] =3D Q_KEY_CODE_B, /* xorgxquartz:19 -> linux:48 (KEY_B) -> qcode:= Q_KEY_CODE_B (b) */ + [0x14] =3D Q_KEY_CODE_Q, /* xorgxquartz:20 -> linux:16 (KEY_Q) -> qcode:= Q_KEY_CODE_Q (q) */ + [0x15] =3D Q_KEY_CODE_W, /* xorgxquartz:21 -> linux:17 (KEY_W) -> qcode:= Q_KEY_CODE_W (w) */ + [0x16] =3D Q_KEY_CODE_E, /* xorgxquartz:22 -> linux:18 (KEY_E) -> qcode:= Q_KEY_CODE_E (e) */ + [0x17] =3D Q_KEY_CODE_R, /* xorgxquartz:23 -> linux:19 (KEY_R) -> qcode:= Q_KEY_CODE_R (r) */ + [0x18] =3D Q_KEY_CODE_Y, /* xorgxquartz:24 -> linux:21 (KEY_Y) -> qcode:= Q_KEY_CODE_Y (y) */ + [0x19] =3D Q_KEY_CODE_T, /* xorgxquartz:25 -> linux:20 (KEY_T) -> qcode:= Q_KEY_CODE_T (t) */ + [0x1a] =3D Q_KEY_CODE_1, /* xorgxquartz:26 -> linux:2 (KEY_1) -> qcode:Q= _KEY_CODE_1 (1) */ + [0x1b] =3D Q_KEY_CODE_2, /* xorgxquartz:27 -> linux:3 (KEY_2) -> qcode:Q= _KEY_CODE_2 (2) */ + [0x1c] =3D Q_KEY_CODE_3, /* xorgxquartz:28 -> linux:4 (KEY_3) -> qcode:Q= _KEY_CODE_3 (3) */ + [0x1d] =3D Q_KEY_CODE_4, /* xorgxquartz:29 -> linux:5 (KEY_4) -> qcode:Q= _KEY_CODE_4 (4) */ + [0x1e] =3D Q_KEY_CODE_6, /* xorgxquartz:30 -> linux:7 (KEY_6) -> qcode:Q= _KEY_CODE_6 (6) */ + [0x1f] =3D Q_KEY_CODE_5, /* xorgxquartz:31 -> linux:6 (KEY_5) -> qcode:Q= _KEY_CODE_5 (5) */ + [0x20] =3D Q_KEY_CODE_EQUAL, /* xorgxquartz:32 -> linux:13 (KEY_EQUAL) -= > qcode:Q_KEY_CODE_EQUAL (equal) */ + [0x21] =3D Q_KEY_CODE_9, /* xorgxquartz:33 -> linux:10 (KEY_9) -> qcode:= Q_KEY_CODE_9 (9) */ + [0x22] =3D Q_KEY_CODE_7, /* xorgxquartz:34 -> linux:8 (KEY_7) -> qcode:Q= _KEY_CODE_7 (7) */ + [0x23] =3D Q_KEY_CODE_MINUS, /* xorgxquartz:35 -> linux:12 (KEY_MINUS) -= > qcode:Q_KEY_CODE_MINUS (minus) */ + [0x24] =3D Q_KEY_CODE_8, /* xorgxquartz:36 -> linux:9 (KEY_8) -> qcode:Q= _KEY_CODE_8 (8) */ + [0x25] =3D Q_KEY_CODE_0, /* xorgxquartz:37 -> linux:11 (KEY_0) -> qcode:= Q_KEY_CODE_0 (0) */ + [0x26] =3D Q_KEY_CODE_BRACKET_RIGHT, /* xorgxquartz:38 -> linux:27 (KEY_= RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x27] =3D Q_KEY_CODE_O, /* xorgxquartz:39 -> linux:24 (KEY_O) -> qcode:= Q_KEY_CODE_O (o) */ + [0x28] =3D Q_KEY_CODE_U, /* xorgxquartz:40 -> linux:22 (KEY_U) -> qcode:= Q_KEY_CODE_U (u) */ + [0x29] =3D Q_KEY_CODE_BRACKET_LEFT, /* xorgxquartz:41 -> linux:26 (KEY_L= EFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x2a] =3D Q_KEY_CODE_I, /* xorgxquartz:42 -> linux:23 (KEY_I) -> qcode:= Q_KEY_CODE_I (i) */ + [0x2b] =3D Q_KEY_CODE_P, /* xorgxquartz:43 -> linux:25 (KEY_P) -> qcode:= Q_KEY_CODE_P (p) */ + [0x2c] =3D Q_KEY_CODE_RET, /* xorgxquartz:44 -> linux:28 (KEY_ENTER) -> = qcode:Q_KEY_CODE_RET (ret) */ + [0x2d] =3D Q_KEY_CODE_L, /* xorgxquartz:45 -> linux:38 (KEY_L) -> qcode:= Q_KEY_CODE_L (l) */ + [0x2e] =3D Q_KEY_CODE_J, /* xorgxquartz:46 -> linux:36 (KEY_J) -> qcode:= Q_KEY_CODE_J (j) */ + [0x2f] =3D Q_KEY_CODE_APOSTROPHE, /* xorgxquartz:47 -> linux:40 (KEY_APO= STROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x30] =3D Q_KEY_CODE_K, /* xorgxquartz:48 -> linux:37 (KEY_K) -> qcode:= Q_KEY_CODE_K (k) */ + [0x31] =3D Q_KEY_CODE_SEMICOLON, /* xorgxquartz:49 -> linux:39 (KEY_SEMI= COLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x32] =3D Q_KEY_CODE_BACKSLASH, /* xorgxquartz:50 -> linux:43 (KEY_BACK= SLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x33] =3D Q_KEY_CODE_COMMA, /* xorgxquartz:51 -> linux:51 (KEY_COMMA) -= > qcode:Q_KEY_CODE_COMMA (comma) */ + [0x34] =3D Q_KEY_CODE_SLASH, /* xorgxquartz:52 -> linux:53 (KEY_SLASH) -= > qcode:Q_KEY_CODE_SLASH (slash) */ + [0x35] =3D Q_KEY_CODE_N, /* xorgxquartz:53 -> linux:49 (KEY_N) -> qcode:= Q_KEY_CODE_N (n) */ + [0x36] =3D Q_KEY_CODE_M, /* xorgxquartz:54 -> linux:50 (KEY_M) -> qcode:= Q_KEY_CODE_M (m) */ + [0x37] =3D Q_KEY_CODE_DOT, /* xorgxquartz:55 -> linux:52 (KEY_DOT) -> qc= ode:Q_KEY_CODE_DOT (dot) */ + [0x38] =3D Q_KEY_CODE_TAB, /* xorgxquartz:56 -> linux:15 (KEY_TAB) -> qc= ode:Q_KEY_CODE_TAB (tab) */ + [0x39] =3D Q_KEY_CODE_SPC, /* xorgxquartz:57 -> linux:57 (KEY_SPACE) -> = qcode:Q_KEY_CODE_SPC (spc) */ + [0x3a] =3D Q_KEY_CODE_GRAVE_ACCENT, /* xorgxquartz:58 -> linux:41 (KEY_G= RAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x3b] =3D Q_KEY_CODE_BACKSPACE, /* xorgxquartz:59 -> linux:14 (KEY_BACK= SPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x3d] =3D Q_KEY_CODE_ESC, /* xorgxquartz:61 -> linux:1 (KEY_ESC) -> qco= de:Q_KEY_CODE_ESC (esc) */ + [0x3e] =3D Q_KEY_CODE_META_R, /* xorgxquartz:62 -> linux:126 (KEY_RIGHTM= ETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x3f] =3D Q_KEY_CODE_META_L, /* xorgxquartz:63 -> linux:125 (KEY_LEFTME= TA) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x40] =3D Q_KEY_CODE_SHIFT, /* xorgxquartz:64 -> linux:42 (KEY_LEFTSHIF= T) -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x41] =3D Q_KEY_CODE_CAPS_LOCK, /* xorgxquartz:65 -> linux:58 (KEY_CAPS= LOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x42] =3D Q_KEY_CODE_ALT, /* xorgxquartz:66 -> linux:56 (KEY_LEFTALT) -= > qcode:Q_KEY_CODE_ALT (alt) */ + [0x43] =3D Q_KEY_CODE_CTRL, /* xorgxquartz:67 -> linux:29 (KEY_LEFTCTRL)= -> qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x44] =3D Q_KEY_CODE_SHIFT_R, /* xorgxquartz:68 -> linux:54 (KEY_RIGHTS= HIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x45] =3D Q_KEY_CODE_ALT_R, /* xorgxquartz:69 -> linux:100 (KEY_RIGHTAL= T) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x46] =3D Q_KEY_CODE_CTRL_R, /* xorgxquartz:70 -> linux:97 (KEY_RIGHTCT= RL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x47] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:71 -> linux:464 (KEY_FN) = -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x48] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:72 -> linux:187 (KEY_F17)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x49] =3D Q_KEY_CODE_KP_DECIMAL, /* xorgxquartz:73 -> linux:83 (KEY_KPD= OT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x4b] =3D Q_KEY_CODE_KP_MULTIPLY, /* xorgxquartz:75 -> linux:55 (KEY_KP= ASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x4d] =3D Q_KEY_CODE_KP_ADD, /* xorgxquartz:77 -> linux:78 (KEY_KPPLUS)= -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x4f] =3D Q_KEY_CODE_NUM_LOCK, /* xorgxquartz:79 -> linux:69 (KEY_NUMLO= CK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x50] =3D Q_KEY_CODE_VOLUMEUP, /* xorgxquartz:80 -> linux:115 (KEY_VOLU= MEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */ + [0x51] =3D Q_KEY_CODE_VOLUMEDOWN, /* xorgxquartz:81 -> linux:114 (KEY_VO= LUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */ + [0x52] =3D Q_KEY_CODE_AUDIOMUTE, /* xorgxquartz:82 -> linux:113 (KEY_MUT= E) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */ + [0x53] =3D Q_KEY_CODE_KP_DIVIDE, /* xorgxquartz:83 -> linux:98 (KEY_KPSL= ASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x54] =3D Q_KEY_CODE_KP_ENTER, /* xorgxquartz:84 -> linux:96 (KEY_KPENT= ER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x56] =3D Q_KEY_CODE_KP_SUBTRACT, /* xorgxquartz:86 -> linux:74 (KEY_KP= MINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x57] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:87 -> linux:188 (KEY_F18)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x58] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:88 -> linux:189 (KEY_F19)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x59] =3D Q_KEY_CODE_KP_EQUALS, /* xorgxquartz:89 -> linux:117 (KEY_KPE= QUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x5a] =3D Q_KEY_CODE_KP_0, /* xorgxquartz:90 -> linux:82 (KEY_KP0) -> q= code:Q_KEY_CODE_KP_0 (kp_0) */ + [0x5b] =3D Q_KEY_CODE_KP_1, /* xorgxquartz:91 -> linux:79 (KEY_KP1) -> q= code:Q_KEY_CODE_KP_1 (kp_1) */ + [0x5c] =3D Q_KEY_CODE_KP_2, /* xorgxquartz:92 -> linux:80 (KEY_KP2) -> q= code:Q_KEY_CODE_KP_2 (kp_2) */ + [0x5d] =3D Q_KEY_CODE_KP_3, /* xorgxquartz:93 -> linux:81 (KEY_KP3) -> q= code:Q_KEY_CODE_KP_3 (kp_3) */ + [0x5e] =3D Q_KEY_CODE_KP_4, /* xorgxquartz:94 -> linux:75 (KEY_KP4) -> q= code:Q_KEY_CODE_KP_4 (kp_4) */ + [0x5f] =3D Q_KEY_CODE_KP_5, /* xorgxquartz:95 -> linux:76 (KEY_KP5) -> q= code:Q_KEY_CODE_KP_5 (kp_5) */ + [0x60] =3D Q_KEY_CODE_KP_6, /* xorgxquartz:96 -> linux:77 (KEY_KP6) -> q= code:Q_KEY_CODE_KP_6 (kp_6) */ + [0x61] =3D Q_KEY_CODE_KP_7, /* xorgxquartz:97 -> linux:71 (KEY_KP7) -> q= code:Q_KEY_CODE_KP_7 (kp_7) */ + [0x62] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:98 -> linux:190 (KEY_F20)= -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x63] =3D Q_KEY_CODE_KP_8, /* xorgxquartz:99 -> linux:72 (KEY_KP8) -> q= code:Q_KEY_CODE_KP_8 (kp_8) */ + [0x64] =3D Q_KEY_CODE_KP_9, /* xorgxquartz:100 -> linux:73 (KEY_KP9) -> = qcode:Q_KEY_CODE_KP_9 (kp_9) */ + [0x65] =3D Q_KEY_CODE_YEN, /* xorgxquartz:101 -> linux:124 (KEY_YEN) -> = qcode:Q_KEY_CODE_YEN (yen) */ + [0x67] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:103 -> linux:95 (KEY_KPJP= COMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x68] =3D Q_KEY_CODE_F5, /* xorgxquartz:104 -> linux:63 (KEY_F5) -> qco= de:Q_KEY_CODE_F5 (f5) */ + [0x69] =3D Q_KEY_CODE_F6, /* xorgxquartz:105 -> linux:64 (KEY_F6) -> qco= de:Q_KEY_CODE_F6 (f6) */ + [0x6a] =3D Q_KEY_CODE_F7, /* xorgxquartz:106 -> linux:65 (KEY_F7) -> qco= de:Q_KEY_CODE_F7 (f7) */ + [0x6b] =3D Q_KEY_CODE_F3, /* xorgxquartz:107 -> linux:61 (KEY_F3) -> qco= de:Q_KEY_CODE_F3 (f3) */ + [0x6c] =3D Q_KEY_CODE_F8, /* xorgxquartz:108 -> linux:66 (KEY_F8) -> qco= de:Q_KEY_CODE_F8 (f8) */ + [0x6d] =3D Q_KEY_CODE_F9, /* xorgxquartz:109 -> linux:67 (KEY_F9) -> qco= de:Q_KEY_CODE_F9 (f9) */ + [0x6f] =3D Q_KEY_CODE_F11, /* xorgxquartz:111 -> linux:87 (KEY_F11) -> q= code:Q_KEY_CODE_F11 (f11) */ + [0x70] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:112 -> linux:90 (KEY_KATA= KANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x71] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:113 -> linux:183 (KEY_F13= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x72] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:114 -> linux:186 (KEY_F16= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x73] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:115 -> linux:184 (KEY_F14= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x75] =3D Q_KEY_CODE_F10, /* xorgxquartz:117 -> linux:68 (KEY_F10) -> q= code:Q_KEY_CODE_F10 (f10) */ + [0x76] =3D Q_KEY_CODE_COMPOSE, /* xorgxquartz:118 -> linux:127 (KEY_COMP= OSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x77] =3D Q_KEY_CODE_F12, /* xorgxquartz:119 -> linux:88 (KEY_F12) -> q= code:Q_KEY_CODE_F12 (f12) */ + [0x79] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:121 -> linux:185 (KEY_F15= ) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7a] =3D Q_KEY_CODE_HELP, /* xorgxquartz:122 -> linux:138 (KEY_HELP) -= > qcode:Q_KEY_CODE_HELP (help) */ + [0x7b] =3D Q_KEY_CODE_HOME, /* xorgxquartz:123 -> linux:102 (KEY_HOME) -= > qcode:Q_KEY_CODE_HOME (home) */ + [0x7c] =3D Q_KEY_CODE_PGUP, /* xorgxquartz:124 -> linux:104 (KEY_PAGEUP)= -> qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x7d] =3D Q_KEY_CODE_DELETE, /* xorgxquartz:125 -> linux:111 (KEY_DELET= E) -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x7e] =3D Q_KEY_CODE_F4, /* xorgxquartz:126 -> linux:62 (KEY_F4) -> qco= de:Q_KEY_CODE_F4 (f4) */ + [0x7f] =3D Q_KEY_CODE_END, /* xorgxquartz:127 -> linux:107 (KEY_END) -> = qcode:Q_KEY_CODE_END (end) */ + [0x80] =3D Q_KEY_CODE_F2, /* xorgxquartz:128 -> linux:60 (KEY_F2) -> qco= de:Q_KEY_CODE_F2 (f2) */ + [0x81] =3D Q_KEY_CODE_PGDN, /* xorgxquartz:129 -> linux:109 (KEY_PAGEDOW= N) -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x82] =3D Q_KEY_CODE_F1, /* xorgxquartz:130 -> linux:59 (KEY_F1) -> qco= de:Q_KEY_CODE_F1 (f1) */ + [0x83] =3D Q_KEY_CODE_LEFT, /* xorgxquartz:131 -> linux:105 (KEY_LEFT) -= > qcode:Q_KEY_CODE_LEFT (left) */ + [0x84] =3D Q_KEY_CODE_RIGHT, /* xorgxquartz:132 -> linux:106 (KEY_RIGHT)= -> qcode:Q_KEY_CODE_RIGHT (right) */ + [0x85] =3D Q_KEY_CODE_DOWN, /* xorgxquartz:133 -> linux:108 (KEY_DOWN) -= > qcode:Q_KEY_CODE_DOWN (down) */ + [0x86] =3D Q_KEY_CODE_UP, /* xorgxquartz:134 -> linux:103 (KEY_UP) -> qc= ode:Q_KEY_CODE_UP (up) */ + [0x107] =3D Q_KEY_CODE_UNMAPPED, /* xorgxquartz:263 -> linux:0 (KEY_RESE= RVED) -> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */ +}; +const guint qemu_input_map_xorgxquartz_to_qcode_len =3D sizeof(qemu_input_= map_xorgxquartz_to_qcode)/sizeof(qemu_input_map_xorgxquartz_to_qcode[0]); diff --git a/ui/input-keymap-xorgxwin-to-qcode.c b/ui/input-keymap-xorgxwin= -to-qcode.c new file mode 100644 index 0000000000..c71714daa8 --- /dev/null +++ b/ui/input-keymap-xorgxwin-to-qcode.c @@ -0,0 +1,122 @@ +/* + * This file is auto-generated from keymaps.csv on 2017-08-31 11:08 + * Database checksum sha256(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193= 413730a402ff3f0097) + * To re-generate, run: + * keymap-gen --lang=3Dglib2 --varname=3Dqemu_input_map_xorgxwin_to_qcod= e code-map keymaps.csv xorgxwin qcode +*/ +const guint16 qemu_input_map_xorgxwin_to_qcode[209] =3D { + [0x9] =3D Q_KEY_CODE_ESC, /* xorgxwin:9 -> linux:1 (KEY_ESC) -> qcode:Q_= KEY_CODE_ESC (esc) */ + [0xa] =3D Q_KEY_CODE_1, /* xorgxwin:10 -> linux:2 (KEY_1) -> qcode:Q_KEY= _CODE_1 (1) */ + [0xb] =3D Q_KEY_CODE_2, /* xorgxwin:11 -> linux:3 (KEY_2) -> qcode:Q_KEY= _CODE_2 (2) */ + [0xc] =3D Q_KEY_CODE_3, /* xorgxwin:12 -> linux:4 (KEY_3) -> qcode:Q_KEY= _CODE_3 (3) */ + [0xd] =3D Q_KEY_CODE_4, /* xorgxwin:13 -> linux:5 (KEY_4) -> qcode:Q_KEY= _CODE_4 (4) */ + [0xe] =3D Q_KEY_CODE_5, /* xorgxwin:14 -> linux:6 (KEY_5) -> qcode:Q_KEY= _CODE_5 (5) */ + [0xf] =3D Q_KEY_CODE_6, /* xorgxwin:15 -> linux:7 (KEY_6) -> qcode:Q_KEY= _CODE_6 (6) */ + [0x10] =3D Q_KEY_CODE_7, /* xorgxwin:16 -> linux:8 (KEY_7) -> qcode:Q_KE= Y_CODE_7 (7) */ + [0x11] =3D Q_KEY_CODE_8, /* xorgxwin:17 -> linux:9 (KEY_8) -> qcode:Q_KE= Y_CODE_8 (8) */ + [0x12] =3D Q_KEY_CODE_9, /* xorgxwin:18 -> linux:10 (KEY_9) -> qcode:Q_K= EY_CODE_9 (9) */ + [0x13] =3D Q_KEY_CODE_0, /* xorgxwin:19 -> linux:11 (KEY_0) -> qcode:Q_K= EY_CODE_0 (0) */ + [0x14] =3D Q_KEY_CODE_MINUS, /* xorgxwin:20 -> linux:12 (KEY_MINUS) -> q= code:Q_KEY_CODE_MINUS (minus) */ + [0x15] =3D Q_KEY_CODE_EQUAL, /* xorgxwin:21 -> linux:13 (KEY_EQUAL) -> q= code:Q_KEY_CODE_EQUAL (equal) */ + [0x16] =3D Q_KEY_CODE_BACKSPACE, /* xorgxwin:22 -> linux:14 (KEY_BACKSPA= CE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */ + [0x17] =3D Q_KEY_CODE_TAB, /* xorgxwin:23 -> linux:15 (KEY_TAB) -> qcode= :Q_KEY_CODE_TAB (tab) */ + [0x18] =3D Q_KEY_CODE_Q, /* xorgxwin:24 -> linux:16 (KEY_Q) -> qcode:Q_K= EY_CODE_Q (q) */ + [0x19] =3D Q_KEY_CODE_W, /* xorgxwin:25 -> linux:17 (KEY_W) -> qcode:Q_K= EY_CODE_W (w) */ + [0x1a] =3D Q_KEY_CODE_E, /* xorgxwin:26 -> linux:18 (KEY_E) -> qcode:Q_K= EY_CODE_E (e) */ + [0x1b] =3D Q_KEY_CODE_R, /* xorgxwin:27 -> linux:19 (KEY_R) -> qcode:Q_K= EY_CODE_R (r) */ + [0x1c] =3D Q_KEY_CODE_T, /* xorgxwin:28 -> linux:20 (KEY_T) -> qcode:Q_K= EY_CODE_T (t) */ + [0x1d] =3D Q_KEY_CODE_Y, /* xorgxwin:29 -> linux:21 (KEY_Y) -> qcode:Q_K= EY_CODE_Y (y) */ + [0x1e] =3D Q_KEY_CODE_U, /* xorgxwin:30 -> linux:22 (KEY_U) -> qcode:Q_K= EY_CODE_U (u) */ + [0x1f] =3D Q_KEY_CODE_I, /* xorgxwin:31 -> linux:23 (KEY_I) -> qcode:Q_K= EY_CODE_I (i) */ + [0x20] =3D Q_KEY_CODE_O, /* xorgxwin:32 -> linux:24 (KEY_O) -> qcode:Q_K= EY_CODE_O (o) */ + [0x21] =3D Q_KEY_CODE_P, /* xorgxwin:33 -> linux:25 (KEY_P) -> qcode:Q_K= EY_CODE_P (p) */ + [0x22] =3D Q_KEY_CODE_BRACKET_LEFT, /* xorgxwin:34 -> linux:26 (KEY_LEFT= BRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */ + [0x23] =3D Q_KEY_CODE_BRACKET_RIGHT, /* xorgxwin:35 -> linux:27 (KEY_RIG= HTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */ + [0x24] =3D Q_KEY_CODE_RET, /* xorgxwin:36 -> linux:28 (KEY_ENTER) -> qco= de:Q_KEY_CODE_RET (ret) */ + [0x25] =3D Q_KEY_CODE_CTRL, /* xorgxwin:37 -> linux:29 (KEY_LEFTCTRL) ->= qcode:Q_KEY_CODE_CTRL (ctrl) */ + [0x26] =3D Q_KEY_CODE_A, /* xorgxwin:38 -> linux:30 (KEY_A) -> qcode:Q_K= EY_CODE_A (a) */ + [0x27] =3D Q_KEY_CODE_S, /* xorgxwin:39 -> linux:31 (KEY_S) -> qcode:Q_K= EY_CODE_S (s) */ + [0x28] =3D Q_KEY_CODE_D, /* xorgxwin:40 -> linux:32 (KEY_D) -> qcode:Q_K= EY_CODE_D (d) */ + [0x29] =3D Q_KEY_CODE_F, /* xorgxwin:41 -> linux:33 (KEY_F) -> qcode:Q_K= EY_CODE_F (f) */ + [0x2a] =3D Q_KEY_CODE_G, /* xorgxwin:42 -> linux:34 (KEY_G) -> qcode:Q_K= EY_CODE_G (g) */ + [0x2b] =3D Q_KEY_CODE_H, /* xorgxwin:43 -> linux:35 (KEY_H) -> qcode:Q_K= EY_CODE_H (h) */ + [0x2c] =3D Q_KEY_CODE_J, /* xorgxwin:44 -> linux:36 (KEY_J) -> qcode:Q_K= EY_CODE_J (j) */ + [0x2d] =3D Q_KEY_CODE_K, /* xorgxwin:45 -> linux:37 (KEY_K) -> qcode:Q_K= EY_CODE_K (k) */ + [0x2e] =3D Q_KEY_CODE_L, /* xorgxwin:46 -> linux:38 (KEY_L) -> qcode:Q_K= EY_CODE_L (l) */ + [0x2f] =3D Q_KEY_CODE_SEMICOLON, /* xorgxwin:47 -> linux:39 (KEY_SEMICOL= ON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */ + [0x30] =3D Q_KEY_CODE_APOSTROPHE, /* xorgxwin:48 -> linux:40 (KEY_APOSTR= OPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */ + [0x31] =3D Q_KEY_CODE_GRAVE_ACCENT, /* xorgxwin:49 -> linux:41 (KEY_GRAV= E) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */ + [0x32] =3D Q_KEY_CODE_SHIFT, /* xorgxwin:50 -> linux:42 (KEY_LEFTSHIFT) = -> qcode:Q_KEY_CODE_SHIFT (shift) */ + [0x33] =3D Q_KEY_CODE_BACKSLASH, /* xorgxwin:51 -> linux:43 (KEY_BACKSLA= SH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */ + [0x34] =3D Q_KEY_CODE_Z, /* xorgxwin:52 -> linux:44 (KEY_Z) -> qcode:Q_K= EY_CODE_Z (z) */ + [0x35] =3D Q_KEY_CODE_X, /* xorgxwin:53 -> linux:45 (KEY_X) -> qcode:Q_K= EY_CODE_X (x) */ + [0x36] =3D Q_KEY_CODE_C, /* xorgxwin:54 -> linux:46 (KEY_C) -> qcode:Q_K= EY_CODE_C (c) */ + [0x37] =3D Q_KEY_CODE_V, /* xorgxwin:55 -> linux:47 (KEY_V) -> qcode:Q_K= EY_CODE_V (v) */ + [0x38] =3D Q_KEY_CODE_B, /* xorgxwin:56 -> linux:48 (KEY_B) -> qcode:Q_K= EY_CODE_B (b) */ + [0x39] =3D Q_KEY_CODE_N, /* xorgxwin:57 -> linux:49 (KEY_N) -> qcode:Q_K= EY_CODE_N (n) */ + [0x3a] =3D Q_KEY_CODE_M, /* xorgxwin:58 -> linux:50 (KEY_M) -> qcode:Q_K= EY_CODE_M (m) */ + [0x3b] =3D Q_KEY_CODE_COMMA, /* xorgxwin:59 -> linux:51 (KEY_COMMA) -> q= code:Q_KEY_CODE_COMMA (comma) */ + [0x3c] =3D Q_KEY_CODE_DOT, /* xorgxwin:60 -> linux:52 (KEY_DOT) -> qcode= :Q_KEY_CODE_DOT (dot) */ + [0x3d] =3D Q_KEY_CODE_SLASH, /* xorgxwin:61 -> linux:53 (KEY_SLASH) -> q= code:Q_KEY_CODE_SLASH (slash) */ + [0x3e] =3D Q_KEY_CODE_SHIFT_R, /* xorgxwin:62 -> linux:54 (KEY_RIGHTSHIF= T) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */ + [0x3f] =3D Q_KEY_CODE_KP_MULTIPLY, /* xorgxwin:63 -> linux:55 (KEY_KPAST= ERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */ + [0x40] =3D Q_KEY_CODE_ALT, /* xorgxwin:64 -> linux:56 (KEY_LEFTALT) -> q= code:Q_KEY_CODE_ALT (alt) */ + [0x41] =3D Q_KEY_CODE_SPC, /* xorgxwin:65 -> linux:57 (KEY_SPACE) -> qco= de:Q_KEY_CODE_SPC (spc) */ + [0x42] =3D Q_KEY_CODE_CAPS_LOCK, /* xorgxwin:66 -> linux:58 (KEY_CAPSLOC= K) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */ + [0x43] =3D Q_KEY_CODE_F1, /* xorgxwin:67 -> linux:59 (KEY_F1) -> qcode:Q= _KEY_CODE_F1 (f1) */ + [0x44] =3D Q_KEY_CODE_F2, /* xorgxwin:68 -> linux:60 (KEY_F2) -> qcode:Q= _KEY_CODE_F2 (f2) */ + [0x45] =3D Q_KEY_CODE_F3, /* xorgxwin:69 -> linux:61 (KEY_F3) -> qcode:Q= _KEY_CODE_F3 (f3) */ + [0x46] =3D Q_KEY_CODE_F4, /* xorgxwin:70 -> linux:62 (KEY_F4) -> qcode:Q= _KEY_CODE_F4 (f4) */ + [0x47] =3D Q_KEY_CODE_F5, /* xorgxwin:71 -> linux:63 (KEY_F5) -> qcode:Q= _KEY_CODE_F5 (f5) */ + [0x48] =3D Q_KEY_CODE_F6, /* xorgxwin:72 -> linux:64 (KEY_F6) -> qcode:Q= _KEY_CODE_F6 (f6) */ + [0x49] =3D Q_KEY_CODE_F7, /* xorgxwin:73 -> linux:65 (KEY_F7) -> qcode:Q= _KEY_CODE_F7 (f7) */ + [0x4a] =3D Q_KEY_CODE_F8, /* xorgxwin:74 -> linux:66 (KEY_F8) -> qcode:Q= _KEY_CODE_F8 (f8) */ + [0x4b] =3D Q_KEY_CODE_F9, /* xorgxwin:75 -> linux:67 (KEY_F9) -> qcode:Q= _KEY_CODE_F9 (f9) */ + [0x4c] =3D Q_KEY_CODE_F10, /* xorgxwin:76 -> linux:68 (KEY_F10) -> qcode= :Q_KEY_CODE_F10 (f10) */ + [0x4d] =3D Q_KEY_CODE_NUM_LOCK, /* xorgxwin:77 -> linux:69 (KEY_NUMLOCK)= -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */ + [0x4e] =3D Q_KEY_CODE_SCROLL_LOCK, /* xorgxwin:78 -> linux:70 (KEY_SCROL= LLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */ + [0x4f] =3D Q_KEY_CODE_KP_7, /* xorgxwin:79 -> linux:71 (KEY_KP7) -> qcod= e:Q_KEY_CODE_KP_7 (kp_7) */ + [0x50] =3D Q_KEY_CODE_KP_8, /* xorgxwin:80 -> linux:72 (KEY_KP8) -> qcod= e:Q_KEY_CODE_KP_8 (kp_8) */ + [0x51] =3D Q_KEY_CODE_KP_9, /* xorgxwin:81 -> linux:73 (KEY_KP9) -> qcod= e:Q_KEY_CODE_KP_9 (kp_9) */ + [0x52] =3D Q_KEY_CODE_KP_SUBTRACT, /* xorgxwin:82 -> linux:74 (KEY_KPMIN= US) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */ + [0x53] =3D Q_KEY_CODE_KP_4, /* xorgxwin:83 -> linux:75 (KEY_KP4) -> qcod= e:Q_KEY_CODE_KP_4 (kp_4) */ + [0x54] =3D Q_KEY_CODE_KP_5, /* xorgxwin:84 -> linux:76 (KEY_KP5) -> qcod= e:Q_KEY_CODE_KP_5 (kp_5) */ + [0x55] =3D Q_KEY_CODE_KP_6, /* xorgxwin:85 -> linux:77 (KEY_KP6) -> qcod= e:Q_KEY_CODE_KP_6 (kp_6) */ + [0x56] =3D Q_KEY_CODE_KP_ADD, /* xorgxwin:86 -> linux:78 (KEY_KPPLUS) ->= qcode:Q_KEY_CODE_KP_ADD (kp_add) */ + [0x57] =3D Q_KEY_CODE_KP_1, /* xorgxwin:87 -> linux:79 (KEY_KP1) -> qcod= e:Q_KEY_CODE_KP_1 (kp_1) */ + [0x58] =3D Q_KEY_CODE_KP_2, /* xorgxwin:88 -> linux:80 (KEY_KP2) -> qcod= e:Q_KEY_CODE_KP_2 (kp_2) */ + [0x59] =3D Q_KEY_CODE_KP_3, /* xorgxwin:89 -> linux:81 (KEY_KP3) -> qcod= e:Q_KEY_CODE_KP_3 (kp_3) */ + [0x5a] =3D Q_KEY_CODE_KP_0, /* xorgxwin:90 -> linux:82 (KEY_KP0) -> qcod= e:Q_KEY_CODE_KP_0 (kp_0) */ + [0x5b] =3D Q_KEY_CODE_KP_DECIMAL, /* xorgxwin:91 -> linux:83 (KEY_KPDOT)= -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */ + [0x5e] =3D Q_KEY_CODE_LESS, /* xorgxwin:94 -> linux:86 (KEY_102ND) -> qc= ode:Q_KEY_CODE_LESS (less) */ + [0x5f] =3D Q_KEY_CODE_F11, /* xorgxwin:95 -> linux:87 (KEY_F11) -> qcode= :Q_KEY_CODE_F11 (f11) */ + [0x60] =3D Q_KEY_CODE_F12, /* xorgxwin:96 -> linux:88 (KEY_F12) -> qcode= :Q_KEY_CODE_F12 (f12) */ + [0x61] =3D Q_KEY_CODE_HOME, /* xorgxwin:97 -> linux:102 (KEY_HOME) -> qc= ode:Q_KEY_CODE_HOME (home) */ + [0x62] =3D Q_KEY_CODE_UP, /* xorgxwin:98 -> linux:103 (KEY_UP) -> qcode:= Q_KEY_CODE_UP (up) */ + [0x63] =3D Q_KEY_CODE_PGUP, /* xorgxwin:99 -> linux:104 (KEY_PAGEUP) -> = qcode:Q_KEY_CODE_PGUP (pgup) */ + [0x64] =3D Q_KEY_CODE_LEFT, /* xorgxwin:100 -> linux:105 (KEY_LEFT) -> q= code:Q_KEY_CODE_LEFT (left) */ + [0x66] =3D Q_KEY_CODE_RIGHT, /* xorgxwin:102 -> linux:106 (KEY_RIGHT) ->= qcode:Q_KEY_CODE_RIGHT (right) */ + [0x67] =3D Q_KEY_CODE_END, /* xorgxwin:103 -> linux:107 (KEY_END) -> qco= de:Q_KEY_CODE_END (end) */ + [0x68] =3D Q_KEY_CODE_DOWN, /* xorgxwin:104 -> linux:108 (KEY_DOWN) -> q= code:Q_KEY_CODE_DOWN (down) */ + [0x69] =3D Q_KEY_CODE_PGDN, /* xorgxwin:105 -> linux:109 (KEY_PAGEDOWN) = -> qcode:Q_KEY_CODE_PGDN (pgdn) */ + [0x6a] =3D Q_KEY_CODE_INSERT, /* xorgxwin:106 -> linux:110 (KEY_INSERT) = -> qcode:Q_KEY_CODE_INSERT (insert) */ + [0x6b] =3D Q_KEY_CODE_DELETE, /* xorgxwin:107 -> linux:111 (KEY_DELETE) = -> qcode:Q_KEY_CODE_DELETE (delete) */ + [0x6c] =3D Q_KEY_CODE_KP_ENTER, /* xorgxwin:108 -> linux:96 (KEY_KPENTER= ) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */ + [0x6d] =3D Q_KEY_CODE_CTRL_R, /* xorgxwin:109 -> linux:97 (KEY_RIGHTCTRL= ) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */ + [0x6e] =3D Q_KEY_CODE_PAUSE, /* xorgxwin:110 -> linux:119 (KEY_PAUSE) ->= qcode:Q_KEY_CODE_PAUSE (pause) */ + [0x6f] =3D Q_KEY_CODE_SYSRQ, /* xorgxwin:111 -> linux:99 (KEY_SYSRQ) -> = qcode:Q_KEY_CODE_SYSRQ (sysrq) */ + [0x70] =3D Q_KEY_CODE_KP_DIVIDE, /* xorgxwin:112 -> linux:98 (KEY_KPSLAS= H) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */ + [0x71] =3D Q_KEY_CODE_ALT_R, /* xorgxwin:113 -> linux:100 (KEY_RIGHTALT)= -> qcode:Q_KEY_CODE_ALT_R (alt_r) */ + [0x73] =3D Q_KEY_CODE_META_L, /* xorgxwin:115 -> linux:125 (KEY_LEFTMETA= ) -> qcode:Q_KEY_CODE_META_L (meta_l) */ + [0x74] =3D Q_KEY_CODE_META_R, /* xorgxwin:116 -> linux:126 (KEY_RIGHTMET= A) -> qcode:Q_KEY_CODE_META_R (meta_r) */ + [0x75] =3D Q_KEY_CODE_COMPOSE, /* xorgxwin:117 -> linux:127 (KEY_COMPOSE= ) -> qcode:Q_KEY_CODE_COMPOSE (compose) */ + [0x76] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:118 -> linux:183 (KEY_F13) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x77] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:119 -> linux:184 (KEY_F14) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x78] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:120 -> linux:185 (KEY_F15) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x79] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:121 -> linux:186 (KEY_F16) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7a] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:122 -> linux:187 (KEY_F17) -= > qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ + [0x7e] =3D Q_KEY_CODE_KP_EQUALS, /* xorgxwin:126 -> linux:117 (KEY_KPEQU= AL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */ + [0x85] =3D Q_KEY_CODE_YEN, /* xorgxwin:133 -> linux:124 (KEY_YEN) -> qco= de:Q_KEY_CODE_YEN (yen) */ + [0xd0] =3D Q_KEY_CODE_UNMAPPED, /* xorgxwin:208 -> linux:93 (KEY_KATAKAN= AHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */ +}; +const guint qemu_input_map_xorgxwin_to_qcode_len =3D sizeof(qemu_input_map= _xorgxwin_to_qcode)/sizeof(qemu_input_map_xorgxwin_to_qcode[0]); diff --git a/ui/input-keymap.c b/ui/input-keymap.c index ad98b153cf..908d58ea63 100644 --- a/ui/input-keymap.c +++ b/ui/input-keymap.c @@ -5,6 +5,7 @@ =20 #include "standard-headers/linux/input.h" =20 +#include "ui/input-keymap-atset1-to-qcode.c" #include "ui/input-keymap-linux-to-qcode.c" #include "ui/input-keymap-osx-to-qcode.c" #include "ui/input-keymap-qcode-to-adb.c" @@ -16,6 +17,12 @@ #include "ui/input-keymap-qcode-to-sun.c" #include "ui/input-keymap-qnum-to-qcode.c" #include "ui/input-keymap-usb-to-qcode.c" +#include "ui/input-keymap-win32-to-qcode.c" +#include "ui/input-keymap-x11-to-qcode.c" +#include "ui/input-keymap-xorgevdev-to-qcode.c" +#include "ui/input-keymap-xorgkbd-to-qcode.c" +#include "ui/input-keymap-xorgxquartz-to-qcode.c" +#include "ui/input-keymap-xorgxwin-to-qcode.c" =20 int qemu_input_linux_to_qcode(unsigned int lnx) { diff --git a/ui/sdl.c b/ui/sdl.c index 7b71a9ac58..afb4992da2 100644 --- a/ui/sdl.c +++ b/ui/sdl.c @@ -34,7 +34,9 @@ #include "ui/console.h" #include "ui/input.h" #include "sysemu/sysemu.h" +#ifndef WIN32 #include "x_keymap.h" +#endif #include "sdl_zoom.h" =20 static DisplayChangeListener *dcl; @@ -63,6 +65,8 @@ static SDL_PixelFormat host_format; static int scaling_active =3D 0; static Notifier mouse_mode_notifier; static int idle_counter; +static const guint16 *keycode_map; +static size_t keycode_maplen; =20 #define SDL_REFRESH_INTERVAL_BUSY 10 #define SDL_MAX_IDLE_COUNT (2 * GUI_REFRESH_INTERVAL_DEFAULT \ @@ -208,94 +212,45 @@ static uint8_t sdl_keyevent_to_keycode_generic(const = SDL_KeyboardEvent *ev) return keysym2scancode(kbd_layout, keysym) & SCANCODE_KEYMASK; } =20 -/* specific keyboard conversions from scan codes */ - -#if defined(_WIN32) =20 -static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) +static const guint16 *sdl_get_keymap(size_t *maplen) { - return ev->keysym.scancode; -} - +#if defined(WIN32) + *maplen =3D qemu_input_map_atset1_to_qcode_len; + return qemu_input_map_atset1_to_qcode; #else - #if defined(SDL_VIDEO_DRIVER_X11) -#include - -static int check_for_evdev(void) -{ SDL_SysWMinfo info; - XkbDescPtr desc =3D NULL; - int has_evdev =3D 0; - char *keycodes =3D NULL; =20 SDL_VERSION(&info.version); - if (!SDL_GetWMInfo(&info)) { - return 0; + if (SDL_GetWMInfo(&info) > 0) { + return qemu_xkeymap_mapping_table( + info.info.x11.display, maplen); } - desc =3D XkbGetMap(info.info.x11.display, - XkbGBN_AllComponentsMask, - XkbUseCoreKbd); - if (desc && - (XkbGetNames(info.info.x11.display, - XkbKeycodesNameMask, desc) =3D=3D Success)) { - keycodes =3D XGetAtomName(info.info.x11.display, desc->names->keyc= odes); - if (keycodes =3D=3D NULL) { - fprintf(stderr, "could not lookup keycode name\n"); - } else if (strstart(keycodes, "evdev", NULL)) { - has_evdev =3D 1; - } else if (!strstart(keycodes, "xfree86", NULL)) { - fprintf(stderr, "unknown keycodes `%s', please report to " - "qemu-devel@nongnu.org\n", keycodes); - } - } - - if (desc) { - XkbFreeKeyboard(desc, XkbGBN_AllComponentsMask, True); - } - if (keycodes) { - XFree(keycodes); - } - return has_evdev; -} -#else -static int check_for_evdev(void) -{ - return 0; -} #endif + g_warning("Unsupported SDL video driver / platform.\n" + "Assuming Linux KBD scancodes, but probably wrong.\n" + "Please report to qemu-devel@nongnu.org\n" + "including the following information:\n" + "\n" + " - Operating system\n" + " - SDL video driver\n"); + *maplen =3D qemu_input_map_xorgkbd_to_qcode_len; + return qemu_input_map_xorgkbd_to_qcode; +#endif +} =20 static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) { - int keycode; - static int has_evdev =3D -1; - - if (has_evdev =3D=3D -1) - has_evdev =3D check_for_evdev(); - - keycode =3D ev->keysym.scancode; - - if (keycode < 9) { - keycode =3D 0; - } else if (keycode < 97) { - keycode -=3D 8; /* just an offset */ - } else if (keycode < 158) { - /* use conversion table */ - if (has_evdev) - keycode =3D translate_evdev_keycode(keycode - 97); - else - keycode =3D translate_xfree86_keycode(keycode - 97); - } else if (keycode =3D=3D 208) { /* Hiragana_Katakana */ - keycode =3D 0x70; - } else if (keycode =3D=3D 211) { /* backslash */ - keycode =3D 0x73; - } else { - keycode =3D 0; + if (!keycode_map) { + return 0; + } + if (ev->keysym.scancode > keycode_maplen) { + return 0; } - return keycode; -} =20 -#endif + return keycode_map[ev->keysym.scancode]; +} =20 static void reset_keys(void) { @@ -995,6 +950,8 @@ void sdl_display_init(DisplayState *ds, int full_screen= , int no_frame) vi =3D SDL_GetVideoInfo(); host_format =3D *(vi->vfmt); =20 + keycode_map =3D sdl_get_keymap(&keycode_maplen); + /* Load a 32x32x4 image. White pixels are transparent. */ filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, "qemu-icon.bmp"); if (filename) { diff --git a/ui/trace-events b/ui/trace-events index 34c2213700..9a943f645d 100644 --- a/ui/trace-events +++ b/ui/trace-events @@ -18,9 +18,10 @@ ppm_save(const char *filename, void *display_surface) "%= s surface=3D%p" # ui/gtk.c gd_switch(const char *tab, int width, int height) "tab=3D%s, width=3D%d, h= eight=3D%d" gd_update(const char *tab, int x, int y, int w, int h) "tab=3D%s, x=3D%d, = y=3D%d, w=3D%d, h=3D%d" -gd_key_event(const char *tab, int gdk_keycode, int qemu_keycode, const cha= r *action) "tab=3D%s, translated GDK keycode %d to QEMU keycode %d (%s)" +gd_key_event(const char *tab, int gdk_keycode, int qkeycode, const char *a= ction) "tab=3D%s, translated GDK keycode %d to QKeyCode %d (%s)" gd_grab(const char *tab, const char *device, const char *reason) "tab=3D%s= , dev=3D%s, reason=3D%s" gd_ungrab(const char *tab, const char *device) "tab=3D%s, dev=3D%s" +gd_keymap_windowing(const char *name) "backend=3D%s" =20 # ui/vnc.c vnc_key_guest_leds(bool caps, bool num, bool scroll) "caps %d, num %d, scr= oll %d" @@ -51,3 +52,9 @@ qemu_spice_create_update(uint32_t left, uint32_t right, u= int32_t top, uint32_t b keymap_parse(const char *file) "file %s" keymap_add(const char *type, int sym, int code, const char *line) "%-6s sy= m=3D0x%04x code=3D0x%04x (line: %s)" keymap_unmapped(int sym) "sym=3D0x%04x" + +# ui/x_keymap.c +xkeymap_extension(const char *name) "extension '%s'" +xkeymap_vendor(const char *name) "vendor '%s'" +xkeymap_keycodes(const char *name) "keycodes '%s'" +xkeymap_keymap(const char *name) "keymap '%s'" diff --git a/ui/x_keymap.c b/ui/x_keymap.c index 27884851de..22e0e77c4d 100644 --- a/ui/x_keymap.c +++ b/ui/x_keymap.c @@ -1,169 +1,111 @@ /* - * QEMU SDL display driver + * QEMU X11 keymaps * - * Copyright (c) 2003 Fabrice Bellard + * Copyright (C) 2009-2010 Daniel P. Berrange + * Copyright (C) 2017 Red Hat, Inc * - * Permission is hereby granted, free of charge, to any person obtaining a= copy - * of this software and associated documentation files (the "Software"), t= o deal - * in the Software without restriction, including without limitation the r= ights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or se= ll - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included= in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS= OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OT= HER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING= FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS = IN - * THE SOFTWARE. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 2 as + * published by the Free Software Foundation. */ + #include "qemu/osdep.h" -#include "qemu-common.h" + #include "x_keymap.h" +#include "trace.h" +#include "qemu/notify.h" +#include "ui/input.h" =20 -static const uint8_t x_keycode_to_pc_keycode[115] =3D { - 0xc7, /* 97 Home */ - 0xc8, /* 98 Up */ - 0xc9, /* 99 PgUp */ - 0xcb, /* 100 Left */ - 0x4c, /* 101 KP-5 */ - 0xcd, /* 102 Right */ - 0xcf, /* 103 End */ - 0xd0, /* 104 Down */ - 0xd1, /* 105 PgDn */ - 0xd2, /* 106 Ins */ - 0xd3, /* 107 Del */ - 0x9c, /* 108 Enter */ - 0x9d, /* 109 Ctrl-R */ - 0x0, /* 110 Pause */ - 0xb7, /* 111 Print */ - 0xb5, /* 112 Divide */ - 0xb8, /* 113 Alt-R */ - 0xc6, /* 114 Break */ - 0x0, /* 115 */ - 0x0, /* 116 */ - 0x0, /* 117 */ - 0x0, /* 118 */ - 0x0, /* 119 */ - 0x0, /* 120 */ - 0x0, /* 121 */ - 0x0, /* 122 */ - 0x0, /* 123 */ - 0x0, /* 124 */ - 0x0, /* 125 */ - 0x0, /* 126 */ - 0x0, /* 127 */ - 0x0, /* 128 */ - 0x79, /* 129 Henkan */ - 0x0, /* 130 */ - 0x7b, /* 131 Muhenkan */ - 0x0, /* 132 */ - 0x7d, /* 133 Yen */ - 0x0, /* 134 */ - 0x0, /* 135 */ - 0x47, /* 136 KP_7 */ - 0x48, /* 137 KP_8 */ - 0x49, /* 138 KP_9 */ - 0x4b, /* 139 KP_4 */ - 0x4c, /* 140 KP_5 */ - 0x4d, /* 141 KP_6 */ - 0x4f, /* 142 KP_1 */ - 0x50, /* 143 KP_2 */ - 0x51, /* 144 KP_3 */ - 0x52, /* 145 KP_0 */ - 0x53, /* 146 KP_. */ - 0x47, /* 147 KP_HOME */ - 0x48, /* 148 KP_UP */ - 0x49, /* 149 KP_PgUp */ - 0x4b, /* 150 KP_Left */ - 0x4c, /* 151 KP_ */ - 0x4d, /* 152 KP_Right */ - 0x4f, /* 153 KP_End */ - 0x50, /* 154 KP_Down */ - 0x51, /* 155 KP_PgDn */ - 0x52, /* 156 KP_Ins */ - 0x53, /* 157 KP_Del */ -}; +#include =20 -/* This table is generated based off the xfree86 -> scancode mapping above - * and the keycode mappings in /usr/share/X11/xkb/keycodes/evdev - * and /usr/share/X11/xkb/keycodes/xfree86 - */ +static gboolean check_for_xwin(Display *dpy) +{ + const char *vendor =3D ServerVendor(dpy); + + trace_xkeymap_vendor(vendor); =20 -static const uint8_t evdev_keycode_to_pc_keycode[61] =3D { - 0x73, /* 97 EVDEV - RO ("Internet" Keyboards) */ - 0, /* 98 EVDEV - KATA (Katakana) */ - 0, /* 99 EVDEV - HIRA (Hiragana) */ - 0x79, /* 100 EVDEV - HENK (Henkan) */ - 0x70, /* 101 EVDEV - HKTG (Hiragana/Katakana toggle) */ - 0x7b, /* 102 EVDEV - MUHE (Muhenkan) */ - 0, /* 103 EVDEV - JPCM (KPJPComma) */ - 0x9c, /* 104 KPEN */ - 0x9d, /* 105 RCTL */ - 0xb5, /* 106 KPDV */ - 0xb7, /* 107 PRSC */ - 0xb8, /* 108 RALT */ - 0, /* 109 EVDEV - LNFD ("Internet" Keyboards) */ - 0xc7, /* 110 HOME */ - 0xc8, /* 111 UP */ - 0xc9, /* 112 PGUP */ - 0xcb, /* 113 LEFT */ - 0xcd, /* 114 RGHT */ - 0xcf, /* 115 END */ - 0xd0, /* 116 DOWN */ - 0xd1, /* 117 PGDN */ - 0xd2, /* 118 INS */ - 0xd3, /* 119 DELE */ - 0, /* 120 EVDEV - I120 ("Internet" Keyboards) */ - 0, /* 121 EVDEV - MUTE */ - 0, /* 122 EVDEV - VOL- */ - 0, /* 123 EVDEV - VOL+ */ - 0, /* 124 EVDEV - POWR */ - 0, /* 125 EVDEV - KPEQ */ - 0, /* 126 EVDEV - I126 ("Internet" Keyboards) */ - 0, /* 127 EVDEV - PAUS */ - 0, /* 128 EVDEV - ???? */ - 0x7e, /* 129 EVDEV - KP_COMMA (brazilian) */ - 0xf1, /* 130 EVDEV - HNGL (Korean Hangul Latin toggle) */ - 0xf2, /* 131 EVDEV - HJCV (Korean Hangul Hanja toggle) */ - 0x7d, /* 132 AE13 (Yen)*/ - 0xdb, /* 133 EVDEV - LWIN */ - 0xdc, /* 134 EVDEV - RWIN */ - 0xdd, /* 135 EVDEV - MENU */ - 0, /* 136 EVDEV - STOP */ - 0, /* 137 EVDEV - AGAI */ - 0, /* 138 EVDEV - PROP */ - 0, /* 139 EVDEV - UNDO */ - 0, /* 140 EVDEV - FRNT */ - 0, /* 141 EVDEV - COPY */ - 0, /* 142 EVDEV - OPEN */ - 0, /* 143 EVDEV - PAST */ - 0, /* 144 EVDEV - FIND */ - 0, /* 145 EVDEV - CUT */ - 0, /* 146 EVDEV - HELP */ - 0, /* 147 EVDEV - I147 */ - 0, /* 148 EVDEV - I148 */ - 0, /* 149 EVDEV - I149 */ - 0, /* 150 EVDEV - I150 */ - 0, /* 151 EVDEV - I151 */ - 0, /* 152 EVDEV - I152 */ - 0, /* 153 EVDEV - I153 */ - 0, /* 154 EVDEV - I154 */ - 0, /* 155 EVDEV - I156 */ - 0, /* 156 EVDEV - I157 */ - 0, /* 157 EVDEV - I158 */ -}; + if (strstr(vendor, "Cygwin/X")) { + return TRUE; + } =20 -uint8_t translate_xfree86_keycode(const int key) + return FALSE; +} + +static gboolean check_for_xquartz(Display *dpy) { - return x_keycode_to_pc_keycode[key]; + int nextensions; + int i; + gboolean match =3D FALSE; + char **extensions =3D XListExtensions(dpy, &nextensions); + for (i =3D 0 ; extensions !=3D NULL && i < nextensions ; i++) { + trace_xkeymap_extension(extensions[i]); + if (strcmp(extensions[i], "Apple-WM") =3D=3D 0 || + strcmp(extensions[i], "Apple-DRI") =3D=3D 0) { + match =3D TRUE; + } + } + if (extensions) { + XFreeExtensionList(extensions); + } + + return match; } =20 -uint8_t translate_evdev_keycode(const int key) +const guint16 *qemu_xkeymap_mapping_table(Display *dpy, size_t *maplen) { - return evdev_keycode_to_pc_keycode[key]; + XkbDescPtr desc; + const gchar *keycodes =3D NULL; + + /* There is no easy way to determine what X11 server + * and platform & keyboard driver is in use. Thus we + * do best guess heuristics. + * + * This will need more work for people with other + * X servers..... patches welcomed. + */ + + desc =3D XkbGetMap(dpy, + XkbGBN_AllComponentsMask, + XkbUseCoreKbd); + if (desc) { + if (XkbGetNames(dpy, XkbKeycodesNameMask, desc) =3D=3D Success) { + keycodes =3D XGetAtomName (dpy, desc->names->keycodes); + if (!keycodes) { + g_warning("could not lookup keycode name"); + } else { + trace_xkeymap_keycodes(keycodes); + } + } + XkbFreeKeyboard(desc, XkbGBN_AllComponentsMask, True); + } + + if (check_for_xwin(dpy)) { + trace_xkeymap_keymap("xwin"); + *maplen =3D qemu_input_map_xorgxwin_to_qcode_len; + return qemu_input_map_xorgxwin_to_qcode; + } else if (check_for_xquartz(dpy)) { + trace_xkeymap_keymap("xquartz"); + *maplen =3D qemu_input_map_xorgxquartz_to_qcode_len; + return qemu_input_map_xorgxquartz_to_qcode; + } else if (keycodes && g_str_has_prefix(keycodes, "evdev")) { + trace_xkeymap_keymap("evdev"); + *maplen =3D qemu_input_map_xorgevdev_to_qcode_len; + return qemu_input_map_xorgevdev_to_qcode; + } else if (keycodes && g_str_has_prefix(keycodes, "xfree86")) { + trace_xkeymap_keymap("kbd"); + *maplen =3D qemu_input_map_xorgkbd_to_qcode_len; + return qemu_input_map_xorgkbd_to_qcode; + } else { + trace_xkeymap_keymap("NULL"); + g_warning("Unknown X11 keycode mapping '%s'.\n" + "Please report to qemu-devel@nongnu.org\n" + "including the following information:\n" + "\n" + " - Operating system\n" + " - X11 Server\n" + " - xprop -root\n" + " - xdpyinfo\n", + keycodes ? keycodes : ""); + return NULL; + } } diff --git a/ui/x_keymap.h b/ui/x_keymap.h index afde2e94bf..0395e335ff 100644 --- a/ui/x_keymap.h +++ b/ui/x_keymap.h @@ -1,7 +1,7 @@ /* - * QEMU SDL display driver + * QEMU X11 keymaps * - * Copyright (c) 2003 Fabrice Bellard + * Copyright (c) 2017 Red Hat, Inc. * * Permission is hereby granted, free of charge, to any person obtaining a= copy * of this software and associated documentation files (the "Software"), t= o deal @@ -25,8 +25,8 @@ #ifndef QEMU_X_KEYMAP_H #define QEMU_X_KEYMAP_H =20 -uint8_t translate_xfree86_keycode(const int key); +#include =20 -uint8_t translate_evdev_keycode(const int key); +const guint16 *qemu_xkeymap_mapping_table(Display *dpy, size_t *maplen); =20 #endif --=20 2.13.5 From nobody Thu May 16 08:02:38 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1505220012556739.1916501339465; Tue, 12 Sep 2017 05:40:12 -0700 (PDT) Received: from localhost ([::1]:35577 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkU7-0002CU-KR for importer@patchew.org; Tue, 12 Sep 2017 08:40:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48657) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1drkSA-0000nv-1E for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1drkS8-0003VR-Ez for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:10 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46256) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1drkS8-0003V5-5L for qemu-devel@nongnu.org; Tue, 12 Sep 2017 08:38:08 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2DF66859FA for ; Tue, 12 Sep 2017 12:38:07 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.42.22.189]) by smtp.corp.redhat.com (Postfix) with ESMTP id 55B2C77DCA; Tue, 12 Sep 2017 12:38:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 2DF66859FA Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=berrange@redhat.com From: "Daniel P. Berrange" To: qemu-devel@nongnu.org Date: Tue, 12 Sep 2017 13:37:44 +0100 Message-Id: <20170912123744.14730-13-berrange@redhat.com> In-Reply-To: <20170912123744.14730-1-berrange@redhat.com> References: <20170912123744.14730-1-berrange@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 12 Sep 2017 12:38:07 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v5 12/12] display: convert XenInput keyboard to keycodemapdb X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Replace the scancode2linux table with an automatically generated table. In doing so, the XenFB keyboard handler is also converted to the modern InputEvent framework. Signed-off-by: Daniel P. Berrange --- hw/display/xenfb.c | 133 ++++++++++++-------------------------------------= ---- 1 file changed, 30 insertions(+), 103 deletions(-) diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index df8b78f6f4..b4668dfce4 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -28,6 +28,7 @@ =20 #include "hw/hw.h" #include "ui/console.h" +#include "ui/input.h" #include "hw/xen/xen_backend.h" =20 #include @@ -52,7 +53,7 @@ struct XenInput { struct common c; int abs_pointer_wanted; /* Whether guest supports absolute pointer */ int button_state; /* Last seen pointer button state */ - int extended; + QemuInputHandlerState *qkbd; QEMUPutMouseEntry *qmouse; }; =20 @@ -120,78 +121,6 @@ static void common_unbind(struct common *c) =20 /* -------------------------------------------------------------------- */ =20 -#if 0 -/* - * These two tables are not needed any more, but left in here - * intentionally as documentation, to show how scancode2linux[] - * was generated. - * - * Tables to map from scancode to Linux input layer keycode. - * Scancodes are hardware-specific. These maps assumes a - * standard AT or PS/2 keyboard which is what QEMU feeds us. - */ -const unsigned char atkbd_set2_keycode[512] =3D { - - 0, 67, 65, 63, 61, 59, 60, 88, 0, 68, 66, 64, 62, 15, 41,117, - 0, 56, 42, 93, 29, 16, 2, 0, 0, 0, 44, 31, 30, 17, 3, 0, - 0, 46, 45, 32, 18, 5, 4, 95, 0, 57, 47, 33, 20, 19, 6,183, - 0, 49, 48, 35, 34, 21, 7,184, 0, 0, 50, 36, 22, 8, 9,185, - 0, 51, 37, 23, 24, 11, 10, 0, 0, 52, 53, 38, 39, 25, 12, 0, - 0, 89, 40, 0, 26, 13, 0, 0, 58, 54, 28, 27, 0, 43, 0, 85, - 0, 86, 91, 90, 92, 0, 14, 94, 0, 79,124, 75, 71,121, 0, 0, - 82, 83, 80, 76, 77, 72, 1, 69, 87, 78, 81, 74, 55, 73, 70, 99, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 217,100,255, 0, 97,165, 0, 0,156, 0, 0, 0, 0, 0, 0,125, - 173,114, 0,113, 0, 0, 0,126,128, 0, 0,140, 0, 0, 0,127, - 159, 0,115, 0,164, 0, 0,116,158, 0,150,166, 0, 0, 0,142, - 157, 0, 0, 0, 0, 0, 0, 0,155, 0, 98, 0, 0,163, 0, 0, - 226, 0, 0, 0, 0, 0, 0, 0, 0,255, 96, 0, 0, 0,143, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 0,105,102, 0, 0,112, - 110,111,108,112,106,103, 0,119, 0,118,109, 0, 99,104,119, 0, - -}; - -const unsigned char atkbd_unxlate_table[128] =3D { - - 0,118, 22, 30, 38, 37, 46, 54, 61, 62, 70, 69, 78, 85,102, 13, - 21, 29, 36, 45, 44, 53, 60, 67, 68, 77, 84, 91, 90, 20, 28, 27, - 35, 43, 52, 51, 59, 66, 75, 76, 82, 14, 18, 93, 26, 34, 33, 42, - 50, 49, 58, 65, 73, 74, 89,124, 17, 41, 88, 5, 6, 4, 12, 3, - 11, 2, 10, 1, 9,119,126,108,117,125,123,107,115,116,121,105, - 114,122,112,113,127, 96, 97,120, 7, 15, 23, 31, 39, 47, 55, 63, - 71, 79, 86, 94, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 87,111, - 19, 25, 57, 81, 83, 92, 95, 98, 99,100,101,103,104,106,109,110 - -}; -#endif - -/* - * for (i =3D 0; i < 128; i++) { - * scancode2linux[i] =3D atkbd_set2_keycode[atkbd_unxlate_table[i]]; - * scancode2linux[i | 0x80] =3D atkbd_set2_keycode[atkbd_unxlate_table= [i] | 0x80]; - * } - */ -static const unsigned char scancode2linux[512] =3D { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 99, 0, 86, 87, 88,117, 0, 0, 95,183,184,185, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 0, 0, 89, 0, 0, 85, 91, 90, 92, 0, 94, 0,124,121, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 165, 0, 0, 0, 0, 0, 0, 0, 0,163, 0, 0, 96, 97, 0, 0, - 113,140,164, 0,166, 0, 0, 0, 0, 0,255, 0, 0, 0,114, 0, - 115, 0,150, 0, 0, 98,255, 99,100, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,119,119,102,103,104, 0,105,112,106,118,107, - 108,109,110,111, 0, 0, 0, 0, 0, 0, 0,125,126,127,116,142, - 0, 0, 0,143, 0,217,156,173,128,159,158,157,155,226, 0,112, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; - /* Send an event to the keyboard frontend driver */ static int xenfb_kbd_event(struct XenInput *xenfb, union xenkbd_in_event *event) @@ -260,37 +189,21 @@ static int xenfb_send_position(struct XenInput *xenfb, return xenfb_kbd_event(xenfb, &event); } =20 -/* - * Send a key event from the client to the guest OS - * QEMU gives us a raw scancode from an AT / PS/2 style keyboard. - * We have to turn this into a Linux Input layer keycode. - * - * Extra complexity from the fact that with extended scancodes - * (like those produced by arrow keys) this method gets called - * twice, but we only want to send a single event. So we have to - * track the '0xe0' scancode state & collapse the extended keys - * as needed. - * - * Wish we could just send scancodes straight to the guest which - * already has code for dealing with this... - */ -static void xenfb_key_event(void *opaque, int scancode) +static void xenfb_key_event(DeviceState *dev, QemuConsole *src, + InputEvent *evt) { - struct XenInput *xenfb =3D opaque; - int down =3D 1; + struct XenInput *xenfb =3D container_of(dev, struct XenInput, + c.xendev.qdev); + InputKeyEvent *key =3D evt->u.key.data; + int qcode; =20 - if (scancode =3D=3D 0xe0) { - xenfb->extended =3D 1; - return; - } else if (scancode & 0x80) { - scancode &=3D 0x7f; - down =3D 0; - } - if (xenfb->extended) { - scancode |=3D 0x80; - xenfb->extended =3D 0; + assert(evt->type =3D=3D INPUT_EVENT_KIND_KEY); + + qcode =3D qemu_input_key_value_to_qcode(key->key); + if (qcode < qemu_input_map_qcode_to_linux_len) { + xenfb_send_key(xenfb, key->down, + qemu_input_map_qcode_to_linux[qcode]); } - xenfb_send_key(xenfb, down, scancode2linux[scancode]); } =20 /* @@ -347,6 +260,12 @@ static int input_init(struct XenDevice *xendev) return 0; } =20 +static QemuInputHandler xenfb_keyboard_handler =3D { + .name =3D "Xen FB Keyboard", + .mask =3D INPUT_EVENT_MASK_KEY, + .event =3D xenfb_key_event, +}; + static int input_initialise(struct XenDevice *xendev) { struct XenInput *in =3D container_of(xendev, struct XenInput, c.xendev= ); @@ -356,7 +275,6 @@ static int input_initialise(struct XenDevice *xendev) if (rc !=3D 0) return rc; =20 - qemu_add_kbd_event_handler(xenfb_key_event, in); return 0; } =20 @@ -376,6 +294,12 @@ static void input_connected(struct XenDevice *xendev) in->qmouse =3D qemu_add_mouse_event_handler(xenfb_mouse_event, in, in->abs_pointer_wanted, "Xen PVFB Mouse"); + + if (in->qkbd) { + qemu_input_handler_unregister(in->qkbd); + } + in->qkbd =3D qemu_input_handler_register((DeviceState *)in, + &xenfb_keyboard_handler); } =20 static void input_disconnect(struct XenDevice *xendev) @@ -386,7 +310,10 @@ static void input_disconnect(struct XenDevice *xendev) qemu_remove_mouse_event_handler(in->qmouse); in->qmouse =3D NULL; } - qemu_add_kbd_event_handler(NULL, NULL); + if (in->qkbd) { + qemu_input_handler_unregister(in->qkbd); + in->qkbd =3D NULL; + } common_unbind(&in->c); } =20 --=20 2.13.5