Can't type | ( pipe ) over vnc
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
qemu (Ubuntu) | ||||||
Bionic |
Fix Released
|
Undecided
|
Phillip Susi | |||
Cosmic |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
After upgrading from 16.04 to 18.04, users are unable to type a | or > in their virtual machines when accessing them via vnc. This happened because upstream added a key to the keymap that can also produce these symbols and exists only on European keyboards, but it uses different modifier keys to produce these symbols so trying to type a | or a > results in a < instead. Simply removing this new non-existent scan code from the keymap resolves the issue.
[Test Case]
Start a virtual machine and connect to it via vnc. I am using "tightvnc" on Windows, and upstream indicated that some vnc clients send the raw scan code instead of keysyms, in which case this issue would not arise.
That doesn't have to start a lot and can be as trivial as :
$ qemu-system-x86_64 -vnc :1 -cdrom <path to ubuntu iso>
$ vncviewer 127.0.0.1:5901
# no need to fully boot that, just go to the menu
# now on a system with us keyboard (or just en_us input layout) try to use a | which will not work.
With the fix you will be able to type the chars again as you'd expect it.
[Regression Potential]
There should be no regression potential for actual en-us keyboards since this key does not exist. European keyboards may be unable to use this other key they have unless they set the correct keymap, but all of its symbols are duplicates from other keys on the keyboard, rendering it fully redundant.
[Notes]
Upstream has already added logic to pick the mapping the matches the current modifier keys to resolve this, so cosmic should be unaffected and so this patch only applies to bionic.
This was stalled a while due to other SRUs being in flight, in the meantime other Distros picked the same giving this some extra confidence:
- Arch: https:/
- Fedora: https:/
[Original Description]
I tried booting some Ubuntu images today on my Xen server where I use VNC to remotely access the VM, and am unable to type a | ( pipe ). I opened the keyboard layout utility and when I press the \ key, it recognizes it, but when I hold shift and press the key, it claims that I am pressing some key between left shift and Z that does not actually exist on US keyboards, and that types a > instead.
This did not used to happen, and probably started when I upgraded the server from 16.04 to 18.04 a while back and I just haven't been testing VMs since then.
CVE References
Changed in qemu (Ubuntu): | |
milestone: | none → ubuntu-18.04.1 |
description: | updated |
Changed in qemu (Ubuntu): | |
status: | New → In Progress |
tags: | added: patch |
Changed in qemu (Ubuntu): | |
milestone: | ubuntu-18.04.1 → none |
Changed in qemu (Ubuntu Bionic): | |
milestone: | none → bionic-updates |
Changed in qemu (Ubuntu Cosmic): | |
status: | In Progress → Fix Released |
Changed in qemu (Ubuntu Bionic): | |
status: | New → In Progress |
no longer affects: | qemu (Ubuntu) |
description: | updated |
Changed in qemu (Ubuntu Bionic): | |
assignee: | nobody → Phillip Susi (psusi) |
description: | updated |
That key actually exists on my german keyboard :-)
It would be:
< - no modifier
> - with shift
| - with right alt (also called alt-gr)
I'd not at all see why your setup goes for a EU keyboard mapping in your setup, but you might try "right-alt + <that key>".
Qemu doesn't "do" anything there except passing through.
I'd more assume that might be an option of your VNC client, did you upgrade the system the VNC client is on as well at the same time?