On Fri, 12 Mar 2021 16:27:27 GMT, Martin Fox <d...@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) This pull request has now been integrated. Changeset: 9cca5f88 Author: Martin Fox <mar...@nlazyt.com> Committer: Andy Goryachev <ango...@openjdk.org> URL: https://git.openjdk.org/jfx/commit/9cca5f88d8039d808b0ccf403d66518f9d592c46 Stats: 1080 lines in 4 files changed: 1076 ins; 1 del; 3 mod 8150709: Mac OSX and German Keyboard Layout (Y/Z) Reviewed-by: jpereda, angorya ------------- PR: https://git.openjdk.org/jfx/pull/425