On Wed, 9 Sep 2026 00:33:23 GMT, Marius Hanl <[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 on a mac.
>>
>> ---
>>
>> 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).
>
> Marius Hanl has updated the pull request incrementally with one additional
> commit since the last revision:
>
> numpad logic and VK_SPACE and tests for them
This PR goes above and beyond, even including the numeric keypad.
One of the main uses of character combinations is to catch shifted characters
even when the shift key is not held down. You only have one test for this
(verifying "*" matches KeyCode.DIGIT8) and that's in the numpad test. You might
consider explicitly testing that one or two other shifted characters match
when their base key is typed without the shift modifier. The most common by far
is "+" which on an English layout matches KeyCode.EQUALS.
-------------
PR Review: https://git.openjdk.org/jfx/pull/2297#pullrequestreview-5156816120