RFR: 8360886: Cmd + plus shortcut does not work reliably.

Martin Fox mfox at openjdk.org
Mon Jun 30 20:50:44 UTC 2025


On Mon, 30 Jun 2025 17:10:46 GMT, Andy Goryachev <angorya at openjdk.org> wrote:

>> The Mac platform code figures out where characters are on the keyboard as the user types. The character table is updated on every key press by calling a registerKeyEvent: in GlassApplication. This character table is used to resolve KeyCharacterCombination accelerators like Cmd + "+".
>> 
>> On a US English layout when the user types Cmd + "+" on the main keyboard they're actually typing Cmd + "=". There's special handling in macOS for this combination that can cause two NSEvents to be sent and so there's special handling in the Glass code so we don't process both events. When this special case is invoked registerKeyEvent: isn't being called to update the character table. This bug was introduced when code was consolidated in PR #1528.
>> 
>> The fix is a simple one-liner. I've added a test for this in the KeyboardTest.java program. It's an isolated test because it requires the Robot to send events to hold down a modifier while a character key is pressed. I also updated some obsolete comments and tweaked it to test all KeyCharacterCombinations since they should now work reliably on all platforms.
>
> tests/manual/events/KeyboardTest.java line 815:
> 
>> 813:     // OS special-cases this combination and so does JavaFX. In any case
>> 814:     // Shortcut + "+" is a very common shortcut and deserves a test.
>> 815:     private void testShiftedShortcut(Layout layout, Node focusNode, Logging log) {
> 
> Question: is it possible to convert this manual test into an automated headful one?

I could write a weaker system test. The problem sequence is CMD + EQUALS. There are two possible outcomes depending on the keyboard layout; either the EQUALS yields nothing or it generates a PRESSED event that matches against KeyCharacterCombination("=", KeyCode.SHORTCUT_DOWN). It's not quite the same test but it would have caught this bug. I can verify that it would work on all the keyboard layouts that Apple ships with macOS 15.

I'm less sure if the test would work cross-platform. It should but I don't have a good way of enumerating and testing all the layouts on Windows and Linux.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1837#discussion_r2175895293


More information about the openjfx-dev mailing list