RFR: 8262945: [macos] Regression Manual Test for Key Events Fails [v2]
Phil Race
prr at openjdk.java.net
Sat Sep 25 23:33:22 UTC 2021
On Wed, 22 Sep 2021 08:05:03 GMT, Alisen Chung <github.com+90066231+alisenchung at openjdk.org> wrote:
>> src/java.desktop/macosx/native/libawt_lwawt/awt/AWTEvent.m line 485:
>>
>>> 483: } else if([lang isEqualToString:@"ru"]) {
>>> 484: // checking for Russian characters
>>> 485: offset += 0x01000000;
>>
>> where did this value come from ?
>> And I agree adding only russian looks odd. Actually I have no idea (and am curious) why the submitter was actually testing a russian layout keyboard.
>> Are we doing something weird, or does macOS really make developers have to understand every single supported language -> keyboard mapping ?
>> Is there a better (more generic) way ?
>> Is this the ONLY place we'd need to add understanding of Russian ? If there's more it would not be worth doing it just here.
>
>> where did this value come from ?
>
> The 0x01000000 offset value is copied from share/classes/sun/awt/ExtendedKeyCodes.java. When using getExtendedKeyCodeForChar(int c), if the character isn't in the regularKeyCodesMap, that 0x01000000 offset is added and the new value is checked for again in the extendedKeyCodeSet. I noticed that Russian was in the extendedKeyCodeSet so I just checked for Russian active keyboard layout and added that offset since the case wasn't being handled before.
>
>> Are we doing something weird, or does macOS really make developers have to understand every single supported language -> keyboard mapping ?
> Is there a better (more generic) way ?
>
> I can try to test whether removing the Russian language check also fixes other languages (since that's what we do in ExtendedKeyCodes.java anyway), but macOS might have a different system of keycodes so I can't tell for sure that it would work for all of them.
>
>> Is this the ONLY place we'd need to add understanding of Russian ? If there's more it would not be worth doing it just here.
>
> From my understanding anything that relies on keycodes would be fixed with this since AWTEvent.m was only checking for English to translate NSKeyCodes to Java virtual keycodes. I didn't see anywhere else related to keycodes we would need to have a language check .
This at least looks better. I guess you tried a few keyboard layout settings ?
Can you add a comment to the source where the 0x10000000 value comes from / what it means.
-------------
PR: https://git.openjdk.java.net/jdk/pull/5617
More information about the client-libs-dev
mailing list