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

Reply via email to