On Tue, 8 Sep 2026 20:16:24 GMT, Andy Goryachev <[email protected]> wrote:
>> Issue only exists in the Headless platform. Consider this test code:
>>
>>
>> KeyCombination combination = KeyCombination.valueOf("shortcut+,");
>>
>> KeyEvent event = new KeyEvent(KeyEvent.KEY_PRESSED, "s", "S", KeyCode.S,
>> false, true, false, false);
>> boolean match = combination.match(event);
>>
>>
>> What happens is that the KeyCombination is an instance of
>> `KeyCharacterCombination`.
>>
>> `KeyCharacterCombination` is special, because in its `match` function, it
>> will call:
>> `Toolkit.getToolkit().getKeyCodeForChar(getCharacter(), code));`
>> which will be delegated to the `HeadlessApplication`, which will throw an
>> `UnsupportedOperationException`.
>>
>> Most of the time, the `KeyCombination` is not an instance of
>> `KeyCharacterCombination`, so this exception can only be reproduced with
>> more special combinations like in the example with the comma.
>>
>> I used the implementation we also use in `Monocle`. Rechecked with the US
>> keyboard layout.
>>
>> ---
>>
>> Trivia: JabRef found this issue when changing their tests from Monocle to
>> Headless: [GHA
>> run](https://github.com/JabRef/jabref/actions/runs/34032443925/job/101484543433?pr=16850)
>>
>> ---------
>> - [x] I confirm that I make this contribution in accordance with the
>> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai).
>
> modules/javafx.graphics/src/main/java/com/sun/glass/ui/headless/HeadlessApplication.java
> line 255:
>
>> 253: case '=' -> KeyEvent.VK_EQUALS;
>> 254: case '[' -> KeyEvent.VK_BRACELEFT;
>> 255: case ']' -> KeyEvent.VK_BRACERIGHT;
>
> are the codes for `[` and `]` correct? shouldn't they be mapped to
> `VK_OPEN_BRACKET` / `VK_CLOSE_BRACKET`
Just rechecked the keyboard, and it is the `{` which this `KeyEvent` matches to.
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/2297#discussion_r3962362124