RFR: 8274967: KeyCharacterCombinations for punctuation and symbols fail on non-US keyboards

Jose Pereda jpereda at openjdk.org
Tue Nov 14 21:29:40 UTC 2023


On Tue, 17 Oct 2023 20:21:30 GMT, Martin Fox <mfox at openjdk.org> wrote:

> After finding the Window virtual key code for a character getKeyCodeForChar was using a mapping table that only works correctly for U.S. English to retrieve the Java key code. This caused getKeyCodeForChar to encode keys differently than the original key event handling machinery.
> 
> With this fix the Robot, getKeyCodeForChar, and the code that handles platform key events all agree on how Windows VK codes should map to Java codes.
> 
> The manual KeyboardTest app can be used to test this (tests/manual/events). Run the tests by selecting "without keypad combinations" in the second dropdown. This will use a Robot to test KeyCharacterCombinations excluding the numeric keypad (which is a separate issue).

Looks good!

I've tested this PR on Windows 11 with my Spanish keyboard.

Without the patch from this PR, the KeyboardTest app (without keypad combinations) gives:

[Win] Testing 80 keys on Spanish without keypad combinations
Failed: code Delete did not match combination U+007F
Failed: code Quote did not match combination '
Failed: code Quote did not match combination ?
Failed: code Inverted Exclamation Mark did not match combination ¡
Failed: code Inverted Exclamation Mark did not match combination ¿
Failed: code Plus did not match combination +
Failed: code Plus did not match combination *
Failed: code Plus did not match combination ]
Tested 80 keys with 8 failures

with the patch:

[Win] Testing 80 keys on Spanish without keypad combinations
Tested 80 keys with 0 failures


The same goes with US English, German and French (after setting those as local keyboards).

-------------

Marked as reviewed by jpereda (Reviewer).

PR Review: https://git.openjdk.org/jfx/pull/1264#pullrequestreview-1730839151


More information about the openjfx-dev mailing list