On Thu, 20 Apr 2023 23:33:03 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) > > 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 10 additional commits since > the last revision: > > - Merge remote-tracking branch 'upstream/master' into macshortcut > - Coding style consistency (mostly) > - Added Spanish to KeyboardTest and fixed related bug. Changes based on > review feedback. > - Added manual cross-platform keyboard handling test > - Bug fixes in Robot. Ensure symbols uncovered using Option are ignored. > - 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 PR also needs the following code added to manualTests-events/.classpath, otherwise it would not compile in Eclipse. (for convenience, showing the whole file): <?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry combineaccessrules="false" kind="src" path="/base"> <attributes> <attribute name="module" value="true"/> </attributes> </classpathentry> <classpathentry combineaccessrules="false" kind="src" path="/graphics"> <attributes> <attribute name="module" value="true"/> </attributes> </classpathentry> <classpathentry combineaccessrules="false" kind="src" path="/controls"> <attributes> <attribute name="module" value="true"/> </attributes> </classpathentry> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> <attributes> <attribute name="module" value="true"/> </attributes> </classpathentry> <classpathentry excluding=".classpath|.project|.settings" kind="src" output="bin" path=""/> <classpathentry kind="output" path="bin"/> </classpath> tests/manual/events/KeyboardTest.java line 26: > 24: */ > 25: > 26: import java.util.ArrayList; would it make sense to avoid using the default package? also perhaps move the tests to ./src? ------------- PR Comment: https://git.openjdk.org/jfx/pull/425#issuecomment-1517069347 PR Review Comment: https://git.openjdk.org/jfx/pull/425#discussion_r1173183156