Convert apple related code to keycodemapdb
v6 cover Convert apple related code to keycodemapdb
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
Signature · 1 line
2.14.3
PATCH v6 1/2 hw: convert the adb device to keycodemapdb
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
--- 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
Makefile +1 -0
@@ -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)
hw/input/adb.c +2 -122
145 lines not on this page · raw message
include/hw/input/adb-keys.h deleted +0 -141
141 lines not on this page · raw message
include/ui/input.h +2 -0
@@ -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[];
ui/input-keymap.c +1 -0
@@ -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"
Signature · 1 line
2.14.3
Re: [Qemu-devel] [PATCH v6 1/2] hw: convert the adb device to keycodemapdb
Quoted 359 lines · Daniel P. Berrange
Replace the
qcode_to_adb_keycodetable with automatically generated tables.Missing entries in
qcode_to_adb_keycodenow fixed:-
Q_KEY_CODE_KP_COMMA->0x47Signed-off-by Daniel P. Berrange <[email protected]>---
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.hMakefile +1
-0@@ -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)hw/input/adb.c +2
-122@@ -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 ;include/hw/input/adb-keys.h deleted +0
-141@@ -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 */ include/ui/input.h +2
-0@@ -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[];ui/input-keymap.c +1
-0@@ -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" Signature · 1 line
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.
PATCH v6 2/2 ui: convert cocoa frontend to keycodemapdb
In reply to Daniel P. BerrangeReplace the mac_to_qkeycode_map table with automatically generated table.
--- Makefile | 1 + include/ui/input.h | 3 ++ ui/cocoa.m | 129 +---------------------------------------------------- ui/input-keymap.c | 1 + 4 files changed, 7 insertions(+), 127 deletions(-)
Makefile +1 -0
@@ -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 \
include/ui/input.h +3 -0
@@ -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;
ui/cocoa.m +2 -127
141 lines not on this page · raw message
ui/input-keymap.c +1 -0
@@ -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"
Signature · 1 line
2.14.3
Re: [Qemu-devel] [PATCH v6 2/2] ui: convert cocoa frontend to keycodemapdb
Quoted 201 lines · Daniel P. Berrange
Replace the
mac_to_qkeycode_maptable with automatically generated table.Signed-off-by Daniel P. Berrange <[email protected]>---
Makefile | 1 + include/ui/input.h | 3 ++ ui/cocoa.m | 129 +---------------------------------------------------- ui/input-keymap.c | 1 + 4 files changed, 7 insertions(+), 127 deletions(-)Makefile +1
-0@@ -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 \include/ui/input.h +3
-0@@ -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;ui/cocoa.m +2
-127@@ -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 */ui/input-keymap.c +1
-0@@ -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" Signature · 1 line
2.14.3
Quoted 18 lines · 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.htmlThis 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.
Quoted 2 lines
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