RFR: 8259680: Need API to query states of CAPS LOCK and NUM LOCK keys [v3]
Kevin Rushforth
kcr at openjdk.java.net
Mon Jan 25 23:16:43 UTC 2021
On Sat, 23 Jan 2021 16:44:11 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> Kevin Rushforth has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Use XkbGetNamedIndicator on Linux instead of relying on the (unreliable) GDK method.
>
> modules/javafx.graphics/src/main/native-glass/gtk/glass_key.cpp line 361:
>
>> 359: switch (keyCode) {
>> 360: case com_sun_glass_events_KeyEvent_VK_CAPS_LOCK:
>> 361: lockState = gdk_keymap_get_caps_lock_state(keyMap);
>
> It seems that `gdk_keymap_get_caps_lock_state` isn't reliable on GTK 3 either. At least not when I test it on a Linux VM. I may end up using raw Xlib calls instead (which would have the added benefit of removing the "ifdef" for GTK 3).
I did end going this route. Instead of the `gdk_keymap` functions, I now use `XkbGetNamedIndicator`. It works on both GTK2 and GTK3 (unsurprisingly, since it isn't using GTK / GDK at all), and correctly reports the state of the keys even if the lock state is toggled when the program is not running or does not have focus.
-------------
PR: https://git.openjdk.java.net/jfx/pull/385
More information about the openjfx-dev
mailing list