RFR: 8150709: Mac OSX and German Keyboard Layout (Y/Z) [v6]

Martin Fox duke at openjdk.java.net
Mon Jan 17 18:00:30 UTC 2022


On Tue, 21 Dec 2021 16:42:40 GMT, Martin Fox <duke at openjdk.java.net> wrote:

>> This PR adds code to ensure that KeyCodeCombinations match KeyEvents as expected by more accurately mapping from a Mac key code to a Java key code based on the user’s active keyboard layout (the existing code assumes a US QWERTY layout). The new code first identifies a set of Mac keys which can produce different characters based on the user’s keyboard layout. A Mac key code outside that area is processed exactly as before. For a key inside the layout-sensitive area the code calls UCKeyTranslate to translate the key to an unshifted ASCII character based on the active keyboard and uses that to determine the Java key code.
>> 
>> When performing the reverse mapping for the Robot the code first uses the old QWERTY mapping to find a candidate key. If it lies in the layout-sensitive area the code then scans the entire area calling UCKeyTranslate until it finds a match. If the key lies outside the layout-sensitive area it’s processed exactly as before.
>> 
>> There are multiple duplicates of these bugs logged against Mac applications built with JavaFX.
>> 
>> https://bugs.openjdk.java.net/browse/JDK-8090257 Mac: Inconsistent KeyEvents with alternative keyboard layouts
>> https://bugs.openjdk.java.net/browse/JDK-8088120 [Accelerator, Mac] CMD + Z accelerator is not working with French keyboard
>> https://bugs.openjdk.java.net/browse/JDK-8087915 Mac: accelerator doesn't take into account azerty keyboard layout
>> https://bugs.openjdk.java.net/browse/JDK-8150709 Mac OSX and German Keyboard Layout (Y/Z)
>
> Martin Fox has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Bug fixes in Robot. Ensure symbols uncovered using Option are ignored.

I've been working on automated tests for keyboard handling but am thinking of dropping them. IMHO the tests need to cover punctuation and symbols (that's where the bugs are) but testing those keys on a random keyboard layout is complicated. I'm running into bugs on Mac and Linux that I can fix but that are probably not worth the trouble.

For example, with this PR dead keys are miscoded (what should be DEAD_CIRCUMFLEX is CIRCUMFLEX) and that can lead an automated test to accidentally trigger a dead key state (this can also happen on Windows though PR #702 should fix that). The fixes to get the codes right on Mac aren't deep but I don't think they would be of any benefit to JavaFX developers so I would be asking for review cycles just to appease the automated tests. The manual test attached to this thread is more likely to find relevant bugs.

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

PR: https://git.openjdk.java.net/jfx/pull/425


More information about the openjfx-dev mailing list