RFR: 8150709: Mac OSX and German Keyboard Layout (Y/Z) [v5]
Johan Vos
jvos at openjdk.java.net
Mon Dec 20 12:14:38 UTC 2021
On Thu, 16 Dec 2021 21:40:47 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
>
> - Merge branch 'master' into macshortcut
> - Fixed whitespace error.
> - A small number of keyboard layouts require the Option key to reach
> critical letters like 'Q'. Added a third probe (after Command and
> Shift+Command) to look for letters that require Option. The
> keyboards in question are Azeri, Turkmen, and the Sami layouts.
> - The code now queries both the shifted and unshifted characters for a key
> favoring digits and letters over everything else. This ensures we catch
> the digits on the French layout without interfering with Dvorak.
> - Mac - generate KeyCodes that match user's active keyboard layout.
This looks ok, but I'm still a bit worried about possible regression. I understand that rigorous automated tests are hard in this case, but I wonder if we can have some basic tests at least.
Is there an issue in the Robot implementation preventing this?
-------------
PR: https://git.openjdk.java.net/jfx/pull/425
More information about the openjfx-dev
mailing list