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

Reply via email to