On Mon, 14 Aug 2023 16:28:20 GMT, Martin Fox <m...@openjdk.org> wrote:
> A KeyCharacterCombination should match a key if the target character is > printed on that key. For example, the user should be able to invoke the > `Shortcut+'+' ` combination by holding down the Shortcut key and pressing a > key that has '+' printed on it. This should work even if '+' is a shifted > symbol but the user doesn't hold down the Shift key. > > The Mac implements KeyCharacterCombinations by monitoring keystrokes to > discover the relationship between keys and characters. Currently the system > only records the character the user typed and no other characters on the same > key. This means a shortcut targeting a shifted character may not work until > the user types that character using Shift so the system learns the > relationship. > > This PR keeps the same mechanism in place but always records the shifted and > unshifted character for each keystroke. > > For the Mac the KeyboardTest app was modified to remove tests for characters > accessed using Option. We don't look for these characters because under the > hood just about every key has some symbol assigned to the Option modifier > that the user probably isn't even aware of. For these character we fall back > to the existing logic; once the user types the character it will start > working as a shortcut. The problem occurs on macOS 12 and 13 which is as far back as I can test. Calling charactersByApplyingModifiers modifiers the NSEvent in some way that causes IMEs to malfunction. I've verified that Chinese - Traditional is also affected. The solution is to use the same Carbon calls that I used in PR #425. I've written the code and will perform some more tests before submitting a PR. I'm not sure if the right approach is to re-open the original bug and rejuvenate this PR or submit a separate bug. The fix for the original bug will need to be re-tested. ------------- PR Comment: https://git.openjdk.org/jfx/pull/1209#issuecomment-1826911494