On Mon, 10 Apr 2023 20:16:23 GMT, Martin Fox <d...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/native-glass/mac/GlassKey.m line 473:
>> 
>>> 471:     // If the QWERTY key is in the layout sensitive area search the 
>>> other keys in that
>>> 472:     // area. We may not find a key so returning NO is possible.
>>> 473:     for (unsigned short trialKey = 0x00; trialKey <= 0x7E; ++trialKey)
>> 
>> I see this as a last resource, in case everything else failed so far. But I 
>> wonder if this could be slow? 
>> Also given that keyCode in sensitive layout is true only for [0x00 - 0x32] 
>> and 0x5D, 0x5F, maybe you could improve this?
>
> This call is used by the Robot code and an accessibility feature (namely 
> retrieving the `AXMenuItemCmdVirtualKey` property). Robots aren't built for 
> speed but I will look into the accessibility side. To make significant gains 
> in this code I would have to cache the results.

The accessibility code only calls `GetMacKey` for menu items which use 
`KeyCodes` and are not character-based (the check is `!isCmdCharBased` in 
MacAccessible.java). This means menu items where the accelerator references a 
key like `Return`, `Home`, or `PgUp`. `GetMacKey` will resolve these using the 
old lookup table without invoking the new, slower code that scans the rest of 
the keyboard. So accessibility shouldn't see a performance hit. A Robot will be 
slower to send events for some keys but I don't think that's an issue. 
Currently those are the only two clients of this call.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/425#discussion_r1164454567

Reply via email to