* [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb
@ 2017-12-12 14:24 Daniel P. Berrange
2017-12-12 14:24 ` [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device " Daniel P. Berrange
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Daniel P. Berrange @ 2017-12-12 14:24 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell ], Gerd Hoffmann, Programmingkid,
Daniel P. Berrange
This is a followup to
v1: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02047.html
v2: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02471.html
v3: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02517.html
v4: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02708.html
v5: https://lists.nongnu.org/archive/html/qemu-devel/2017-09/msg02950.html
This series contains only the apple related patches, the cocoa frontend
and adb backend device.
I decided to separate them, as I'm fairly sure the keycodemapdb data for
these has some problems in it. There is contradictory information on the
right mappings to use for certain keys. Looking at darwin source code
in fact I think that the low level hardware scancode -> keycode mappings
on OS-X might even change based on user config options at the OS level,
and I'm not sure how to deal with that yet.
So I need todo more investigation before I consider these two patches
ready for merge. They're just posted to allow any feedback to be gathered
Daniel P. Berrange (2):
hw: convert the adb device to keycodemapdb
ui: convert cocoa frontend to keycodemapdb
Makefile | 2 +
hw/input/adb.c | 124 +-------------------------------------
include/hw/input/adb-keys.h | 141 --------------------------------------------
include/ui/input.h | 5 ++
ui/cocoa.m | 129 +---------------------------------------
ui/input-keymap.c | 2 +
6 files changed, 13 insertions(+), 390 deletions(-)
delete mode 100644 include/hw/input/adb-keys.h
--
2.14.3
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device to keycodemapdb
2017-12-12 14:24 [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb Daniel P. Berrange
@ 2017-12-12 14:24 ` Daniel P. Berrange
2017-12-13 16:46 ` Programmingkid
2017-12-12 14:25 ` [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend " Daniel P. Berrange
2018-01-15 15:12 ` [Qemu-devel] [PATCH v6 0/2] Convert apple related code " Gerd Hoffmann
2 siblings, 1 reply; 6+ messages in thread
From: Daniel P. Berrange @ 2017-12-12 14:24 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell ], Gerd Hoffmann, Programmingkid,
Daniel P. Berrange
Replace the qcode_to_adb_keycode table with automatically
generated tables.
Missing entries in qcode_to_adb_keycode now fixed:
- Q_KEY_CODE_KP_COMMA -> 0x47
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
Makefile | 1 +
hw/input/adb.c | 124 +-------------------------------------
include/hw/input/adb-keys.h | 141 --------------------------------------------
include/ui/input.h | 2 +
ui/input-keymap.c | 1 +
5 files changed, 6 insertions(+), 263 deletions(-)
delete mode 100644 include/hw/input/adb-keys.h
diff --git a/Makefile b/Makefile
index ab0354c153..6e8cbe5d6f 100644
--- a/Makefile
+++ b/Makefile
@@ -227,6 +227,7 @@ KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
KEYCODEMAP_FILES = \
ui/input-keymap-linux-to-qcode.c \
+ ui/input-keymap-qcode-to-adb.c \
ui/input-keymap-qcode-to-qnum.c \
ui/input-keymap-qnum-to-qcode.c \
$(NULL)
diff --git a/hw/input/adb.c b/hw/input/adb.c
index fcca3a8eb9..1fe5d298a3 100644
--- a/hw/input/adb.c
+++ b/hw/input/adb.c
@@ -25,7 +25,6 @@
#include "hw/hw.h"
#include "hw/input/adb.h"
#include "ui/console.h"
-#include "include/hw/input/adb-keys.h"
#include "ui/input.h"
#include "sysemu/sysemu.h"
@@ -193,125 +192,6 @@ typedef struct ADBKeyboardClass {
DeviceRealize parent_realize;
} ADBKeyboardClass;
-int qcode_to_adb_keycode[] = {
- /* Make sure future additions are automatically set to NO_KEY */
- [0 ... 0xff] = NO_KEY,
-
- [Q_KEY_CODE_SHIFT] = ADB_KEY_LEFT_SHIFT,
- [Q_KEY_CODE_SHIFT_R] = ADB_KEY_RIGHT_SHIFT,
- [Q_KEY_CODE_ALT] = ADB_KEY_LEFT_OPTION,
- [Q_KEY_CODE_ALT_R] = ADB_KEY_RIGHT_OPTION,
- [Q_KEY_CODE_CTRL] = ADB_KEY_LEFT_CONTROL,
- [Q_KEY_CODE_CTRL_R] = ADB_KEY_RIGHT_CONTROL,
- [Q_KEY_CODE_META_L] = ADB_KEY_COMMAND,
- [Q_KEY_CODE_META_R] = ADB_KEY_COMMAND,
- [Q_KEY_CODE_SPC] = ADB_KEY_SPACEBAR,
-
- [Q_KEY_CODE_ESC] = ADB_KEY_ESC,
- [Q_KEY_CODE_1] = ADB_KEY_1,
- [Q_KEY_CODE_2] = ADB_KEY_2,
- [Q_KEY_CODE_3] = ADB_KEY_3,
- [Q_KEY_CODE_4] = ADB_KEY_4,
- [Q_KEY_CODE_5] = ADB_KEY_5,
- [Q_KEY_CODE_6] = ADB_KEY_6,
- [Q_KEY_CODE_7] = ADB_KEY_7,
- [Q_KEY_CODE_8] = ADB_KEY_8,
- [Q_KEY_CODE_9] = ADB_KEY_9,
- [Q_KEY_CODE_0] = ADB_KEY_0,
- [Q_KEY_CODE_MINUS] = ADB_KEY_MINUS,
- [Q_KEY_CODE_EQUAL] = ADB_KEY_EQUAL,
- [Q_KEY_CODE_BACKSPACE] = ADB_KEY_DELETE,
- [Q_KEY_CODE_TAB] = ADB_KEY_TAB,
- [Q_KEY_CODE_Q] = ADB_KEY_Q,
- [Q_KEY_CODE_W] = ADB_KEY_W,
- [Q_KEY_CODE_E] = ADB_KEY_E,
- [Q_KEY_CODE_R] = ADB_KEY_R,
- [Q_KEY_CODE_T] = ADB_KEY_T,
- [Q_KEY_CODE_Y] = ADB_KEY_Y,
- [Q_KEY_CODE_U] = ADB_KEY_U,
- [Q_KEY_CODE_I] = ADB_KEY_I,
- [Q_KEY_CODE_O] = ADB_KEY_O,
- [Q_KEY_CODE_P] = ADB_KEY_P,
- [Q_KEY_CODE_BRACKET_LEFT] = ADB_KEY_LEFT_BRACKET,
- [Q_KEY_CODE_BRACKET_RIGHT] = ADB_KEY_RIGHT_BRACKET,
- [Q_KEY_CODE_RET] = ADB_KEY_RETURN,
- [Q_KEY_CODE_A] = ADB_KEY_A,
- [Q_KEY_CODE_S] = ADB_KEY_S,
- [Q_KEY_CODE_D] = ADB_KEY_D,
- [Q_KEY_CODE_F] = ADB_KEY_F,
- [Q_KEY_CODE_G] = ADB_KEY_G,
- [Q_KEY_CODE_H] = ADB_KEY_H,
- [Q_KEY_CODE_J] = ADB_KEY_J,
- [Q_KEY_CODE_K] = ADB_KEY_K,
- [Q_KEY_CODE_L] = ADB_KEY_L,
- [Q_KEY_CODE_SEMICOLON] = ADB_KEY_SEMICOLON,
- [Q_KEY_CODE_APOSTROPHE] = ADB_KEY_APOSTROPHE,
- [Q_KEY_CODE_GRAVE_ACCENT] = ADB_KEY_GRAVE_ACCENT,
- [Q_KEY_CODE_BACKSLASH] = ADB_KEY_BACKSLASH,
- [Q_KEY_CODE_Z] = ADB_KEY_Z,
- [Q_KEY_CODE_X] = ADB_KEY_X,
- [Q_KEY_CODE_C] = ADB_KEY_C,
- [Q_KEY_CODE_V] = ADB_KEY_V,
- [Q_KEY_CODE_B] = ADB_KEY_B,
- [Q_KEY_CODE_N] = ADB_KEY_N,
- [Q_KEY_CODE_M] = ADB_KEY_M,
- [Q_KEY_CODE_COMMA] = ADB_KEY_COMMA,
- [Q_KEY_CODE_DOT] = ADB_KEY_PERIOD,
- [Q_KEY_CODE_SLASH] = ADB_KEY_FORWARD_SLASH,
- [Q_KEY_CODE_ASTERISK] = ADB_KEY_KP_MULTIPLY,
- [Q_KEY_CODE_CAPS_LOCK] = ADB_KEY_CAPS_LOCK,
-
- [Q_KEY_CODE_F1] = ADB_KEY_F1,
- [Q_KEY_CODE_F2] = ADB_KEY_F2,
- [Q_KEY_CODE_F3] = ADB_KEY_F3,
- [Q_KEY_CODE_F4] = ADB_KEY_F4,
- [Q_KEY_CODE_F5] = ADB_KEY_F5,
- [Q_KEY_CODE_F6] = ADB_KEY_F6,
- [Q_KEY_CODE_F7] = ADB_KEY_F7,
- [Q_KEY_CODE_F8] = ADB_KEY_F8,
- [Q_KEY_CODE_F9] = ADB_KEY_F9,
- [Q_KEY_CODE_F10] = ADB_KEY_F10,
- [Q_KEY_CODE_F11] = ADB_KEY_F11,
- [Q_KEY_CODE_F12] = ADB_KEY_F12,
- [Q_KEY_CODE_PRINT] = ADB_KEY_F13,
- [Q_KEY_CODE_SYSRQ] = ADB_KEY_F13,
- [Q_KEY_CODE_SCROLL_LOCK] = ADB_KEY_F14,
- [Q_KEY_CODE_PAUSE] = ADB_KEY_F15,
-
- [Q_KEY_CODE_NUM_LOCK] = ADB_KEY_KP_CLEAR,
- [Q_KEY_CODE_KP_EQUALS] = ADB_KEY_KP_EQUAL,
- [Q_KEY_CODE_KP_DIVIDE] = ADB_KEY_KP_DIVIDE,
- [Q_KEY_CODE_KP_MULTIPLY] = ADB_KEY_KP_MULTIPLY,
- [Q_KEY_CODE_KP_SUBTRACT] = ADB_KEY_KP_SUBTRACT,
- [Q_KEY_CODE_KP_ADD] = ADB_KEY_KP_PLUS,
- [Q_KEY_CODE_KP_ENTER] = ADB_KEY_KP_ENTER,
- [Q_KEY_CODE_KP_DECIMAL] = ADB_KEY_KP_PERIOD,
- [Q_KEY_CODE_KP_0] = ADB_KEY_KP_0,
- [Q_KEY_CODE_KP_1] = ADB_KEY_KP_1,
- [Q_KEY_CODE_KP_2] = ADB_KEY_KP_2,
- [Q_KEY_CODE_KP_3] = ADB_KEY_KP_3,
- [Q_KEY_CODE_KP_4] = ADB_KEY_KP_4,
- [Q_KEY_CODE_KP_5] = ADB_KEY_KP_5,
- [Q_KEY_CODE_KP_6] = ADB_KEY_KP_6,
- [Q_KEY_CODE_KP_7] = ADB_KEY_KP_7,
- [Q_KEY_CODE_KP_8] = ADB_KEY_KP_8,
- [Q_KEY_CODE_KP_9] = ADB_KEY_KP_9,
-
- [Q_KEY_CODE_UP] = ADB_KEY_UP,
- [Q_KEY_CODE_DOWN] = ADB_KEY_DOWN,
- [Q_KEY_CODE_LEFT] = ADB_KEY_LEFT,
- [Q_KEY_CODE_RIGHT] = ADB_KEY_RIGHT,
-
- [Q_KEY_CODE_HELP] = ADB_KEY_HELP,
- [Q_KEY_CODE_INSERT] = ADB_KEY_HELP,
- [Q_KEY_CODE_DELETE] = ADB_KEY_FORWARD_DELETE,
- [Q_KEY_CODE_HOME] = ADB_KEY_HOME,
- [Q_KEY_CODE_END] = ADB_KEY_END,
- [Q_KEY_CODE_PGUP] = ADB_KEY_PAGE_UP,
- [Q_KEY_CODE_PGDN] = ADB_KEY_PAGE_DOWN,
-
- [Q_KEY_CODE_POWER] = ADB_KEY_POWER
-};
static void adb_kbd_put_keycode(void *opaque, int keycode)
{
@@ -439,11 +319,11 @@ static void adb_keyboard_event(DeviceState *dev, QemuConsole *src,
int qcode, keycode;
qcode = qemu_input_key_value_to_qcode(evt->u.key.data->key);
- if (qcode >= ARRAY_SIZE(qcode_to_adb_keycode)) {
+ if (qcode >= qemu_input_map_qcode_to_adb_len) {
return;
}
/* FIXME: take handler into account when translating qcode */
- keycode = qcode_to_adb_keycode[qcode];
+ keycode = qemu_input_map_qcode_to_adb[qcode];
if (keycode == NO_KEY) { /* We don't want to send this to the guest */
ADB_DPRINTF("Ignoring NO_KEY\n");
return;
diff --git a/include/hw/input/adb-keys.h b/include/hw/input/adb-keys.h
deleted file mode 100644
index 525fba8a61..0000000000
--- a/include/hw/input/adb-keys.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * QEMU System Emulator
- *
- * Copyright (c) 2016 John Arbuckle
- *
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
- * See the COPYING file in the top-level directory.
- */
-
-/*
- * adb-keys.h
- *
- * Provides an enum of all the Macintosh keycodes.
- * Additional information: http://www.archive.org/stream/apple-guide-macintosh-family-hardware/Apple_Guide_to_the_Macintosh_Family_Hardware_2e#page/n345/mode/2up
- * page 308
- */
-
-#ifndef ADB_KEYS_H
-#define ADB_KEYS_H
-
-enum {
- ADB_KEY_A = 0x00,
- ADB_KEY_B = 0x0b,
- ADB_KEY_C = 0x08,
- ADB_KEY_D = 0x02,
- ADB_KEY_E = 0x0e,
- ADB_KEY_F = 0x03,
- ADB_KEY_G = 0x05,
- ADB_KEY_H = 0x04,
- ADB_KEY_I = 0x22,
- ADB_KEY_J = 0x26,
- ADB_KEY_K = 0x28,
- ADB_KEY_L = 0x25,
- ADB_KEY_M = 0x2e,
- ADB_KEY_N = 0x2d,
- ADB_KEY_O = 0x1f,
- ADB_KEY_P = 0x23,
- ADB_KEY_Q = 0x0c,
- ADB_KEY_R = 0x0f,
- ADB_KEY_S = 0x01,
- ADB_KEY_T = 0x11,
- ADB_KEY_U = 0x20,
- ADB_KEY_V = 0x09,
- ADB_KEY_W = 0x0d,
- ADB_KEY_X = 0x07,
- ADB_KEY_Y = 0x10,
- ADB_KEY_Z = 0x06,
-
- ADB_KEY_0 = 0x1d,
- ADB_KEY_1 = 0x12,
- ADB_KEY_2 = 0x13,
- ADB_KEY_3 = 0x14,
- ADB_KEY_4 = 0x15,
- ADB_KEY_5 = 0x17,
- ADB_KEY_6 = 0x16,
- ADB_KEY_7 = 0x1a,
- ADB_KEY_8 = 0x1c,
- ADB_KEY_9 = 0x19,
-
- ADB_KEY_GRAVE_ACCENT = 0x32,
- ADB_KEY_MINUS = 0x1b,
- ADB_KEY_EQUAL = 0x18,
- ADB_KEY_DELETE = 0x33,
- ADB_KEY_CAPS_LOCK = 0x39,
- ADB_KEY_TAB = 0x30,
- ADB_KEY_RETURN = 0x24,
- ADB_KEY_LEFT_BRACKET = 0x21,
- ADB_KEY_RIGHT_BRACKET = 0x1e,
- ADB_KEY_BACKSLASH = 0x2a,
- ADB_KEY_SEMICOLON = 0x29,
- ADB_KEY_APOSTROPHE = 0x27,
- ADB_KEY_COMMA = 0x2b,
- ADB_KEY_PERIOD = 0x2f,
- ADB_KEY_FORWARD_SLASH = 0x2c,
- ADB_KEY_LEFT_SHIFT = 0x38,
- ADB_KEY_RIGHT_SHIFT = 0x7b,
- ADB_KEY_SPACEBAR = 0x31,
- ADB_KEY_LEFT_CONTROL = 0x36,
- ADB_KEY_RIGHT_CONTROL = 0x7d,
- ADB_KEY_LEFT_OPTION = 0x3a,
- ADB_KEY_RIGHT_OPTION = 0x7c,
- ADB_KEY_COMMAND = 0x37,
-
- ADB_KEY_KP_0 = 0x52,
- ADB_KEY_KP_1 = 0x53,
- ADB_KEY_KP_2 = 0x54,
- ADB_KEY_KP_3 = 0x55,
- ADB_KEY_KP_4 = 0x56,
- ADB_KEY_KP_5 = 0x57,
- ADB_KEY_KP_6 = 0x58,
- ADB_KEY_KP_7 = 0x59,
- ADB_KEY_KP_8 = 0x5b,
- ADB_KEY_KP_9 = 0x5c,
- ADB_KEY_KP_PERIOD = 0x41,
- ADB_KEY_KP_ENTER = 0x4c,
- ADB_KEY_KP_PLUS = 0x45,
- ADB_KEY_KP_SUBTRACT = 0x4e,
- ADB_KEY_KP_MULTIPLY = 0x43,
- ADB_KEY_KP_DIVIDE = 0x4b,
- ADB_KEY_KP_EQUAL = 0x51,
- ADB_KEY_KP_CLEAR = 0x47,
-
- ADB_KEY_UP = 0x3e,
- ADB_KEY_DOWN = 0x3d,
- ADB_KEY_LEFT = 0x3b,
- ADB_KEY_RIGHT = 0x3c,
-
- ADB_KEY_HELP = 0x72,
- ADB_KEY_HOME = 0x73,
- ADB_KEY_PAGE_UP = 0x74,
- ADB_KEY_PAGE_DOWN = 0x79,
- ADB_KEY_END = 0x77,
- ADB_KEY_FORWARD_DELETE = 0x75,
-
- ADB_KEY_ESC = 0x35,
- ADB_KEY_F1 = 0x7a,
- ADB_KEY_F2 = 0x78,
- ADB_KEY_F3 = 0x63,
- ADB_KEY_F4 = 0x76,
- ADB_KEY_F5 = 0x60,
- ADB_KEY_F6 = 0x61,
- ADB_KEY_F7 = 0x62,
- ADB_KEY_F8 = 0x64,
- ADB_KEY_F9 = 0x65,
- ADB_KEY_F10 = 0x6d,
- ADB_KEY_F11 = 0x67,
- ADB_KEY_F12 = 0x6f,
- ADB_KEY_F13 = 0x69,
- ADB_KEY_F14 = 0x6b,
- ADB_KEY_F15 = 0x71,
-
- ADB_KEY_VOLUME_UP = 0x48,
- ADB_KEY_VOLUME_DOWN = 0x49,
- ADB_KEY_VOLUME_MUTE = 0x4a,
- ADB_KEY_POWER = 0x7f7f
-};
-
-/* Could not find the value for this key. */
-/* #define ADB_KEY_EJECT */
-
-#endif /* ADB_KEYS_H */
diff --git a/include/ui/input.h b/include/ui/input.h
index f8cee43f65..25aabc9986 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -71,6 +71,8 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
extern const guint qemu_input_map_linux_to_qcode_len;
extern const guint16 qemu_input_map_linux_to_qcode[];
+extern const guint qemu_input_map_qcode_to_adb_len;
+extern const guint16 qemu_input_map_qcode_to_adb[];
extern const guint qemu_input_map_qcode_to_qnum_len;
extern const guint16 qemu_input_map_qcode_to_qnum[];
diff --git a/ui/input-keymap.c b/ui/input-keymap.c
index 3a19a169f5..c373e41948 100644
--- a/ui/input-keymap.c
+++ b/ui/input-keymap.c
@@ -6,6 +6,7 @@
#include "standard-headers/linux/input.h"
#include "ui/input-keymap-linux-to-qcode.c"
+#include "ui/input-keymap-qcode-to-adb.c"
#include "ui/input-keymap-qcode-to-qnum.c"
#include "ui/input-keymap-qnum-to-qcode.c"
--
2.14.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend to keycodemapdb
2017-12-12 14:24 [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb Daniel P. Berrange
2017-12-12 14:24 ` [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device " Daniel P. Berrange
@ 2017-12-12 14:25 ` Daniel P. Berrange
2017-12-13 16:47 ` Programmingkid
2018-01-15 15:12 ` [Qemu-devel] [PATCH v6 0/2] Convert apple related code " Gerd Hoffmann
2 siblings, 1 reply; 6+ messages in thread
From: Daniel P. Berrange @ 2017-12-12 14:25 UTC (permalink / raw)
To: qemu-devel
Cc: Peter Maydell ], Gerd Hoffmann, Programmingkid,
Daniel P. Berrange
Replace the mac_to_qkeycode_map table with automatically
generated table.
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
Makefile | 1 +
include/ui/input.h | 3 ++
ui/cocoa.m | 129 +----------------------------------------------------
ui/input-keymap.c | 1 +
4 files changed, 7 insertions(+), 127 deletions(-)
diff --git a/Makefile b/Makefile
index 6e8cbe5d6f..10d8e5b8a3 100644
--- a/Makefile
+++ b/Makefile
@@ -227,6 +227,7 @@ KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
KEYCODEMAP_FILES = \
ui/input-keymap-linux-to-qcode.c \
+ ui/input-keymap-osx-to-qcode.c \
ui/input-keymap-qcode-to-adb.c \
ui/input-keymap-qcode-to-qnum.c \
ui/input-keymap-qnum-to-qcode.c \
diff --git a/include/ui/input.h b/include/ui/input.h
index 25aabc9986..c2087e7d48 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -71,6 +71,9 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
extern const guint qemu_input_map_linux_to_qcode_len;
extern const guint16 qemu_input_map_linux_to_qcode[];
+extern const guint qemu_input_map_osx_to_qcode_len;
+extern const guint16 qemu_input_map_osx_to_qcode[];
+
extern const guint qemu_input_map_qcode_to_adb_len;
extern const guint16 qemu_input_map_qcode_to_adb[];
extern const guint qemu_input_map_qcode_to_qnum_len;
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 330ccebf90..57dfee2db5 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -106,139 +106,14 @@ bool stretch_video;
NSTextField *pauseLabel;
NSArray * supportedImageFileTypes;
-// Mac to QKeyCode conversion
-const int mac_to_qkeycode_map[] = {
- [kVK_ANSI_A] = Q_KEY_CODE_A,
- [kVK_ANSI_B] = Q_KEY_CODE_B,
- [kVK_ANSI_C] = Q_KEY_CODE_C,
- [kVK_ANSI_D] = Q_KEY_CODE_D,
- [kVK_ANSI_E] = Q_KEY_CODE_E,
- [kVK_ANSI_F] = Q_KEY_CODE_F,
- [kVK_ANSI_G] = Q_KEY_CODE_G,
- [kVK_ANSI_H] = Q_KEY_CODE_H,
- [kVK_ANSI_I] = Q_KEY_CODE_I,
- [kVK_ANSI_J] = Q_KEY_CODE_J,
- [kVK_ANSI_K] = Q_KEY_CODE_K,
- [kVK_ANSI_L] = Q_KEY_CODE_L,
- [kVK_ANSI_M] = Q_KEY_CODE_M,
- [kVK_ANSI_N] = Q_KEY_CODE_N,
- [kVK_ANSI_O] = Q_KEY_CODE_O,
- [kVK_ANSI_P] = Q_KEY_CODE_P,
- [kVK_ANSI_Q] = Q_KEY_CODE_Q,
- [kVK_ANSI_R] = Q_KEY_CODE_R,
- [kVK_ANSI_S] = Q_KEY_CODE_S,
- [kVK_ANSI_T] = Q_KEY_CODE_T,
- [kVK_ANSI_U] = Q_KEY_CODE_U,
- [kVK_ANSI_V] = Q_KEY_CODE_V,
- [kVK_ANSI_W] = Q_KEY_CODE_W,
- [kVK_ANSI_X] = Q_KEY_CODE_X,
- [kVK_ANSI_Y] = Q_KEY_CODE_Y,
- [kVK_ANSI_Z] = Q_KEY_CODE_Z,
-
- [kVK_ANSI_0] = Q_KEY_CODE_0,
- [kVK_ANSI_1] = Q_KEY_CODE_1,
- [kVK_ANSI_2] = Q_KEY_CODE_2,
- [kVK_ANSI_3] = Q_KEY_CODE_3,
- [kVK_ANSI_4] = Q_KEY_CODE_4,
- [kVK_ANSI_5] = Q_KEY_CODE_5,
- [kVK_ANSI_6] = Q_KEY_CODE_6,
- [kVK_ANSI_7] = Q_KEY_CODE_7,
- [kVK_ANSI_8] = Q_KEY_CODE_8,
- [kVK_ANSI_9] = Q_KEY_CODE_9,
-
- [kVK_ANSI_Grave] = Q_KEY_CODE_GRAVE_ACCENT,
- [kVK_ANSI_Minus] = Q_KEY_CODE_MINUS,
- [kVK_ANSI_Equal] = Q_KEY_CODE_EQUAL,
- [kVK_Delete] = Q_KEY_CODE_BACKSPACE,
- [kVK_CapsLock] = Q_KEY_CODE_CAPS_LOCK,
- [kVK_Tab] = Q_KEY_CODE_TAB,
- [kVK_Return] = Q_KEY_CODE_RET,
- [kVK_ANSI_LeftBracket] = Q_KEY_CODE_BRACKET_LEFT,
- [kVK_ANSI_RightBracket] = Q_KEY_CODE_BRACKET_RIGHT,
- [kVK_ANSI_Backslash] = Q_KEY_CODE_BACKSLASH,
- [kVK_ANSI_Semicolon] = Q_KEY_CODE_SEMICOLON,
- [kVK_ANSI_Quote] = Q_KEY_CODE_APOSTROPHE,
- [kVK_ANSI_Comma] = Q_KEY_CODE_COMMA,
- [kVK_ANSI_Period] = Q_KEY_CODE_DOT,
- [kVK_ANSI_Slash] = Q_KEY_CODE_SLASH,
- [kVK_Shift] = Q_KEY_CODE_SHIFT,
- [kVK_RightShift] = Q_KEY_CODE_SHIFT_R,
- [kVK_Control] = Q_KEY_CODE_CTRL,
- [kVK_RightControl] = Q_KEY_CODE_CTRL_R,
- [kVK_Option] = Q_KEY_CODE_ALT,
- [kVK_RightOption] = Q_KEY_CODE_ALT_R,
- [kVK_Command] = Q_KEY_CODE_META_L,
- [0x36] = Q_KEY_CODE_META_R, /* There is no kVK_RightCommand */
- [kVK_Space] = Q_KEY_CODE_SPC,
-
- [kVK_ANSI_Keypad0] = Q_KEY_CODE_KP_0,
- [kVK_ANSI_Keypad1] = Q_KEY_CODE_KP_1,
- [kVK_ANSI_Keypad2] = Q_KEY_CODE_KP_2,
- [kVK_ANSI_Keypad3] = Q_KEY_CODE_KP_3,
- [kVK_ANSI_Keypad4] = Q_KEY_CODE_KP_4,
- [kVK_ANSI_Keypad5] = Q_KEY_CODE_KP_5,
- [kVK_ANSI_Keypad6] = Q_KEY_CODE_KP_6,
- [kVK_ANSI_Keypad7] = Q_KEY_CODE_KP_7,
- [kVK_ANSI_Keypad8] = Q_KEY_CODE_KP_8,
- [kVK_ANSI_Keypad9] = Q_KEY_CODE_KP_9,
- [kVK_ANSI_KeypadDecimal] = Q_KEY_CODE_KP_DECIMAL,
- [kVK_ANSI_KeypadEnter] = Q_KEY_CODE_KP_ENTER,
- [kVK_ANSI_KeypadPlus] = Q_KEY_CODE_KP_ADD,
- [kVK_ANSI_KeypadMinus] = Q_KEY_CODE_KP_SUBTRACT,
- [kVK_ANSI_KeypadMultiply] = Q_KEY_CODE_KP_MULTIPLY,
- [kVK_ANSI_KeypadDivide] = Q_KEY_CODE_KP_DIVIDE,
- [kVK_ANSI_KeypadEquals] = Q_KEY_CODE_KP_EQUALS,
- [kVK_ANSI_KeypadClear] = Q_KEY_CODE_NUM_LOCK,
-
- [kVK_UpArrow] = Q_KEY_CODE_UP,
- [kVK_DownArrow] = Q_KEY_CODE_DOWN,
- [kVK_LeftArrow] = Q_KEY_CODE_LEFT,
- [kVK_RightArrow] = Q_KEY_CODE_RIGHT,
-
- [kVK_Help] = Q_KEY_CODE_INSERT,
- [kVK_Home] = Q_KEY_CODE_HOME,
- [kVK_PageUp] = Q_KEY_CODE_PGUP,
- [kVK_PageDown] = Q_KEY_CODE_PGDN,
- [kVK_End] = Q_KEY_CODE_END,
- [kVK_ForwardDelete] = Q_KEY_CODE_DELETE,
-
- [kVK_Escape] = Q_KEY_CODE_ESC,
-
- /* The Power key can't be used directly because the operating system uses
- * it. This key can be emulated by using it in place of another key such as
- * F1. Don't forget to disable the real key binding.
- */
- /* [kVK_F1] = Q_KEY_CODE_POWER, */
-
- [kVK_F1] = Q_KEY_CODE_F1,
- [kVK_F2] = Q_KEY_CODE_F2,
- [kVK_F3] = Q_KEY_CODE_F3,
- [kVK_F4] = Q_KEY_CODE_F4,
- [kVK_F5] = Q_KEY_CODE_F5,
- [kVK_F6] = Q_KEY_CODE_F6,
- [kVK_F7] = Q_KEY_CODE_F7,
- [kVK_F8] = Q_KEY_CODE_F8,
- [kVK_F9] = Q_KEY_CODE_F9,
- [kVK_F10] = Q_KEY_CODE_F10,
- [kVK_F11] = Q_KEY_CODE_F11,
- [kVK_F12] = Q_KEY_CODE_F12,
- [kVK_F13] = Q_KEY_CODE_PRINT,
- [kVK_F14] = Q_KEY_CODE_SCROLL_LOCK,
- [kVK_F15] = Q_KEY_CODE_PAUSE,
-
- /*
- * The eject and volume keys can't be used here because they are handled at
- * a lower level than what an Application can see.
- */
-};
static int cocoa_keycode_to_qemu(int keycode)
{
- if (ARRAY_SIZE(mac_to_qkeycode_map) <= keycode) {
+ if (keycode >= qemu_input_map_osx_to_qcode_len) {
fprintf(stderr, "(cocoa) warning unknown keycode 0x%x\n", keycode);
return 0;
}
- return mac_to_qkeycode_map[keycode];
+ return qemu_input_map_osx_to_qcode[keycode];
}
/* Displays an alert dialog box with the specified message */
diff --git a/ui/input-keymap.c b/ui/input-keymap.c
index c373e41948..caf5c76f50 100644
--- a/ui/input-keymap.c
+++ b/ui/input-keymap.c
@@ -6,6 +6,7 @@
#include "standard-headers/linux/input.h"
#include "ui/input-keymap-linux-to-qcode.c"
+#include "ui/input-keymap-osx-to-qcode.c"
#include "ui/input-keymap-qcode-to-adb.c"
#include "ui/input-keymap-qcode-to-qnum.c"
#include "ui/input-keymap-qnum-to-qcode.c"
--
2.14.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device to keycodemapdb
2017-12-12 14:24 ` [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device " Daniel P. Berrange
@ 2017-12-13 16:46 ` Programmingkid
0 siblings, 0 replies; 6+ messages in thread
From: Programmingkid @ 2017-12-13 16:46 UTC (permalink / raw)
To: Daniel P. Berrange; +Cc: qemu-devel, Peter Maydell ], Gerd Hoffmann
> On Dec 12, 2017, at 9:24 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
>
> Replace the qcode_to_adb_keycode table with automatically
> generated tables.
>
> Missing entries in qcode_to_adb_keycode now fixed:
>
> - Q_KEY_CODE_KP_COMMA -> 0x47
>
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
> Makefile | 1 +
> hw/input/adb.c | 124 +-------------------------------------
> include/hw/input/adb-keys.h | 141 --------------------------------------------
> include/ui/input.h | 2 +
> ui/input-keymap.c | 1 +
> 5 files changed, 6 insertions(+), 263 deletions(-)
> delete mode 100644 include/hw/input/adb-keys.h
>
> diff --git a/Makefile b/Makefile
> index ab0354c153..6e8cbe5d6f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -227,6 +227,7 @@ KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
>
> KEYCODEMAP_FILES = \
> ui/input-keymap-linux-to-qcode.c \
> + ui/input-keymap-qcode-to-adb.c \
> ui/input-keymap-qcode-to-qnum.c \
> ui/input-keymap-qnum-to-qcode.c \
> $(NULL)
> diff --git a/hw/input/adb.c b/hw/input/adb.c
> index fcca3a8eb9..1fe5d298a3 100644
> --- a/hw/input/adb.c
> +++ b/hw/input/adb.c
> @@ -25,7 +25,6 @@
> #include "hw/hw.h"
> #include "hw/input/adb.h"
> #include "ui/console.h"
> -#include "include/hw/input/adb-keys.h"
> #include "ui/input.h"
> #include "sysemu/sysemu.h"
>
> @@ -193,125 +192,6 @@ typedef struct ADBKeyboardClass {
> DeviceRealize parent_realize;
> } ADBKeyboardClass;
>
> -int qcode_to_adb_keycode[] = {
> - /* Make sure future additions are automatically set to NO_KEY */
> - [0 ... 0xff] = NO_KEY,
> -
> - [Q_KEY_CODE_SHIFT] = ADB_KEY_LEFT_SHIFT,
> - [Q_KEY_CODE_SHIFT_R] = ADB_KEY_RIGHT_SHIFT,
> - [Q_KEY_CODE_ALT] = ADB_KEY_LEFT_OPTION,
> - [Q_KEY_CODE_ALT_R] = ADB_KEY_RIGHT_OPTION,
> - [Q_KEY_CODE_CTRL] = ADB_KEY_LEFT_CONTROL,
> - [Q_KEY_CODE_CTRL_R] = ADB_KEY_RIGHT_CONTROL,
> - [Q_KEY_CODE_META_L] = ADB_KEY_COMMAND,
> - [Q_KEY_CODE_META_R] = ADB_KEY_COMMAND,
> - [Q_KEY_CODE_SPC] = ADB_KEY_SPACEBAR,
> -
> - [Q_KEY_CODE_ESC] = ADB_KEY_ESC,
> - [Q_KEY_CODE_1] = ADB_KEY_1,
> - [Q_KEY_CODE_2] = ADB_KEY_2,
> - [Q_KEY_CODE_3] = ADB_KEY_3,
> - [Q_KEY_CODE_4] = ADB_KEY_4,
> - [Q_KEY_CODE_5] = ADB_KEY_5,
> - [Q_KEY_CODE_6] = ADB_KEY_6,
> - [Q_KEY_CODE_7] = ADB_KEY_7,
> - [Q_KEY_CODE_8] = ADB_KEY_8,
> - [Q_KEY_CODE_9] = ADB_KEY_9,
> - [Q_KEY_CODE_0] = ADB_KEY_0,
> - [Q_KEY_CODE_MINUS] = ADB_KEY_MINUS,
> - [Q_KEY_CODE_EQUAL] = ADB_KEY_EQUAL,
> - [Q_KEY_CODE_BACKSPACE] = ADB_KEY_DELETE,
> - [Q_KEY_CODE_TAB] = ADB_KEY_TAB,
> - [Q_KEY_CODE_Q] = ADB_KEY_Q,
> - [Q_KEY_CODE_W] = ADB_KEY_W,
> - [Q_KEY_CODE_E] = ADB_KEY_E,
> - [Q_KEY_CODE_R] = ADB_KEY_R,
> - [Q_KEY_CODE_T] = ADB_KEY_T,
> - [Q_KEY_CODE_Y] = ADB_KEY_Y,
> - [Q_KEY_CODE_U] = ADB_KEY_U,
> - [Q_KEY_CODE_I] = ADB_KEY_I,
> - [Q_KEY_CODE_O] = ADB_KEY_O,
> - [Q_KEY_CODE_P] = ADB_KEY_P,
> - [Q_KEY_CODE_BRACKET_LEFT] = ADB_KEY_LEFT_BRACKET,
> - [Q_KEY_CODE_BRACKET_RIGHT] = ADB_KEY_RIGHT_BRACKET,
> - [Q_KEY_CODE_RET] = ADB_KEY_RETURN,
> - [Q_KEY_CODE_A] = ADB_KEY_A,
> - [Q_KEY_CODE_S] = ADB_KEY_S,
> - [Q_KEY_CODE_D] = ADB_KEY_D,
> - [Q_KEY_CODE_F] = ADB_KEY_F,
> - [Q_KEY_CODE_G] = ADB_KEY_G,
> - [Q_KEY_CODE_H] = ADB_KEY_H,
> - [Q_KEY_CODE_J] = ADB_KEY_J,
> - [Q_KEY_CODE_K] = ADB_KEY_K,
> - [Q_KEY_CODE_L] = ADB_KEY_L,
> - [Q_KEY_CODE_SEMICOLON] = ADB_KEY_SEMICOLON,
> - [Q_KEY_CODE_APOSTROPHE] = ADB_KEY_APOSTROPHE,
> - [Q_KEY_CODE_GRAVE_ACCENT] = ADB_KEY_GRAVE_ACCENT,
> - [Q_KEY_CODE_BACKSLASH] = ADB_KEY_BACKSLASH,
> - [Q_KEY_CODE_Z] = ADB_KEY_Z,
> - [Q_KEY_CODE_X] = ADB_KEY_X,
> - [Q_KEY_CODE_C] = ADB_KEY_C,
> - [Q_KEY_CODE_V] = ADB_KEY_V,
> - [Q_KEY_CODE_B] = ADB_KEY_B,
> - [Q_KEY_CODE_N] = ADB_KEY_N,
> - [Q_KEY_CODE_M] = ADB_KEY_M,
> - [Q_KEY_CODE_COMMA] = ADB_KEY_COMMA,
> - [Q_KEY_CODE_DOT] = ADB_KEY_PERIOD,
> - [Q_KEY_CODE_SLASH] = ADB_KEY_FORWARD_SLASH,
> - [Q_KEY_CODE_ASTERISK] = ADB_KEY_KP_MULTIPLY,
> - [Q_KEY_CODE_CAPS_LOCK] = ADB_KEY_CAPS_LOCK,
> -
> - [Q_KEY_CODE_F1] = ADB_KEY_F1,
> - [Q_KEY_CODE_F2] = ADB_KEY_F2,
> - [Q_KEY_CODE_F3] = ADB_KEY_F3,
> - [Q_KEY_CODE_F4] = ADB_KEY_F4,
> - [Q_KEY_CODE_F5] = ADB_KEY_F5,
> - [Q_KEY_CODE_F6] = ADB_KEY_F6,
> - [Q_KEY_CODE_F7] = ADB_KEY_F7,
> - [Q_KEY_CODE_F8] = ADB_KEY_F8,
> - [Q_KEY_CODE_F9] = ADB_KEY_F9,
> - [Q_KEY_CODE_F10] = ADB_KEY_F10,
> - [Q_KEY_CODE_F11] = ADB_KEY_F11,
> - [Q_KEY_CODE_F12] = ADB_KEY_F12,
> - [Q_KEY_CODE_PRINT] = ADB_KEY_F13,
> - [Q_KEY_CODE_SYSRQ] = ADB_KEY_F13,
> - [Q_KEY_CODE_SCROLL_LOCK] = ADB_KEY_F14,
> - [Q_KEY_CODE_PAUSE] = ADB_KEY_F15,
> -
> - [Q_KEY_CODE_NUM_LOCK] = ADB_KEY_KP_CLEAR,
> - [Q_KEY_CODE_KP_EQUALS] = ADB_KEY_KP_EQUAL,
> - [Q_KEY_CODE_KP_DIVIDE] = ADB_KEY_KP_DIVIDE,
> - [Q_KEY_CODE_KP_MULTIPLY] = ADB_KEY_KP_MULTIPLY,
> - [Q_KEY_CODE_KP_SUBTRACT] = ADB_KEY_KP_SUBTRACT,
> - [Q_KEY_CODE_KP_ADD] = ADB_KEY_KP_PLUS,
> - [Q_KEY_CODE_KP_ENTER] = ADB_KEY_KP_ENTER,
> - [Q_KEY_CODE_KP_DECIMAL] = ADB_KEY_KP_PERIOD,
> - [Q_KEY_CODE_KP_0] = ADB_KEY_KP_0,
> - [Q_KEY_CODE_KP_1] = ADB_KEY_KP_1,
> - [Q_KEY_CODE_KP_2] = ADB_KEY_KP_2,
> - [Q_KEY_CODE_KP_3] = ADB_KEY_KP_3,
> - [Q_KEY_CODE_KP_4] = ADB_KEY_KP_4,
> - [Q_KEY_CODE_KP_5] = ADB_KEY_KP_5,
> - [Q_KEY_CODE_KP_6] = ADB_KEY_KP_6,
> - [Q_KEY_CODE_KP_7] = ADB_KEY_KP_7,
> - [Q_KEY_CODE_KP_8] = ADB_KEY_KP_8,
> - [Q_KEY_CODE_KP_9] = ADB_KEY_KP_9,
> -
> - [Q_KEY_CODE_UP] = ADB_KEY_UP,
> - [Q_KEY_CODE_DOWN] = ADB_KEY_DOWN,
> - [Q_KEY_CODE_LEFT] = ADB_KEY_LEFT,
> - [Q_KEY_CODE_RIGHT] = ADB_KEY_RIGHT,
> -
> - [Q_KEY_CODE_HELP] = ADB_KEY_HELP,
> - [Q_KEY_CODE_INSERT] = ADB_KEY_HELP,
> - [Q_KEY_CODE_DELETE] = ADB_KEY_FORWARD_DELETE,
> - [Q_KEY_CODE_HOME] = ADB_KEY_HOME,
> - [Q_KEY_CODE_END] = ADB_KEY_END,
> - [Q_KEY_CODE_PGUP] = ADB_KEY_PAGE_UP,
> - [Q_KEY_CODE_PGDN] = ADB_KEY_PAGE_DOWN,
> -
> - [Q_KEY_CODE_POWER] = ADB_KEY_POWER
> -};
>
> static void adb_kbd_put_keycode(void *opaque, int keycode)
> {
> @@ -439,11 +319,11 @@ static void adb_keyboard_event(DeviceState *dev, QemuConsole *src,
> int qcode, keycode;
>
> qcode = qemu_input_key_value_to_qcode(evt->u.key.data->key);
> - if (qcode >= ARRAY_SIZE(qcode_to_adb_keycode)) {
> + if (qcode >= qemu_input_map_qcode_to_adb_len) {
> return;
> }
> /* FIXME: take handler into account when translating qcode */
> - keycode = qcode_to_adb_keycode[qcode];
> + keycode = qemu_input_map_qcode_to_adb[qcode];
> if (keycode == NO_KEY) { /* We don't want to send this to the guest */
> ADB_DPRINTF("Ignoring NO_KEY\n");
> return;
> diff --git a/include/hw/input/adb-keys.h b/include/hw/input/adb-keys.h
> deleted file mode 100644
> index 525fba8a61..0000000000
> --- a/include/hw/input/adb-keys.h
> +++ /dev/null
> @@ -1,141 +0,0 @@
> -/*
> - * QEMU System Emulator
> - *
> - * Copyright (c) 2016 John Arbuckle
> - *
> - * This work is licensed under the terms of the GNU GPL, version 2 or later.
> - * See the COPYING file in the top-level directory.
> - */
> -
> -/*
> - * adb-keys.h
> - *
> - * Provides an enum of all the Macintosh keycodes.
> - * Additional information: http://www.archive.org/stream/apple-guide-macintosh-family-hardware/Apple_Guide_to_the_Macintosh_Family_Hardware_2e#page/n345/mode/2up
> - * page 308
> - */
> -
> -#ifndef ADB_KEYS_H
> -#define ADB_KEYS_H
> -
> -enum {
> - ADB_KEY_A = 0x00,
> - ADB_KEY_B = 0x0b,
> - ADB_KEY_C = 0x08,
> - ADB_KEY_D = 0x02,
> - ADB_KEY_E = 0x0e,
> - ADB_KEY_F = 0x03,
> - ADB_KEY_G = 0x05,
> - ADB_KEY_H = 0x04,
> - ADB_KEY_I = 0x22,
> - ADB_KEY_J = 0x26,
> - ADB_KEY_K = 0x28,
> - ADB_KEY_L = 0x25,
> - ADB_KEY_M = 0x2e,
> - ADB_KEY_N = 0x2d,
> - ADB_KEY_O = 0x1f,
> - ADB_KEY_P = 0x23,
> - ADB_KEY_Q = 0x0c,
> - ADB_KEY_R = 0x0f,
> - ADB_KEY_S = 0x01,
> - ADB_KEY_T = 0x11,
> - ADB_KEY_U = 0x20,
> - ADB_KEY_V = 0x09,
> - ADB_KEY_W = 0x0d,
> - ADB_KEY_X = 0x07,
> - ADB_KEY_Y = 0x10,
> - ADB_KEY_Z = 0x06,
> -
> - ADB_KEY_0 = 0x1d,
> - ADB_KEY_1 = 0x12,
> - ADB_KEY_2 = 0x13,
> - ADB_KEY_3 = 0x14,
> - ADB_KEY_4 = 0x15,
> - ADB_KEY_5 = 0x17,
> - ADB_KEY_6 = 0x16,
> - ADB_KEY_7 = 0x1a,
> - ADB_KEY_8 = 0x1c,
> - ADB_KEY_9 = 0x19,
> -
> - ADB_KEY_GRAVE_ACCENT = 0x32,
> - ADB_KEY_MINUS = 0x1b,
> - ADB_KEY_EQUAL = 0x18,
> - ADB_KEY_DELETE = 0x33,
> - ADB_KEY_CAPS_LOCK = 0x39,
> - ADB_KEY_TAB = 0x30,
> - ADB_KEY_RETURN = 0x24,
> - ADB_KEY_LEFT_BRACKET = 0x21,
> - ADB_KEY_RIGHT_BRACKET = 0x1e,
> - ADB_KEY_BACKSLASH = 0x2a,
> - ADB_KEY_SEMICOLON = 0x29,
> - ADB_KEY_APOSTROPHE = 0x27,
> - ADB_KEY_COMMA = 0x2b,
> - ADB_KEY_PERIOD = 0x2f,
> - ADB_KEY_FORWARD_SLASH = 0x2c,
> - ADB_KEY_LEFT_SHIFT = 0x38,
> - ADB_KEY_RIGHT_SHIFT = 0x7b,
> - ADB_KEY_SPACEBAR = 0x31,
> - ADB_KEY_LEFT_CONTROL = 0x36,
> - ADB_KEY_RIGHT_CONTROL = 0x7d,
> - ADB_KEY_LEFT_OPTION = 0x3a,
> - ADB_KEY_RIGHT_OPTION = 0x7c,
> - ADB_KEY_COMMAND = 0x37,
> -
> - ADB_KEY_KP_0 = 0x52,
> - ADB_KEY_KP_1 = 0x53,
> - ADB_KEY_KP_2 = 0x54,
> - ADB_KEY_KP_3 = 0x55,
> - ADB_KEY_KP_4 = 0x56,
> - ADB_KEY_KP_5 = 0x57,
> - ADB_KEY_KP_6 = 0x58,
> - ADB_KEY_KP_7 = 0x59,
> - ADB_KEY_KP_8 = 0x5b,
> - ADB_KEY_KP_9 = 0x5c,
> - ADB_KEY_KP_PERIOD = 0x41,
> - ADB_KEY_KP_ENTER = 0x4c,
> - ADB_KEY_KP_PLUS = 0x45,
> - ADB_KEY_KP_SUBTRACT = 0x4e,
> - ADB_KEY_KP_MULTIPLY = 0x43,
> - ADB_KEY_KP_DIVIDE = 0x4b,
> - ADB_KEY_KP_EQUAL = 0x51,
> - ADB_KEY_KP_CLEAR = 0x47,
> -
> - ADB_KEY_UP = 0x3e,
> - ADB_KEY_DOWN = 0x3d,
> - ADB_KEY_LEFT = 0x3b,
> - ADB_KEY_RIGHT = 0x3c,
> -
> - ADB_KEY_HELP = 0x72,
> - ADB_KEY_HOME = 0x73,
> - ADB_KEY_PAGE_UP = 0x74,
> - ADB_KEY_PAGE_DOWN = 0x79,
> - ADB_KEY_END = 0x77,
> - ADB_KEY_FORWARD_DELETE = 0x75,
> -
> - ADB_KEY_ESC = 0x35,
> - ADB_KEY_F1 = 0x7a,
> - ADB_KEY_F2 = 0x78,
> - ADB_KEY_F3 = 0x63,
> - ADB_KEY_F4 = 0x76,
> - ADB_KEY_F5 = 0x60,
> - ADB_KEY_F6 = 0x61,
> - ADB_KEY_F7 = 0x62,
> - ADB_KEY_F8 = 0x64,
> - ADB_KEY_F9 = 0x65,
> - ADB_KEY_F10 = 0x6d,
> - ADB_KEY_F11 = 0x67,
> - ADB_KEY_F12 = 0x6f,
> - ADB_KEY_F13 = 0x69,
> - ADB_KEY_F14 = 0x6b,
> - ADB_KEY_F15 = 0x71,
> -
> - ADB_KEY_VOLUME_UP = 0x48,
> - ADB_KEY_VOLUME_DOWN = 0x49,
> - ADB_KEY_VOLUME_MUTE = 0x4a,
> - ADB_KEY_POWER = 0x7f7f
> -};
> -
> -/* Could not find the value for this key. */
> -/* #define ADB_KEY_EJECT */
> -
> -#endif /* ADB_KEYS_H */
> diff --git a/include/ui/input.h b/include/ui/input.h
> index f8cee43f65..25aabc9986 100644
> --- a/include/ui/input.h
> +++ b/include/ui/input.h
> @@ -71,6 +71,8 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
> extern const guint qemu_input_map_linux_to_qcode_len;
> extern const guint16 qemu_input_map_linux_to_qcode[];
>
> +extern const guint qemu_input_map_qcode_to_adb_len;
> +extern const guint16 qemu_input_map_qcode_to_adb[];
> extern const guint qemu_input_map_qcode_to_qnum_len;
> extern const guint16 qemu_input_map_qcode_to_qnum[];
>
> diff --git a/ui/input-keymap.c b/ui/input-keymap.c
> index 3a19a169f5..c373e41948 100644
> --- a/ui/input-keymap.c
> +++ b/ui/input-keymap.c
> @@ -6,6 +6,7 @@
> #include "standard-headers/linux/input.h"
>
> #include "ui/input-keymap-linux-to-qcode.c"
> +#include "ui/input-keymap-qcode-to-adb.c"
> #include "ui/input-keymap-qcode-to-qnum.c"
> #include "ui/input-keymap-qnum-to-qcode.c"
>
> --
> 2.14.3
>
Tested using Mac OS 9.2 and Mac OS 10.4.11. ADB keyboard functions correctly. The only problem I noticed is with the caps lock key on Mac OS 9.2. It doesn't appear to work. This problem is also present in QEMU 2.10.1 so I wouldn't worry about it.
Reviewed-By: John Arbuckle <programmingkidx@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend to keycodemapdb
2017-12-12 14:25 ` [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend " Daniel P. Berrange
@ 2017-12-13 16:47 ` Programmingkid
0 siblings, 0 replies; 6+ messages in thread
From: Programmingkid @ 2017-12-13 16:47 UTC (permalink / raw)
To: Daniel P. Berrange; +Cc: qemu-devel, Peter Maydell ], Gerd Hoffmann
> On Dec 12, 2017, at 9:25 AM, Daniel P. Berrange <berrange@redhat.com> wrote:
>
> Replace the mac_to_qkeycode_map table with automatically
> generated table.
>
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
> ---
> Makefile | 1 +
> include/ui/input.h | 3 ++
> ui/cocoa.m | 129 +----------------------------------------------------
> ui/input-keymap.c | 1 +
> 4 files changed, 7 insertions(+), 127 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 6e8cbe5d6f..10d8e5b8a3 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -227,6 +227,7 @@ KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
>
> KEYCODEMAP_FILES = \
> ui/input-keymap-linux-to-qcode.c \
> + ui/input-keymap-osx-to-qcode.c \
> ui/input-keymap-qcode-to-adb.c \
> ui/input-keymap-qcode-to-qnum.c \
> ui/input-keymap-qnum-to-qcode.c \
> diff --git a/include/ui/input.h b/include/ui/input.h
> index 25aabc9986..c2087e7d48 100644
> --- a/include/ui/input.h
> +++ b/include/ui/input.h
> @@ -71,6 +71,9 @@ void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
> extern const guint qemu_input_map_linux_to_qcode_len;
> extern const guint16 qemu_input_map_linux_to_qcode[];
>
> +extern const guint qemu_input_map_osx_to_qcode_len;
> +extern const guint16 qemu_input_map_osx_to_qcode[];
> +
> extern const guint qemu_input_map_qcode_to_adb_len;
> extern const guint16 qemu_input_map_qcode_to_adb[];
> extern const guint qemu_input_map_qcode_to_qnum_len;
> diff --git a/ui/cocoa.m b/ui/cocoa.m
> index 330ccebf90..57dfee2db5 100644
> --- a/ui/cocoa.m
> +++ b/ui/cocoa.m
> @@ -106,139 +106,14 @@ bool stretch_video;
> NSTextField *pauseLabel;
> NSArray * supportedImageFileTypes;
>
> -// Mac to QKeyCode conversion
> -const int mac_to_qkeycode_map[] = {
> - [kVK_ANSI_A] = Q_KEY_CODE_A,
> - [kVK_ANSI_B] = Q_KEY_CODE_B,
> - [kVK_ANSI_C] = Q_KEY_CODE_C,
> - [kVK_ANSI_D] = Q_KEY_CODE_D,
> - [kVK_ANSI_E] = Q_KEY_CODE_E,
> - [kVK_ANSI_F] = Q_KEY_CODE_F,
> - [kVK_ANSI_G] = Q_KEY_CODE_G,
> - [kVK_ANSI_H] = Q_KEY_CODE_H,
> - [kVK_ANSI_I] = Q_KEY_CODE_I,
> - [kVK_ANSI_J] = Q_KEY_CODE_J,
> - [kVK_ANSI_K] = Q_KEY_CODE_K,
> - [kVK_ANSI_L] = Q_KEY_CODE_L,
> - [kVK_ANSI_M] = Q_KEY_CODE_M,
> - [kVK_ANSI_N] = Q_KEY_CODE_N,
> - [kVK_ANSI_O] = Q_KEY_CODE_O,
> - [kVK_ANSI_P] = Q_KEY_CODE_P,
> - [kVK_ANSI_Q] = Q_KEY_CODE_Q,
> - [kVK_ANSI_R] = Q_KEY_CODE_R,
> - [kVK_ANSI_S] = Q_KEY_CODE_S,
> - [kVK_ANSI_T] = Q_KEY_CODE_T,
> - [kVK_ANSI_U] = Q_KEY_CODE_U,
> - [kVK_ANSI_V] = Q_KEY_CODE_V,
> - [kVK_ANSI_W] = Q_KEY_CODE_W,
> - [kVK_ANSI_X] = Q_KEY_CODE_X,
> - [kVK_ANSI_Y] = Q_KEY_CODE_Y,
> - [kVK_ANSI_Z] = Q_KEY_CODE_Z,
> -
> - [kVK_ANSI_0] = Q_KEY_CODE_0,
> - [kVK_ANSI_1] = Q_KEY_CODE_1,
> - [kVK_ANSI_2] = Q_KEY_CODE_2,
> - [kVK_ANSI_3] = Q_KEY_CODE_3,
> - [kVK_ANSI_4] = Q_KEY_CODE_4,
> - [kVK_ANSI_5] = Q_KEY_CODE_5,
> - [kVK_ANSI_6] = Q_KEY_CODE_6,
> - [kVK_ANSI_7] = Q_KEY_CODE_7,
> - [kVK_ANSI_8] = Q_KEY_CODE_8,
> - [kVK_ANSI_9] = Q_KEY_CODE_9,
> -
> - [kVK_ANSI_Grave] = Q_KEY_CODE_GRAVE_ACCENT,
> - [kVK_ANSI_Minus] = Q_KEY_CODE_MINUS,
> - [kVK_ANSI_Equal] = Q_KEY_CODE_EQUAL,
> - [kVK_Delete] = Q_KEY_CODE_BACKSPACE,
> - [kVK_CapsLock] = Q_KEY_CODE_CAPS_LOCK,
> - [kVK_Tab] = Q_KEY_CODE_TAB,
> - [kVK_Return] = Q_KEY_CODE_RET,
> - [kVK_ANSI_LeftBracket] = Q_KEY_CODE_BRACKET_LEFT,
> - [kVK_ANSI_RightBracket] = Q_KEY_CODE_BRACKET_RIGHT,
> - [kVK_ANSI_Backslash] = Q_KEY_CODE_BACKSLASH,
> - [kVK_ANSI_Semicolon] = Q_KEY_CODE_SEMICOLON,
> - [kVK_ANSI_Quote] = Q_KEY_CODE_APOSTROPHE,
> - [kVK_ANSI_Comma] = Q_KEY_CODE_COMMA,
> - [kVK_ANSI_Period] = Q_KEY_CODE_DOT,
> - [kVK_ANSI_Slash] = Q_KEY_CODE_SLASH,
> - [kVK_Shift] = Q_KEY_CODE_SHIFT,
> - [kVK_RightShift] = Q_KEY_CODE_SHIFT_R,
> - [kVK_Control] = Q_KEY_CODE_CTRL,
> - [kVK_RightControl] = Q_KEY_CODE_CTRL_R,
> - [kVK_Option] = Q_KEY_CODE_ALT,
> - [kVK_RightOption] = Q_KEY_CODE_ALT_R,
> - [kVK_Command] = Q_KEY_CODE_META_L,
> - [0x36] = Q_KEY_CODE_META_R, /* There is no kVK_RightCommand */
> - [kVK_Space] = Q_KEY_CODE_SPC,
> -
> - [kVK_ANSI_Keypad0] = Q_KEY_CODE_KP_0,
> - [kVK_ANSI_Keypad1] = Q_KEY_CODE_KP_1,
> - [kVK_ANSI_Keypad2] = Q_KEY_CODE_KP_2,
> - [kVK_ANSI_Keypad3] = Q_KEY_CODE_KP_3,
> - [kVK_ANSI_Keypad4] = Q_KEY_CODE_KP_4,
> - [kVK_ANSI_Keypad5] = Q_KEY_CODE_KP_5,
> - [kVK_ANSI_Keypad6] = Q_KEY_CODE_KP_6,
> - [kVK_ANSI_Keypad7] = Q_KEY_CODE_KP_7,
> - [kVK_ANSI_Keypad8] = Q_KEY_CODE_KP_8,
> - [kVK_ANSI_Keypad9] = Q_KEY_CODE_KP_9,
> - [kVK_ANSI_KeypadDecimal] = Q_KEY_CODE_KP_DECIMAL,
> - [kVK_ANSI_KeypadEnter] = Q_KEY_CODE_KP_ENTER,
> - [kVK_ANSI_KeypadPlus] = Q_KEY_CODE_KP_ADD,
> - [kVK_ANSI_KeypadMinus] = Q_KEY_CODE_KP_SUBTRACT,
> - [kVK_ANSI_KeypadMultiply] = Q_KEY_CODE_KP_MULTIPLY,
> - [kVK_ANSI_KeypadDivide] = Q_KEY_CODE_KP_DIVIDE,
> - [kVK_ANSI_KeypadEquals] = Q_KEY_CODE_KP_EQUALS,
> - [kVK_ANSI_KeypadClear] = Q_KEY_CODE_NUM_LOCK,
> -
> - [kVK_UpArrow] = Q_KEY_CODE_UP,
> - [kVK_DownArrow] = Q_KEY_CODE_DOWN,
> - [kVK_LeftArrow] = Q_KEY_CODE_LEFT,
> - [kVK_RightArrow] = Q_KEY_CODE_RIGHT,
> -
> - [kVK_Help] = Q_KEY_CODE_INSERT,
> - [kVK_Home] = Q_KEY_CODE_HOME,
> - [kVK_PageUp] = Q_KEY_CODE_PGUP,
> - [kVK_PageDown] = Q_KEY_CODE_PGDN,
> - [kVK_End] = Q_KEY_CODE_END,
> - [kVK_ForwardDelete] = Q_KEY_CODE_DELETE,
> -
> - [kVK_Escape] = Q_KEY_CODE_ESC,
> -
> - /* The Power key can't be used directly because the operating system uses
> - * it. This key can be emulated by using it in place of another key such as
> - * F1. Don't forget to disable the real key binding.
> - */
> - /* [kVK_F1] = Q_KEY_CODE_POWER, */
> -
> - [kVK_F1] = Q_KEY_CODE_F1,
> - [kVK_F2] = Q_KEY_CODE_F2,
> - [kVK_F3] = Q_KEY_CODE_F3,
> - [kVK_F4] = Q_KEY_CODE_F4,
> - [kVK_F5] = Q_KEY_CODE_F5,
> - [kVK_F6] = Q_KEY_CODE_F6,
> - [kVK_F7] = Q_KEY_CODE_F7,
> - [kVK_F8] = Q_KEY_CODE_F8,
> - [kVK_F9] = Q_KEY_CODE_F9,
> - [kVK_F10] = Q_KEY_CODE_F10,
> - [kVK_F11] = Q_KEY_CODE_F11,
> - [kVK_F12] = Q_KEY_CODE_F12,
> - [kVK_F13] = Q_KEY_CODE_PRINT,
> - [kVK_F14] = Q_KEY_CODE_SCROLL_LOCK,
> - [kVK_F15] = Q_KEY_CODE_PAUSE,
> -
> - /*
> - * The eject and volume keys can't be used here because they are handled at
> - * a lower level than what an Application can see.
> - */
> -};
>
> static int cocoa_keycode_to_qemu(int keycode)
> {
> - if (ARRAY_SIZE(mac_to_qkeycode_map) <= keycode) {
> + if (keycode >= qemu_input_map_osx_to_qcode_len) {
> fprintf(stderr, "(cocoa) warning unknown keycode 0x%x\n", keycode);
> return 0;
> }
> - return mac_to_qkeycode_map[keycode];
> + return qemu_input_map_osx_to_qcode[keycode];
> }
>
> /* Displays an alert dialog box with the specified message */
> diff --git a/ui/input-keymap.c b/ui/input-keymap.c
> index c373e41948..caf5c76f50 100644
> --- a/ui/input-keymap.c
> +++ b/ui/input-keymap.c
> @@ -6,6 +6,7 @@
> #include "standard-headers/linux/input.h"
>
> #include "ui/input-keymap-linux-to-qcode.c"
> +#include "ui/input-keymap-osx-to-qcode.c"
> #include "ui/input-keymap-qcode-to-adb.c"
> #include "ui/input-keymap-qcode-to-qnum.c"
> #include "ui/input-keymap-qnum-to-qcode.c"
> --
> 2.14.3
>
Reviewed-By: John Arbuckle <programmingkidx@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb
2017-12-12 14:24 [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb Daniel P. Berrange
2017-12-12 14:24 ` [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device " Daniel P. Berrange
2017-12-12 14:25 ` [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend " Daniel P. Berrange
@ 2018-01-15 15:12 ` Gerd Hoffmann
2 siblings, 0 replies; 6+ messages in thread
From: Gerd Hoffmann @ 2018-01-15 15:12 UTC (permalink / raw)
To: Daniel P. Berrange; +Cc: qemu-devel, Peter Maydell ], Programmingkid
On Tue, Dec 12, 2017 at 02:24:58PM +0000, Daniel P. Berrange wrote:
> This is a followup to
>
> v1: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02047.html
> v2: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02471.html
> v3: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02517.html
> v4: https://lists.nongnu.org/archive/html/qemu-devel/2017-08/msg02708.html
> v5: https://lists.nongnu.org/archive/html/qemu-devel/2017-09/msg02950.html
>
> This series contains only the apple related patches, the cocoa frontend
> and adb backend device.
>
> I decided to separate them, as I'm fairly sure the keycodemapdb data for
> these has some problems in it. There is contradictory information on the
> right mappings to use for certain keys. Looking at darwin source code
> in fact I think that the low level hardware scancode -> keycode mappings
> on OS-X might even change based on user config options at the OS level,
> and I'm not sure how to deal with that yet.
>
> So I need todo more investigation before I consider these two patches
> ready for merge. They're just posted to allow any feedback to be gathered
Doesn't apply any more, can you rebase?
thanks,
Gerd
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2018-01-15 15:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-12 14:24 [Qemu-devel] [PATCH v6 0/2] Convert apple related code to keycodemapdb Daniel P. Berrange
2017-12-12 14:24 ` [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device " Daniel P. Berrange
2017-12-13 16:46 ` Programmingkid
2017-12-12 14:25 ` [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend " Daniel P. Berrange
2017-12-13 16:47 ` Programmingkid
2018-01-15 15:12 ` [Qemu-devel] [PATCH v6 0/2] Convert apple related code " Gerd Hoffmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).