RFR: 8340982: [win] Dead key followed by Space generates two characters instead of one
Martin Fox
mfox at openjdk.org
Fri Sep 27 21:09:38 UTC 2024
On Fri, 27 Sep 2024 14:29:17 GMT, Martin Fox <mfox at openjdk.org> wrote:
> The standard across all platforms is:
>
> - A dead key followed by a composable character generates the composed character. For example, a circumflex dead key followed by an 'e' should generate 'ê'.
> - A dead key followed by a character that can't compose with it generates a spacing character followed by the non-composable character. On Windows US International a circumflex dead key followed by a 'q' generates '^q'. The spacing character corresponding to the dead key varies based on the OS and layout.
> - An exception is SPACE. On all platforms a dead key followed by SPACE should generate just the spacing version of the dead key but *not* a space character. Users rely on this shortcut to quickly access the character 'hidden' by the dead key.
>
> The Windows glass code didn't implement the Space exception. This PR fixes that.
>
> On Windows the US US International layout. Shift+6 is the dead key for a circumflex diacritic if you want to test out the combinations mentioned above.
>
> For some reason Windows 11 hides this setting well. To install a US International layout:
> - Go to Settings > Time & Language > Language & Region.
> - In the entry for English click on the three dots to the far right and select 'Language Options'.
> - Scroll down until you see 'Installed keyboards' and select 'Add a keyboard'.
> - From the list select "United States - International".
> To actually use the layout look to the right of the Task Bar and you should see a button for choosing the layout (it will contain the word "ENG").
I haven't figured out how to write unit tests for dead keys or IME events. The Windows US English layout doesn't use dead keys. There's no way for me to force the use of a different keyboard layout or verify that the right one is installed before running the test. The best I can do is a manual test like the existing KeyboardTest app in the tests/manual/event folder.
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1584#issuecomment-2380059984
More information about the openjfx-dev
mailing list