On Mon, 17 Apr 2023 18:13:38 GMT, Martin Fox <d...@openjdk.org> wrote:

>> The Robot implementation on Linux did not consult the current layout when 
>> mapping from a KeyCode to a hardware code. Internally it retrieved results 
>> for all the layouts but just picked the first one it saw leading to random 
>> effects. Though not part of the original bug report, the code also ignored 
>> the shift level when choosing which result to pick. On a French layout the 
>> dollar sign is on two keys (AltGr 4 is the second one) and the code could 
>> choose either one. Same is true for pound.
>> 
>> This PR consults the current layout and only on shift level 0 which is the 
>> same level used in get_glass_key to figure out which KeyCode to assign when 
>> generating a KeyEvent.
>
> Martin Fox has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   The Robot code now correctly targets numlock keypad keys and keys that 
> always appear on group 0.

The results returned from `gdk_keymap_get_entries_for_keyval` match the way the 
keys events are delivered from the OS. The numlock state can affect the `level` 
and some keys (like ones on the numeric keypad) always appear on `group` 0 even 
if that's not the current group. When searching through the results we have to 
use `translate_keyboard_state` to find the correct group and level to match 
against. Code has been updated along with a few minor fixes.

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

PR Comment: https://git.openjdk.org/jfx/pull/718#issuecomment-1511890495

Reply via email to