[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 11/12] ui: convert GTK and SDL1 frontends to keyc
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH v5 11/12] ui: convert GTK and SDL1 frontends to keycodemapdb |
Date: |
Tue, 12 Sep 2017 13:37:43 +0100 |
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 <address@hidden>
---
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);
+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[];
@@ -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[];
+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 += keymaps.o console.o cursor.o qemu-pixman.o
common-obj-y += input.o input-keymap.o input-legacy.o
common-obj-$(CONFIG_LINUX) += input-linux.o
common-obj-$(CONFIG_SPICE) += spice-core.o spice-input.o spice-display.o
-common-obj-$(CONFIG_SDL) += sdl.mo x_keymap.o
+common-obj-$(CONFIG_SDL) += sdl.mo
common-obj-$(CONFIG_COCOA) += cocoa.o
common-obj-$(CONFIG_CURSES) += curses.o
common-obj-$(CONFIG_VNC) += $(vnc-obj-y)
-common-obj-$(CONFIG_GTK) += gtk.o x_keymap.o
+common-obj-$(CONFIG_GTK) += gtk.o
+common-obj-$(if $(CONFIG_WIN32),n,$(if $(CONFIG_SDL),y,$(CONFIG_GTK))) +=
x_keymap.o
ifeq ($(CONFIG_SDLABI),1.2)
sdl.mo-objs := sdl.o sdl_zoom.o
@@ -54,6 +55,7 @@ KEYCODEMAP_GEN = $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen
KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
KEYCODEMAP_FILES = \
+ 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 = \
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)
# 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
+#ifdef GDK_WINDOWING_X11
+#include "ui/x_keymap.h"
+
+/* Gtk2 compat */
+#ifndef GDK_IS_X11_DISPLAY
+#define GDK_IS_X11_DISPLAY(dpy) (dpy != NULL)
+#endif
+#endif
+
+
+#ifdef GDK_WINDOWING_WAYLAND
+/* Gtk2 compat */
+#ifndef GDK_IS_WAYLAND_DISPLAY
+#define GDK_IS_WAYLAND_DISPLAY(dpy) (dpy != NULL)
+#endif
+#endif
+
+
+#ifdef GDK_WINDOWING_WIN32
+/* Gtk2 compat */
+#ifndef GDK_IS_WIN32_DISPLAY
+#define GDK_IS_WIN32_DISPLAY(dpy) (dpy != NULL)
+#endif
+#endif
+
+
+#ifdef GDK_WINDOWING_BROADWAY
+/* Gtk2 compat */
+#ifndef GDK_IS_BROADWAY_DISPLAY
+#define GDK_IS_BROADWAY_DISPLAY(dpy) (dpy != NULL)
+#endif
+#endif
+
+
+#ifdef GDK_WINDOWING_QUARTZ
+/* Gtk2 compat */
+#ifndef GDK_IS_QUARTZ_DISPLAY
+#define GDK_IS_QUARTZ_DISPLAY(dpy) (dpy != 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)
static const int modifier_keycode[] = {
- /* 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,
};
+static const guint16 *keycode_map;
+static size_t keycode_maplen;
+
struct GtkDisplayState {
GtkWidget *window;
@@ -178,7 +228,6 @@ struct GtkDisplayState {
bool external_pause_update;
bool modifier_pressed[ARRAY_SIZE(modifier_keycode)];
- bool has_evdev;
bool ignore_keys;
};
@@ -412,18 +461,18 @@ static void gd_update_full_redraw(VirtualConsole *vc)
static void gtk_release_modifiers(GtkDisplayState *s)
{
VirtualConsole *vc = gd_vc_find_current(s);
- int i, keycode;
+ int i, qcode;
if (vc->type != GD_VC_GFX ||
!qemu_console_is_graphic(vc->gfx.dcl.con)) {
return;
}
for (i = 0; i < ARRAY_SIZE(modifier_keycode); i++) {
- keycode = modifier_keycode[i];
+ qcode = 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] = false;
}
}
@@ -1057,47 +1106,75 @@ static gboolean gd_scroll_event(GtkWidget *widget,
GdkEventScroll *scroll,
return TRUE;
}
-static int gd_map_keycode(GtkDisplayState *s, GdkDisplay *dpy, int gdk_keycode)
+
+static const guint16 *gd_get_keymap(size_t *maplen)
{
- int qemu_keycode;
+ GdkDisplay *dpy = 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 = qemu_input_map_xorgevdev_to_qcode_len;
+ return qemu_input_map_xorgevdev_to_qcode;
+ }
+#endif
#ifdef GDK_WINDOWING_WIN32
if (GDK_IS_WIN32_DISPLAY(dpy)) {
- qemu_keycode = MapVirtualKey(gdk_keycode, MAPVK_VK_TO_VSC);
- switch (qemu_keycode) {
- case 103: /* alt gr */
- qemu_keycode = 56 | SCANCODE_GREY;
- break;
- }
- return qemu_keycode;
+ trace_gd_keymap_windowing("win32");
+ *maplen = qemu_input_map_win32_to_qcode_len;
+ return qemu_input_map_win32_to_qcode;
}
#endif
- if (gdk_keycode < 9) {
- qemu_keycode = 0;
- } else if (gdk_keycode < 97) {
- qemu_keycode = gdk_keycode - 8;
-#ifdef GDK_WINDOWING_X11
- } else if (GDK_IS_X11_DISPLAY(dpy) && gdk_keycode < 158) {
- if (s->has_evdev) {
- qemu_keycode = translate_evdev_keycode(gdk_keycode - 97);
- } else {
- qemu_keycode = translate_xfree86_keycode(gdk_keycode - 97);
- }
+#ifdef GDK_WINDOWING_QUARTZ
+ if (GDK_IS_QUARTZ_DISPLAY(dpy)) {
+ trace_gd_keymap_windowing("quartz");
+ *maplen = 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 = 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=700105");
+ *maplen = qemu_input_map_x11_to_qcode_len;
+ return qemu_input_map_x11_to_qcode;
+ }
#endif
- } else if (gdk_keycode == 208) { /* Hiragana_Katakana */
- qemu_keycode = 0x70;
- } else if (gdk_keycode == 211) { /* backslash */
- qemu_keycode = 0x73;
- } else {
- qemu_keycode = 0;
+
+ g_warning("Unsupported GDK Windowing platform.\n"
+ "Disabling extended keycode tables.\n"
+ "Please report to address@hidden"
+ "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;
}
- return qemu_keycode;
+ return keycode_map[scancode];
}
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 = gd_map_keycode(vc->s, gtk_widget_get_display(widget),
- key->hardware_keycode);
- int qcode = qemu_input_key_number_to_qcode(num);
+ int qcode = 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,
GdkEventKey *key, void *opaque)
{
VirtualConsole *vc = opaque;
GtkDisplayState *s = vc->s;
- int gdk_keycode = key->hardware_keycode;
- int qemu_keycode;
+ int qcode;
int i;
if (s->ignore_keys) {
@@ -1138,20 +1212,19 @@ static gboolean gd_key_event(GtkWidget *widget,
GdkEventKey *key, void *opaque)
return TRUE;
}
- qemu_keycode = gd_map_keycode(s, gtk_widget_get_display(widget),
- gdk_keycode);
+ qcode = gd_map_keycode(key->hardware_keycode);
- trace_gd_key_event(vc->label, gdk_keycode, qemu_keycode,
+ trace_gd_key_event(vc->label, key->hardware_keycode, qcode,
(key->type == GDK_KEY_PRESS) ? "down" : "up");
for (i = 0; i < ARRAY_SIZE(modifier_keycode); i++) {
- if (qemu_keycode == modifier_keycode[i]) {
+ if (qcode == modifier_keycode[i]) {
s->modifier_pressed[i] = (key->type == GDK_KEY_PRESS);
}
}
- qemu_input_event_send_key_number(vc->gfx.dcl.con, qemu_keycode,
- key->type == GDK_KEY_PRESS);
+ qemu_input_event_send_key_qcode(vc->gfx.dcl.con, qcode,
+ key->type == GDK_KEY_PRESS);
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);
}
-static void gd_set_keycode_type(GtkDisplayState *s)
-{
-#ifdef GDK_WINDOWING_X11
- GdkDisplay *display = gtk_widget_get_display(s->window);
- if (GDK_IS_X11_DISPLAY(display)) {
- Display *x11_display = gdk_x11_display_get_xdisplay(display);
- XkbDescPtr desc = XkbGetMap(x11_display, XkbGBN_AllComponentsMask,
- XkbUseCoreKbd);
- char *keycodes = NULL;
-
- if (desc &&
- (XkbGetNames(x11_display, XkbKeycodesNameMask, desc) == Success)) {
- keycodes = XGetAtomName(x11_display, desc->names->keycodes);
- }
- if (keycodes == NULL) {
- fprintf(stderr, "could not lookup keycode name\n");
- } else if (strstart(keycodes, "evdev", NULL)) {
- s->has_evdev = true;
- } else if (!strstart(keycodes, "xfree86", NULL)) {
- fprintf(stderr, "unknown keycodes `%s', please report to "
- "address@hidden", keycodes);
- }
-
- if (desc) {
- XkbFreeKeyboard(desc, XkbGBN_AllComponentsMask, True);
- }
- if (keycodes) {
- XFree(keycodes);
- }
- }
-#endif
-}
static gboolean gtkinit;
@@ -2329,8 +2370,6 @@ void gtk_display_init(DisplayState *ds, bool full_screen,
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);
}
void early_gtk_display_init(int opengl)
@@ -2377,6 +2416,8 @@ void early_gtk_display_init(int opengl)
break;
}
+ keycode_map = 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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_atset1_to_qcode code-map
keymaps.csv atset1 qcode
+*/
+const guint16 qemu_input_map_atset1_to_qcode[57470] = {
+ [0x1] = Q_KEY_CODE_ESC, /* atset1:1 -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0x2] = Q_KEY_CODE_1, /* atset1:2 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1
(1) */
+ [0x3] = Q_KEY_CODE_2, /* atset1:3 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2
(2) */
+ [0x4] = Q_KEY_CODE_3, /* atset1:4 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3
(3) */
+ [0x5] = Q_KEY_CODE_4, /* atset1:5 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4
(4) */
+ [0x6] = Q_KEY_CODE_5, /* atset1:6 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5
(5) */
+ [0x7] = Q_KEY_CODE_6, /* atset1:7 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6
(6) */
+ [0x8] = Q_KEY_CODE_7, /* atset1:8 -> linux:8 (KEY_7) -> qcode:Q_KEY_CODE_7
(7) */
+ [0x9] = Q_KEY_CODE_8, /* atset1:9 -> linux:9 (KEY_8) -> qcode:Q_KEY_CODE_8
(8) */
+ [0xa] = Q_KEY_CODE_9, /* atset1:10 -> linux:10 (KEY_9) -> qcode:Q_KEY_CODE_9
(9) */
+ [0xb] = Q_KEY_CODE_0, /* atset1:11 -> linux:11 (KEY_0) -> qcode:Q_KEY_CODE_0
(0) */
+ [0xc] = Q_KEY_CODE_MINUS, /* atset1:12 -> linux:12 (KEY_MINUS) ->
qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xd] = Q_KEY_CODE_EQUAL, /* atset1:13 -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xe] = Q_KEY_CODE_BACKSPACE, /* atset1:14 -> linux:14 (KEY_BACKSPACE) ->
qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xf] = Q_KEY_CODE_TAB, /* atset1:15 -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0x10] = Q_KEY_CODE_Q, /* atset1:16 -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x11] = Q_KEY_CODE_W, /* atset1:17 -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x12] = Q_KEY_CODE_E, /* atset1:18 -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x13] = Q_KEY_CODE_R, /* atset1:19 -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x14] = Q_KEY_CODE_T, /* atset1:20 -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x15] = Q_KEY_CODE_Y, /* atset1:21 -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x16] = Q_KEY_CODE_U, /* atset1:22 -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x17] = Q_KEY_CODE_I, /* atset1:23 -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x18] = Q_KEY_CODE_O, /* atset1:24 -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x19] = Q_KEY_CODE_P, /* atset1:25 -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x1a] = Q_KEY_CODE_BRACKET_LEFT, /* atset1:26 -> linux:26 (KEY_LEFTBRACE)
-> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x1b] = Q_KEY_CODE_BRACKET_RIGHT, /* atset1:27 -> linux:27 (KEY_RIGHTBRACE)
-> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x1c] = Q_KEY_CODE_RET, /* atset1:28 -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x1d] = Q_KEY_CODE_CTRL, /* atset1:29 -> linux:29 (KEY_LEFTCTRL) ->
qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x1e] = Q_KEY_CODE_A, /* atset1:30 -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x1f] = Q_KEY_CODE_S, /* atset1:31 -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x20] = Q_KEY_CODE_D, /* atset1:32 -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x21] = Q_KEY_CODE_F, /* atset1:33 -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x22] = Q_KEY_CODE_G, /* atset1:34 -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x23] = Q_KEY_CODE_H, /* atset1:35 -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x24] = Q_KEY_CODE_J, /* atset1:36 -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x25] = Q_KEY_CODE_K, /* atset1:37 -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x26] = Q_KEY_CODE_L, /* atset1:38 -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x27] = Q_KEY_CODE_SEMICOLON, /* atset1:39 -> linux:39 (KEY_SEMICOLON) ->
qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x28] = Q_KEY_CODE_APOSTROPHE, /* atset1:40 -> linux:40 (KEY_APOSTROPHE) ->
qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x29] = Q_KEY_CODE_GRAVE_ACCENT, /* atset1:41 -> linux:41 (KEY_GRAVE) ->
qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x2a] = Q_KEY_CODE_SHIFT, /* atset1:42 -> linux:42 (KEY_LEFTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x2b] = Q_KEY_CODE_BACKSLASH, /* atset1:43 -> linux:43 (KEY_BACKSLASH) ->
qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x2c] = Q_KEY_CODE_Z, /* atset1:44 -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x2d] = Q_KEY_CODE_X, /* atset1:45 -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x2e] = Q_KEY_CODE_C, /* atset1:46 -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x2f] = Q_KEY_CODE_V, /* atset1:47 -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x30] = Q_KEY_CODE_B, /* atset1:48 -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x31] = Q_KEY_CODE_N, /* atset1:49 -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x32] = Q_KEY_CODE_M, /* atset1:50 -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x33] = Q_KEY_CODE_COMMA, /* atset1:51 -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_DOT, /* atset1:52 -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x35] = Q_KEY_CODE_SLASH, /* atset1:53 -> linux:53 (KEY_SLASH) ->
qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x36] = Q_KEY_CODE_SHIFT_R, /* atset1:54 -> linux:54 (KEY_RIGHTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x37] = Q_KEY_CODE_KP_MULTIPLY, /* atset1:55 -> linux:55 (KEY_KPASTERISK)
-> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x38] = Q_KEY_CODE_ALT, /* atset1:56 -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x39] = Q_KEY_CODE_SPC, /* atset1:57 -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_CAPS_LOCK, /* atset1:58 -> linux:58 (KEY_CAPSLOCK) ->
qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x3b] = Q_KEY_CODE_F1, /* atset1:59 -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x3c] = Q_KEY_CODE_F2, /* atset1:60 -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x3d] = Q_KEY_CODE_F3, /* atset1:61 -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x3e] = Q_KEY_CODE_F4, /* atset1:62 -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x3f] = Q_KEY_CODE_F5, /* atset1:63 -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x40] = Q_KEY_CODE_F6, /* atset1:64 -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x41] = Q_KEY_CODE_F7, /* atset1:65 -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x42] = Q_KEY_CODE_F8, /* atset1:66 -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x43] = Q_KEY_CODE_F9, /* atset1:67 -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x44] = Q_KEY_CODE_F10, /* atset1:68 -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x45] = Q_KEY_CODE_NUM_LOCK, /* atset1:69 -> linux:69 (KEY_NUMLOCK) ->
qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x46] = Q_KEY_CODE_SCROLL_LOCK, /* atset1:70 -> linux:70 (KEY_SCROLLLOCK)
-> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x47] = Q_KEY_CODE_KP_7, /* atset1:71 -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x48] = Q_KEY_CODE_KP_8, /* atset1:72 -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x49] = Q_KEY_CODE_KP_9, /* atset1:73 -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x4a] = Q_KEY_CODE_KP_SUBTRACT, /* atset1:74 -> linux:74 (KEY_KPMINUS) ->
qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x4b] = Q_KEY_CODE_KP_4, /* atset1:75 -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x4c] = Q_KEY_CODE_KP_5, /* atset1:76 -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x4d] = Q_KEY_CODE_KP_6, /* atset1:77 -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x4e] = Q_KEY_CODE_KP_ADD, /* atset1:78 -> linux:78 (KEY_KPPLUS) ->
qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_KP_1, /* atset1:79 -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x50] = Q_KEY_CODE_KP_2, /* atset1:80 -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x51] = Q_KEY_CODE_KP_3, /* atset1:81 -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x52] = Q_KEY_CODE_KP_0, /* atset1:82 -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x53] = Q_KEY_CODE_KP_DECIMAL, /* atset1:83 -> linux:83 (KEY_KPDOT) ->
qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x54] = Q_KEY_CODE_SYSRQ, /* atset1:84 -> linux:99 (KEY_SYSRQ) ->
qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x55] = Q_KEY_CODE_UNMAPPED, /* atset1:85 -> linux:186 (KEY_F16) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x56] = Q_KEY_CODE_LESS, /* atset1:86 -> linux:86 (KEY_102ND) ->
qcode:Q_KEY_CODE_LESS (less) */
+ [0x57] = Q_KEY_CODE_F11, /* atset1:87 -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x58] = Q_KEY_CODE_F12, /* atset1:88 -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x59] = Q_KEY_CODE_KP_EQUALS, /* atset1:89 -> linux:117 (KEY_KPEQUAL) ->
qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x5a] = Q_KEY_CODE_UNMAPPED, /* atset1:90 -> linux:190 (KEY_F20) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5b] = Q_KEY_CODE_LF, /* atset1:91 -> linux:101 (KEY_LINEFEED) ->
qcode:Q_KEY_CODE_LF (lf) */
+ [0x5c] = Q_KEY_CODE_UNMAPPED, /* atset1:92 -> linux:95 (KEY_KPJPCOMMA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* atset1:93 -> linux:183 (KEY_F13) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_UNMAPPED, /* atset1:94 -> linux:184 (KEY_F14) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5f] = Q_KEY_CODE_UNMAPPED, /* atset1:95 -> linux:185 (KEY_F15) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_UNMAPPED, /* atset1:99 -> linux:169 (KEY_PHONE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x64] = Q_KEY_CODE_OPEN, /* atset1:100 -> linux:134 (KEY_OPEN) ->
qcode:Q_KEY_CODE_OPEN (open) */
+ [0x65] = Q_KEY_CODE_PASTE, /* atset1:101 -> linux:135 (KEY_PASTE) ->
qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x66] = Q_KEY_CODE_UNMAPPED, /* atset1:102 -> linux:141 (KEY_SETUP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* atset1:103 -> linux:144 (KEY_FILE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_UNMAPPED, /* atset1:104 -> linux:145 (KEY_SENDFILE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x69] = Q_KEY_CODE_UNMAPPED, /* atset1:105 -> linux:146 (KEY_DELETEFILE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6a] = Q_KEY_CODE_UNMAPPED, /* atset1:106 -> linux:151 (KEY_MSDOS) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6b] = Q_KEY_CODE_UNMAPPED, /* atset1:107 -> linux:153 (KEY_DIRECTION) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6c] = Q_KEY_CODE_UNMAPPED, /* atset1:108 -> linux:161 (KEY_EJECTCD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6d] = Q_KEY_CODE_UNMAPPED, /* atset1:109 -> linux:193 (KEY_F23) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6f] = Q_KEY_CODE_UNMAPPED, /* atset1:111 -> linux:194 (KEY_F24) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* atset1:112 -> linux:170 (KEY_ISO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* atset1:113 -> linux:174 (KEY_EXIT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* atset1:114 -> linux:175 (KEY_MOVE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_RO, /* atset1:115 -> linux:89 (KEY_RO) ->
qcode:Q_KEY_CODE_RO (ro) */
+ [0x74] = Q_KEY_CODE_UNMAPPED, /* atset1:116 -> linux:191 (KEY_F21) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x75] = Q_KEY_CODE_UNMAPPED, /* atset1:117 -> linux:177 (KEY_SCROLLUP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* atset1:118 -> linux:85 (KEY_ZENKAKUHANKAKU)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_HIRAGANA, /* atset1:119 -> linux:91 (KEY_HIRAGANA) ->
qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* atset1:120 -> linux:90 (KEY_KATAKANA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_HENKAN, /* atset1:121 -> linux:92 (KEY_HENKAN) ->
qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x7b] = Q_KEY_CODE_UNMAPPED, /* atset1:123 -> linux:94 (KEY_MUHENKAN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7d] = Q_KEY_CODE_YEN, /* atset1:125 -> linux:124 (KEY_YEN) ->
qcode:Q_KEY_CODE_YEN (yen) */
+ [0x7e] = Q_KEY_CODE_KP_COMMA, /* atset1:126 -> linux:121 (KEY_KPCOMMA) ->
qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0xe001] = Q_KEY_CODE_UNMAPPED, /* atset1:57345 -> linux:171 (KEY_CONFIG) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe002] = Q_KEY_CODE_UNMAPPED, /* atset1:57346 -> linux:150 (KEY_WWW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe003] = Q_KEY_CODE_UNMAPPED, /* atset1:57347 -> linux:187 (KEY_F17) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe004] = Q_KEY_CODE_UNMAPPED, /* atset1:57348 -> linux:189 (KEY_F19) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe005] = Q_KEY_CODE_AGAIN, /* atset1:57349 -> linux:129 (KEY_AGAIN) ->
qcode:Q_KEY_CODE_AGAIN (again) */
+ [0xe006] = Q_KEY_CODE_PROPS, /* atset1:57350 -> linux:130 (KEY_PROPS) ->
qcode:Q_KEY_CODE_PROPS (props) */
+ [0xe007] = Q_KEY_CODE_UNDO, /* atset1:57351 -> linux:131 (KEY_UNDO) ->
qcode:Q_KEY_CODE_UNDO (undo) */
+ [0xe008] = Q_KEY_CODE_UNMAPPED, /* atset1:57352 -> linux:176 (KEY_EDIT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe009] = Q_KEY_CODE_UNMAPPED, /* atset1:57353 -> linux:181 (KEY_NEW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00a] = Q_KEY_CODE_UNMAPPED, /* atset1:57354 -> linux:182 (KEY_REDO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00b] = Q_KEY_CODE_UNMAPPED, /* atset1:57355 -> linux:120 (KEY_SCALE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00c] = Q_KEY_CODE_FRONT, /* atset1:57356 -> linux:132 (KEY_FRONT) ->
qcode:Q_KEY_CODE_FRONT (front) */
+ [0xe00d] = Q_KEY_CODE_UNMAPPED, /* atset1:57357 -> linux:123 (KEY_HANJA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00e] = Q_KEY_CODE_UNMAPPED, /* atset1:57358 -> linux:233
(KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe00f] = Q_KEY_CODE_UNMAPPED, /* atset1:57359 -> linux:178
(KEY_SCROLLDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe010] = Q_KEY_CODE_AUDIOPREV, /* atset1:57360 -> linux:165
(KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xe012] = Q_KEY_CODE_UNMAPPED, /* atset1:57362 -> linux:152
(KEY_SCREENLOCK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe013] = Q_KEY_CODE_UNMAPPED, /* atset1:57363 -> linux:147 (KEY_XFER) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe014] = Q_KEY_CODE_UNMAPPED, /* atset1:57364 -> linux:222 (KEY_ALTERASE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe015] = Q_KEY_CODE_UNMAPPED, /* atset1:57365 -> linux:195 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe016] = Q_KEY_CODE_UNMAPPED, /* atset1:57366 -> linux:196 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe017] = Q_KEY_CODE_UNMAPPED, /* atset1:57367 -> linux:149 (KEY_PROG2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe018] = Q_KEY_CODE_UNMAPPED, /* atset1:57368 -> linux:168 (KEY_REWIND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe019] = Q_KEY_CODE_AUDIONEXT, /* atset1:57369 -> linux:163 (KEY_NEXTSONG)
-> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xe01a] = Q_KEY_CODE_UNMAPPED, /* atset1:57370 -> linux:197 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe01b] = Q_KEY_CODE_UNMAPPED, /* atset1:57371 -> linux:198 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe01c] = Q_KEY_CODE_KP_ENTER, /* atset1:57372 -> linux:96 (KEY_KPENTER) ->
qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0xe01d] = Q_KEY_CODE_CTRL_R, /* atset1:57373 -> linux:97 (KEY_RIGHTCTRL) ->
qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xe01e] = Q_KEY_CODE_MENU, /* atset1:57374 -> linux:139 (KEY_MENU) ->
qcode:Q_KEY_CODE_MENU (menu) */
+ [0xe01f] = Q_KEY_CODE_UNMAPPED, /* atset1:57375 -> linux:148 (KEY_PROG1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe020] = Q_KEY_CODE_AUDIOMUTE, /* atset1:57376 -> linux:113 (KEY_MUTE) ->
qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xe021] = Q_KEY_CODE_CALCULATOR, /* atset1:57377 -> linux:140 (KEY_CALC) ->
qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0xe022] = Q_KEY_CODE_AUDIOPLAY, /* atset1:57378 -> linux:164
(KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xe023] = Q_KEY_CODE_UNMAPPED, /* atset1:57379 -> linux:160 (KEY_CLOSECD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe024] = Q_KEY_CODE_AUDIOSTOP, /* atset1:57380 -> linux:166 (KEY_STOPCD)
-> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xe025] = Q_KEY_CODE_UNMAPPED, /* atset1:57381 -> linux:205 (KEY_SUSPEND)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe026] = Q_KEY_CODE_UNMAPPED, /* atset1:57382 -> linux:154
(KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe027] = Q_KEY_CODE_UNMAPPED, /* atset1:57383 -> linux:199 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe028] = Q_KEY_CODE_UNMAPPED, /* atset1:57384 -> linux:200 (KEY_PLAYCD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe029] = Q_KEY_CODE_UNMAPPED, /* atset1:57385 -> linux:201 (KEY_PAUSECD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02b] = Q_KEY_CODE_UNMAPPED, /* atset1:57387 -> linux:202 (KEY_PROG3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02c] = Q_KEY_CODE_UNMAPPED, /* atset1:57388 -> linux:203 (KEY_PROG4) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02d] = Q_KEY_CODE_UNMAPPED, /* atset1:57389 -> linux:204 (KEY_DASHBOARD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe02e] = Q_KEY_CODE_VOLUMEDOWN, /* atset1:57390 -> linux:114
(KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xe02f] = Q_KEY_CODE_UNMAPPED, /* atset1:57391 -> linux:206 (KEY_CLOSE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe030] = Q_KEY_CODE_VOLUMEUP, /* atset1:57392 -> linux:115 (KEY_VOLUMEUP)
-> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xe031] = Q_KEY_CODE_UNMAPPED, /* atset1:57393 -> linux:167 (KEY_RECORD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe032] = Q_KEY_CODE_AC_HOME, /* atset1:57394 -> linux:172 (KEY_HOMEPAGE)
-> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xe033] = Q_KEY_CODE_UNMAPPED, /* atset1:57395 -> linux:207 (KEY_PLAY) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe034] = Q_KEY_CODE_UNMAPPED, /* atset1:57396 -> linux:208
(KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe035] = Q_KEY_CODE_KP_DIVIDE, /* atset1:57397 -> linux:98 (KEY_KPSLASH)
-> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0xe036] = Q_KEY_CODE_UNMAPPED, /* atset1:57398 -> linux:209 (KEY_BASSBOOST)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe038] = Q_KEY_CODE_ALT_R, /* atset1:57400 -> linux:100 (KEY_RIGHTALT) ->
qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xe039] = Q_KEY_CODE_UNMAPPED, /* atset1:57401 -> linux:210 (KEY_PRINT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03a] = Q_KEY_CODE_UNMAPPED, /* atset1:57402 -> linux:211 (KEY_HP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03b] = Q_KEY_CODE_UNMAPPED, /* atset1:57403 -> linux:212 (KEY_CAMERA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03c] = Q_KEY_CODE_CUT, /* atset1:57404 -> linux:137 (KEY_CUT) ->
qcode:Q_KEY_CODE_CUT (cut) */
+ [0xe03d] = Q_KEY_CODE_UNMAPPED, /* atset1:57405 -> linux:213 (KEY_SOUND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03e] = Q_KEY_CODE_UNMAPPED, /* atset1:57406 -> linux:214 (KEY_QUESTION)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe03f] = Q_KEY_CODE_UNMAPPED, /* atset1:57407 -> linux:215 (KEY_EMAIL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe040] = Q_KEY_CODE_UNMAPPED, /* atset1:57408 -> linux:216 (KEY_CHAT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe041] = Q_KEY_CODE_FIND, /* atset1:57409 -> linux:136 (KEY_FIND) ->
qcode:Q_KEY_CODE_FIND (find) */
+ [0xe042] = Q_KEY_CODE_UNMAPPED, /* atset1:57410 -> linux:218 (KEY_CONNECT)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe043] = Q_KEY_CODE_UNMAPPED, /* atset1:57411 -> linux:219 (KEY_FINANCE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe044] = Q_KEY_CODE_UNMAPPED, /* atset1:57412 -> linux:220 (KEY_SPORT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe045] = Q_KEY_CODE_UNMAPPED, /* atset1:57413 -> linux:221 (KEY_SHOP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe046] = Q_KEY_CODE_PAUSE, /* atset1:57414 -> linux:119 (KEY_PAUSE) ->
qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0xe047] = Q_KEY_CODE_HOME, /* atset1:57415 -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0xe048] = Q_KEY_CODE_UP, /* atset1:57416 -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0xe049] = Q_KEY_CODE_PGUP, /* atset1:57417 -> linux:104 (KEY_PAGEUP) ->
qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0xe04a] = Q_KEY_CODE_UNMAPPED, /* atset1:57418 -> linux:223 (KEY_CANCEL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04b] = Q_KEY_CODE_LEFT, /* atset1:57419 -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0xe04c] = Q_KEY_CODE_UNMAPPED, /* atset1:57420 -> linux:224
(KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04d] = Q_KEY_CODE_RIGHT, /* atset1:57421 -> linux:106 (KEY_RIGHT) ->
qcode:Q_KEY_CODE_RIGHT (right) */
+ [0xe04e] = Q_KEY_CODE_UNMAPPED, /* atset1:57422 -> linux:118
(KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe04f] = Q_KEY_CODE_END, /* atset1:57423 -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0xe050] = Q_KEY_CODE_DOWN, /* atset1:57424 -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0xe051] = Q_KEY_CODE_PGDN, /* atset1:57425 -> linux:109 (KEY_PAGEDOWN) ->
qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0xe052] = Q_KEY_CODE_INSERT, /* atset1:57426 -> linux:110 (KEY_INSERT) ->
qcode:Q_KEY_CODE_INSERT (insert) */
+ [0xe053] = Q_KEY_CODE_DELETE, /* atset1:57427 -> linux:111 (KEY_DELETE) ->
qcode:Q_KEY_CODE_DELETE (delete) */
+ [0xe054] = Q_KEY_CODE_UNMAPPED, /* atset1:57428 -> linux:225
(KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe055] = Q_KEY_CODE_UNMAPPED, /* atset1:57429 -> linux:234 (KEY_SAVE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe056] = Q_KEY_CODE_UNMAPPED, /* atset1:57430 -> linux:227
(KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe057] = Q_KEY_CODE_UNMAPPED, /* atset1:57431 -> linux:228
(KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe058] = Q_KEY_CODE_UNMAPPED, /* atset1:57432 -> linux:229
(KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe059] = Q_KEY_CODE_UNMAPPED, /* atset1:57433 -> linux:230
(KEY_KBDILLUMUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe05a] = Q_KEY_CODE_UNMAPPED, /* atset1:57434 -> linux:231 (KEY_SEND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe05b] = Q_KEY_CODE_META_L, /* atset1:57435 -> linux:125 (KEY_LEFTMETA) ->
qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xe05c] = Q_KEY_CODE_META_R, /* atset1:57436 -> linux:126 (KEY_RIGHTMETA)
-> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xe05d] = Q_KEY_CODE_COMPOSE, /* atset1:57437 -> linux:127 (KEY_COMPOSE) ->
qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0xe05e] = Q_KEY_CODE_POWER, /* atset1:57438 -> linux:116 (KEY_POWER) ->
qcode:Q_KEY_CODE_POWER (power) */
+ [0xe05f] = Q_KEY_CODE_SLEEP, /* atset1:57439 -> linux:142 (KEY_SLEEP) ->
qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0xe063] = Q_KEY_CODE_WAKE, /* atset1:57443 -> linux:143 (KEY_WAKEUP) ->
qcode:Q_KEY_CODE_WAKE (wake) */
+ [0xe064] = Q_KEY_CODE_UNMAPPED, /* atset1:57444 -> linux:232 (KEY_REPLY) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe065] = Q_KEY_CODE_UNMAPPED, /* atset1:57445 -> linux:217 (KEY_SEARCH) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe066] = Q_KEY_CODE_AC_BOOKMARKS, /* atset1:57446 -> linux:156
(KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0xe067] = Q_KEY_CODE_AC_REFRESH, /* atset1:57447 -> linux:173 (KEY_REFRESH)
-> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xe068] = Q_KEY_CODE_STOP, /* atset1:57448 -> linux:128 (KEY_STOP) ->
qcode:Q_KEY_CODE_STOP (stop) */
+ [0xe069] = Q_KEY_CODE_AC_FORWARD, /* atset1:57449 -> linux:159 (KEY_FORWARD)
-> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xe06a] = Q_KEY_CODE_AC_BACK, /* atset1:57450 -> linux:158 (KEY_BACK) ->
qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xe06b] = Q_KEY_CODE_COMPUTER, /* atset1:57451 -> linux:157 (KEY_COMPUTER)
-> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0xe06c] = Q_KEY_CODE_MAIL, /* atset1:57452 -> linux:155 (KEY_MAIL) ->
qcode:Q_KEY_CODE_MAIL (mail) */
+ [0xe06d] = Q_KEY_CODE_MEDIASELECT, /* atset1:57453 -> linux:226 (KEY_MEDIA)
-> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xe06f] = Q_KEY_CODE_UNMAPPED, /* atset1:57455 -> linux:112 (KEY_MACRO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe070] = Q_KEY_CODE_UNMAPPED, /* atset1:57456 -> linux:235 (KEY_DOCUMENTS)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe071] = Q_KEY_CODE_UNMAPPED, /* atset1:57457 -> linux:236 (KEY_BATTERY)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe072] = Q_KEY_CODE_UNMAPPED, /* atset1:57458 -> linux:237 (KEY_BLUETOOTH)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe073] = Q_KEY_CODE_UNMAPPED, /* atset1:57459 -> linux:238 (KEY_WLAN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe074] = Q_KEY_CODE_UNMAPPED, /* atset1:57460 -> linux:239 (KEY_UWB) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe075] = Q_KEY_CODE_HELP, /* atset1:57461 -> linux:138 (KEY_HELP) ->
qcode:Q_KEY_CODE_HELP (help) */
+ [0xe076] = Q_KEY_CODE_UNMAPPED, /* atset1:57462 -> linux:179
(KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe077] = Q_KEY_CODE_UNMAPPED, /* atset1:57463 -> linux:188 (KEY_F18) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe078] = Q_KEY_CODE_COPY, /* atset1:57464 -> linux:133 (KEY_COPY) ->
qcode:Q_KEY_CODE_COPY (copy) */
+ [0xe079] = Q_KEY_CODE_UNMAPPED, /* atset1:57465 -> linux:192 (KEY_F22) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe07b] = Q_KEY_CODE_UNMAPPED, /* atset1:57467 -> linux:180
(KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe07d] = Q_KEY_CODE_UNMAPPED, /* atset1:57469 -> linux:162
(KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_atset1_to_qcode_len =
sizeof(qemu_input_map_atset1_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-qcode.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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_win32_to_qcode code-map
keymaps.csv win32 qcode
+*/
+const guint16 qemu_input_map_win32_to_qcode[252] = {
+ [0x1] = Q_KEY_CODE_UNMAPPED, /* win32:1 (VK_LBUTTON) -> linux:256 (BTN_0) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2] = Q_KEY_CODE_UNMAPPED, /* win32:2 (VK_RBUTTON) -> linux:257 (BTN_1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x4] = Q_KEY_CODE_UNMAPPED, /* win32:4 (VK_MBUTTON) -> linux:258 (BTN_2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5] = Q_KEY_CODE_UNMAPPED, /* win32:5 (VK_XBUTTON1) -> linux:259 (BTN_3)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x6] = Q_KEY_CODE_UNMAPPED, /* win32:6 (VK_XBUTTON2) -> linux:260 (BTN_4)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x8] = Q_KEY_CODE_BACKSPACE, /* win32:8 (VK_BACK) -> linux:14
(KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x9] = Q_KEY_CODE_TAB, /* win32:9 (VK_TAB) -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0xd] = Q_KEY_CODE_RET, /* win32:13 (VK_RETURN) -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x10] = Q_KEY_CODE_SHIFT, /* win32:16 (VK_LSHIFT) -> linux:42
(KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x11] = Q_KEY_CODE_CTRL, /* win32:17 (VK_CONTROL) -> linux:29
(KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x12] = Q_KEY_CODE_ALT, /* win32:18 (VK_MENU) -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x13] = Q_KEY_CODE_PAUSE, /* win32:19 (VK_PAUSE) -> linux:119 (KEY_PAUSE)
-> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x14] = Q_KEY_CODE_CAPS_LOCK, /* win32:20 (VK_CAPITAL) -> linux:58
(KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x15] = Q_KEY_CODE_UNMAPPED, /* win32:21 (VK_HANGEUL) -> linux:122
(KEY_HANGEUL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19] = Q_KEY_CODE_UNMAPPED, /* win32:25 (VK_HANJA) -> linux:123
(KEY_HANJA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b] = Q_KEY_CODE_ESC, /* win32:27 (VK_ESCAPE) -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0x20] = Q_KEY_CODE_SPC, /* win32:32 (VK_SPACE) -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x21] = Q_KEY_CODE_PGUP, /* win32:33 (VK_PRIOR) -> linux:104 (KEY_PAGEUP)
-> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x22] = Q_KEY_CODE_PGDN, /* win32:34 (VK_NEXT) -> linux:109 (KEY_PAGEDOWN)
-> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x23] = Q_KEY_CODE_END, /* win32:35 (VK_END) -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0x24] = Q_KEY_CODE_HOME, /* win32:36 (VK_HOME) -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0x25] = Q_KEY_CODE_LEFT, /* win32:37 (VK_LEFT) -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0x26] = Q_KEY_CODE_UP, /* win32:38 (VK_UP) -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0x27] = Q_KEY_CODE_RIGHT, /* win32:39 (VK_RIGHT) -> linux:106 (KEY_RIGHT)
-> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x28] = Q_KEY_CODE_DOWN, /* win32:40 (VK_DOWN) -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0x29] = Q_KEY_CODE_UNMAPPED, /* win32:41 (VK_SELECT) -> linux:353
(KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2a] = Q_KEY_CODE_UNMAPPED, /* win32:42 (VK_PRINT) -> linux:210
(KEY_PRINT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x2c] = Q_KEY_CODE_SYSRQ, /* win32:44 (VK_SNAPSHOT) -> linux:99 (KEY_SYSRQ)
-> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x2d] = Q_KEY_CODE_INSERT, /* win32:45 (VK_INSERT) -> linux:110
(KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x2e] = Q_KEY_CODE_DELETE, /* win32:46 (VK_DELETE) -> linux:111
(KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x2f] = Q_KEY_CODE_HELP, /* win32:47 (VK_HELP) -> linux:138 (KEY_HELP) ->
qcode:Q_KEY_CODE_HELP (help) */
+ [0x30] = Q_KEY_CODE_0, /* win32:48 (VK_0) -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x31] = Q_KEY_CODE_1, /* win32:49 (VK_1) -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0x32] = Q_KEY_CODE_2, /* win32:50 (VK_2) -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0x33] = Q_KEY_CODE_3, /* win32:51 (VK_3) -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0x34] = Q_KEY_CODE_4, /* win32:52 (VK_4) -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0x35] = Q_KEY_CODE_5, /* win32:53 (VK_5) -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0x36] = Q_KEY_CODE_6, /* win32:54 (VK_6) -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x37] = Q_KEY_CODE_7, /* win32:55 (VK_7) -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x38] = Q_KEY_CODE_8, /* win32:56 (VK_8) -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x39] = Q_KEY_CODE_9, /* win32:57 (VK_9) -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x41] = Q_KEY_CODE_A, /* win32:65 (VK_A) -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x42] = Q_KEY_CODE_B, /* win32:66 (VK_B) -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x43] = Q_KEY_CODE_C, /* win32:67 (VK_C) -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x44] = Q_KEY_CODE_D, /* win32:68 (VK_D) -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x45] = Q_KEY_CODE_E, /* win32:69 (VK_E) -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x46] = Q_KEY_CODE_F, /* win32:70 (VK_F) -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x47] = Q_KEY_CODE_G, /* win32:71 (VK_G) -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x48] = Q_KEY_CODE_H, /* win32:72 (VK_H) -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x49] = Q_KEY_CODE_I, /* win32:73 (VK_I) -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x4a] = Q_KEY_CODE_J, /* win32:74 (VK_J) -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x4b] = Q_KEY_CODE_K, /* win32:75 (VK_K) -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x4c] = Q_KEY_CODE_L, /* win32:76 (VK_L) -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x4d] = Q_KEY_CODE_M, /* win32:77 (VK_M) -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x4e] = Q_KEY_CODE_N, /* win32:78 (VK_N) -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x4f] = Q_KEY_CODE_O, /* win32:79 (VK_O) -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x50] = Q_KEY_CODE_P, /* win32:80 (VK_P) -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x51] = Q_KEY_CODE_Q, /* win32:81 (VK_Q) -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x52] = Q_KEY_CODE_R, /* win32:82 (VK_R) -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x53] = Q_KEY_CODE_S, /* win32:83 (VK_S) -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x54] = Q_KEY_CODE_T, /* win32:84 (VK_T) -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x55] = Q_KEY_CODE_U, /* win32:85 (VK_U) -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x56] = Q_KEY_CODE_V, /* win32:86 (VK_V) -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x57] = Q_KEY_CODE_W, /* win32:87 (VK_W) -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x58] = Q_KEY_CODE_X, /* win32:88 (VK_X) -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x59] = Q_KEY_CODE_Y, /* win32:89 (VK_Y) -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x5a] = Q_KEY_CODE_Z, /* win32:90 (VK_Z) -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x5b] = Q_KEY_CODE_META_L, /* win32:91 (VK_LWIN) -> linux:125
(KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x5c] = Q_KEY_CODE_META_R, /* win32:92 (VK_RWIN) -> linux:126
(KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x5d] = Q_KEY_CODE_COMPOSE, /* win32:93 (VK_APPS) -> linux:127
(KEY_COMPOSE) -> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x5f] = Q_KEY_CODE_SLEEP, /* win32:95 (VK_SLEEP) -> linux:142 (KEY_SLEEP)
-> qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0x60] = Q_KEY_CODE_KP_0, /* win32:96 (VK_NUMPAD0) -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x61] = Q_KEY_CODE_KP_1, /* win32:97 (VK_NUMPAD1) -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x62] = Q_KEY_CODE_KP_2, /* win32:98 (VK_NUMPAD2) -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x63] = Q_KEY_CODE_KP_3, /* win32:99 (VK_NUMPAD3) -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x64] = Q_KEY_CODE_KP_4, /* win32:100 (VK_NUMPAD4) -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x65] = Q_KEY_CODE_KP_5, /* win32:101 (VK_NUMPAD5) -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x66] = Q_KEY_CODE_KP_6, /* win32:102 (VK_NUMPAD6) -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x67] = Q_KEY_CODE_KP_7, /* win32:103 (VK_NUMPAD7) -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x68] = Q_KEY_CODE_KP_8, /* win32:104 (VK_NUMPAD8) -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x69] = Q_KEY_CODE_KP_9, /* win32:105 (VK_NUMPAD9) -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x6a] = Q_KEY_CODE_KP_MULTIPLY, /* win32:106 (VK_MULTIPLY) -> linux:55
(KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x6b] = Q_KEY_CODE_KP_ADD, /* win32:107 (VK_ADD) -> linux:78 (KEY_KPPLUS)
-> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x6c] = Q_KEY_CODE_KP_COMMA, /* win32:108 (VK_SEPARATOR??) -> linux:121
(KEY_KPCOMMA) -> qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x6d] = Q_KEY_CODE_KP_SUBTRACT, /* win32:109 (VK_SUBTRACT) -> linux:74
(KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x6e] = Q_KEY_CODE_KP_DECIMAL, /* win32:110 (VK_DECIMAL) -> linux:83
(KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x6f] = Q_KEY_CODE_KP_DIVIDE, /* win32:111 (VK_DIVIDE) -> linux:98
(KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x70] = Q_KEY_CODE_F1, /* win32:112 (VK_F1) -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x71] = Q_KEY_CODE_F2, /* win32:113 (VK_F2) -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x72] = Q_KEY_CODE_F3, /* win32:114 (VK_F3) -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x73] = Q_KEY_CODE_F4, /* win32:115 (VK_F4) -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x74] = Q_KEY_CODE_F5, /* win32:116 (VK_F5) -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x75] = Q_KEY_CODE_F6, /* win32:117 (VK_F6) -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x76] = Q_KEY_CODE_F7, /* win32:118 (VK_F7) -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x77] = Q_KEY_CODE_F8, /* win32:119 (VK_F8) -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x78] = Q_KEY_CODE_F9, /* win32:120 (VK_F9) -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x79] = Q_KEY_CODE_F10, /* win32:121 (VK_F10) -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x7a] = Q_KEY_CODE_F11, /* win32:122 (VK_F11) -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x7b] = Q_KEY_CODE_F12, /* win32:123 (VK_F12) -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x7c] = Q_KEY_CODE_UNMAPPED, /* win32:124 (VK_F13) -> linux:183 (KEY_F13)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7d] = Q_KEY_CODE_UNMAPPED, /* win32:125 (VK_F14) -> linux:184 (KEY_F14)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_UNMAPPED, /* win32:126 (VK_F15) -> linux:185 (KEY_F15)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7f] = Q_KEY_CODE_UNMAPPED, /* win32:127 (VK_F16) -> linux:186 (KEY_F16)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x80] = Q_KEY_CODE_UNMAPPED, /* win32:128 (VK_F17) -> linux:187 (KEY_F17)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x81] = Q_KEY_CODE_UNMAPPED, /* win32:129 (VK_F18) -> linux:188 (KEY_F18)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x82] = Q_KEY_CODE_UNMAPPED, /* win32:130 (VK_F19) -> linux:189 (KEY_F19)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x83] = Q_KEY_CODE_UNMAPPED, /* win32:131 (VK_F20) -> linux:190 (KEY_F20)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x84] = Q_KEY_CODE_UNMAPPED, /* win32:132 (VK_F21) -> linux:191 (KEY_F21)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x85] = Q_KEY_CODE_UNMAPPED, /* win32:133 (VK_F22) -> linux:192 (KEY_F22)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x86] = Q_KEY_CODE_UNMAPPED, /* win32:134 (VK_F23) -> linux:193 (KEY_F23)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x87] = Q_KEY_CODE_UNMAPPED, /* win32:135 (VK_F24) -> linux:194 (KEY_F24)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x90] = Q_KEY_CODE_NUM_LOCK, /* win32:144 (VK_NUMLOCK) -> linux:69
(KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x91] = Q_KEY_CODE_SCROLL_LOCK, /* win32:145 (VK_SCROLL) -> linux:70
(KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0xa0] = Q_KEY_CODE_SHIFT, /* win32:160 (VK_LSHIFT) -> linux:42
(KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0xa1] = Q_KEY_CODE_SHIFT_R, /* win32:161 (VK_RSHIFT) -> linux:54
(KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0xa2] = Q_KEY_CODE_CTRL, /* win32:162 (VK_CONTROL) -> linux:29
(KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0xa3] = Q_KEY_CODE_CTRL_R, /* win32:163 (VK_RCONTROL) -> linux:97
(KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xa4] = Q_KEY_CODE_ALT, /* win32:164 (VK_MENU) -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0xa5] = Q_KEY_CODE_ALT_R, /* win32:165 (VK_RMENU) -> linux:100
(KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xa6] = Q_KEY_CODE_AC_BACK, /* win32:166 (VK_BROWSER_BACK) -> linux:158
(KEY_BACK) -> qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xa7] = Q_KEY_CODE_AC_FORWARD, /* win32:167 (VK_BROWSER_FORWARD) ->
linux:159 (KEY_FORWARD) -> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xa8] = Q_KEY_CODE_AC_REFRESH, /* win32:168 (VK_BROWSER_REFRESH) ->
linux:173 (KEY_REFRESH) -> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xa9] = Q_KEY_CODE_STOP, /* win32:169 (VK_BROWSER_STOP) -> linux:128
(KEY_STOP) -> qcode:Q_KEY_CODE_STOP (stop) */
+ [0xaa] = Q_KEY_CODE_UNMAPPED, /* win32:170 (VK_BROWSER_SEARCH) -> linux:217
(KEY_SEARCH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_UNMAPPED, /* win32:171 (VK_BROWSER_FAVOURITES) ->
linux:364 (KEY_FAVORITES) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xac] = Q_KEY_CODE_AC_HOME, /* win32:172 (VK_BROWSER_HOME) -> linux:172
(KEY_HOMEPAGE) -> qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xad] = Q_KEY_CODE_AUDIOMUTE, /* win32:173 (VK_VOLUME_MUTE) -> linux:113
(KEY_MUTE) -> qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0xae] = Q_KEY_CODE_VOLUMEDOWN, /* win32:174 (VK_VOLUME_DOWN) -> linux:114
(KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0xaf] = Q_KEY_CODE_VOLUMEUP, /* win32:175 (VK_VOLUME_UP) -> linux:115
(KEY_VOLUMEUP) -> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0xb0] = Q_KEY_CODE_AUDIONEXT, /* win32:176 (VK_MEDIA_NEXT_TRACK) ->
linux:163 (KEY_NEXTSONG) -> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xb1] = Q_KEY_CODE_AUDIOPREV, /* win32:177 (VK_MEDIA_PREV_TRACK) ->
linux:165 (KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xb2] = Q_KEY_CODE_AUDIOSTOP, /* win32:178 (VK_MEDIA_STOP) -> linux:166
(KEY_STOPCD) -> qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xb3] = Q_KEY_CODE_AUDIOPLAY, /* win32:179 (VK_MEDIA_PLAY_PAUSE) ->
linux:164 (KEY_PLAYPAUSE) -> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xb4] = Q_KEY_CODE_UNMAPPED, /* win32:180 (VK_LAUNCH_MAIL) -> linux:215
(KEY_EMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_SEMICOLON, /* win32:186 (VK_OEM_1) -> linux:39
(KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0xbb] = Q_KEY_CODE_EQUAL, /* win32:187 (VK_OEM_PLUS) -> linux:13
(KEY_EQUAL) -> qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0xbc] = Q_KEY_CODE_COMMA, /* win32:188 (VK_OEM_COMMA) -> linux:51
(KEY_COMMA) -> qcode:Q_KEY_CODE_COMMA (comma) */
+ [0xbd] = Q_KEY_CODE_MINUS, /* win32:189 (VK_OEM_MINUS) -> linux:12
(KEY_MINUS) -> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0xbe] = Q_KEY_CODE_DOT, /* win32:190 (VK_OEM_PERIOD) -> linux:52 (KEY_DOT)
-> qcode:Q_KEY_CODE_DOT (dot) */
+ [0xbf] = Q_KEY_CODE_SLASH, /* win32:191 (VK_OEM_2) -> linux:53 (KEY_SLASH)
-> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0xc0] = Q_KEY_CODE_GRAVE_ACCENT, /* win32:192 (VK_OEM_3) -> linux:41
(KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0xdb] = Q_KEY_CODE_BRACKET_LEFT, /* win32:219 (VK_OEM_4) -> linux:26
(KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0xdc] = Q_KEY_CODE_BACKSLASH, /* win32:220 (VK_OEM_5) -> linux:43
(KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0xdd] = Q_KEY_CODE_BRACKET_RIGHT, /* win32:221 (VK_OEM_6) -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0xde] = Q_KEY_CODE_APOSTROPHE, /* win32:222 (VK_OEM_7) -> linux:40
(KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0xe1] = Q_KEY_CODE_LESS, /* win32:225 (VK_OEM_102) -> linux:86 (KEY_102ND)
-> qcode:Q_KEY_CODE_LESS (less) */
+ [0xfa] = Q_KEY_CODE_UNMAPPED, /* win32:250 (VK_PLAY) -> linux:207 (KEY_PLAY)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = 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 =
sizeof(qemu_input_map_win32_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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_x11_to_qcode code-map
keymaps.csv x11 qcode
+*/
+const guint16 qemu_input_map_x11_to_qcode[65536] = {
+ [0x20] = Q_KEY_CODE_SPC, /* x11:32 (XK_space) -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x21] = Q_KEY_CODE_1, /* x11:33 (XK_exclam) -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0x22] = Q_KEY_CODE_APOSTROPHE, /* x11:34 (XK_quotedbl) -> linux:40
(KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x23] = Q_KEY_CODE_3, /* x11:35 (XK_numbersign) -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0x24] = Q_KEY_CODE_4, /* x11:36 (XK_dollar) -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0x25] = Q_KEY_CODE_5, /* x11:37 (XK_percent) -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0x26] = Q_KEY_CODE_7, /* x11:38 (XK_ampersand) -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x27] = Q_KEY_CODE_APOSTROPHE, /* x11:39 (XK_quotedbl) -> linux:40
(KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x28] = Q_KEY_CODE_9, /* x11:40 (XK_parenleft) -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x29] = Q_KEY_CODE_0, /* x11:41 (XK_parenright) -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x2a] = Q_KEY_CODE_8, /* x11:42 (XK_asterisk) -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x2b] = Q_KEY_CODE_EQUAL, /* x11:43 (XK_plus) -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x2c] = Q_KEY_CODE_COMMA, /* x11:44 (XK_less) -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x2d] = Q_KEY_CODE_MINUS, /* x11:45 (XK_underscore) -> linux:12 (KEY_MINUS)
-> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x2e] = Q_KEY_CODE_DOT, /* x11:46 (XK_greater) -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x2f] = Q_KEY_CODE_SLASH, /* x11:47 (XK_question) -> linux:53 (KEY_SLASH)
-> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x30] = Q_KEY_CODE_0, /* x11:48 (XK_parenright) -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x31] = Q_KEY_CODE_1, /* x11:49 (XK_exclam) -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0x32] = Q_KEY_CODE_2, /* x11:50 (XK_at) -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0x33] = Q_KEY_CODE_3, /* x11:51 (XK_numbersign) -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0x34] = Q_KEY_CODE_4, /* x11:52 (XK_dollar) -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0x35] = Q_KEY_CODE_5, /* x11:53 (XK_percent) -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0x36] = Q_KEY_CODE_6, /* x11:54 (XK_asciicircum) -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x37] = Q_KEY_CODE_7, /* x11:55 (XK_ampersand) -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x38] = Q_KEY_CODE_8, /* x11:56 (XK_asterisk) -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x39] = Q_KEY_CODE_9, /* x11:57 (XK_parenleft) -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x3a] = Q_KEY_CODE_SEMICOLON, /* x11:58 (XK_colon) -> linux:39
(KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x3b] = Q_KEY_CODE_SEMICOLON, /* x11:59 (XK_colon) -> linux:39
(KEY_SEMICOLON) -> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x3c] = Q_KEY_CODE_COMMA, /* x11:60 (XK_less) -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3d] = Q_KEY_CODE_EQUAL, /* x11:61 (XK_plus) -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x3e] = Q_KEY_CODE_DOT, /* x11:62 (XK_greater) -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3f] = Q_KEY_CODE_SLASH, /* x11:63 (XK_question) -> linux:53 (KEY_SLASH)
-> qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x40] = Q_KEY_CODE_2, /* x11:64 (XK_at) -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0x41] = Q_KEY_CODE_A, /* x11:65 (XK_a) -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x42] = Q_KEY_CODE_B, /* x11:66 (XK_b) -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x43] = Q_KEY_CODE_C, /* x11:67 (XK_c) -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x44] = Q_KEY_CODE_D, /* x11:68 (XK_d) -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x45] = Q_KEY_CODE_E, /* x11:69 (XK_e) -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x46] = Q_KEY_CODE_F, /* x11:70 (XK_f) -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x47] = Q_KEY_CODE_G, /* x11:71 (XK_g) -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x48] = Q_KEY_CODE_H, /* x11:72 (XK_h) -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x49] = Q_KEY_CODE_I, /* x11:73 (XK_i) -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x4a] = Q_KEY_CODE_J, /* x11:74 (XK_j) -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x4b] = Q_KEY_CODE_K, /* x11:75 (XK_k) -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x4c] = Q_KEY_CODE_L, /* x11:76 (XK_l) -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x4d] = Q_KEY_CODE_M, /* x11:77 (XK_m) -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x4e] = Q_KEY_CODE_N, /* x11:78 (XK_n) -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x4f] = Q_KEY_CODE_O, /* x11:79 (XK_o) -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x50] = Q_KEY_CODE_P, /* x11:80 (XK_p) -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x51] = Q_KEY_CODE_Q, /* x11:81 (XK_q) -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x52] = Q_KEY_CODE_R, /* x11:82 (XK_r) -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x53] = Q_KEY_CODE_S, /* x11:83 (XK_s) -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x54] = Q_KEY_CODE_T, /* x11:84 (XK_t) -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x55] = Q_KEY_CODE_U, /* x11:85 (XK_u) -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x56] = Q_KEY_CODE_V, /* x11:86 (XK_v) -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x57] = Q_KEY_CODE_W, /* x11:87 (XK_w) -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x58] = Q_KEY_CODE_X, /* x11:88 (XK_x) -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x59] = Q_KEY_CODE_Y, /* x11:89 (XK_y) -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x5a] = Q_KEY_CODE_Z, /* x11:90 (XK_z) -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x5b] = Q_KEY_CODE_BRACKET_LEFT, /* x11:91 (XK_braceleft) -> linux:26
(KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x5c] = Q_KEY_CODE_BACKSLASH, /* x11:92 (XK_bar) -> linux:43
(KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x5d] = Q_KEY_CODE_BRACKET_RIGHT, /* x11:93 (XK_braceright) -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x5e] = Q_KEY_CODE_6, /* x11:94 (XK_asciicircum) -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x5f] = Q_KEY_CODE_MINUS, /* x11:95 (XK_underscore) -> linux:12 (KEY_MINUS)
-> qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x60] = Q_KEY_CODE_GRAVE_ACCENT, /* x11:96 (XK_asciitilde) -> linux:41
(KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x61] = Q_KEY_CODE_A, /* x11:97 (XK_a) -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x62] = Q_KEY_CODE_B, /* x11:98 (XK_b) -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x63] = Q_KEY_CODE_C, /* x11:99 (XK_c) -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x64] = Q_KEY_CODE_D, /* x11:100 (XK_d) -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x65] = Q_KEY_CODE_E, /* x11:101 (XK_e) -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x66] = Q_KEY_CODE_F, /* x11:102 (XK_f) -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x67] = Q_KEY_CODE_G, /* x11:103 (XK_g) -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x68] = Q_KEY_CODE_H, /* x11:104 (XK_h) -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x69] = Q_KEY_CODE_I, /* x11:105 (XK_i) -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x6a] = Q_KEY_CODE_J, /* x11:106 (XK_j) -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x6b] = Q_KEY_CODE_K, /* x11:107 (XK_k) -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x6c] = Q_KEY_CODE_L, /* x11:108 (XK_l) -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x6d] = Q_KEY_CODE_M, /* x11:109 (XK_m) -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x6e] = Q_KEY_CODE_N, /* x11:110 (XK_n) -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x6f] = Q_KEY_CODE_O, /* x11:111 (XK_o) -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x70] = Q_KEY_CODE_P, /* x11:112 (XK_p) -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x71] = Q_KEY_CODE_Q, /* x11:113 (XK_q) -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x72] = Q_KEY_CODE_R, /* x11:114 (XK_r) -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x73] = Q_KEY_CODE_S, /* x11:115 (XK_s) -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x74] = Q_KEY_CODE_T, /* x11:116 (XK_t) -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x75] = Q_KEY_CODE_U, /* x11:117 (XK_u) -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x76] = Q_KEY_CODE_V, /* x11:118 (XK_v) -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x77] = Q_KEY_CODE_W, /* x11:119 (XK_w) -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x78] = Q_KEY_CODE_X, /* x11:120 (XK_x) -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x79] = Q_KEY_CODE_Y, /* x11:121 (XK_y) -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x7a] = Q_KEY_CODE_Z, /* x11:122 (XK_z) -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x7b] = Q_KEY_CODE_BRACKET_LEFT, /* x11:123 (XK_braceleft) -> linux:26
(KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x7c] = Q_KEY_CODE_BACKSLASH, /* x11:124 (XK_bar) -> linux:43
(KEY_BACKSLASH) -> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x7d] = Q_KEY_CODE_BRACKET_RIGHT, /* x11:125 (XK_braceright) -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x7e] = Q_KEY_CODE_GRAVE_ACCENT, /* x11:126 (XK_asciitilde) -> linux:41
(KEY_GRAVE) -> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0xd7] = Q_KEY_CODE_KP_MULTIPLY, /* x11:215 (XK_multiply) -> linux:55
(KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0xff08] = Q_KEY_CODE_BACKSPACE, /* x11:65288 (XK_BackSpace) -> linux:14
(KEY_BACKSPACE) -> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0xff09] = Q_KEY_CODE_TAB, /* x11:65289 (XK_Tab) -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0xff0d] = Q_KEY_CODE_RET, /* x11:65293 (XK_Return) -> linux:28 (KEY_ENTER)
-> qcode:Q_KEY_CODE_RET (ret) */
+ [0xff13] = Q_KEY_CODE_PAUSE, /* x11:65299 (XK_Pause) -> linux:119
(KEY_PAUSE) -> qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0xff14] = Q_KEY_CODE_SCROLL_LOCK, /* x11:65300 (XK_Scroll_Lock) -> linux:70
(KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0xff15] = Q_KEY_CODE_SYSRQ, /* x11:65301 (XK_Sys_Req) -> linux:99
(KEY_SYSRQ) -> qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0xff1b] = Q_KEY_CODE_ESC, /* x11:65307 (XK_Escape) -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0xff50] = Q_KEY_CODE_HOME, /* x11:65360 (XK_Home) -> linux:102 (KEY_HOME)
-> qcode:Q_KEY_CODE_HOME (home) */
+ [0xff51] = Q_KEY_CODE_LEFT, /* x11:65361 (XK_Left) -> linux:105 (KEY_LEFT)
-> qcode:Q_KEY_CODE_LEFT (left) */
+ [0xff52] = Q_KEY_CODE_UP, /* x11:65362 (XK_Up) -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0xff53] = Q_KEY_CODE_RIGHT, /* x11:65363 (XK_Right) -> linux:106
(KEY_RIGHT) -> qcode:Q_KEY_CODE_RIGHT (right) */
+ [0xff54] = Q_KEY_CODE_DOWN, /* x11:65364 (XK_Down) -> linux:108 (KEY_DOWN)
-> qcode:Q_KEY_CODE_DOWN (down) */
+ [0xff55] = Q_KEY_CODE_PGUP, /* x11:65365 (XK_Page_Up) -> linux:104
(KEY_PAGEUP) -> qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0xff56] = Q_KEY_CODE_PGDN, /* x11:65366 (XK_Page_Down) -> linux:109
(KEY_PAGEDOWN) -> qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0xff57] = Q_KEY_CODE_END, /* x11:65367 (XK_End) -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0xff60] = Q_KEY_CODE_UNMAPPED, /* x11:65376 (XK_Select) -> linux:353
(KEY_SELECT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xff63] = Q_KEY_CODE_INSERT, /* x11:65379 (XK_Insert) -> linux:110
(KEY_INSERT) -> qcode:Q_KEY_CODE_INSERT (insert) */
+ [0xff6a] = Q_KEY_CODE_HELP, /* x11:65386 (XK_Help) -> linux:138 (KEY_HELP)
-> qcode:Q_KEY_CODE_HELP (help) */
+ [0xff7f] = Q_KEY_CODE_NUM_LOCK, /* x11:65407 (XK_Num_Lock) -> linux:69
(KEY_NUMLOCK) -> qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0xff8d] = Q_KEY_CODE_KP_ENTER, /* x11:65421 (XK_KP_Enter) -> linux:96
(KEY_KPENTER) -> qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0xffab] = Q_KEY_CODE_KP_ADD, /* x11:65451 (XK_KP_Add) -> linux:78
(KEY_KPPLUS) -> qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0xffac] = Q_KEY_CODE_UNMAPPED, /* x11:65452 (XK_KP_Separator) -> linux:95
(KEY_KPJPCOMMA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xffad] = Q_KEY_CODE_KP_SUBTRACT, /* x11:65453 (XK_KP_Subtract) -> linux:74
(KEY_KPMINUS) -> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0xffae] = Q_KEY_CODE_KP_DECIMAL, /* x11:65454 (XK_KP_Decimal) -> linux:83
(KEY_KPDOT) -> qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0xffaf] = Q_KEY_CODE_KP_DIVIDE, /* x11:65455 (XK_KP_Divide) -> linux:98
(KEY_KPSLASH) -> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0xffb0] = Q_KEY_CODE_KP_0, /* x11:65456 (XK_KP_0) -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0xffb1] = Q_KEY_CODE_KP_1, /* x11:65457 (XK_KP_1) -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0xffb2] = Q_KEY_CODE_KP_2, /* x11:65458 (XK_KP_2) -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0xffb3] = Q_KEY_CODE_KP_3, /* x11:65459 (XK_KP_3) -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0xffb4] = Q_KEY_CODE_KP_4, /* x11:65460 (XK_KP_4) -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0xffb5] = Q_KEY_CODE_KP_5, /* x11:65461 (XK_KP_5) -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0xffb6] = Q_KEY_CODE_KP_6, /* x11:65462 (XK_KP_6) -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0xffb7] = Q_KEY_CODE_KP_7, /* x11:65463 (XK_KP_7) -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0xffb8] = Q_KEY_CODE_KP_8, /* x11:65464 (XK_KP_8) -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0xffb9] = Q_KEY_CODE_KP_9, /* x11:65465 (XK_KP_9) -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0xffbd] = Q_KEY_CODE_KP_EQUALS, /* x11:65469 (XK_KP_Equal) -> linux:117
(KEY_KPEQUAL) -> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0xffbe] = Q_KEY_CODE_F1, /* x11:65470 (XK_F1) -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0xffbf] = Q_KEY_CODE_F2, /* x11:65471 (XK_F2) -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0xffc0] = Q_KEY_CODE_F3, /* x11:65472 (XK_F3) -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0xffc1] = Q_KEY_CODE_F4, /* x11:65473 (XK_F4) -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0xffc2] = Q_KEY_CODE_F5, /* x11:65474 (XK_F5) -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0xffc3] = Q_KEY_CODE_F6, /* x11:65475 (XK_F6) -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0xffc4] = Q_KEY_CODE_F7, /* x11:65476 (XK_F7) -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0xffc5] = Q_KEY_CODE_F8, /* x11:65477 (XK_F8) -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0xffc6] = Q_KEY_CODE_F9, /* x11:65478 (XK_F9) -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0xffc7] = Q_KEY_CODE_F10, /* x11:65479 (XK_F10) -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0xffc8] = Q_KEY_CODE_F11, /* x11:65480 (XK_F11) -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0xffc9] = Q_KEY_CODE_F12, /* x11:65481 (XK_F12) -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0xffe1] = Q_KEY_CODE_SHIFT, /* x11:65505 (XK_Shift_L) -> linux:42
(KEY_LEFTSHIFT) -> qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0xffe2] = Q_KEY_CODE_SHIFT_R, /* x11:65506 (XK_Shift_R) -> linux:54
(KEY_RIGHTSHIFT) -> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0xffe3] = Q_KEY_CODE_CTRL, /* x11:65507 (XK_Control_L) -> linux:29
(KEY_LEFTCTRL) -> qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0xffe4] = Q_KEY_CODE_CTRL_R, /* x11:65508 (XK_Control_R) -> linux:97
(KEY_RIGHTCTRL) -> qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0xffe5] = Q_KEY_CODE_CAPS_LOCK, /* x11:65509 (XK_Caps_Lock) -> linux:58
(KEY_CAPSLOCK) -> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0xffe7] = Q_KEY_CODE_META_L, /* x11:65511 (XK_Meta_L) -> linux:125
(KEY_LEFTMETA) -> qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0xffe8] = Q_KEY_CODE_META_R, /* x11:65512 (XK_Meta_R) -> linux:126
(KEY_RIGHTMETA) -> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0xffe9] = Q_KEY_CODE_ALT, /* x11:65513 (XK_Alt_L) -> linux:56 (KEY_LEFTALT)
-> qcode:Q_KEY_CODE_ALT (alt) */
+ [0xffea] = Q_KEY_CODE_ALT_R, /* x11:65514 (XK_Alt_R) -> linux:100
(KEY_RIGHTALT) -> qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0xffff] = Q_KEY_CODE_DELETE, /* x11:65535 (XK_Delete) -> linux:111
(KEY_DELETE) -> qcode:Q_KEY_CODE_DELETE (delete) */
+};
+const guint qemu_input_map_x11_to_qcode_len =
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-xorgevdev-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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgevdev_to_qcode
code-map keymaps.csv xorgevdev qcode
+*/
+const guint16 qemu_input_map_xorgevdev_to_qcode[533] = {
+ [0x8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:8 -> linux:0 (KEY_RESERVED) ->
qcode:Q_KEY_CODE_UNMAPPED (unmapped) */
+ [0x9] = Q_KEY_CODE_ESC, /* xorgevdev:9 -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgevdev:10 -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgevdev:11 -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgevdev:12 -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgevdev:13 -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgevdev:14 -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgevdev:15 -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgevdev:16 -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgevdev:17 -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgevdev:18 -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgevdev:19 -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgevdev:20 -> linux:12 (KEY_MINUS) ->
qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgevdev:21 -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgevdev:22 -> linux:14 (KEY_BACKSPACE)
-> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgevdev:23 -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgevdev:24 -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgevdev:25 -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgevdev:26 -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgevdev:27 -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgevdev:28 -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgevdev:29 -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgevdev:30 -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgevdev:31 -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgevdev:32 -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgevdev:33 -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgevdev:34 -> linux:26
(KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgevdev:35 -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgevdev:36 -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgevdev:37 -> linux:29 (KEY_LEFTCTRL) ->
qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgevdev:38 -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgevdev:39 -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgevdev:40 -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgevdev:41 -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgevdev:42 -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgevdev:43 -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgevdev:44 -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgevdev:45 -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgevdev:46 -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgevdev:47 -> linux:39 (KEY_SEMICOLON)
-> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgevdev:48 -> linux:40 (KEY_APOSTROPHE)
-> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgevdev:49 -> linux:41 (KEY_GRAVE) ->
qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgevdev:50 -> linux:42 (KEY_LEFTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgevdev:51 -> linux:43 (KEY_BACKSLASH)
-> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgevdev:52 -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgevdev:53 -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgevdev:54 -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgevdev:55 -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgevdev:56 -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgevdev:57 -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgevdev:58 -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgevdev:59 -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgevdev:60 -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgevdev:61 -> linux:53 (KEY_SLASH) ->
qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgevdev:62 -> linux:54 (KEY_RIGHTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgevdev:63 -> linux:55
(KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgevdev:64 -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgevdev:65 -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgevdev:66 -> linux:58 (KEY_CAPSLOCK) ->
qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgevdev:67 -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgevdev:68 -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgevdev:69 -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgevdev:70 -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgevdev:71 -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgevdev:72 -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgevdev:73 -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgevdev:74 -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgevdev:75 -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgevdev:76 -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgevdev:77 -> linux:69 (KEY_NUMLOCK) ->
qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgevdev:78 -> linux:70
(KEY_SCROLLLOCK) -> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgevdev:79 -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgevdev:80 -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgevdev:81 -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgevdev:82 -> linux:74 (KEY_KPMINUS)
-> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgevdev:83 -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgevdev:84 -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgevdev:85 -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgevdev:86 -> linux:78 (KEY_KPPLUS) ->
qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgevdev:87 -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgevdev:88 -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgevdev:89 -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgevdev:90 -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgevdev:91 -> linux:83 (KEY_KPDOT) ->
qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:92 -> linux:84 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:93 -> linux:85
(KEY_ZENKAKUHANKAKU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgevdev:94 -> linux:86 (KEY_102ND) ->
qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgevdev:95 -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgevdev:96 -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_RO, /* xorgevdev:97 -> linux:89 (KEY_RO) ->
qcode:Q_KEY_CODE_RO (ro) */
+ [0x62] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:98 -> linux:90 (KEY_KATAKANA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_HIRAGANA, /* xorgevdev:99 -> linux:91 (KEY_HIRAGANA) ->
qcode:Q_KEY_CODE_HIRAGANA (hiragana) */
+ [0x64] = Q_KEY_CODE_HENKAN, /* xorgevdev:100 -> linux:92 (KEY_HENKAN) ->
qcode:Q_KEY_CODE_HENKAN (henkan) */
+ [0x65] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:101 -> linux:93
(KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x66] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:102 -> linux:94 (KEY_MUHENKAN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:103 -> linux:95 (KEY_KPJPCOMMA)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_KP_ENTER, /* xorgevdev:104 -> linux:96 (KEY_KPENTER) ->
qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x69] = Q_KEY_CODE_CTRL_R, /* xorgevdev:105 -> linux:97 (KEY_RIGHTCTRL) ->
qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6a] = Q_KEY_CODE_KP_DIVIDE, /* xorgevdev:106 -> linux:98 (KEY_KPSLASH) ->
qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x6b] = Q_KEY_CODE_SYSRQ, /* xorgevdev:107 -> linux:99 (KEY_SYSRQ) ->
qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x6c] = Q_KEY_CODE_ALT_R, /* xorgevdev:108 -> linux:100 (KEY_RIGHTALT) ->
qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x6d] = Q_KEY_CODE_LF, /* xorgevdev:109 -> linux:101 (KEY_LINEFEED) ->
qcode:Q_KEY_CODE_LF (lf) */
+ [0x6e] = Q_KEY_CODE_HOME, /* xorgevdev:110 -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0x6f] = Q_KEY_CODE_UP, /* xorgevdev:111 -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0x70] = Q_KEY_CODE_PGUP, /* xorgevdev:112 -> linux:104 (KEY_PAGEUP) ->
qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x71] = Q_KEY_CODE_LEFT, /* xorgevdev:113 -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0x72] = Q_KEY_CODE_RIGHT, /* xorgevdev:114 -> linux:106 (KEY_RIGHT) ->
qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x73] = Q_KEY_CODE_END, /* xorgevdev:115 -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0x74] = Q_KEY_CODE_DOWN, /* xorgevdev:116 -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0x75] = Q_KEY_CODE_PGDN, /* xorgevdev:117 -> linux:109 (KEY_PAGEDOWN) ->
qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x76] = Q_KEY_CODE_INSERT, /* xorgevdev:118 -> linux:110 (KEY_INSERT) ->
qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x77] = Q_KEY_CODE_DELETE, /* xorgevdev:119 -> linux:111 (KEY_DELETE) ->
qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:120 -> linux:112 (KEY_MACRO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_AUDIOMUTE, /* xorgevdev:121 -> linux:113 (KEY_MUTE) ->
qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x7a] = Q_KEY_CODE_VOLUMEDOWN, /* xorgevdev:122 -> linux:114
(KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x7b] = Q_KEY_CODE_VOLUMEUP, /* xorgevdev:123 -> linux:115 (KEY_VOLUMEUP)
-> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x7c] = Q_KEY_CODE_POWER, /* xorgevdev:124 -> linux:116 (KEY_POWER) ->
qcode:Q_KEY_CODE_POWER (power) */
+ [0x7d] = Q_KEY_CODE_KP_EQUALS, /* xorgevdev:125 -> linux:117 (KEY_KPEQUAL)
-> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x7e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:126 -> linux:118
(KEY_KPPLUSMINUS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7f] = Q_KEY_CODE_PAUSE, /* xorgevdev:127 -> linux:119 (KEY_PAUSE) ->
qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x80] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:128 -> linux:120 (KEY_SCALE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x81] = Q_KEY_CODE_KP_COMMA, /* xorgevdev:129 -> linux:121 (KEY_KPCOMMA) ->
qcode:Q_KEY_CODE_KP_COMMA (kp_comma) */
+ [0x82] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:130 -> linux:122 (KEY_HANGEUL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x83] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:131 -> linux:123 (KEY_HANJA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x84] = Q_KEY_CODE_YEN, /* xorgevdev:132 -> linux:124 (KEY_YEN) ->
qcode:Q_KEY_CODE_YEN (yen) */
+ [0x85] = Q_KEY_CODE_META_L, /* xorgevdev:133 -> linux:125 (KEY_LEFTMETA) ->
qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x86] = Q_KEY_CODE_META_R, /* xorgevdev:134 -> linux:126 (KEY_RIGHTMETA) ->
qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x87] = Q_KEY_CODE_COMPOSE, /* xorgevdev:135 -> linux:127 (KEY_COMPOSE) ->
qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x88] = Q_KEY_CODE_STOP, /* xorgevdev:136 -> linux:128 (KEY_STOP) ->
qcode:Q_KEY_CODE_STOP (stop) */
+ [0x89] = Q_KEY_CODE_AGAIN, /* xorgevdev:137 -> linux:129 (KEY_AGAIN) ->
qcode:Q_KEY_CODE_AGAIN (again) */
+ [0x8a] = Q_KEY_CODE_PROPS, /* xorgevdev:138 -> linux:130 (KEY_PROPS) ->
qcode:Q_KEY_CODE_PROPS (props) */
+ [0x8b] = Q_KEY_CODE_UNDO, /* xorgevdev:139 -> linux:131 (KEY_UNDO) ->
qcode:Q_KEY_CODE_UNDO (undo) */
+ [0x8c] = Q_KEY_CODE_FRONT, /* xorgevdev:140 -> linux:132 (KEY_FRONT) ->
qcode:Q_KEY_CODE_FRONT (front) */
+ [0x8d] = Q_KEY_CODE_COPY, /* xorgevdev:141 -> linux:133 (KEY_COPY) ->
qcode:Q_KEY_CODE_COPY (copy) */
+ [0x8e] = Q_KEY_CODE_OPEN, /* xorgevdev:142 -> linux:134 (KEY_OPEN) ->
qcode:Q_KEY_CODE_OPEN (open) */
+ [0x8f] = Q_KEY_CODE_PASTE, /* xorgevdev:143 -> linux:135 (KEY_PASTE) ->
qcode:Q_KEY_CODE_PASTE (paste) */
+ [0x90] = Q_KEY_CODE_FIND, /* xorgevdev:144 -> linux:136 (KEY_FIND) ->
qcode:Q_KEY_CODE_FIND (find) */
+ [0x91] = Q_KEY_CODE_CUT, /* xorgevdev:145 -> linux:137 (KEY_CUT) ->
qcode:Q_KEY_CODE_CUT (cut) */
+ [0x92] = Q_KEY_CODE_HELP, /* xorgevdev:146 -> linux:138 (KEY_HELP) ->
qcode:Q_KEY_CODE_HELP (help) */
+ [0x93] = Q_KEY_CODE_MENU, /* xorgevdev:147 -> linux:139 (KEY_MENU) ->
qcode:Q_KEY_CODE_MENU (menu) */
+ [0x94] = Q_KEY_CODE_CALCULATOR, /* xorgevdev:148 -> linux:140 (KEY_CALC) ->
qcode:Q_KEY_CODE_CALCULATOR (calculator) */
+ [0x95] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:149 -> linux:141 (KEY_SETUP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x96] = Q_KEY_CODE_SLEEP, /* xorgevdev:150 -> linux:142 (KEY_SLEEP) ->
qcode:Q_KEY_CODE_SLEEP (sleep) */
+ [0x97] = Q_KEY_CODE_WAKE, /* xorgevdev:151 -> linux:143 (KEY_WAKEUP) ->
qcode:Q_KEY_CODE_WAKE (wake) */
+ [0x98] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:152 -> linux:144 (KEY_FILE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x99] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:153 -> linux:145 (KEY_SENDFILE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:154 -> linux:146 (KEY_DELETEFILE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:155 -> linux:147 (KEY_XFER) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:156 -> linux:148 (KEY_PROG1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:157 -> linux:149 (KEY_PROG2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:158 -> linux:150 (KEY_WWW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x9f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:159 -> linux:151 (KEY_MSDOS) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:160 -> linux:152 (KEY_SCREENLOCK)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:161 -> linux:153 (KEY_DIRECTION)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:162 -> linux:154
(KEY_CYCLEWINDOWS) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa3] = Q_KEY_CODE_MAIL, /* xorgevdev:163 -> linux:155 (KEY_MAIL) ->
qcode:Q_KEY_CODE_MAIL (mail) */
+ [0xa4] = Q_KEY_CODE_AC_BOOKMARKS, /* xorgevdev:164 -> linux:156
(KEY_BOOKMARKS) -> qcode:Q_KEY_CODE_AC_BOOKMARKS (ac_bookmarks) */
+ [0xa5] = Q_KEY_CODE_COMPUTER, /* xorgevdev:165 -> linux:157 (KEY_COMPUTER)
-> qcode:Q_KEY_CODE_COMPUTER (computer) */
+ [0xa6] = Q_KEY_CODE_AC_BACK, /* xorgevdev:166 -> linux:158 (KEY_BACK) ->
qcode:Q_KEY_CODE_AC_BACK (ac_back) */
+ [0xa7] = Q_KEY_CODE_AC_FORWARD, /* xorgevdev:167 -> linux:159 (KEY_FORWARD)
-> qcode:Q_KEY_CODE_AC_FORWARD (ac_forward) */
+ [0xa8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:168 -> linux:160 (KEY_CLOSECD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xa9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:169 -> linux:161 (KEY_EJECTCD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xaa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:170 -> linux:162
(KEY_EJECTCLOSECD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xab] = Q_KEY_CODE_AUDIONEXT, /* xorgevdev:171 -> linux:163 (KEY_NEXTSONG)
-> qcode:Q_KEY_CODE_AUDIONEXT (audionext) */
+ [0xac] = Q_KEY_CODE_AUDIOPLAY, /* xorgevdev:172 -> linux:164 (KEY_PLAYPAUSE)
-> qcode:Q_KEY_CODE_AUDIOPLAY (audioplay) */
+ [0xad] = Q_KEY_CODE_AUDIOPREV, /* xorgevdev:173 -> linux:165
(KEY_PREVIOUSSONG) -> qcode:Q_KEY_CODE_AUDIOPREV (audioprev) */
+ [0xae] = Q_KEY_CODE_AUDIOSTOP, /* xorgevdev:174 -> linux:166 (KEY_STOPCD) ->
qcode:Q_KEY_CODE_AUDIOSTOP (audiostop) */
+ [0xaf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:175 -> linux:167 (KEY_RECORD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:176 -> linux:168 (KEY_REWIND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:177 -> linux:169 (KEY_PHONE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:178 -> linux:170 (KEY_ISO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:179 -> linux:171 (KEY_CONFIG) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb4] = Q_KEY_CODE_AC_HOME, /* xorgevdev:180 -> linux:172 (KEY_HOMEPAGE) ->
qcode:Q_KEY_CODE_AC_HOME (ac_home) */
+ [0xb5] = Q_KEY_CODE_AC_REFRESH, /* xorgevdev:181 -> linux:173 (KEY_REFRESH)
-> qcode:Q_KEY_CODE_AC_REFRESH (ac_refresh) */
+ [0xb6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:182 -> linux:174 (KEY_EXIT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:183 -> linux:175 (KEY_MOVE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:184 -> linux:176 (KEY_EDIT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xb9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:185 -> linux:177 (KEY_SCROLLUP)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xba] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:186 -> linux:178 (KEY_SCROLLDOWN)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:187 -> linux:179
(KEY_KPLEFTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:188 -> linux:180
(KEY_KPRIGHTPAREN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:189 -> linux:181 (KEY_NEW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:190 -> linux:182 (KEY_REDO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xbf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:191 -> linux:183 (KEY_F13) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:192 -> linux:184 (KEY_F14) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:193 -> linux:185 (KEY_F15) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:194 -> linux:186 (KEY_F16) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:195 -> linux:187 (KEY_F17) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:196 -> linux:188 (KEY_F18) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:197 -> linux:189 (KEY_F19) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:198 -> linux:190 (KEY_F20) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:199 -> linux:191 (KEY_F21) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:200 -> linux:192 (KEY_F22) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xc9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:201 -> linux:193 (KEY_F23) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xca] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:202 -> linux:194 (KEY_F24) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:203 -> linux:195 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:204 -> linux:196 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:205 -> linux:197 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xce] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:206 -> linux:198 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xcf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:207 -> linux:199 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:208 -> linux:200 (KEY_PLAYCD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:209 -> linux:201 (KEY_PAUSECD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:210 -> linux:202 (KEY_PROG3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:211 -> linux:203 (KEY_PROG4) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:212 -> linux:204 (KEY_DASHBOARD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:213 -> linux:205 (KEY_SUSPEND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:214 -> linux:206 (KEY_CLOSE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:215 -> linux:207 (KEY_PLAY) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:216 -> linux:208
(KEY_FASTFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xd9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:217 -> linux:209 (KEY_BASSBOOST)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xda] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:218 -> linux:210 (KEY_PRINT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:219 -> linux:211 (KEY_HP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:220 -> linux:212 (KEY_CAMERA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:221 -> linux:213 (KEY_SOUND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xde] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:222 -> linux:214 (KEY_QUESTION)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xdf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:223 -> linux:215 (KEY_EMAIL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:224 -> linux:216 (KEY_CHAT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:225 -> linux:217 (KEY_SEARCH) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:226 -> linux:218 (KEY_CONNECT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:227 -> linux:219 (KEY_FINANCE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:228 -> linux:220 (KEY_SPORT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:229 -> linux:221 (KEY_SHOP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:230 -> linux:222 (KEY_ALTERASE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:231 -> linux:223 (KEY_CANCEL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:232 -> linux:224
(KEY_BRIGHTNESSDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xe9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:233 -> linux:225
(KEY_BRIGHTNESSUP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xea] = Q_KEY_CODE_MEDIASELECT, /* xorgevdev:234 -> linux:226 (KEY_MEDIA)
-> qcode:Q_KEY_CODE_MEDIASELECT (mediaselect) */
+ [0xeb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:235 -> linux:227
(KEY_SWITCHVIDEOMODE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xec] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:236 -> linux:228
(KEY_KBDILLUMTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xed] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:237 -> linux:229
(KEY_KBDILLUMDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xee] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:238 -> linux:230 (KEY_KBDILLUMUP)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xef] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:239 -> linux:231 (KEY_SEND) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:240 -> linux:232 (KEY_REPLY) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:241 -> linux:233
(KEY_FORWARDMAIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:242 -> linux:234 (KEY_SAVE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:243 -> linux:235 (KEY_DOCUMENTS)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:244 -> linux:236 (KEY_BATTERY) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:245 -> linux:237 (KEY_BLUETOOTH)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:246 -> linux:238 (KEY_WLAN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:247 -> linux:239 (KEY_UWB) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:248 -> linux:240 (KEY_UNKNOWN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xf9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:249 -> linux:241 (KEY_VIDEO_NEXT)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:250 -> linux:242 (KEY_VIDEO_PREV)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:251 -> linux:243
(KEY_BRIGHTNESS_CYCLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:252 -> linux:244
(KEY_BRIGHTNESS_ZERO) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:253 -> linux:245
(KEY_DISPLAY_OFF) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xfe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:254 -> linux:246 (KEY_WIMAX) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0xff] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:255 -> linux:247 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x100] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:256 -> linux:248 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x101] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:257 -> linux:249 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x102] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:258 -> linux:250 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x103] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:259 -> linux:251 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x104] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:260 -> linux:252 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x105] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:261 -> linux:253 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x106] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:262 -> linux:254 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x107] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:263 -> linux:255 (unnamed) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x108] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:264 -> linux:256 (BTN_0) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x109] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:265 -> linux:257 (BTN_1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:266 -> linux:258 (BTN_2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:267 -> linux:259 (BTN_3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:268 -> linux:260 (BTN_4) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:269 -> linux:261 (BTN_5) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:270 -> linux:262 (BTN_6) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x10f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:271 -> linux:263 (BTN_7) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x110] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:272 -> linux:264 (BTN_8) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x111] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:273 -> linux:265 (BTN_9) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x118] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:280 -> linux:272 (BTN_LEFT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x119] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:281 -> linux:273 (BTN_RIGHT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:282 -> linux:274 (BTN_MIDDLE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:283 -> linux:275 (BTN_SIDE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:284 -> linux:276 (BTN_EXTRA) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:285 -> linux:277 (BTN_FORWARD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:286 -> linux:278 (BTN_BACK) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x11f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:287 -> linux:279 (BTN_TASK) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x128] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:296 -> linux:288 (BTN_TRIGGER)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x129] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:297 -> linux:289 (BTN_THUMB) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:298 -> linux:290 (BTN_THUMB2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:299 -> linux:291 (BTN_TOP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:300 -> linux:292 (BTN_TOP2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:301 -> linux:293 (BTN_PINKIE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:302 -> linux:294 (BTN_BASE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x12f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:303 -> linux:295 (BTN_BASE2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x130] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:304 -> linux:296 (BTN_BASE3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x131] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:305 -> linux:297 (BTN_BASE4) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x132] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:306 -> linux:298 (BTN_BASE5) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x133] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:307 -> linux:299 (BTN_BASE6) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x137] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:311 -> linux:303 (BTN_DEAD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x138] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:312 -> linux:304 (BTN_A) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x139] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:313 -> linux:305 (BTN_B) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:314 -> linux:306 (BTN_C) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:315 -> linux:307 (BTN_X) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:316 -> linux:308 (BTN_Y) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:317 -> linux:309 (BTN_Z) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:318 -> linux:310 (BTN_TL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:319 -> linux:311 (BTN_TR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x140] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:320 -> linux:312 (BTN_TL2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x141] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:321 -> linux:313 (BTN_TR2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x142] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:322 -> linux:314 (BTN_SELECT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x143] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:323 -> linux:315 (BTN_START) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x144] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:324 -> linux:316 (BTN_MODE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x145] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:325 -> linux:317 (BTN_THUMBL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x146] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:326 -> linux:318 (BTN_THUMBR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x148] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:328 -> linux:320 (BTN_TOOL_PEN)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x149] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:329 -> linux:321
(BTN_TOOL_RUBBER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:330 -> linux:322
(BTN_TOOL_BRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:331 -> linux:323
(BTN_TOOL_PENCIL) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:332 -> linux:324
(BTN_TOOL_AIRBRUSH) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:333 -> linux:325
(BTN_TOOL_FINGER) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:334 -> linux:326
(BTN_TOOL_MOUSE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x14f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:335 -> linux:327 (BTN_TOOL_LENS)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x152] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:338 -> linux:330 (BTN_TOUCH) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x153] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:339 -> linux:331 (BTN_STYLUS) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x154] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:340 -> linux:332 (BTN_STYLUS2)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x155] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:341 -> linux:333
(BTN_TOOL_DOUBLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x156] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:342 -> linux:334
(BTN_TOOL_TRIPLETAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x157] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:343 -> linux:335
(BTN_TOOL_QUADTAP) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x158] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:344 -> linux:336 (BTN_GEAR_DOWN)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x159] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:345 -> linux:337 (BTN_GEAR_UP)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x168] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:360 -> linux:352 (KEY_OK) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x169] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:361 -> linux:353 (KEY_SELECT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:362 -> linux:354 (KEY_GOTO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:363 -> linux:355 (KEY_CLEAR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:364 -> linux:356 (KEY_POWER2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:365 -> linux:357 (KEY_OPTION) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:366 -> linux:358 (KEY_INFO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x16f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:367 -> linux:359 (KEY_TIME) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x170] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:368 -> linux:360 (KEY_VENDOR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x171] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:369 -> linux:361 (KEY_ARCHIVE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x172] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:370 -> linux:362 (KEY_PROGRAM)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x173] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:371 -> linux:363 (KEY_CHANNEL)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x174] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:372 -> linux:364 (KEY_FAVORITES)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x175] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:373 -> linux:365 (KEY_EPG) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x176] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:374 -> linux:366 (KEY_PVR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x177] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:375 -> linux:367 (KEY_MHP) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x178] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:376 -> linux:368 (KEY_LANGUAGE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x179] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:377 -> linux:369 (KEY_TITLE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:378 -> linux:370 (KEY_SUBTITLE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:379 -> linux:371 (KEY_ANGLE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:380 -> linux:372 (KEY_ZOOM) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:381 -> linux:373 (KEY_MODE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:382 -> linux:374 (KEY_KEYBOARD)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x17f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:383 -> linux:375 (KEY_SCREEN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x180] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:384 -> linux:376 (KEY_PC) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x181] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:385 -> linux:377 (KEY_TV) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x182] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:386 -> linux:378 (KEY_TV2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x183] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:387 -> linux:379 (KEY_VCR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x184] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:388 -> linux:380 (KEY_VCR2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x185] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:389 -> linux:381 (KEY_SAT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x186] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:390 -> linux:382 (KEY_SAT2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x187] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:391 -> linux:383 (KEY_CD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x188] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:392 -> linux:384 (KEY_TAPE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x189] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:393 -> linux:385 (KEY_RADIO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:394 -> linux:386 (KEY_TUNER) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:395 -> linux:387 (KEY_PLAYER) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:396 -> linux:388 (KEY_TEXT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:397 -> linux:389 (KEY_DVD) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:398 -> linux:390 (KEY_AUX) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x18f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:399 -> linux:391 (KEY_MP3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x190] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:400 -> linux:392 (KEY_AUDIO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x191] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:401 -> linux:393 (KEY_VIDEO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x192] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:402 -> linux:394 (KEY_DIRECTORY)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x193] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:403 -> linux:395 (KEY_LIST) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x194] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:404 -> linux:396 (KEY_MEMO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x195] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:405 -> linux:397 (KEY_CALENDAR)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x196] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:406 -> linux:398 (KEY_RED) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x197] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:407 -> linux:399 (KEY_GREEN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x198] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:408 -> linux:400 (KEY_YELLOW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x199] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:409 -> linux:401 (KEY_BLUE) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:410 -> linux:402 (KEY_CHANNELUP)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:411 -> linux:403
(KEY_CHANNELDOWN) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:412 -> linux:404 (KEY_FIRST) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:413 -> linux:405 (KEY_LAST) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:414 -> linux:406 (KEY_AB) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x19f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:415 -> linux:407 (KEY_NEXT) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:416 -> linux:408 (KEY_RESTART)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:417 -> linux:409 (KEY_SLOW) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:418 -> linux:410 (KEY_SHUFFLE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:419 -> linux:411 (KEY_BREAK) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:420 -> linux:412 (KEY_PREVIOUS)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:421 -> linux:413 (KEY_DIGITS) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:422 -> linux:414 (KEY_TEEN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:423 -> linux:415 (KEY_TWEN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:424 -> linux:416
(KEY_VIDEOPHONE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1a9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:425 -> linux:417 (KEY_GAMES) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1aa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:426 -> linux:418 (KEY_ZOOMIN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ab] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:427 -> linux:419 (KEY_ZOOMOUT)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ac] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:428 -> linux:420 (KEY_ZOOMRESET)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ad] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:429 -> linux:421
(KEY_WORDPROCESSOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ae] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:430 -> linux:422 (KEY_EDITOR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1af] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:431 -> linux:423
(KEY_SPREADSHEET) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:432 -> linux:424
(KEY_GRAPHICSEDITOR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:433 -> linux:425
(KEY_PRESENTATION) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:434 -> linux:426 (KEY_DATABASE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:435 -> linux:427 (KEY_NEWS) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:436 -> linux:428 (KEY_VOICEMAIL)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:437 -> linux:429
(KEY_ADDRESSBOOK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:438 -> linux:430 (KEY_MESSENGER)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:439 -> linux:431
(KEY_DISPLAYTOGGLE) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:440 -> linux:432
(KEY_SPELLCHECK) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1b9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:441 -> linux:433 (KEY_LOGOFF) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ba] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:442 -> linux:434 (KEY_DOLLAR) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:443 -> linux:435 (KEY_EURO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:444 -> linux:436 (KEY_FRAMEBACK)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:445 -> linux:437
(KEY_FRAMEFORWARD) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1be] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:446 -> linux:438
(KEY_CONTEXT_MENU) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1bf] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:447 -> linux:439
(KEY_MEDIA_REPEAT) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:456 -> linux:448 (KEY_DEL_EOL)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1c9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:457 -> linux:449 (KEY_DEL_EOS)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ca] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:458 -> linux:450 (KEY_INS_LINE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1cb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:459 -> linux:451 (KEY_DEL_LINE)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:472 -> linux:464 (KEY_FN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1d9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:473 -> linux:465 (KEY_FN_ESC) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1da] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:474 -> linux:466 (KEY_FN_F1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1db] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:475 -> linux:467 (KEY_FN_F2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:476 -> linux:468 (KEY_FN_F3) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1dd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:477 -> linux:469 (KEY_FN_F4) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1de] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:478 -> linux:470 (KEY_FN_F5) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1df] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:479 -> linux:471 (KEY_FN_F6) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e0] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:480 -> linux:472 (KEY_FN_F7) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e1] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:481 -> linux:473 (KEY_FN_F8) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e2] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:482 -> linux:474 (KEY_FN_F9) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e3] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:483 -> linux:475 (KEY_FN_F10) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e4] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:484 -> linux:476 (KEY_FN_F11) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e5] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:485 -> linux:477 (KEY_FN_F12) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e6] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:486 -> linux:478 (KEY_FN_1) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e7] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:487 -> linux:479 (KEY_FN_2) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e8] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:488 -> linux:480 (KEY_FN_D) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1e9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:489 -> linux:481 (KEY_FN_E) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ea] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:490 -> linux:482 (KEY_FN_F) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1eb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:491 -> linux:483 (KEY_FN_S) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ec] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:492 -> linux:484 (KEY_FN_B) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1f9] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:505 -> linux:497 (KEY_BRL_DOT1)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fa] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:506 -> linux:498 (KEY_BRL_DOT2)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fb] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:507 -> linux:499 (KEY_BRL_DOT3)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fc] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:508 -> linux:500 (KEY_BRL_DOT4)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fd] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:509 -> linux:501 (KEY_BRL_DOT5)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1fe] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:510 -> linux:502 (KEY_BRL_DOT6)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x1ff] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:511 -> linux:503 (KEY_BRL_DOT7)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x200] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:512 -> linux:504 (KEY_BRL_DOT8)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x201] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:513 -> linux:505 (KEY_BRL_DOT9)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x202] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:514 -> linux:506 (KEY_BRL_DOT10)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x208] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:520 -> linux:512 (KEY_NUMERIC_0)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x209] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:521 -> linux:513 (KEY_NUMERIC_1)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20a] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:522 -> linux:514 (KEY_NUMERIC_2)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20b] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:523 -> linux:515 (KEY_NUMERIC_3)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20c] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:524 -> linux:516 (KEY_NUMERIC_4)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20d] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:525 -> linux:517 (KEY_NUMERIC_5)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20e] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:526 -> linux:518 (KEY_NUMERIC_6)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x20f] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:527 -> linux:519 (KEY_NUMERIC_7)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x210] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:528 -> linux:520 (KEY_NUMERIC_8)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x211] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:529 -> linux:521 (KEY_NUMERIC_9)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x212] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:530 -> linux:522
(KEY_NUMERIC_STAR) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x213] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:531 -> linux:523
(KEY_NUMERIC_POUND) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x214] = Q_KEY_CODE_UNMAPPED, /* xorgevdev:532 -> linux:524 (KEY_RFKILL) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgevdev_to_qcode_len =
sizeof(qemu_input_map_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-to-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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgkbd_to_qcode
code-map keymaps.csv xorgkbd qcode
+*/
+const guint16 qemu_input_map_xorgkbd_to_qcode[209] = {
+ [0x9] = Q_KEY_CODE_ESC, /* xorgkbd:9 -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgkbd:10 -> linux:2 (KEY_1) -> qcode:Q_KEY_CODE_1
(1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgkbd:11 -> linux:3 (KEY_2) -> qcode:Q_KEY_CODE_2
(2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgkbd:12 -> linux:4 (KEY_3) -> qcode:Q_KEY_CODE_3
(3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgkbd:13 -> linux:5 (KEY_4) -> qcode:Q_KEY_CODE_4
(4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgkbd:14 -> linux:6 (KEY_5) -> qcode:Q_KEY_CODE_5
(5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgkbd:15 -> linux:7 (KEY_6) -> qcode:Q_KEY_CODE_6
(6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgkbd:16 -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgkbd:17 -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgkbd:18 -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgkbd:19 -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgkbd:20 -> linux:12 (KEY_MINUS) ->
qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgkbd:21 -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgkbd:22 -> linux:14 (KEY_BACKSPACE) ->
qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgkbd:23 -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgkbd:24 -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgkbd:25 -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgkbd:26 -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgkbd:27 -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgkbd:28 -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgkbd:29 -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgkbd:30 -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgkbd:31 -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgkbd:32 -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgkbd:33 -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgkbd:34 -> linux:26 (KEY_LEFTBRACE)
-> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgkbd:35 -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgkbd:36 -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgkbd:37 -> linux:29 (KEY_LEFTCTRL) ->
qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgkbd:38 -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgkbd:39 -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgkbd:40 -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgkbd:41 -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgkbd:42 -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgkbd:43 -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgkbd:44 -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgkbd:45 -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgkbd:46 -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgkbd:47 -> linux:39 (KEY_SEMICOLON) ->
qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgkbd:48 -> linux:40 (KEY_APOSTROPHE)
-> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgkbd:49 -> linux:41 (KEY_GRAVE) ->
qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgkbd:50 -> linux:42 (KEY_LEFTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgkbd:51 -> linux:43 (KEY_BACKSLASH) ->
qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgkbd:52 -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgkbd:53 -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgkbd:54 -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgkbd:55 -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgkbd:56 -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgkbd:57 -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgkbd:58 -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgkbd:59 -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgkbd:60 -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgkbd:61 -> linux:53 (KEY_SLASH) ->
qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgkbd:62 -> linux:54 (KEY_RIGHTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgkbd:63 -> linux:55 (KEY_KPASTERISK)
-> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgkbd:64 -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgkbd:65 -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgkbd:66 -> linux:58 (KEY_CAPSLOCK) ->
qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgkbd:67 -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgkbd:68 -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgkbd:69 -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgkbd:70 -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgkbd:71 -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgkbd:72 -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgkbd:73 -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgkbd:74 -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgkbd:75 -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgkbd:76 -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgkbd:77 -> linux:69 (KEY_NUMLOCK) ->
qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgkbd:78 -> linux:70 (KEY_SCROLLLOCK)
-> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgkbd:79 -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgkbd:80 -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgkbd:81 -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgkbd:82 -> linux:74 (KEY_KPMINUS) ->
qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgkbd:83 -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgkbd:84 -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgkbd:85 -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgkbd:86 -> linux:78 (KEY_KPPLUS) ->
qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgkbd:87 -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgkbd:88 -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgkbd:89 -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgkbd:90 -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgkbd:91 -> linux:83 (KEY_KPDOT) ->
qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgkbd:94 -> linux:86 (KEY_102ND) ->
qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgkbd:95 -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgkbd:96 -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_HOME, /* xorgkbd:97 -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0x62] = Q_KEY_CODE_UP, /* xorgkbd:98 -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0x63] = Q_KEY_CODE_PGUP, /* xorgkbd:99 -> linux:104 (KEY_PAGEUP) ->
qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x64] = Q_KEY_CODE_LEFT, /* xorgkbd:100 -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0x66] = Q_KEY_CODE_RIGHT, /* xorgkbd:102 -> linux:106 (KEY_RIGHT) ->
qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x67] = Q_KEY_CODE_END, /* xorgkbd:103 -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0x68] = Q_KEY_CODE_DOWN, /* xorgkbd:104 -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0x69] = Q_KEY_CODE_PGDN, /* xorgkbd:105 -> linux:109 (KEY_PAGEDOWN) ->
qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x6a] = Q_KEY_CODE_INSERT, /* xorgkbd:106 -> linux:110 (KEY_INSERT) ->
qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x6b] = Q_KEY_CODE_DELETE, /* xorgkbd:107 -> linux:111 (KEY_DELETE) ->
qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x6c] = Q_KEY_CODE_KP_ENTER, /* xorgkbd:108 -> linux:96 (KEY_KPENTER) ->
qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x6d] = Q_KEY_CODE_CTRL_R, /* xorgkbd:109 -> linux:97 (KEY_RIGHTCTRL) ->
qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6e] = Q_KEY_CODE_PAUSE, /* xorgkbd:110 -> linux:119 (KEY_PAUSE) ->
qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x6f] = Q_KEY_CODE_SYSRQ, /* xorgkbd:111 -> linux:99 (KEY_SYSRQ) ->
qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x70] = Q_KEY_CODE_KP_DIVIDE, /* xorgkbd:112 -> linux:98 (KEY_KPSLASH) ->
qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x71] = Q_KEY_CODE_ALT_R, /* xorgkbd:113 -> linux:100 (KEY_RIGHTALT) ->
qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x73] = Q_KEY_CODE_META_L, /* xorgkbd:115 -> linux:125 (KEY_LEFTMETA) ->
qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x74] = Q_KEY_CODE_META_R, /* xorgkbd:116 -> linux:126 (KEY_RIGHTMETA) ->
qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x75] = Q_KEY_CODE_COMPOSE, /* xorgkbd:117 -> linux:127 (KEY_COMPOSE) ->
qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:118 -> linux:183 (KEY_F13) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:119 -> linux:184 (KEY_F14) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:120 -> linux:185 (KEY_F15) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:121 -> linux:186 (KEY_F16) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:122 -> linux:187 (KEY_F17) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_KP_EQUALS, /* xorgkbd:126 -> linux:117 (KEY_KPEQUAL) ->
qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x85] = Q_KEY_CODE_YEN, /* xorgkbd:133 -> linux:124 (KEY_YEN) ->
qcode:Q_KEY_CODE_YEN (yen) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgkbd:208 -> linux:93
(KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgkbd_to_qcode_len =
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-xorgxquartz-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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgxquartz_to_qcode
code-map keymaps.csv xorgxquartz qcode
+*/
+const guint16 qemu_input_map_xorgxquartz_to_qcode[264] = {
+ [0x8] = Q_KEY_CODE_A, /* xorgxquartz:8 -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x9] = Q_KEY_CODE_S, /* xorgxquartz:9 -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0xa] = Q_KEY_CODE_D, /* xorgxquartz:10 -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0xb] = Q_KEY_CODE_F, /* xorgxquartz:11 -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0xc] = Q_KEY_CODE_H, /* xorgxquartz:12 -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0xd] = Q_KEY_CODE_G, /* xorgxquartz:13 -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0xe] = Q_KEY_CODE_Z, /* xorgxquartz:14 -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0xf] = Q_KEY_CODE_X, /* xorgxquartz:15 -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x10] = Q_KEY_CODE_C, /* xorgxquartz:16 -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x11] = Q_KEY_CODE_V, /* xorgxquartz:17 -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x12] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:18 -> linux:170 (KEY_ISO) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x13] = Q_KEY_CODE_B, /* xorgxquartz:19 -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x14] = Q_KEY_CODE_Q, /* xorgxquartz:20 -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x15] = Q_KEY_CODE_W, /* xorgxquartz:21 -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x16] = Q_KEY_CODE_E, /* xorgxquartz:22 -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x17] = Q_KEY_CODE_R, /* xorgxquartz:23 -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x18] = Q_KEY_CODE_Y, /* xorgxquartz:24 -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x19] = Q_KEY_CODE_T, /* xorgxquartz:25 -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x1a] = Q_KEY_CODE_1, /* xorgxquartz:26 -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0x1b] = Q_KEY_CODE_2, /* xorgxquartz:27 -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0x1c] = Q_KEY_CODE_3, /* xorgxquartz:28 -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0x1d] = Q_KEY_CODE_4, /* xorgxquartz:29 -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0x1e] = Q_KEY_CODE_6, /* xorgxquartz:30 -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x1f] = Q_KEY_CODE_5, /* xorgxquartz:31 -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0x20] = Q_KEY_CODE_EQUAL, /* xorgxquartz:32 -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x21] = Q_KEY_CODE_9, /* xorgxquartz:33 -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x22] = Q_KEY_CODE_7, /* xorgxquartz:34 -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x23] = Q_KEY_CODE_MINUS, /* xorgxquartz:35 -> linux:12 (KEY_MINUS) ->
qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x24] = Q_KEY_CODE_8, /* xorgxquartz:36 -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x25] = Q_KEY_CODE_0, /* xorgxquartz:37 -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x26] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgxquartz:38 -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x27] = Q_KEY_CODE_O, /* xorgxquartz:39 -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x28] = Q_KEY_CODE_U, /* xorgxquartz:40 -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x29] = Q_KEY_CODE_BRACKET_LEFT, /* xorgxquartz:41 -> linux:26
(KEY_LEFTBRACE) -> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x2a] = Q_KEY_CODE_I, /* xorgxquartz:42 -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x2b] = Q_KEY_CODE_P, /* xorgxquartz:43 -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x2c] = Q_KEY_CODE_RET, /* xorgxquartz:44 -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x2d] = Q_KEY_CODE_L, /* xorgxquartz:45 -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x2e] = Q_KEY_CODE_J, /* xorgxquartz:46 -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x2f] = Q_KEY_CODE_APOSTROPHE, /* xorgxquartz:47 -> linux:40
(KEY_APOSTROPHE) -> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x30] = Q_KEY_CODE_K, /* xorgxquartz:48 -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x31] = Q_KEY_CODE_SEMICOLON, /* xorgxquartz:49 -> linux:39 (KEY_SEMICOLON)
-> qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x32] = Q_KEY_CODE_BACKSLASH, /* xorgxquartz:50 -> linux:43 (KEY_BACKSLASH)
-> qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x33] = Q_KEY_CODE_COMMA, /* xorgxquartz:51 -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x34] = Q_KEY_CODE_SLASH, /* xorgxquartz:52 -> linux:53 (KEY_SLASH) ->
qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x35] = Q_KEY_CODE_N, /* xorgxquartz:53 -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x36] = Q_KEY_CODE_M, /* xorgxquartz:54 -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x37] = Q_KEY_CODE_DOT, /* xorgxquartz:55 -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x38] = Q_KEY_CODE_TAB, /* xorgxquartz:56 -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0x39] = Q_KEY_CODE_SPC, /* xorgxquartz:57 -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x3a] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgxquartz:58 -> linux:41 (KEY_GRAVE)
-> qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x3b] = Q_KEY_CODE_BACKSPACE, /* xorgxquartz:59 -> linux:14 (KEY_BACKSPACE)
-> qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x3d] = Q_KEY_CODE_ESC, /* xorgxquartz:61 -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0x3e] = Q_KEY_CODE_META_R, /* xorgxquartz:62 -> linux:126 (KEY_RIGHTMETA)
-> qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x3f] = Q_KEY_CODE_META_L, /* xorgxquartz:63 -> linux:125 (KEY_LEFTMETA) ->
qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x40] = Q_KEY_CODE_SHIFT, /* xorgxquartz:64 -> linux:42 (KEY_LEFTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x41] = Q_KEY_CODE_CAPS_LOCK, /* xorgxquartz:65 -> linux:58 (KEY_CAPSLOCK)
-> qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x42] = Q_KEY_CODE_ALT, /* xorgxquartz:66 -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x43] = Q_KEY_CODE_CTRL, /* xorgxquartz:67 -> linux:29 (KEY_LEFTCTRL) ->
qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x44] = Q_KEY_CODE_SHIFT_R, /* xorgxquartz:68 -> linux:54 (KEY_RIGHTSHIFT)
-> qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x45] = Q_KEY_CODE_ALT_R, /* xorgxquartz:69 -> linux:100 (KEY_RIGHTALT) ->
qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x46] = Q_KEY_CODE_CTRL_R, /* xorgxquartz:70 -> linux:97 (KEY_RIGHTCTRL) ->
qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x47] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:71 -> linux:464 (KEY_FN) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x48] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:72 -> linux:187 (KEY_F17) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x49] = Q_KEY_CODE_KP_DECIMAL, /* xorgxquartz:73 -> linux:83 (KEY_KPDOT) ->
qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x4b] = Q_KEY_CODE_KP_MULTIPLY, /* xorgxquartz:75 -> linux:55
(KEY_KPASTERISK) -> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x4d] = Q_KEY_CODE_KP_ADD, /* xorgxquartz:77 -> linux:78 (KEY_KPPLUS) ->
qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x4f] = Q_KEY_CODE_NUM_LOCK, /* xorgxquartz:79 -> linux:69 (KEY_NUMLOCK) ->
qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x50] = Q_KEY_CODE_VOLUMEUP, /* xorgxquartz:80 -> linux:115 (KEY_VOLUMEUP)
-> qcode:Q_KEY_CODE_VOLUMEUP (volumeup) */
+ [0x51] = Q_KEY_CODE_VOLUMEDOWN, /* xorgxquartz:81 -> linux:114
(KEY_VOLUMEDOWN) -> qcode:Q_KEY_CODE_VOLUMEDOWN (volumedown) */
+ [0x52] = Q_KEY_CODE_AUDIOMUTE, /* xorgxquartz:82 -> linux:113 (KEY_MUTE) ->
qcode:Q_KEY_CODE_AUDIOMUTE (audiomute) */
+ [0x53] = Q_KEY_CODE_KP_DIVIDE, /* xorgxquartz:83 -> linux:98 (KEY_KPSLASH)
-> qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x54] = Q_KEY_CODE_KP_ENTER, /* xorgxquartz:84 -> linux:96 (KEY_KPENTER) ->
qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x56] = Q_KEY_CODE_KP_SUBTRACT, /* xorgxquartz:86 -> linux:74 (KEY_KPMINUS)
-> qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x57] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:87 -> linux:188 (KEY_F18) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x58] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:88 -> linux:189 (KEY_F19) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x59] = Q_KEY_CODE_KP_EQUALS, /* xorgxquartz:89 -> linux:117 (KEY_KPEQUAL)
-> qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgxquartz:90 -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_1, /* xorgxquartz:91 -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x5c] = Q_KEY_CODE_KP_2, /* xorgxquartz:92 -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x5d] = Q_KEY_CODE_KP_3, /* xorgxquartz:93 -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5e] = Q_KEY_CODE_KP_4, /* xorgxquartz:94 -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x5f] = Q_KEY_CODE_KP_5, /* xorgxquartz:95 -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x60] = Q_KEY_CODE_KP_6, /* xorgxquartz:96 -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x61] = Q_KEY_CODE_KP_7, /* xorgxquartz:97 -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x62] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:98 -> linux:190 (KEY_F20) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x63] = Q_KEY_CODE_KP_8, /* xorgxquartz:99 -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x64] = Q_KEY_CODE_KP_9, /* xorgxquartz:100 -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x65] = Q_KEY_CODE_YEN, /* xorgxquartz:101 -> linux:124 (KEY_YEN) ->
qcode:Q_KEY_CODE_YEN (yen) */
+ [0x67] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:103 -> linux:95 (KEY_KPJPCOMMA)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x68] = Q_KEY_CODE_F5, /* xorgxquartz:104 -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x69] = Q_KEY_CODE_F6, /* xorgxquartz:105 -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x6a] = Q_KEY_CODE_F7, /* xorgxquartz:106 -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x6b] = Q_KEY_CODE_F3, /* xorgxquartz:107 -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x6c] = Q_KEY_CODE_F8, /* xorgxquartz:108 -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x6d] = Q_KEY_CODE_F9, /* xorgxquartz:109 -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x6f] = Q_KEY_CODE_F11, /* xorgxquartz:111 -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x70] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:112 -> linux:90 (KEY_KATAKANA)
-> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x71] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:113 -> linux:183 (KEY_F13) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x72] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:114 -> linux:186 (KEY_F16) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x73] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:115 -> linux:184 (KEY_F14) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x75] = Q_KEY_CODE_F10, /* xorgxquartz:117 -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x76] = Q_KEY_CODE_COMPOSE, /* xorgxquartz:118 -> linux:127 (KEY_COMPOSE)
-> qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x77] = Q_KEY_CODE_F12, /* xorgxquartz:119 -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:121 -> linux:185 (KEY_F15) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_HELP, /* xorgxquartz:122 -> linux:138 (KEY_HELP) ->
qcode:Q_KEY_CODE_HELP (help) */
+ [0x7b] = Q_KEY_CODE_HOME, /* xorgxquartz:123 -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0x7c] = Q_KEY_CODE_PGUP, /* xorgxquartz:124 -> linux:104 (KEY_PAGEUP) ->
qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x7d] = Q_KEY_CODE_DELETE, /* xorgxquartz:125 -> linux:111 (KEY_DELETE) ->
qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x7e] = Q_KEY_CODE_F4, /* xorgxquartz:126 -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x7f] = Q_KEY_CODE_END, /* xorgxquartz:127 -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0x80] = Q_KEY_CODE_F2, /* xorgxquartz:128 -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x81] = Q_KEY_CODE_PGDN, /* xorgxquartz:129 -> linux:109 (KEY_PAGEDOWN) ->
qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x82] = Q_KEY_CODE_F1, /* xorgxquartz:130 -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x83] = Q_KEY_CODE_LEFT, /* xorgxquartz:131 -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0x84] = Q_KEY_CODE_RIGHT, /* xorgxquartz:132 -> linux:106 (KEY_RIGHT) ->
qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x85] = Q_KEY_CODE_DOWN, /* xorgxquartz:133 -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0x86] = Q_KEY_CODE_UP, /* xorgxquartz:134 -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0x107] = Q_KEY_CODE_UNMAPPED, /* xorgxquartz:263 -> linux:0 (KEY_RESERVED)
-> qcode:Q_KEY_CODE_UNMAPPED (unmapped) */
+};
+const guint qemu_input_map_xorgxquartz_to_qcode_len =
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(f8aeff0c3430077a350e3d7ba2b335b381bd929ac4b193413730a402ff3f0097)
+ * To re-generate, run:
+ * keymap-gen --lang=glib2 --varname=qemu_input_map_xorgxwin_to_qcode
code-map keymaps.csv xorgxwin qcode
+*/
+const guint16 qemu_input_map_xorgxwin_to_qcode[209] = {
+ [0x9] = Q_KEY_CODE_ESC, /* xorgxwin:9 -> linux:1 (KEY_ESC) ->
qcode:Q_KEY_CODE_ESC (esc) */
+ [0xa] = Q_KEY_CODE_1, /* xorgxwin:10 -> linux:2 (KEY_1) ->
qcode:Q_KEY_CODE_1 (1) */
+ [0xb] = Q_KEY_CODE_2, /* xorgxwin:11 -> linux:3 (KEY_2) ->
qcode:Q_KEY_CODE_2 (2) */
+ [0xc] = Q_KEY_CODE_3, /* xorgxwin:12 -> linux:4 (KEY_3) ->
qcode:Q_KEY_CODE_3 (3) */
+ [0xd] = Q_KEY_CODE_4, /* xorgxwin:13 -> linux:5 (KEY_4) ->
qcode:Q_KEY_CODE_4 (4) */
+ [0xe] = Q_KEY_CODE_5, /* xorgxwin:14 -> linux:6 (KEY_5) ->
qcode:Q_KEY_CODE_5 (5) */
+ [0xf] = Q_KEY_CODE_6, /* xorgxwin:15 -> linux:7 (KEY_6) ->
qcode:Q_KEY_CODE_6 (6) */
+ [0x10] = Q_KEY_CODE_7, /* xorgxwin:16 -> linux:8 (KEY_7) ->
qcode:Q_KEY_CODE_7 (7) */
+ [0x11] = Q_KEY_CODE_8, /* xorgxwin:17 -> linux:9 (KEY_8) ->
qcode:Q_KEY_CODE_8 (8) */
+ [0x12] = Q_KEY_CODE_9, /* xorgxwin:18 -> linux:10 (KEY_9) ->
qcode:Q_KEY_CODE_9 (9) */
+ [0x13] = Q_KEY_CODE_0, /* xorgxwin:19 -> linux:11 (KEY_0) ->
qcode:Q_KEY_CODE_0 (0) */
+ [0x14] = Q_KEY_CODE_MINUS, /* xorgxwin:20 -> linux:12 (KEY_MINUS) ->
qcode:Q_KEY_CODE_MINUS (minus) */
+ [0x15] = Q_KEY_CODE_EQUAL, /* xorgxwin:21 -> linux:13 (KEY_EQUAL) ->
qcode:Q_KEY_CODE_EQUAL (equal) */
+ [0x16] = Q_KEY_CODE_BACKSPACE, /* xorgxwin:22 -> linux:14 (KEY_BACKSPACE) ->
qcode:Q_KEY_CODE_BACKSPACE (backspace) */
+ [0x17] = Q_KEY_CODE_TAB, /* xorgxwin:23 -> linux:15 (KEY_TAB) ->
qcode:Q_KEY_CODE_TAB (tab) */
+ [0x18] = Q_KEY_CODE_Q, /* xorgxwin:24 -> linux:16 (KEY_Q) ->
qcode:Q_KEY_CODE_Q (q) */
+ [0x19] = Q_KEY_CODE_W, /* xorgxwin:25 -> linux:17 (KEY_W) ->
qcode:Q_KEY_CODE_W (w) */
+ [0x1a] = Q_KEY_CODE_E, /* xorgxwin:26 -> linux:18 (KEY_E) ->
qcode:Q_KEY_CODE_E (e) */
+ [0x1b] = Q_KEY_CODE_R, /* xorgxwin:27 -> linux:19 (KEY_R) ->
qcode:Q_KEY_CODE_R (r) */
+ [0x1c] = Q_KEY_CODE_T, /* xorgxwin:28 -> linux:20 (KEY_T) ->
qcode:Q_KEY_CODE_T (t) */
+ [0x1d] = Q_KEY_CODE_Y, /* xorgxwin:29 -> linux:21 (KEY_Y) ->
qcode:Q_KEY_CODE_Y (y) */
+ [0x1e] = Q_KEY_CODE_U, /* xorgxwin:30 -> linux:22 (KEY_U) ->
qcode:Q_KEY_CODE_U (u) */
+ [0x1f] = Q_KEY_CODE_I, /* xorgxwin:31 -> linux:23 (KEY_I) ->
qcode:Q_KEY_CODE_I (i) */
+ [0x20] = Q_KEY_CODE_O, /* xorgxwin:32 -> linux:24 (KEY_O) ->
qcode:Q_KEY_CODE_O (o) */
+ [0x21] = Q_KEY_CODE_P, /* xorgxwin:33 -> linux:25 (KEY_P) ->
qcode:Q_KEY_CODE_P (p) */
+ [0x22] = Q_KEY_CODE_BRACKET_LEFT, /* xorgxwin:34 -> linux:26 (KEY_LEFTBRACE)
-> qcode:Q_KEY_CODE_BRACKET_LEFT (bracket_left) */
+ [0x23] = Q_KEY_CODE_BRACKET_RIGHT, /* xorgxwin:35 -> linux:27
(KEY_RIGHTBRACE) -> qcode:Q_KEY_CODE_BRACKET_RIGHT (bracket_right) */
+ [0x24] = Q_KEY_CODE_RET, /* xorgxwin:36 -> linux:28 (KEY_ENTER) ->
qcode:Q_KEY_CODE_RET (ret) */
+ [0x25] = Q_KEY_CODE_CTRL, /* xorgxwin:37 -> linux:29 (KEY_LEFTCTRL) ->
qcode:Q_KEY_CODE_CTRL (ctrl) */
+ [0x26] = Q_KEY_CODE_A, /* xorgxwin:38 -> linux:30 (KEY_A) ->
qcode:Q_KEY_CODE_A (a) */
+ [0x27] = Q_KEY_CODE_S, /* xorgxwin:39 -> linux:31 (KEY_S) ->
qcode:Q_KEY_CODE_S (s) */
+ [0x28] = Q_KEY_CODE_D, /* xorgxwin:40 -> linux:32 (KEY_D) ->
qcode:Q_KEY_CODE_D (d) */
+ [0x29] = Q_KEY_CODE_F, /* xorgxwin:41 -> linux:33 (KEY_F) ->
qcode:Q_KEY_CODE_F (f) */
+ [0x2a] = Q_KEY_CODE_G, /* xorgxwin:42 -> linux:34 (KEY_G) ->
qcode:Q_KEY_CODE_G (g) */
+ [0x2b] = Q_KEY_CODE_H, /* xorgxwin:43 -> linux:35 (KEY_H) ->
qcode:Q_KEY_CODE_H (h) */
+ [0x2c] = Q_KEY_CODE_J, /* xorgxwin:44 -> linux:36 (KEY_J) ->
qcode:Q_KEY_CODE_J (j) */
+ [0x2d] = Q_KEY_CODE_K, /* xorgxwin:45 -> linux:37 (KEY_K) ->
qcode:Q_KEY_CODE_K (k) */
+ [0x2e] = Q_KEY_CODE_L, /* xorgxwin:46 -> linux:38 (KEY_L) ->
qcode:Q_KEY_CODE_L (l) */
+ [0x2f] = Q_KEY_CODE_SEMICOLON, /* xorgxwin:47 -> linux:39 (KEY_SEMICOLON) ->
qcode:Q_KEY_CODE_SEMICOLON (semicolon) */
+ [0x30] = Q_KEY_CODE_APOSTROPHE, /* xorgxwin:48 -> linux:40 (KEY_APOSTROPHE)
-> qcode:Q_KEY_CODE_APOSTROPHE (apostrophe) */
+ [0x31] = Q_KEY_CODE_GRAVE_ACCENT, /* xorgxwin:49 -> linux:41 (KEY_GRAVE) ->
qcode:Q_KEY_CODE_GRAVE_ACCENT (grave_accent) */
+ [0x32] = Q_KEY_CODE_SHIFT, /* xorgxwin:50 -> linux:42 (KEY_LEFTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT (shift) */
+ [0x33] = Q_KEY_CODE_BACKSLASH, /* xorgxwin:51 -> linux:43 (KEY_BACKSLASH) ->
qcode:Q_KEY_CODE_BACKSLASH (backslash) */
+ [0x34] = Q_KEY_CODE_Z, /* xorgxwin:52 -> linux:44 (KEY_Z) ->
qcode:Q_KEY_CODE_Z (z) */
+ [0x35] = Q_KEY_CODE_X, /* xorgxwin:53 -> linux:45 (KEY_X) ->
qcode:Q_KEY_CODE_X (x) */
+ [0x36] = Q_KEY_CODE_C, /* xorgxwin:54 -> linux:46 (KEY_C) ->
qcode:Q_KEY_CODE_C (c) */
+ [0x37] = Q_KEY_CODE_V, /* xorgxwin:55 -> linux:47 (KEY_V) ->
qcode:Q_KEY_CODE_V (v) */
+ [0x38] = Q_KEY_CODE_B, /* xorgxwin:56 -> linux:48 (KEY_B) ->
qcode:Q_KEY_CODE_B (b) */
+ [0x39] = Q_KEY_CODE_N, /* xorgxwin:57 -> linux:49 (KEY_N) ->
qcode:Q_KEY_CODE_N (n) */
+ [0x3a] = Q_KEY_CODE_M, /* xorgxwin:58 -> linux:50 (KEY_M) ->
qcode:Q_KEY_CODE_M (m) */
+ [0x3b] = Q_KEY_CODE_COMMA, /* xorgxwin:59 -> linux:51 (KEY_COMMA) ->
qcode:Q_KEY_CODE_COMMA (comma) */
+ [0x3c] = Q_KEY_CODE_DOT, /* xorgxwin:60 -> linux:52 (KEY_DOT) ->
qcode:Q_KEY_CODE_DOT (dot) */
+ [0x3d] = Q_KEY_CODE_SLASH, /* xorgxwin:61 -> linux:53 (KEY_SLASH) ->
qcode:Q_KEY_CODE_SLASH (slash) */
+ [0x3e] = Q_KEY_CODE_SHIFT_R, /* xorgxwin:62 -> linux:54 (KEY_RIGHTSHIFT) ->
qcode:Q_KEY_CODE_SHIFT_R (shift_r) */
+ [0x3f] = Q_KEY_CODE_KP_MULTIPLY, /* xorgxwin:63 -> linux:55 (KEY_KPASTERISK)
-> qcode:Q_KEY_CODE_KP_MULTIPLY (kp_multiply) */
+ [0x40] = Q_KEY_CODE_ALT, /* xorgxwin:64 -> linux:56 (KEY_LEFTALT) ->
qcode:Q_KEY_CODE_ALT (alt) */
+ [0x41] = Q_KEY_CODE_SPC, /* xorgxwin:65 -> linux:57 (KEY_SPACE) ->
qcode:Q_KEY_CODE_SPC (spc) */
+ [0x42] = Q_KEY_CODE_CAPS_LOCK, /* xorgxwin:66 -> linux:58 (KEY_CAPSLOCK) ->
qcode:Q_KEY_CODE_CAPS_LOCK (caps_lock) */
+ [0x43] = Q_KEY_CODE_F1, /* xorgxwin:67 -> linux:59 (KEY_F1) ->
qcode:Q_KEY_CODE_F1 (f1) */
+ [0x44] = Q_KEY_CODE_F2, /* xorgxwin:68 -> linux:60 (KEY_F2) ->
qcode:Q_KEY_CODE_F2 (f2) */
+ [0x45] = Q_KEY_CODE_F3, /* xorgxwin:69 -> linux:61 (KEY_F3) ->
qcode:Q_KEY_CODE_F3 (f3) */
+ [0x46] = Q_KEY_CODE_F4, /* xorgxwin:70 -> linux:62 (KEY_F4) ->
qcode:Q_KEY_CODE_F4 (f4) */
+ [0x47] = Q_KEY_CODE_F5, /* xorgxwin:71 -> linux:63 (KEY_F5) ->
qcode:Q_KEY_CODE_F5 (f5) */
+ [0x48] = Q_KEY_CODE_F6, /* xorgxwin:72 -> linux:64 (KEY_F6) ->
qcode:Q_KEY_CODE_F6 (f6) */
+ [0x49] = Q_KEY_CODE_F7, /* xorgxwin:73 -> linux:65 (KEY_F7) ->
qcode:Q_KEY_CODE_F7 (f7) */
+ [0x4a] = Q_KEY_CODE_F8, /* xorgxwin:74 -> linux:66 (KEY_F8) ->
qcode:Q_KEY_CODE_F8 (f8) */
+ [0x4b] = Q_KEY_CODE_F9, /* xorgxwin:75 -> linux:67 (KEY_F9) ->
qcode:Q_KEY_CODE_F9 (f9) */
+ [0x4c] = Q_KEY_CODE_F10, /* xorgxwin:76 -> linux:68 (KEY_F10) ->
qcode:Q_KEY_CODE_F10 (f10) */
+ [0x4d] = Q_KEY_CODE_NUM_LOCK, /* xorgxwin:77 -> linux:69 (KEY_NUMLOCK) ->
qcode:Q_KEY_CODE_NUM_LOCK (num_lock) */
+ [0x4e] = Q_KEY_CODE_SCROLL_LOCK, /* xorgxwin:78 -> linux:70 (KEY_SCROLLLOCK)
-> qcode:Q_KEY_CODE_SCROLL_LOCK (scroll_lock) */
+ [0x4f] = Q_KEY_CODE_KP_7, /* xorgxwin:79 -> linux:71 (KEY_KP7) ->
qcode:Q_KEY_CODE_KP_7 (kp_7) */
+ [0x50] = Q_KEY_CODE_KP_8, /* xorgxwin:80 -> linux:72 (KEY_KP8) ->
qcode:Q_KEY_CODE_KP_8 (kp_8) */
+ [0x51] = Q_KEY_CODE_KP_9, /* xorgxwin:81 -> linux:73 (KEY_KP9) ->
qcode:Q_KEY_CODE_KP_9 (kp_9) */
+ [0x52] = Q_KEY_CODE_KP_SUBTRACT, /* xorgxwin:82 -> linux:74 (KEY_KPMINUS) ->
qcode:Q_KEY_CODE_KP_SUBTRACT (kp_subtract) */
+ [0x53] = Q_KEY_CODE_KP_4, /* xorgxwin:83 -> linux:75 (KEY_KP4) ->
qcode:Q_KEY_CODE_KP_4 (kp_4) */
+ [0x54] = Q_KEY_CODE_KP_5, /* xorgxwin:84 -> linux:76 (KEY_KP5) ->
qcode:Q_KEY_CODE_KP_5 (kp_5) */
+ [0x55] = Q_KEY_CODE_KP_6, /* xorgxwin:85 -> linux:77 (KEY_KP6) ->
qcode:Q_KEY_CODE_KP_6 (kp_6) */
+ [0x56] = Q_KEY_CODE_KP_ADD, /* xorgxwin:86 -> linux:78 (KEY_KPPLUS) ->
qcode:Q_KEY_CODE_KP_ADD (kp_add) */
+ [0x57] = Q_KEY_CODE_KP_1, /* xorgxwin:87 -> linux:79 (KEY_KP1) ->
qcode:Q_KEY_CODE_KP_1 (kp_1) */
+ [0x58] = Q_KEY_CODE_KP_2, /* xorgxwin:88 -> linux:80 (KEY_KP2) ->
qcode:Q_KEY_CODE_KP_2 (kp_2) */
+ [0x59] = Q_KEY_CODE_KP_3, /* xorgxwin:89 -> linux:81 (KEY_KP3) ->
qcode:Q_KEY_CODE_KP_3 (kp_3) */
+ [0x5a] = Q_KEY_CODE_KP_0, /* xorgxwin:90 -> linux:82 (KEY_KP0) ->
qcode:Q_KEY_CODE_KP_0 (kp_0) */
+ [0x5b] = Q_KEY_CODE_KP_DECIMAL, /* xorgxwin:91 -> linux:83 (KEY_KPDOT) ->
qcode:Q_KEY_CODE_KP_DECIMAL (kp_decimal) */
+ [0x5e] = Q_KEY_CODE_LESS, /* xorgxwin:94 -> linux:86 (KEY_102ND) ->
qcode:Q_KEY_CODE_LESS (less) */
+ [0x5f] = Q_KEY_CODE_F11, /* xorgxwin:95 -> linux:87 (KEY_F11) ->
qcode:Q_KEY_CODE_F11 (f11) */
+ [0x60] = Q_KEY_CODE_F12, /* xorgxwin:96 -> linux:88 (KEY_F12) ->
qcode:Q_KEY_CODE_F12 (f12) */
+ [0x61] = Q_KEY_CODE_HOME, /* xorgxwin:97 -> linux:102 (KEY_HOME) ->
qcode:Q_KEY_CODE_HOME (home) */
+ [0x62] = Q_KEY_CODE_UP, /* xorgxwin:98 -> linux:103 (KEY_UP) ->
qcode:Q_KEY_CODE_UP (up) */
+ [0x63] = Q_KEY_CODE_PGUP, /* xorgxwin:99 -> linux:104 (KEY_PAGEUP) ->
qcode:Q_KEY_CODE_PGUP (pgup) */
+ [0x64] = Q_KEY_CODE_LEFT, /* xorgxwin:100 -> linux:105 (KEY_LEFT) ->
qcode:Q_KEY_CODE_LEFT (left) */
+ [0x66] = Q_KEY_CODE_RIGHT, /* xorgxwin:102 -> linux:106 (KEY_RIGHT) ->
qcode:Q_KEY_CODE_RIGHT (right) */
+ [0x67] = Q_KEY_CODE_END, /* xorgxwin:103 -> linux:107 (KEY_END) ->
qcode:Q_KEY_CODE_END (end) */
+ [0x68] = Q_KEY_CODE_DOWN, /* xorgxwin:104 -> linux:108 (KEY_DOWN) ->
qcode:Q_KEY_CODE_DOWN (down) */
+ [0x69] = Q_KEY_CODE_PGDN, /* xorgxwin:105 -> linux:109 (KEY_PAGEDOWN) ->
qcode:Q_KEY_CODE_PGDN (pgdn) */
+ [0x6a] = Q_KEY_CODE_INSERT, /* xorgxwin:106 -> linux:110 (KEY_INSERT) ->
qcode:Q_KEY_CODE_INSERT (insert) */
+ [0x6b] = Q_KEY_CODE_DELETE, /* xorgxwin:107 -> linux:111 (KEY_DELETE) ->
qcode:Q_KEY_CODE_DELETE (delete) */
+ [0x6c] = Q_KEY_CODE_KP_ENTER, /* xorgxwin:108 -> linux:96 (KEY_KPENTER) ->
qcode:Q_KEY_CODE_KP_ENTER (kp_enter) */
+ [0x6d] = Q_KEY_CODE_CTRL_R, /* xorgxwin:109 -> linux:97 (KEY_RIGHTCTRL) ->
qcode:Q_KEY_CODE_CTRL_R (ctrl_r) */
+ [0x6e] = Q_KEY_CODE_PAUSE, /* xorgxwin:110 -> linux:119 (KEY_PAUSE) ->
qcode:Q_KEY_CODE_PAUSE (pause) */
+ [0x6f] = Q_KEY_CODE_SYSRQ, /* xorgxwin:111 -> linux:99 (KEY_SYSRQ) ->
qcode:Q_KEY_CODE_SYSRQ (sysrq) */
+ [0x70] = Q_KEY_CODE_KP_DIVIDE, /* xorgxwin:112 -> linux:98 (KEY_KPSLASH) ->
qcode:Q_KEY_CODE_KP_DIVIDE (kp_divide) */
+ [0x71] = Q_KEY_CODE_ALT_R, /* xorgxwin:113 -> linux:100 (KEY_RIGHTALT) ->
qcode:Q_KEY_CODE_ALT_R (alt_r) */
+ [0x73] = Q_KEY_CODE_META_L, /* xorgxwin:115 -> linux:125 (KEY_LEFTMETA) ->
qcode:Q_KEY_CODE_META_L (meta_l) */
+ [0x74] = Q_KEY_CODE_META_R, /* xorgxwin:116 -> linux:126 (KEY_RIGHTMETA) ->
qcode:Q_KEY_CODE_META_R (meta_r) */
+ [0x75] = Q_KEY_CODE_COMPOSE, /* xorgxwin:117 -> linux:127 (KEY_COMPOSE) ->
qcode:Q_KEY_CODE_COMPOSE (compose) */
+ [0x76] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:118 -> linux:183 (KEY_F13) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x77] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:119 -> linux:184 (KEY_F14) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x78] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:120 -> linux:185 (KEY_F15) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x79] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:121 -> linux:186 (KEY_F16) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7a] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:122 -> linux:187 (KEY_F17) ->
qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+ [0x7e] = Q_KEY_CODE_KP_EQUALS, /* xorgxwin:126 -> linux:117 (KEY_KPEQUAL) ->
qcode:Q_KEY_CODE_KP_EQUALS (kp_equals) */
+ [0x85] = Q_KEY_CODE_YEN, /* xorgxwin:133 -> linux:124 (KEY_YEN) ->
qcode:Q_KEY_CODE_YEN (yen) */
+ [0xd0] = Q_KEY_CODE_UNMAPPED, /* xorgxwin:208 -> linux:93
(KEY_KATAKANAHIRAGANA) -> qcode:Q_KEY_CODE_UNMAPPED (unnamed) */
+};
+const guint qemu_input_map_xorgxwin_to_qcode_len =
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 @@
#include "standard-headers/linux/input.h"
+#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"
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"
static DisplayChangeListener *dcl;
@@ -63,6 +65,8 @@ static SDL_PixelFormat host_format;
static int scaling_active = 0;
static Notifier mouse_mode_notifier;
static int idle_counter;
+static const guint16 *keycode_map;
+static size_t keycode_maplen;
#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;
}
-/* specific keyboard conversions from scan codes */
-
-#if defined(_WIN32)
-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 = qemu_input_map_atset1_to_qcode_len;
+ return qemu_input_map_atset1_to_qcode;
#else
-
#if defined(SDL_VIDEO_DRIVER_X11)
-#include <X11/XKBlib.h>
-
-static int check_for_evdev(void)
-{
SDL_SysWMinfo info;
- XkbDescPtr desc = NULL;
- int has_evdev = 0;
- char *keycodes = NULL;
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 = XkbGetMap(info.info.x11.display,
- XkbGBN_AllComponentsMask,
- XkbUseCoreKbd);
- if (desc &&
- (XkbGetNames(info.info.x11.display,
- XkbKeycodesNameMask, desc) == Success)) {
- keycodes = XGetAtomName(info.info.x11.display, desc->names->keycodes);
- if (keycodes == NULL) {
- fprintf(stderr, "could not lookup keycode name\n");
- } else if (strstart(keycodes, "evdev", NULL)) {
- has_evdev = 1;
- } else if (!strstart(keycodes, "xfree86", NULL)) {
- fprintf(stderr, "unknown keycodes `%s', please report to "
- "address@hidden", 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 address@hidden"
+ "including the following information:\n"
+ "\n"
+ " - Operating system\n"
+ " - SDL video driver\n");
+ *maplen = qemu_input_map_xorgkbd_to_qcode_len;
+ return qemu_input_map_xorgkbd_to_qcode;
+#endif
+}
static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
{
- int keycode;
- static int has_evdev = -1;
-
- if (has_evdev == -1)
- has_evdev = check_for_evdev();
-
- keycode = ev->keysym.scancode;
-
- if (keycode < 9) {
- keycode = 0;
- } else if (keycode < 97) {
- keycode -= 8; /* just an offset */
- } else if (keycode < 158) {
- /* use conversion table */
- if (has_evdev)
- keycode = translate_evdev_keycode(keycode - 97);
- else
- keycode = translate_xfree86_keycode(keycode - 97);
- } else if (keycode == 208) { /* Hiragana_Katakana */
- keycode = 0x70;
- } else if (keycode == 211) { /* backslash */
- keycode = 0x73;
- } else {
- keycode = 0;
+ if (!keycode_map) {
+ return 0;
+ }
+ if (ev->keysym.scancode > keycode_maplen) {
+ return 0;
}
- return keycode;
-}
-#endif
+ return keycode_map[ev->keysym.scancode];
+}
static void reset_keys(void)
{
@@ -995,6 +950,8 @@ void sdl_display_init(DisplayState *ds, int full_screen,
int no_frame)
vi = SDL_GetVideoInfo();
host_format = *(vi->vfmt);
+ keycode_map = sdl_get_keymap(&keycode_maplen);
+
/* Load a 32x32x4 image. White pixels are transparent. */
filename = 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=%p"
# ui/gtk.c
gd_switch(const char *tab, int width, int height) "tab=%s, width=%d, height=%d"
gd_update(const char *tab, int x, int y, int w, int h) "tab=%s, x=%d, y=%d,
w=%d, h=%d"
-gd_key_event(const char *tab, int gdk_keycode, int qemu_keycode, const char
*action) "tab=%s, translated GDK keycode %d to QEMU keycode %d (%s)"
+gd_key_event(const char *tab, int gdk_keycode, int qkeycode, const char
*action) "tab=%s, translated GDK keycode %d to QKeyCode %d (%s)"
gd_grab(const char *tab, const char *device, const char *reason) "tab=%s,
dev=%s, reason=%s"
gd_ungrab(const char *tab, const char *device) "tab=%s, dev=%s"
+gd_keymap_windowing(const char *name) "backend=%s"
# ui/vnc.c
vnc_key_guest_leds(bool caps, bool num, bool scroll) "caps %d, num %d, scroll
%d"
@@ -51,3 +52,9 @@ qemu_spice_create_update(uint32_t left, uint32_t right,
uint32_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
sym=0x%04x code=0x%04x (line: %s)"
keymap_unmapped(int sym) "sym=0x%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 <address@hidden>
+ * 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"), to
deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * 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 OTHER
- * 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"
-static const uint8_t x_keycode_to_pc_keycode[115] = {
- 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 <X11/XKBlib.h>
-/* 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 = ServerVendor(dpy);
+
+ trace_xkeymap_vendor(vendor);
-static const uint8_t evdev_keycode_to_pc_keycode[61] = {
- 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;
+ }
-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 = FALSE;
+ char **extensions = XListExtensions(dpy, &nextensions);
+ for (i = 0 ; extensions != NULL && i < nextensions ; i++) {
+ trace_xkeymap_extension(extensions[i]);
+ if (strcmp(extensions[i], "Apple-WM") == 0 ||
+ strcmp(extensions[i], "Apple-DRI") == 0) {
+ match = TRUE;
+ }
+ }
+ if (extensions) {
+ XFreeExtensionList(extensions);
+ }
+
+ return match;
}
-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 = 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 = XkbGetMap(dpy,
+ XkbGBN_AllComponentsMask,
+ XkbUseCoreKbd);
+ if (desc) {
+ if (XkbGetNames(dpy, XkbKeycodesNameMask, desc) == Success) {
+ keycodes = 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 = 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 = 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 = 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 = 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 address@hidden"
+ "including the following information:\n"
+ "\n"
+ " - Operating system\n"
+ " - X11 Server\n"
+ " - xprop -root\n"
+ " - xdpyinfo\n",
+ keycodes ? keycodes : "<null>");
+ 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"), to
deal
@@ -25,8 +25,8 @@
#ifndef QEMU_X_KEYMAP_H
#define QEMU_X_KEYMAP_H
-uint8_t translate_xfree86_keycode(const int key);
+#include <X11/Xlib.h>
-uint8_t translate_evdev_keycode(const int key);
+const guint16 *qemu_xkeymap_mapping_table(Display *dpy, size_t *maplen);
#endif
--
2.13.5
- [Qemu-devel] [PATCH v5 12/12] display: convert XenInput keyboard to keycodemapdb, (continued)
- [Qemu-devel] [PATCH v5 12/12] display: convert XenInput keyboard to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 10/12] ui: convert the SDL2 frontend to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 08/12] char: convert the escc device to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 07/12] input: convert the adb device to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 05/12] input: convert virtio-input-hid device to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 09/12] ui: convert cocoa frontend to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 06/12] input: convert ps2 device to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 02/12] ui: convert common input code to keycodemapdb, Daniel P. Berrange, 2017/09/12
- [Qemu-devel] [PATCH v5 11/12] ui: convert GTK and SDL1 frontends to keycodemapdb,
Daniel P. Berrange <=
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, no-reply, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, no-reply, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, no-reply, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Gerd Hoffmann, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Daniel P. Berrange, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Peter Maydell, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Daniel P. Berrange, 2017/09/12
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Gerd Hoffmann, 2017/09/14
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Peter Maydell, 2017/09/14
- Re: [Qemu-devel] [PATCH v5 00/12] Convert over to use keycodemapdb, Daniel P. Berrange, 2017/09/14