CConn: Enabling QEMU Extended Key Event
CConn: Disabling automatic desktop resizing because the server doesn't support it.
CConn: Enabling LED State
CConn: Server's LED state: 0x2
...
CConn: key PRESS, code A (65), loc STANDARD, char 'a', RFB keycode 0x1e => 0x0061
CConn: key release, code A (65), loc STANDARD, char 'a', RFB keycode 0x1e => 0x0061
CConn: key PRESS, code Shift (16), loc RIGHT, RFB keycode 0x36 => 0xffe2
CConn: key PRESS, code A (65), loc STANDARD, char 'A', RFB keycode 0x1e RShift => 0x0041
CConn: key release, code A (65), loc STANDARD, char 'A', RFB keycode 0x1e RShift => 0x0041
CConn: key release, code Shift (16), loc RIGHT, RFB keycode 0x36 RShift => 0xffe2
CConn: key PRESS, code Unknown keyCode: 0x0 (0), loc UNKNOWN, RFB keycode 0x3a => 0x100ffff
CConn: Server's LED state: 0x6
CConn: key release, code Unknown keyCode: 0x0 (0), loc UNKNOWN, RFB keycode 0x3a => 0x100ffff
CConn: key PRESS, code A (65), loc UNKNOWN, char 1092, RFB keycode 0x1e => 0x06c6
CConn: key release, code A (65), loc UNKNOWN, char 1092, RFB keycode 0x1e => 0x06c6
CConn: key PRESS, code Shift (16), loc RIGHT, RFB keycode 0x36 => 0xffe2
CConn: key PRESS, code A (65), loc UNKNOWN, char 1060, RFB keycode 0x1e RShift => 0x06e6
CConn: key release, code A (65), loc UNKNOWN, char 1060, RFB keycode 0x1e RShift => 0x06e6
CConn: key release, code Shift (16), loc RIGHT, RFB keycode 0x36 RShift => 0xffe2
CConn: key PRESS, code Unknown keyCode: 0x0 (0), loc UNKNOWN, RFB keycode 0x3a => 0x100ffff
CConn: Server's LED state: 0x2
CConn: key release, code Unknown keyCode: 0x0 (0), loc UNKNOWN, RFB keycode 0x3a => 0x100ffff
CConn: key PRESS, code Compose (65312), loc STANDARD, RFB keycode 0xdd => 0x100ffff
CConn: key release, code Compose (65312), loc STANDARD, RFB keycode 0xdd => 0x100ffff
CConn: key PRESS, code O (79), loc STANDARD, char 'o', RFB keycode 0x18 => 0x006f
CConn: key release, code O (79), loc STANDARD, char 'o', RFB keycode 0x18 => 0x006f
CConn: key PRESS, code C (67), loc STANDARD, char 'c', RFB keycode 0x2e => 0x0063
CConn: key release, code C (67), loc STANDARD, char 'c', RFB keycode 0x2e => 0x0063
How to reproduce
Then:
a, shift-a, caps, a, shift-a, caps, menu, o, c(that is, "aA", change layout, "фФ", change layout, compose key, "©")swaymsg reloadActual behaviour
Varies greatly:
swaymsg reloadswaymsg reloadAlso: when reconnected, one would again get pre-reload output (until the next reload, that is).
Expected behaviour
The aforementioned sequence should produce "aAфФ©". This is exactly what happens when sway receives keystrokes through
qemu -vncand emulated input device instead of wayvnc, regardless of client's software and xkbmap settings.Versions
wayvnc was built from the git tag, same for neatvnc/aml. The 0.7.2/0.7.0/0.3.0 combination is also affected.
Logs
I'm only posting logs for clients with non-standard xkb settings. They only differ in keysym anyway, and the whole point of QEMU protocol extension is in avoiding exactly that.
Note that both wayvnc and tigervnc/turbovnc signal support for the QEMU extension.
TurboVNC
vncviewer -loglevel 100
wayvnc -L trace
TigerVNC
vncviewer -Log='*:stderr:500'
The first line requires a patch:
wayvnc -L trace
That's it! Not a single line from
src/keyboard.cwas ever emitted.Other observations
TurboVNC behaves like QEMU extension is not even supported, despite logging otherwise. First, it produces no text for
caps, aif client-side server also usescaps_toggle; secondly, compare its log from above to the one emitted after connecting to QEMU (note theRFB keycodepart, and also lack ofIGNORED):vncviewer -loglevel 100