RFR: 8150709: Mac OSX and German Keyboard Layout (Y/Z)
Martin Fox
github.com+12087024+beldenfox at openjdk.java.net
Fri Mar 12 16:32:14 UTC 2021
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)
-------------
Commit messages:
- Mac - generate KeyCodes that match user's active keyboard layout.
Changes: https://git.openjdk.java.net/jfx/pull/425/files
Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=425&range=00
Issue: https://bugs.openjdk.java.net/browse/JDK-8150709
Stats: 174 lines in 2 files changed: 172 ins; 1 del; 1 mod
Patch: https://git.openjdk.java.net/jfx/pull/425.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/425/head:pull/425
PR: https://git.openjdk.java.net/jfx/pull/425
More information about the openjfx-dev
mailing list