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

Jose Pereda jpereda at openjdk.org
Wed Apr 12 15:43:31 UTC 2023


On Mon, 10 Apr 2023 20:06:02 GMT, Martin Fox <duke at openjdk.org> 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:
> 
>   Added Spanish to KeyboardTest and fixed related bug. Changes based on review feedback.

Looks good, just a minor comment

modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m line 458:

> 456: BOOL GetMacKey(jint javaKeyCode, unsigned short *outMacKeyCode)
> 457: {
> 458:     if (javaKeyCode == com_sun_glass_events_KeyEvent_VK_UNDEFINED)

Please, add curly braces to the if expressions

modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m line 475:

> 473:     // The table only covers US QWERTY so it's missing entries like PLUS that
> 474:     // don't appear on that layout.
> 475:     if (found && !macKeyCodeIsLayoutSensitive(*outMacKeyCode))

curly braces

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

PR Review: https://git.openjdk.org/jfx/pull/425#pullrequestreview-1381580818
PR Review Comment: https://git.openjdk.org/jfx/pull/425#discussion_r1164306284
PR Review Comment: https://git.openjdk.org/jfx/pull/425#discussion_r1164306537


More information about the openjfx-dev mailing list