From: Akihiko Odaki <[email protected]> ui/cocoa used to have a conversion table from macOS keycode to Linux key code. It is an unnecessary redundancy as ui/input-keymap.c already has such a table. Worse, I added an incorrect mapping of kVK_JIS_Eisu and kVK_JIS_Kana with commit 708b72557ff5 ("ui/cocoa: Support unique keys of JIS keyboards").
According to the following documentations, the definitions in ui/keycodemapdb/keymaps.csv, which ui/input-keymap.c uses, are correct: https://developer.apple.com/documentation/uikit/uikeyboardhidusage/uikeyboardhidusagekeyboardlang1?language=objc https://developer.apple.com/documentation/uikit/uikeyboardhidusage/uikeyboardhidusagekeyboardlang2?language=objc https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/keyboard-japan-ime Use qemu_input_map_osx_to_linux to eliminate the redundancy and incorrect mappings. Fixes: 708b72557ff5 ("ui/cocoa: Support unique keys of JIS keyboards") Signed-off-by: Akihiko Odaki <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Message-ID: <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- ui/cocoa.m | 131 ++--------------------------------------------------- 1 file changed, 3 insertions(+), 128 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index c5e639ab98d..e157ad01d85 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -141,138 +141,13 @@ static bool bool_with_bql(BoolCodeBlock block) return val; } -// Mac to Linux conversion -static const unsigned int mac_to_linux_map[] = { - [kVK_ANSI_A] = KEY_A, - [kVK_ANSI_B] = KEY_B, - [kVK_ANSI_C] = KEY_C, - [kVK_ANSI_D] = KEY_D, - [kVK_ANSI_E] = KEY_E, - [kVK_ANSI_F] = KEY_F, - [kVK_ANSI_G] = KEY_G, - [kVK_ANSI_H] = KEY_H, - [kVK_ANSI_I] = KEY_I, - [kVK_ANSI_J] = KEY_J, - [kVK_ANSI_K] = KEY_K, - [kVK_ANSI_L] = KEY_L, - [kVK_ANSI_M] = KEY_M, - [kVK_ANSI_N] = KEY_N, - [kVK_ANSI_O] = KEY_O, - [kVK_ANSI_P] = KEY_P, - [kVK_ANSI_Q] = KEY_Q, - [kVK_ANSI_R] = KEY_R, - [kVK_ANSI_S] = KEY_S, - [kVK_ANSI_T] = KEY_T, - [kVK_ANSI_U] = KEY_U, - [kVK_ANSI_V] = KEY_V, - [kVK_ANSI_W] = KEY_W, - [kVK_ANSI_X] = KEY_X, - [kVK_ANSI_Y] = KEY_Y, - [kVK_ANSI_Z] = KEY_Z, - - [kVK_ANSI_0] = KEY_0, - [kVK_ANSI_1] = KEY_1, - [kVK_ANSI_2] = KEY_2, - [kVK_ANSI_3] = KEY_3, - [kVK_ANSI_4] = KEY_4, - [kVK_ANSI_5] = KEY_5, - [kVK_ANSI_6] = KEY_6, - [kVK_ANSI_7] = KEY_7, - [kVK_ANSI_8] = KEY_8, - [kVK_ANSI_9] = KEY_9, - - [kVK_ANSI_Grave] = KEY_GRAVE, - [kVK_ANSI_Minus] = KEY_MINUS, - [kVK_ANSI_Equal] = KEY_EQUAL, - [kVK_Delete] = KEY_BACKSPACE, - [kVK_CapsLock] = KEY_CAPSLOCK, - [kVK_Tab] = KEY_TAB, - [kVK_Return] = KEY_ENTER, - [kVK_ANSI_LeftBracket] = KEY_LEFTBRACE, - [kVK_ANSI_RightBracket] = KEY_RIGHTBRACE, - [kVK_ANSI_Backslash] = KEY_BACKSLASH, - [kVK_ANSI_Semicolon] = KEY_SEMICOLON, - [kVK_ANSI_Quote] = KEY_APOSTROPHE, - [kVK_ANSI_Comma] = KEY_COMMA, - [kVK_ANSI_Period] = KEY_DOT, - [kVK_ANSI_Slash] = KEY_SLASH, - [kVK_Space] = KEY_SPACE, - - [kVK_ANSI_Keypad0] = KEY_KP0, - [kVK_ANSI_Keypad1] = KEY_KP1, - [kVK_ANSI_Keypad2] = KEY_KP2, - [kVK_ANSI_Keypad3] = KEY_KP3, - [kVK_ANSI_Keypad4] = KEY_KP4, - [kVK_ANSI_Keypad5] = KEY_KP5, - [kVK_ANSI_Keypad6] = KEY_KP6, - [kVK_ANSI_Keypad7] = KEY_KP7, - [kVK_ANSI_Keypad8] = KEY_KP8, - [kVK_ANSI_Keypad9] = KEY_KP9, - [kVK_ANSI_KeypadDecimal] = KEY_KPDOT, - [kVK_ANSI_KeypadEnter] = KEY_KPENTER, - [kVK_ANSI_KeypadPlus] = KEY_KPPLUS, - [kVK_ANSI_KeypadMinus] = KEY_KPMINUS, - [kVK_ANSI_KeypadMultiply] = KEY_KPASTERISK, - [kVK_ANSI_KeypadDivide] = KEY_KPSLASH, - [kVK_ANSI_KeypadEquals] = KEY_KPEQUAL, - [kVK_ANSI_KeypadClear] = KEY_NUMLOCK, - - [kVK_UpArrow] = KEY_UP, - [kVK_DownArrow] = KEY_DOWN, - [kVK_LeftArrow] = KEY_LEFT, - [kVK_RightArrow] = KEY_RIGHT, - - [kVK_Help] = KEY_INSERT, - [kVK_Home] = KEY_HOME, - [kVK_PageUp] = KEY_PAGEUP, - [kVK_PageDown] = KEY_PAGEDOWN, - [kVK_End] = KEY_END, - [kVK_ForwardDelete] = KEY_DELETE, - - [kVK_Escape] = KEY_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] = KEY_POWER, */ - - [kVK_F1] = KEY_F1, - [kVK_F2] = KEY_F2, - [kVK_F3] = KEY_F3, - [kVK_F4] = KEY_F4, - [kVK_F5] = KEY_F5, - [kVK_F6] = KEY_F6, - [kVK_F7] = KEY_F7, - [kVK_F8] = KEY_F8, - [kVK_F9] = KEY_F9, - [kVK_F10] = KEY_F10, - [kVK_F11] = KEY_F11, - [kVK_F12] = KEY_F12, - [kVK_F13] = KEY_SYSRQ, - [kVK_F14] = KEY_SCROLLLOCK, - [kVK_F15] = KEY_PAUSE, - - // JIS keyboards only - [kVK_JIS_Yen] = KEY_YEN, - [kVK_JIS_Underscore] = KEY_RO, - [kVK_JIS_KeypadComma] = KEY_KPCOMMA, - [kVK_JIS_Eisu] = KEY_MUHENKAN, - [kVK_JIS_Kana] = KEY_HENKAN, - - /* - * 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 unsigned int cocoa_keycode_to_linux(int keycode) +static int cocoa_keycode_to_linux(int keycode) { - if (ARRAY_SIZE(mac_to_linux_map) <= keycode) { + if (qemu_input_map_osx_to_linux_len <= keycode) { error_report("(cocoa) warning unknown keycode 0x%x", keycode); return 0; } - return mac_to_linux_map[keycode]; + return qemu_input_map_osx_to_linux[keycode]; } /* Displays an alert dialog box with the specified message */ -- 2.53.0
