RFR: 8087700: [KeyCombination, Mac] KeyCharacterCombinations behave erratically

Martin Fox mfox at openjdk.org
Tue Nov 14 20:28:46 UTC 2023


On Tue, 14 Nov 2023 16:52:16 GMT, Andy Goryachev <angorya at 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.
>
> It looks like the scope of this change went beyond the original problem in JBS.
> Would it be possible to update the JBS ticket with the information in this PR description?

@andy-goryachev-oracle You're right, this PR also deals with the problem of the map retaining stale entries when the user switches layout. I added details about this to the JBS ticket. We could treat it as a separate bug if you want, to me it's just the sort of standard housekeeping one does when caching information.

I also added a note about the KeyboardTest app. This PR scales back that test a bit but this is the first time we've been able to run the KeyCharacterCombinations on the Mac so that portion is basically a new test.

Let me know if you want further information in the JBS ticket.

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1209#issuecomment-1811194141


More information about the openjfx-dev mailing list