gdk_keymap_get_entries_for_keycode() returning hundreds of uninitialised GdkKeymapKey on Windows
Windows 11 gtk 3.24.31 (as provided by msys2 package mingw-w64-x86_64-gtk3 version 3.24.31-1)
Steps to reproduce:
- Build attached program
gcc keytest.c -o keytest $(pkg-config --libs --cflags gtk+-3.0)
- Run, focus on the popup window and press some keys on the keyboard. On my machine, the 'A' key will usually trigger the bug.
Expected output, something like 6 GdkKeymapKey entries:
keyval: 0061 keyname: a hw-code: 0041 string: a group: 0000 state:0 ismodifier:0
keymap entries (6 total):
index: 0 keyval: 0061 group: 0 level: 0 character: a keyname: a
index: 1 keyval: 0041 group: 0 level: 1 character: A keyname: A
index: 2 keyval: 0061 group: 1 level: 0 character: a keyname: a
index: 3 keyval: 0041 group: 1 level: 1 character: A keyname: A
index: 4 keyval: 00e1 group: 1 level: 2 character: á keyname: aacute
index: 5 keyval: 00c1 group: 1 level: 3 character: Á keyname: Aacute
Instead, I see something like the following (it varies):
keyval: 0061 keyname: a hw-code: 0041 string: a group: 0000 state:0 ismodifier:0
keymap entries (555 total):
index: 0 keyval: 0061 group: 0 level: 0 character: a keyname: a
index: 1 keyval: 0041 group: 0 level: 1 character: A keyname: A
index: 2 keyval: 0061 group: 1 level: 0 character: a keyname: a
index: 3 keyval: 0041 group: 1 level: 1 character: A keyname: A
index: 4 keyval: 00e1 group: 1 level: 2 character: á keyname: aacute
index: 5 keyval: 00c1 group: 1 level: 3 character: Á keyname: Aacute
index: 6 keyval: 0000 group: 7864438 level: 3276903 character: keyname: (null)
index: 7 keyval: 0000 group: 7012404 level: 3407928 character: keyname: (null)
index: 8 keyval: 0000 group: 6619246 level: 7209079 character: keyname: (null)
index: 9 keyval: 0000 group: 7340144 level: 6881388 character: keyname: (null)
index: 10 keyval: 6d04051 group: 6881396 level: 7209071 character: keyname: 0x6d04051
index: 11 keyval: 80000735 group: 82418682 level: -1879031296 character: keyname: 0x80000735
<snip>
index: 548 keyval: 740073 group: 3407974 level: 7143522 character: keyname: 0x740073
index: 549 keyval: 0000 group: 6619240 level: 7077996 character: keyname: (null)
index: 550 keyval: 6a5432a group: 6619248 level: 110 character: keyname: 0x6a5432a
index: 551 keyval: 8c000400 group: 89298253 level: -1879019776 character: keyname: 0x8c000400
index: 552 keyval: 4b0048 group: 1936876915 level: 1986094172 character: keyname: 0x4b0048
index: 553 keyval: 590045 group: 1851877231 level: 1886413148 character: keyname: 0x590045
index: 554 keyval: 43005f group: 1668246620 level: 1885105249 character: keyname: 0x43005f
The valid entries are listed, and are followed by a large number of invalid entries. Not all keys do this, and it doesn't happen all of the time. I've not see this issue occur on macOS.
We've had some Windows VICE users complain that our GTK3 application crashes as soon as they press a key, but most users cannot replicate this, and no macOS / Linux users have reported it. I wonder if there's a link to the issue illustrated here.
Edited by David Hogan