From e5e6c6f626c1aa52415506b87f41d822d70bd5fd Mon Sep 17 00:00:00 2001 From: groverlynn Date: Sat, 29 Oct 2022 22:21:33 +0200 Subject: [PATCH 1/7] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 295185f58..c51c76f44 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ package/test-* *~ .*.swp .DS_Store +rime-with-plugins-1.7.3-osx.zip From cc283398913d21f1359c4ee288d2deaef5f7b7e4 Mon Sep 17 00:00:00 2001 From: groverlynn Date: Sun, 19 Feb 2023 22:40:31 +0100 Subject: [PATCH 2/7] Add Fn as a modifier key --- macos_keycode.h | 1 + macos_keycode.m | 2 ++ 2 files changed, 3 insertions(+) diff --git a/macos_keycode.h b/macos_keycode.h index 839bc7605..05b85f990 100644 --- a/macos_keycode.h +++ b/macos_keycode.h @@ -9,6 +9,7 @@ #define OSX_CTRL_MASK 1 << 18 #define OSX_ALT_MASK 1 << 19 #define OSX_COMMAND_MASK 1 << 20 +#define OSX_FN_MASK 1 << 23 // key codes // diff --git a/macos_keycode.m b/macos_keycode.m index fc7f428a9..a4437a324 100644 --- a/macos_keycode.m +++ b/macos_keycode.m @@ -17,6 +17,8 @@ int osx_modifiers_to_rime_modifiers(unsigned long modifiers) ret |= kAltMask; if (modifiers & OSX_COMMAND_MASK) ret |= kSuperMask; + if (modifiers & OSX_FN_MASK) + ret |= kHyperMask; return ret; } From cc8e58ca825d6aa0974e7b3d3a3563978f39ce7d Mon Sep 17 00:00:00 2001 From: groverlynn Date: Sun, 19 Feb 2023 22:49:04 +0100 Subject: [PATCH 3/7] Add Fn as a modifier key --- SquirrelInputController.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/SquirrelInputController.m b/SquirrelInputController.m index fbbf2286a..45f0a4ba7 100644 --- a/SquirrelInputController.m +++ b/SquirrelInputController.m @@ -121,6 +121,13 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender release_mask = modifiers & OSX_ALT_MASK ? 0 : kReleaseMask; [self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)]; } + if (changes & OSX_FN_MASK) { + if (!keyCodeAvailable) { + rime_keycode = XK_Hyper_L; + } + release_mask = modifiers & OSX_FN_MASK ? 0 : kReleaseMask; + [self processKey:rime_keycode modifiers:(rime_modifiers | release_mask)]; + } if (changes & OSX_COMMAND_MASK) { if (!keyCodeAvailable) { rime_keycode = XK_Super_L; From 3d4830d07feecc74f8df8a8f9b5c48df47b64417 Mon Sep 17 00:00:00 2001 From: groverlynn Date: Sun, 19 Feb 2023 22:58:11 +0100 Subject: [PATCH 4/7] Update .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index d929602d4..7a58e2cf8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,3 @@ package/test-* *~ .*.swp .DS_Store -rime-with-plugins-1.7.3-osx.zip From 648265bbcc283aeb5364f4fb31b73d14f1932142 Mon Sep 17 00:00:00 2001 From: groverlynn Date: Tue, 21 Feb 2023 05:23:45 +0100 Subject: [PATCH 5/7] Ignore other function key mask --- SquirrelInputController.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SquirrelInputController.m b/SquirrelInputController.m index 45f0a4ba7..94d4c88bd 100644 --- a/SquirrelInputController.m +++ b/SquirrelInputController.m @@ -157,7 +157,8 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender keyCode, keyChars.UTF8String[0], modifiers & OSX_SHIFT_MASK, modifiers & OSX_CAPITAL_MASK); if (rime_keycode) { - int rime_modifiers = osx_modifiers_to_rime_modifiers(modifiers); + // revert non-modifier function keys' FunctionKeyMask (ForwardDelete, Navigation Keys, F1..F19) + int rime_modifiers = osx_modifiers_to_rime_modifiers((keyCode == 0x40 || keyCode == 0x47 || keyCode == 0x4f || keyCode == 0x50 || keyCode >= 0x60 ) ? modifiers ^= OSX_FN_MASK : modifiers); handled = [self processKey:rime_keycode modifiers:rime_modifiers]; [self rimeUpdate]; } From 20951d45e66874975ddbe4777edb6557f7a8bbee Mon Sep 17 00:00:00 2001 From: groverlynn Date: Sun, 5 Mar 2023 06:26:01 +0100 Subject: [PATCH 6/7] Add Fn as a modifier key --- SquirrelInputController.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SquirrelInputController.m b/SquirrelInputController.m index 94d4c88bd..1f090362e 100644 --- a/SquirrelInputController.m +++ b/SquirrelInputController.m @@ -157,8 +157,12 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender keyCode, keyChars.UTF8String[0], modifiers & OSX_SHIFT_MASK, modifiers & OSX_CAPITAL_MASK); if (rime_keycode) { - // revert non-modifier function keys' FunctionKeyMask (ForwardDelete, Navigation Keys, F1..F19) - int rime_modifiers = osx_modifiers_to_rime_modifiers((keyCode == 0x40 || keyCode == 0x47 || keyCode == 0x4f || keyCode == 0x50 || keyCode >= 0x60 ) ? modifiers ^= OSX_FN_MASK : modifiers); + int rime_modifiers = osx_modifiers_to_rime_modifiers(modifiers); + // revert non-modifier function keys' FunctionKeyMask (FwdDel, Navigations, F1..F19) + if (keyCode >= 0x60 || keyCode == 0x50 || keyCode == 0x4f || + keyCode == 0x47 || keyCode == 0x40) { + rime_modifiers ^= kHyperMask; + } handled = [self processKey:rime_keycode modifiers:rime_modifiers]; [self rimeUpdate]; } From d70ad04396c580dd6f93b66f56c18528e0fb8595 Mon Sep 17 00:00:00 2001 From: groverlynn Date: Mon, 25 Sep 2023 04:10:51 +0200 Subject: [PATCH 7/7] upper bound for keycode --- SquirrelInputController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SquirrelInputController.m b/SquirrelInputController.m index 22d9df5e1..8e758cd40 100644 --- a/SquirrelInputController.m +++ b/SquirrelInputController.m @@ -158,7 +158,7 @@ - (BOOL)handleEvent:(NSEvent*)event client:(id)sender if (rime_keycode) { int rime_modifiers = osx_modifiers_to_rime_modifiers(modifiers); // revert non-modifier function keys' FunctionKeyMask (FwdDel, Navigations, F1..F19) - if (keyCode >= 0x60 || keyCode == 0x50 || keyCode == 0x4f || + if ((keyCode <= 0xff && keyCode >= 0x60) || keyCode == 0x50 || keyCode == 0x4f || keyCode == 0x47 || keyCode == 0x40) { rime_modifiers ^= kHyperMask; }