From: Pierre Ossman Date: Tue, 23 Aug 2022 07:11:15 +0000 (+0200) Subject: Fix "grave" and "ISO" keys on macOS X-Git-Tag: v1.12.90~22 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=97f51df7013ac818ec3e3c94b6c07b1300de1acd;p=tigervnc.git Fix "grave" and "ISO" keys on macOS We lacked an entry for one of these, and the magical swap that macOS does for unknown reasons. --- diff --git a/vncviewer/cocoa.mm b/vncviewer/cocoa.mm index e8764f52..cf9c9a8e 100644 --- a/vncviewer/cocoa.mm +++ b/vncviewer/cocoa.mm @@ -253,10 +253,21 @@ int cocoa_is_key_press(const void *event) int cocoa_event_keycode(const void *event) { NSEvent *nsevent; + int keycode; nsevent = (NSEvent*)event; - return [nsevent keyCode]; + keycode = [nsevent keyCode]; + + // macOS swaps these two keys for unknown reasons for ISO layouts + if (KBGetLayoutType(LMGetKbdType()) == kKeyboardISO) { + if (keycode == kVK_ANSI_Grave) + return kVK_ISO_Section; + if (keycode == kVK_ISO_Section) + return kVK_ANSI_Grave; + } + + return keycode; } static NSString *key_translate(UInt16 keyCode, UInt32 modifierFlags) diff --git a/vncviewer/osx_to_qnum.c b/vncviewer/osx_to_qnum.c index 1295bad1..5c3bfeb3 100644 --- a/vncviewer/osx_to_qnum.c +++ b/vncviewer/osx_to_qnum.c @@ -1,6 +1,6 @@ /* * This file is auto-generated from keymaps.csv - * Database checksum sha256(76d68c10e97d37fe2ea459e210125ae41796253fb217e900bf2983ade13a7920) + * Database checksum sha256(277b04f9dd721dd7942235d6ff107f992d95a083b651e73814ac3bb12f9c56d5) * To re-generate, run: * keymap-gen code-map --lang=stdc keymaps.csv osx qnum */ @@ -15,6 +15,7 @@ const unsigned short code_map_osx_to_qnum[256] = { [0x7] = 0x2d, /* osx:7 (ANSI_X) -> linux:45 (KEY_X) -> qnum:45 */ [0x8] = 0x2e, /* osx:8 (ANSI_C) -> linux:46 (KEY_C) -> qnum:46 */ [0x9] = 0x2f, /* osx:9 (ANSI_V) -> linux:47 (KEY_V) -> qnum:47 */ + [0xa] = 0x56, /* osx:10 (ISO_Section) -> linux:86 (KEY_102ND) -> qnum:86 */ [0xb] = 0x30, /* osx:11 (ANSI_B) -> linux:48 (KEY_B) -> qnum:48 */ [0xc] = 0x10, /* osx:12 (ANSI_Q) -> linux:16 (KEY_Q) -> qnum:16 */ [0xd] = 0x11, /* osx:13 (ANSI_W) -> linux:17 (KEY_W) -> qnum:17 */