Description of problem: $subject https://git.qemu.org/?p=qemu.git;a=commitdiff;h=a7815faffb2bd594b92aa3542d7b799cc89c5414
Some more background: The vnc protocol traditionally sends keysyms (basically keymap translated key events). Qemu must send keycodes to the guest though, so qemu must translate keysyms back to keycodes. This is why the '-k $keymap' switch exists, and the files in pc-bios/keymaps are the reverse maps. The quality of the reverse maps not very good though. In the best case they are only outdated (untouched since the initial commit in 2004), but there also cases where mappings are incomplete or plain wrong. There are bugzillas for the fr-ca map for example. I didn't feel like checking them all manually, so I created a tool to generate them from xkb data instead. Yes, keymaps are actually changing. For example they got more symbols in levels 3 and 4 (altgr and altgr+shift) over the last years, due to unicode becoming commonplace so symbols outside the traditional 8-bit sets (latin*) can easily be used now.
Fix included in qemu-kvm-rhev-2.10.0-5.el7
Created attachment 1351499 [details] de and fr keysyms diff Hi Gerd, Could you tell me how to verify this bug? Since there are a lot of languages I think are affected with your fix and my automation only covers languages 'de' and 'fr' for now..Cover all languages will consume a lot of time. But even for de and fr, I still see the keysyms bugs for them.. For example, use ps2 kbd and language de, input dead_circumflex(the keycode 49 ,keysym 0xfe52) and I get a wrong keysym adiaeresis(keycode 48,keysym 0xe4) Use ps2 kbd and language fr, input threesuperior(the keycode 49 ,keysym 0xb3) and I get a wrong keysym XF86AudioMedia(keycode 234,keysym 0x1008ff32) If you have interests, I have a test report about de and fr, although I don't double check all of the keys, but the result looks reasonable to me.. the result is a diff between the keysyms generated by guest(left) and the keysyms generated by host(right). Attach it here. BR/ Guo, Zhiyi
And I don't know how to report bug for the languages? Please comment..
(In reply to Guo, Zhiyi from comment #5) > Created attachment 1351499 [details] > de and fr keysyms diff > > Hi Gerd, > > Could you tell me how to verify this bug? Since there are a lot of > languages I think are affected with your fix and my automation only covers > languages 'de' and 'fr' for now..Cover all languages will consume a lot of > time. But even for de and fr, I still see the keysyms bugs for them.. Limiting things to the automated languages is fine. > For example, use ps2 kbd and language de, input dead_circumflex(the keycode > 49 ,keysym 0xfe52) and I get a wrong keysym adiaeresis(keycode 48,keysym > 0xe4) dead_circumflex is twice on the german keymap: # evdev 40 (0x28), QKeyCode "apostrophe", number 0x28 adiaeresis 0x28 Adiaeresis 0x28 shift dead_circumflex 0x28 altgr dead_caron 0x28 shift altgr # evdev 41 (0x29), QKeyCode "grave_accent", number 0x29 dead_circumflex 0x29 degree 0x29 shift U2032 0x29 altgr U2033 0x29 shift altgr So if qemu does see the keysym it doesn't know which of the two possible keycodes generated it. It probably makes sense to prefer the version without modifier keys in this case. Can you file a new bug for this one? > Use ps2 kbd and language fr, input threesuperior(the keycode 49 ,keysym > 0xb3) and I get a wrong keysym XF86AudioMedia(keycode 234,keysym 0x1008ff32) Hmm? keycode 49 is twosuperior for fr according to the gnome keyboard layout tool.
Before report bug, I have corrected some bugs from my autotest and rerun it for languages de, manual double check the result, I get the final results for language de: device: ps2 kbd correct keysym(present by host) wrong keysym(present by guest) keycode 49 (keysym 0xfe52, dead_circumflex) keycode 48 (keysym 0xe4, adiaeresis) keycode 15 (keysym 0x26, ampersand) keycode 45 (keysym 0x4b, K) keycode 19 (keysym 0xb0, degree) keycode 49 (keysym 0x1002033, U2033) keycode 47 (keysym 0xfe60, dead_belowdot) keycode 44 (keysym 0xfe56, dead_abovedot) keycode 51 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 61 (keysym 0xaa9, emdash) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) usb-kbd correct keysym(present by host) wrong keysym(present by guest) keycode 49 (keysym 0xfe52, dead_circumflex) keycode 48 (keysym 0xe4, adiaeresis) keycode 15 (keysym 0x26, ampersand) keycode 45 (keysym 0x4b, K) keycode 19 (keysym 0xb0, degree) keycode 49 (keysym 0x1002033, U2033) keycode 47 (keysym 0xfe60, dead_belowdot) keycode 44 (keysym 0xfe56, dead_abovedot) keycode 51 (keysym 0xad1, rightsinglequotemark) missing! keycode 55 (keysym 0xafd, singlelowquotemark) missing! keycode 56 (keysym 0xad0, leftsinglequotemark) missing! keycode 57 (keysym 0xad1, rightsinglequotemark) missing! keycode 61 (keysym 0xaa9, emdash) missing! virtio-keyboard-pci correct keysym(present by host) wrong keysym(present by guest) keycode 49 (keysym 0xfe52, dead_circumflex) keycode 48 (keysym 0xe4, adiaeresis) keycode 15 (keysym 0x26, ampersand) keycode 45 (keysym 0x4b, K) keycode 19 (keysym 0xb0, degree) keycode 49 (keysym 0x1002033, U2033) keycode 47 (keysym 0xfe60, dead_belowdot) keycode 44 (keysym 0xfe56, dead_abovedot) keycode 51 (keysym 0xad1, rightsinglequotemark) missing! keycode 55 (keysym 0xafd, singlelowquotemark) missing! keycode 56 (keysym 0xad0, leftsinglequotemark) missing! keycode 57 (keysym 0xad1, rightsinglequotemark) missing! keycode 61 (keysym 0xaa9, emdash) missing! For fr result, I will post the result after autotest finish. Hi Gerd, For language de, the wrong keysyms and missing keysyms are because of the reason you mentioned in comment 7? BR/ Guo, Zhiyi
(In reply to Guo, Zhiyi from comment #8) > Before report bug, I have corrected some bugs from my autotest and rerun it > for languages de, manual double check the result, I get the final results > for language de: > > device: ps2 kbd > correct keysym(present by host) wrong keysym(present by > guest) > keycode 49 (keysym 0xfe52, dead_circumflex) keycode 48 (keysym 0xe4, > adiaeresis) > keycode 15 (keysym 0x26, ampersand) keycode 45 (keysym 0x4b, K) > keycode 19 (keysym 0xb0, degree) keycode 49 (keysym > 0x1002033, U2033) > keycode 47 (keysym 0xfe60, dead_belowdot) keycode 44 (keysym 0xfe56, > dead_abovedot) These keysyms indeed all have multiple mappings, which is most likely the root cause here. > keycode 51 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym > 0x1008ff32, XF86AudioMedia) > keycode 61 (keysym 0xaa9, emdash) keycode 234 (keysym > 0x1008ff32, XF86AudioMedia) Dunno where this comes from. Could be small differences in the keymaps. There are two german maps (for text console, loaded using 'loadkeys'): # find /lib/kbd/keymaps -name de.map.gz /lib/kbd/keymaps/legacy/i386/qwertz/de.map.gz /lib/kbd/keymaps/xkb/de.map.gz You probably get different results depending on the keymap you are running the test with. I expect the xkb map works better, this is most likely generated from xkbcommon, which used for the qemu reverse maps too. > usb-kbd > keycode 51 (keysym 0xad1, rightsinglequotemark) missing! > keycode 55 (keysym 0xafd, singlelowquotemark) missing! > keycode 56 (keysym 0xad0, leftsinglequotemark) missing! > keycode 57 (keysym 0xad1, rightsinglequotemark) missing! > keycode 61 (keysym 0xaa9, emdash) missing! This most likely comes from usb-kbd not supporting all keys. > virtio-keyboard-pci > keycode 51 (keysym 0xad1, rightsinglequotemark) missing! Likewise.
(In reply to Gerd Hoffmann from comment #9) > (In reply to Guo, Zhiyi from comment #8) > > Before report bug, I have corrected some bugs from my autotest and rerun it > > for languages de, manual double check the result, I get the final results > > for language de: > > > > device: ps2 kbd > > correct keysym(present by host) wrong keysym(present by > > guest) > > keycode 49 (keysym 0xfe52, dead_circumflex) keycode 48 (keysym 0xe4, > > adiaeresis) > > keycode 15 (keysym 0x26, ampersand) keycode 45 (keysym 0x4b, K) > > keycode 19 (keysym 0xb0, degree) keycode 49 (keysym > > 0x1002033, U2033) > > keycode 47 (keysym 0xfe60, dead_belowdot) keycode 44 (keysym 0xfe56, > > dead_abovedot) > > These keysyms indeed all have multiple mappings, which is most likely the > root cause here. So any suggestions for how to report such bug? During double check the Fr results, I see a lot of wrong keysyms are presented by guest. I think one bug per language is a horrible idea and I don't know whether other languages except fr are suffering the same problem. This makes me thought someone may report same issue again and again, and we need to test and verify the same issue repeatly:( > > > keycode 51 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym > > 0x1008ff32, XF86AudioMedia) > > keycode 61 (keysym 0xaa9, emdash) keycode 234 (keysym > > 0x1008ff32, XF86AudioMedia) > > Dunno where this comes from. > Could be small differences in the keymaps. > There are two german maps (for text console, loaded using 'loadkeys'): > > # find /lib/kbd/keymaps -name de.map.gz > /lib/kbd/keymaps/legacy/i386/qwertz/de.map.gz > /lib/kbd/keymaps/xkb/de.map.gz > > You probably get different results depending on the keymap you are running > the test with. I expect the xkb map works better, this is most likely > generated from xkbcommon, which used for the qemu reverse maps too. For guest, I was using the default settings of rhel7.5. For client running a remote-viewer, it is a rhel7.5 host also with default settings. Use xev -event keyboard and input 'rightsinglequotemark' and 'emdash', I can get 'rightsinglequotemark' and 'emdash'. So the keysyms send to guest I think should be the same 'rightsinglequotemark' and 'emdash' > > > usb-kbd > > keycode 51 (keysym 0xad1, rightsinglequotemark) missing! > > keycode 55 (keysym 0xafd, singlelowquotemark) missing! > > keycode 56 (keysym 0xad0, leftsinglequotemark) missing! > > keycode 57 (keysym 0xad1, rightsinglequotemark) missing! > > keycode 61 (keysym 0xaa9, emdash) missing! > > This most likely comes from usb-kbd not supporting all keys. > > > virtio-keyboard-pci > > keycode 51 (keysym 0xad1, rightsinglequotemark) missing! > > Likewise. Same here, many keys are also missing in fr and other languages may have same problem. Add all missing keys found in 'de' and 'fr' to exist bug 1512456 and bug 1512459 may only solve the issues for 'de' and 'fr', but won't cure the pain for other languages users. Even for 'de' and 'fr', add all missing keys I think are quite effort consuming:(
Hi, > > These keysyms indeed all have multiple mappings, which is most likely the > > root cause here. > > So any suggestions for how to report such bug? During double check the Fr > results, I see a lot of wrong keysyms are presented by guest. I think one > bug per language is a horrible idea and I don't know whether other languages > except fr are suffering the same problem. This makes me thought someone may > report same issue again and again, and we need to test and verify the same > issue repeatly:( Just one bug, add the de map cases as example there. The underlying issue is not something in the individual keymaps, so it doesn't make sense to file a bug for each and every language. > > # find /lib/kbd/keymaps -name de.map.gz > > /lib/kbd/keymaps/legacy/i386/qwertz/de.map.gz > > /lib/kbd/keymaps/xkb/de.map.gz > > > > You probably get different results depending on the keymap you are running > > the test with. I expect the xkb map works better, this is most likely > > generated from xkbcommon, which used for the qemu reverse maps too. > > For guest, I was using the default settings of rhel7.5. Ah, right the guest keymap doesn't matter. /me is confused ... Hmm, ok, need to look into this. Can you share a link to the test so I can try reproducing this locally? > Same here, many keys are also missing in fr and other languages may have > same problem. Add all missing keys found in 'de' and 'fr' to exist bug > 1512456 and bug 1512459 may only solve the issues for 'de' and 'fr', but > won't cure the pain for other languages users. Even for 'de' and 'fr', add > all missing keys I think are quite effort consuming:( Bug 1512456 and bug 1512459 must be fixed first. I'd suggest to limit keymap testing to ps2 keyboard until these two bugs are fixed.
The result for fr and ps2 keyboard: correct keysym(present by host) wrong keysym(present by guest) keycode 49 (keysym 0xb3, threesuperior) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 10 (keysym 0x26, ampersand) keycode 45 (keysym 0x6b, k) keycode 49 (keysym 0xb9, onesuperior) keycode 10 (keysym 0xfe5a, dead_caron) keycode 49 (keysym 0xfe5b, dead_cedilla) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 10 (keysym 0xfe5a, dead_caron) keycode 48 (keysym 0xfe51, dead_acute) keycode 10 (keysym 0xfe5c, dead_ogonek) keycode 21 (keysym 0xb1, plusminus) keycode 11 (keysym 0x7e, asciitilde) keycode 49 (keysym 0xb9, onesuperior) keycode 11 (keysym 0xc9, Eacute) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 12 (keysym 0xfe55, dead_breve) keycode 51 (keysym 0xfe54, dead_macron) keycode 13 (keysym 0x1002014, U2014) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 14 (keysym 0x1002013, U2013) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 15 (keysym 0x7c, bar) keycode 94 (keysym 0x8bc, lessthanequal) keycode 15 (keysym 0x1002011, U2011) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 16 (keysym 0xc8, Egrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 18 (keysym 0xc7, Ccedilla) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 19 (keysym 0x40, at) keycode 38 (keysym 0xe4, adiaeresis) keycode 19 (keysym 0xc0, Agrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 20 (keysym 0x8bd, notequal) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 21 (keysym 0xb1, plusminus) keycode 18 (keysym 0xc7, Ccedilla) keycode 25 (keysym 0xe2, acircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 25 (keysym 0xc2, Acircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 26 (keysym 0xa2, cent) keycode 54 (keysym 0xae, registered) keycode 27 (keysym 0xea, ecircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 27 (keysym 0xca, Ecircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 28 (keysym 0xfe, thorn) keycode 33 (keysym 0xf4, ocircumflex) keycode 28 (keysym 0xde, THORN) keycode 33 (keysym 0xd4, Ocircumflex) keycode 29 (keysym 0xff, ydiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 30 (keysym 0xfb, ucircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 30 (keysym 0xdb, Ucircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 32 (keysym 0x13bd, oe) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 32 (keysym 0x13bc, OE) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 33 (keysym 0xf4, ocircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 33 (keysym 0xd4, Ocircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 34 (keysym 0xfe53, dead_tilde) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 35 (keysym 0xf8, oslash) keycode 32 (keysym 0x13bd, oe) keycode 35 (keysym 0xd8, Oslash) keycode 32 (keysym 0x13bc, OE) keycode 38 (keysym 0xe4, adiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 38 (keysym 0xc4, Adiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 39 (keysym 0xafe, doublelowquotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 40 (keysym 0xeb, ediaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 40 (keysym 0xcb, Ediaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 41 (keysym 0xad0, leftsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 41 (keysym 0xafd, singlelowquotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 42 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 42 (keysym 0xa5, yen) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 43 (keysym 0xf0, eth) keycode 40 (keysym 0xeb, ediaeresis) keycode 43 (keysym 0xd0, ETH) keycode 40 (keysym 0xcb, Ediaeresis) keycode 44 (keysym 0xfc, udiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 44 (keysym 0xdc, Udiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 45 (keysym 0xef, idiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 45 (keysym 0xcf, Idiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 46 (keysym 0x1000140, U0140) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 46 (keysym 0x100013f, U013F) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 47 (keysym 0xf6, odiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 47 (keysym 0xd6, Odiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 48 (keysym 0xfe51, dead_acute) keycode 58 (keysym 0xbf, questiondown) keycode 48 (keysym 0xd9, Ugrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 51 (keysym 0xfe54, dead_macron) keycode 35 (keysym 0xd8, Oslash) keycode 52 (keysym 0xab, guillemotleft) keycode 25 (keysym 0xe2, acircumflex) keycode 52 (keysym 0xad2, leftdoublequotemark) keycode 55 (keysym 0x8fb, leftarrow) keycode 53 (keysym 0xad3, rightdoublequotemark) keycode 56 (keysym 0x8fc, uparrow) keycode 54 (keysym 0xae, registered) keycode 27 (keysym 0xca, Ecircumflex) keycode 55 (keysym 0x100202f, U202F) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 55 (keysym 0x8fb, leftarrow) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 56 (keysym 0x8fe, downarrow) keycode 30 (keysym 0xfb, ucircumflex) keycode 56 (keysym 0x8fc, uparrow) keycode 30 (keysym 0xdb, Ucircumflex) keycode 57 (keysym 0xac, notsign) keycode 49 (keysym 0xb9, onesuperior) keycode 57 (keysym 0x8fd, rightarrow) keycode 31 (keysym 0xce, Icircumflex) keycode 58 (keysym 0xbf, questiondown) keycode 20 (keysym 0x5d, bracketright) keycode 58 (keysym 0x1002026, U2026) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 59 (keysym 0x10022c5, U22C5) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 60 (keysym 0x1002215, U2215) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 61 (keysym 0xa1, exclamdown) keycode 10 (keysym 0xfe5a, dead_caron) keycode 61 (keysym 0x1002212, U2212) keycode 234 (keysym 0x1008ff32, XF86AudioMedia)
Hi Gerd, Any finds about wrong keysym XF86AudioMedia for de and fr? If issues are all covered by comment 11, I can summary at this bug and judge whether this bug can be verified:) BR/ Guo, Zhiyi
Hi Ademar, Base on comment 5 - comment 13 and the Bug 1513870 - For VNC connection, characters '|' and '<' are both recognized as '>' in linux guests, while '<' and '>' are both recognized as '|' in windows guest, I think we should let this bug FailQA first and let Gerd to investigate after his back? BR/ Guo, Zhiyi
Base on comment 15, FailQA
See also bug 1513870. Just sent a patch for that one, so adding it as dependency here.
Hi Gerd, How do we treat this bug? Should it be moved to 7.6 or close this one and use a new bug to track the keymaps issue for vnc? I have tested again using -k de and ps2 keyboard against latest qemu-kvm-rhev-2.10.0-21.el7.x86_64, the incorrect keys are still happening as comment 8. Go through comment 5 to comment 13, seems there are multiple uncertain parts that cause buggy keysyms. BR/ Zhiyi, Guo
(In reply to Guo, Zhiyi from comment #19) > Hi Gerd, > > How do we treat this bug? Should it be moved to 7.6 or close this one and > use a new bug to track the keymaps issue for vnc? Bug 1513870 is a workaround for the most annoying case in the en-us keymap, it's not a complete fix. Upstream fix went in last week, but IMO this isn't serve enough to qualify as 7.5 blocker. So lets keep this open, to fix it for real in 7.6 (and possibly 7.5.z).
please test https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15410008
(In reply to Gerd Hoffmann from comment #22) > please test > https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15410008 Hi Gerd, Could you help to regenerate one..? I just notice this needinfo. FYI, I have just tried on upstream qemu 2.11.50, I can see the result is better than downstream for language de. Test the problem keys and ps2-kbd in https://bugzilla.redhat.com/show_bug.cgi?id=1503128#c8 , only keycode 51 (keysym 0xad1, rightsinglequotemark) is missed in guest, qemu will prompt:(qemu) qemu-system-x86_64: warning: no scancode found for keysym 2769 But try on some keys against fr, result is changed, but it is still bad. The difference between the downsream and upstream I think is keycode 234 (keysym 0x1008ff32, XF86AudioMedia) is replaced by no scancode found for keysym xx BR/ Zhiyi, Guo
https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15733975
Test against this package https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=15733975 Result for de: correct keysym(present by host) wrong keysym(present by guest) keycode 51 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 55 (keysym 0xafd, singlelowquotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 56 (keysym 0xad0, leftsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 57 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 61 (keysym 0xaa9, emdash) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) Result for fr: correct keysym(present by host) wrong keysym(present by guest) keycode 49 (keysym 0xb3, threesuperior) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 49 (keysym 0xb9, onesuperior) keycode 10 (keysym 0xfe5a, dead_caron) keycode 49 (keysym 0xfe5b, dead_cedilla) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 10 (keysym 0xfe5a, dead_caron) keycode 48 (keysym 0xfe51, dead_acute) keycode 10 (keysym 0xfe5c, dead_ogonek) keycode 21 (keysym 0xb1, plusminus) keycode 11 (keysym 0xc9, Eacute) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 12 (keysym 0xfe55, dead_breve) keycode 51 (keysym 0xfe54, dead_macron) keycode 13 (keysym 0x1002014, U2014) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 14 (keysym 0x1002013, U2013) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 15 (keysym 0x1002011, U2011) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 16 (keysym 0xc8, Egrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 18 (keysym 0xc7, Ccedilla) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 19 (keysym 0xc0, Agrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 20 (keysym 0x8bd, notequal) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 21 (keysym 0xb1, plusminus) keycode 18 (keysym 0xc7, Ccedilla) keycode 25 (keysym 0xe2, acircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 25 (keysym 0xc2, Acircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 27 (keysym 0xea, ecircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 27 (keysym 0xca, Ecircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 28 (keysym 0xfe, thorn) keycode 33 (keysym 0xf4, ocircumflex) keycode 28 (keysym 0xde, THORN) keycode 33 (keysym 0xd4, Ocircumflex) keycode 29 (keysym 0xff, ydiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 30 (keysym 0xfb, ucircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 30 (keysym 0xdb, Ucircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 32 (keysym 0x13bd, oe) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 32 (keysym 0x13bc, OE) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 33 (keysym 0xf4, ocircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 33 (keysym 0xd4, Ocircumflex) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 34 (keysym 0xfe53, dead_tilde) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 35 (keysym 0xf8, oslash) keycode 32 (keysym 0x13bd, oe) keycode 35 (keysym 0xd8, Oslash) keycode 32 (keysym 0x13bc, OE) keycode 38 (keysym 0xe4, adiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 38 (keysym 0xc4, Adiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 39 (keysym 0xafe, doublelowquotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 40 (keysym 0xeb, ediaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 40 (keysym 0xcb, Ediaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 41 (keysym 0xad0, leftsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 41 (keysym 0xafd, singlelowquotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 42 (keysym 0xad1, rightsinglequotemark) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 42 (keysym 0xa5, yen) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 43 (keysym 0xf0, eth) keycode 40 (keysym 0xeb, ediaeresis) keycode 43 (keysym 0xd0, ETH) keycode 40 (keysym 0xcb, Ediaeresis) keycode 44 (keysym 0xfc, udiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 44 (keysym 0xdc, Udiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 45 (keysym 0xef, idiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 45 (keysym 0xcf, Idiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 46 (keysym 0x1000140, U0140) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 46 (keysym 0x100013f, U013F) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 47 (keysym 0xf6, odiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 47 (keysym 0xd6, Odiaeresis) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 48 (keysym 0xfe51, dead_acute) keycode 58 (keysym 0xbf, questiondown) keycode 48 (keysym 0xd9, Ugrave) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 51 (keysym 0xfe54, dead_macron) keycode 35 (keysym 0xd8, Oslash) keycode 52 (keysym 0xab, guillemotleft) keycode 25 (keysym 0xe2, acircumflex) keycode 52 (keysym 0xad2, leftdoublequotemark) keycode 55 (keysym 0x8fb, leftarrow) keycode 53 (keysym 0xad3, rightdoublequotemark) keycode 56 (keysym 0x8fc, uparrow) keycode 54 (keysym 0xae, registered) keycode 27 (keysym 0xca, Ecircumflex) keycode 55 (keysym 0x100202f, U202F) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 55 (keysym 0x8fb, leftarrow) keycode 29 (keysym 0x13be, Ydiaeresis) keycode 56 (keysym 0x8fe, downarrow) keycode 30 (keysym 0xfb, ucircumflex) keycode 56 (keysym 0x8fc, uparrow) keycode 30 (keysym 0xdb, Ucircumflex) keycode 57 (keysym 0xac, notsign) keycode 49 (keysym 0xb9, onesuperior) keycode 57 (keysym 0x8fd, rightarrow) keycode 31 (keysym 0xce, Icircumflex) keycode 58 (keysym 0xbf, questiondown) keycode 20 (keysym 0x5d, bracketright) keycode 58 (keysym 0x1002026, U2026) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 59 (keysym 0x10022c5, U22C5) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 60 (keysym 0x1002215, U2215) keycode 234 (keysym 0x1008ff32, XF86AudioMedia) keycode 61 (keysym 0xa1, exclamdown) keycode 10 (keysym 0xfe5a, dead_caron) keycode 61 (keysym 0x1002212, U2212) keycode 234 (keysym 0x1008ff32, XF86AudioMedia)
And for media keys, like: 'NEXTSONG', 'PREVIOUSSONG', 'STOPCD', 'PLAYPAUSE', 'MUTE', 'VOLUMEUP', 'VOLUMEDOWN', 'MAIL', 'CALC', 'COMPUTER', 'SEARCH', 'HOMEPAGE', 'BACK', 'FORWARD', 'STOP', 'REFRESH', 'FAVORITES' All these keys are lost in guest if set qemu keysym to de and fr
Can you re-test against a 2.12 build? The rebase should have picked up a bunch fixes from upstream.
(In reply to Gerd Hoffmann from comment #27) > Can you re-test against a 2.12 build? > The rebase should have picked up a bunch fixes from upstream. The result for ps2 keyboard: # xev -event keyboard | grep keysym Result for fr keyboard: correct keysym(present by host) wrong keysym(present by guest) state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 17 (keysym 0x21, exclam), same_screen YES, state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES state 0x2010, keycode 17 (keysym 0x21, exclam), same_screen YES, state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES, null state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES, null state 0x2010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES state 0x2010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, null state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, null state 0x2010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, null state 0x2010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, null state 0x2010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, null state 0x2010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, null state 0x2010, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES, null state 0x2010, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES, null state 0x2010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, null state 0x2010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, null state 0x2000, keycode 127 (keysym 0xff13, Pause), same_screen YES, null state 0x2000, keycode 127 (keysym 0xff13, Pause), same_screen YES, null Result for de keyboard: correct keysym(present by host) wrong keysym(present by guest) state 0x4010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, null state 0x4010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, null state 0x4010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, null state 0x4010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, null state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, null state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, null state 0x4010, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES, null state 0x4010, keycode 100 (keysym 0xff23, Henkan_Mode), same_screen YES, null state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, null state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, null state 0x4000, keycode 127 (keysym 0xff13, Pause), same_screen YES, null state 0x4000, keycode 127 (keysym 0xff13, Pause), same_screen YES, null
Hi Gerd, could you help to check the comment 28? Thanks!
Need to look at the french map issues in detail. Seems to be improved but some issues left still. So leaving the bug open for that, but deferring to 7.7. German map looks good. The keys with the null mapping are not present on a german keyboard in the first place, so that isn't a problem.
Moving to Advancen Virt. Can you retest with a qemu 3.1 build please? Also: In case the french map still has issues, can you check whenever the nodeadkeys map works better? Use "qemu-keymap -l fr -v nodeadkeys" to generate one and pass it to qemu using -k
(In reply to Gerd Hoffmann from comment #32) > Moving to Advancen Virt. > > Can you retest with a qemu 3.1 build please? > > Also: In case the french map still has issues, can you check whenever the > nodeadkeys map works better? > Use "qemu-keymap -l fr -v nodeadkeys" to generate one and pass it to qemu > using -k Hi Gerd I test German map first, the result seems terrible.... Both host and guest are x11 mode, I will test french map and add comments tomorrow . correct keysym(present by host) wrong keysym(present by guest) state 0x2000, keycode 49 (keysym 0xb2, twosuperior), same_screen YES, state 0x2000, keycode 11 (keysym 0xe9, eacute), same_screen YES state 0x2000, keycode 49 (keysym 0xb2, twosuperior), same_screen YES, state 0x2000, keycode 11 (keysym 0xe9, eacute), same_screen YES state 0x2010, keycode 11 (keysym 0xe9, eacute), same_screen YES, qemu-kvm: warning: no scancode found for keysym 233 state 0x2010, keycode 11 (keysym 0xe9, eacute), same_screen YES, qemu-kvm: warning: no scancode found for keysym 233 state 0x2010, keycode 12 (keysym 0x22, quotedbl), same_screen YES, state 0x2010, keycode 11 (keysym 0xe9, eacute), same_screen YES, state 0x2010, keycode 12 (keysym 0x22, quotedbl), same_screen YES, state 0x2010, keycode 11 (keysym 0xe9, eacute), same_screen YES, state 0x2010, keycode 13 (keysym 0x27, apostrophe), same_screen YES, state 0x2010, keycode 51 (keysym 0xb5, mu), same_screen YES, state 0x2010, keycode 13 (keysym 0x27, apostrophe), same_screen YES, state 0x2010, keycode 51 (keysym 0xb5, mu), same_screen YES, state 0x2010, keycode 14 (keysym 0x28, parenleft), same_screen YES, state 0x2010, keycode 17 (keysym 0x21, exclam), same_screen YES, state 0x2010, keycode 14 (keysym 0x28, parenleft), same_screen YES, state 0x2010, keycode 17 (keysym 0x21, exclam), same_screen YES, state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES, state 0x2010, keycode 12 (keysym 0x22, quotedbl), same_screen YES, state 0x2010, keycode 15 (keysym 0xa7, section), same_screen YES, state 0x2010, keycode 12 (keysym 0x22, quotedbl), same_screen YES, state 0x2010, keycode 16 (keysym 0xe8, egrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 232 state 0x2010, keycode 16 (keysym 0xe8, egrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 232 state 0x2010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x2010, keycode 10 (keysym 0x26, ampersand), same_screen YES, state 0x2010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x2010, keycode 10 (keysym 0x26, ampersand), same_screen YES, state 0x2010, keycode 19 (keysym 0xe0, agrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 224 state 0x2010, keycode 19 (keysym 0xe0, agrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 224 state 0x2010, keycode 20 (keysym 0x29, parenright), same_screen YES, state 0x2010, keycode 10 (keysym 0x26, ampersand), same_screen YES, state 0x2010, keycode 20 (keysym 0x29, parenright), same_screen YES, state 0x2010, keycode 10 (keysym 0x26, ampersand), same_screen YES, state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES, state 0x2010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x2010, keycode 21 (keysym 0x2d, minus), same_screen YES, state 0x2010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x2010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, state 0x2010, keycode 25 (keysym 0x7a, z), same_screen YES, state 0x2010, keycode 29 (keysym 0x79, y), same_screen YES, state 0x2010, keycode 25 (keysym 0x7a, z), same_screen YES, state 0x2010, keycode 29 (keysym 0x79, y), same_screen YES, state 0x2010, keycode 29 (keysym 0x79, y), same_screen YES, state 0x2010, keycode 52 (keysym 0x77, w), same_screen YES, state 0x2010, keycode 29 (keysym 0x79, y), same_screen YES, state 0x2010, keycode 52 (keysym 0x77, w), same_screen YES, state 0x2010, keycode 34 (keysym 0xfe52, dead_circumflex), same_screen YES, state 0x2010, keycode 49 (keysym 0xb2, twosuperior), same_screen YES, state 0x2010, keycode 34 (keysym 0xfe52, dead_circumflex), same_screen YES, state 0x2010, keycode 49 (keysym 0xb2, twosuperior), same_screen YES, state 0x2010, keycode 35 (keysym 0x24, dollar), same_screen YES, state 0x2010, keycode 13 (keysym 0x27, apostrophe), same_screen YES, state 0x2010, keycode 35 (keysym 0x24, dollar), same_screen YES, state 0x2010, keycode 13 (keysym 0x27, apostrophe), same_screen YES, state 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state 0x2010, keycode 47 (keysym 0x6d, m), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 47 (keysym 0x6d, m), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 48 (keysym 0xf9, ugrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x2010, keycode 48 (keysym 0xf9, ugrave), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x2010, keycode 51 (keysym 0xb5, mu), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 51 (keysym 0xb5, mu), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 52 (keysym 0x77, w), same_screen YES, state 0x2010, keycode 25 (keysym 0x7a, z), same_screen YES, state 0x2010, keycode 52 (keysym 0x77, w), same_screen YES, state 0x2010, keycode 25 (keysym 0x7a, z), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 59 (keysym 0x3b, semicolon), same_screen YES, state 0x2010, keycode 58 (keysym 0x2c, comma), same_screen YES, state 0x2010, keycode 59 (keysym 0x3b, semicolon), same_screen YES, state 0x2010, keycode 60 (keysym 0x3a, colon), same_screen YES, state 0x2010, keycode 59 (keysym 0x3b, semicolon), same_screen YES, state 0x2010, keycode 60 (keysym 0x3a, colon), same_screen YES, state 0x2010, keycode 59 (keysym 0x3b, semicolon), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 19 (keysym 0xe0, agrave), same_screen YES, state 0x2010, keycode 61 (keysym 0x3d, equal), same_screen YES, state 0x2010, keycode 19 (keysym 0xe0, agrave), same_screen YES, state 0x2010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x2010, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x2010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x2010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x2010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 state 0x2010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319
Hi, Gerd I'm not sure I understand "check whenever the nodeadkeys map works better" when I test fr keyboard,please help check. Test steps: 1. qemu-keymap -l fr -v nodeadkeys 2. choose Region & Language "French(no dead keys)" 3. boot guest with command "-vnc :0 -k fr" 4. get host keycode and guest keycode to compare.Result for fr keyboard: # xev -event keyboard | grep keysym correct keysym(present by host) wrong keysym(present by guest) state 0x4010, keycode 34 (keysym 0x5e, asciicircum), same_screen YES, state 0x4010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x4010, keycode 34 (keysym 0x5e, asciicircum), same_screen YES, state 0x4010, keycode 18 (keysym 0xe7, ccedilla), same_screen YES, state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 Best Regards Liu Nana
> state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state > 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, Hmm, totally messed up. Can you double-check you actually used the correct keymaps?
> 1. qemu-keymap -l fr -v nodeadkeys qemu-keymap -l fr -v nodeadkeys > /some/dir/fr-nodeadkeys > 2. choose Region & Language "French(no dead keys)" Yes (both guest and host). > 3. boot guest with command "-vnc :0 -k fr" "-vnc :0 -k /some/dir/fr-nodeadkeys"
(In reply to Gerd Hoffmann from comment #35) > > state 0x2010, keycode 24 (keysym 0x61, a), same_screen YES, state > > 0x2010, keycode 38 (keysym 0x71, q), same_screen YES, > > Hmm, totally messed up. Can you double-check you actually used the correct > keymaps? Hi, I retest German keymap with three ways: One: Steps: 1. boot guest with "-vnc :0 -k de" 2. choose Region & Language "German(no dead keys)" inside both guest and host 3. get host keycode and guest keycode to compare.Result for de keyboard: # xev -event keyboard | grep keysym correct keysym(present by host) wrong keysym(present by guest) state 0x10, keycode 49 (keysym 0x5e, asciicircum), same_screen YES, qemu-kvm: warning: no scancode found for keysym 94 state 0x10, keycode 49 (keysym 0x5e, asciicircum), same_screen YES, qemu-kvm: warning: no scancode found for keysym 94 state 0x10, keycode 21 (keysym 0xb4, acute), same_screen YES, qemu-kvm: warning: no scancode found for keysym 180 state 0x10, keycode 21 (keysym 0xb4, acute), same_screen YES, qemu-kvm: warning: no scancode found for keysym 180 state 0x10, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x4010, keycode 102 (keysym 0xff22, Muhenkan), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65314 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 Two: Steps: 1. qemu-keymap -l de -v nodeadkeys > /root/de-nodeadkeys 2. boot guest with "-vnc :0 -k /root/de-nodeadkeys" 3. choose Region & Language "German(no dead keys)" inside both guest and host 4. get host keycode and guest keycode to compare.Result for de keyboard: # xev -event keyboard | grep keysym correct keysym(present by host) wrong keysym(present by guest) state 0x10, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 Three: this Region & Language is same as comment 33. Steps: 1. qemu-keymap -l de -v nodeadkeys > /root/de-nodeadkeys 2. boot guest with "-vnc :0 -k /root/de-nodeadkeys" 3. choose Region & Language "Belgian" inside both guest and host 4. get host keycode and guest keycode to compare.Result for de keyboard: # xev -event keyboard | grep keysym The result is messed as comment 33,too. Besides, I boot guest with "-vnc :0 -k de" in comment 33.
(In reply to Gerd Hoffmann from comment #36) > > 1. qemu-keymap -l fr -v nodeadkeys > > qemu-keymap -l fr -v nodeadkeys > /some/dir/fr-nodeadkeys > > > 2. choose Region & Language "French(no dead keys)" > > Yes (both guest and host). > > > 3. boot guest with command "-vnc :0 -k fr" > > "-vnc :0 -k /some/dir/fr-nodeadkeys" I retest french with steps: 1. qemu-keymap -l fr -v nodeadkeys > /root/fr-nodeadkeys 2. boot guest with "-vnc :0 -k /root/fr-nodeadkeys" 3. choose Region & Language "French(no dead keys)" inside both guest and host 4. get host keycode and guest keycode to compare.Result for fr keyboard: # xev -event keyboard | grep keysym correct keysym(present by host) wrong keysym(present by guest) state 0x4010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x4010, keycode 132 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x10, keycode 97 (keysym 0x0, NoSymbol), same_screen YES, qemu-kvm: warning: no scancode found for keysym 0 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 state 0x4010, keycode 101 (keysym 0xff27, Hiragana_Katakana), same_screen YES, qemu-kvm: warning: no scancode found for keysym 65319 Seems much better, please help check this. Best Regards Liu Nana
upstream patches submitted: https://patchwork.ozlabs.org/patch/1057045/ https://patchwork.ozlabs.org/patch/1057041/ We'll probably pick them up with the next rebase.
Fixed in 4.0 upstream.
Test against qemu-kvm-4.1.0-9.module+el8.1.0+4210+23b2046a.x86_64, for German, we still miss some keys(checked from xev): Missing: keycode 55 (keysym 0xafd, singlelowquotemark) keycode 56 (keysym 0xad0, leftsinglequotemark) keycode 57 (keysym 0xad1, rightsinglequotemark) keycode 97 (keysym 0x0, NoSymbol) keycode 47 (keysym 0xfe59, dead_doubleacute) keycode 48 (keysym 0xfe52, dead_circumflex) keycode 51 (keysym 0xad1, rightsinglequotemark) keycode 48 (keysym 0xfe5a, dead_caron) keycode 51 (keysym 0xfe55, dead_breve) keycode 34 (keysym 0xfe57, dead_diaeresis) keycode 34 (keysym 0xfe58, dead_abovering) keycode 21 (keysym 0xfe51, dead_acute) keycode 21 (keysym 0xfe50, dead_grave) keycode 21 (keysym 0xfe5b, dead_cedilla) keycode 21 (keysym 0xfe5c, dead_ogonek) Incorrect key: keycode 47 (keysym 0xfe60, dead_belowdot)(correct keysym, result captured from host) -> keycode 44 (keysym 0xfe56, dead_abovedot)(incorrect keysym, captured from vm)
Created attachment 1613971 [details] picture show positions of missing/incorrect keys Missing keys, marked by black ring Incorrect key, marked by red ring
Created attachment 1613988 [details] missing and incorrect keys for fr oops..seems Fr key maps have been turned into mess again.. See the picture, black ring means missing key and red ring means incorrect key
The vm and client key configurations: 1)qemu boot with -k de or -k fr 2)Client machine(running remote-viewer) configured to de or fr input method 3)8.1 vm configured to de or fr display and input language
Hi Gerd, could you help to check the comment 43 - 46? Am I missing something that can improve the test result? BR/ Zhiyi
(In reply to Guo, Zhiyi from comment #45) > Created attachment 1613988 [details] > missing and incorrect keys for fr > > oops..seems Fr key maps have been turned into mess again.. > > See the picture, black ring means missing key and red ring means incorrect > key Switch the input language of vm and vnc client to French(no dead keys) really improve a lot. Only leftsinglequotemark(keycode 55, keysym 0xad0) and rightsinglequotemark(keycode 56, keysym 0xad1) missing, no incorrect keys found.
Created attachment 1614391 [details] A picture show missing keys A picture show missing keys in comment 48
(In reply to Guo, Zhiyi from comment #43) > Test against qemu-kvm-4.1.0-9.module+el8.1.0+4210+23b2046a.x86_64, for > German, we still miss some keys(checked from xev): > > Missing: > keycode 55 (keysym 0xafd, singlelowquotemark) > keycode 56 (keysym 0xad0, leftsinglequotemark) > keycode 57 (keysym 0xad1, rightsinglequotemark) > keycode 97 (keysym 0x0, NoSymbol) > keycode 47 (keysym 0xfe59, dead_doubleacute) > keycode 48 (keysym 0xfe52, dead_circumflex) > keycode 51 (keysym 0xad1, rightsinglequotemark) > keycode 48 (keysym 0xfe5a, dead_caron) > keycode 51 (keysym 0xfe55, dead_breve) > keycode 34 (keysym 0xfe57, dead_diaeresis) > keycode 34 (keysym 0xfe58, dead_abovering) > keycode 21 (keysym 0xfe51, dead_acute) > keycode 21 (keysym 0xfe50, dead_grave) > keycode 21 (keysym 0xfe5b, dead_cedilla) > keycode 21 (keysym 0xfe5c, dead_ogonek) > > Incorrect key: > > keycode 47 (keysym 0xfe60, dead_belowdot)(correct keysym, result captured > from host) -> keycode 44 (keysym 0xfe56, dead_abovedot)(incorrect keysym, > captured from vm) Switch the input language of vm and vnc client to German(no dead keys) also improve a lot: Missing: keycode 55 (keysym 0xafd, singlelowquotemark) keycode 56 (keysym 0xad0, leftsinglequotemark) keycode 57 (keysym 0xad1, rightsinglequotemark) keycode 61 (keysym 0xaa9, emdash) keycode 51 (keysym 0xad1, rightsinglequotemark)
Compare the result between German(no dead keys) and French(no dead keys), here is the summary: Missing in both German(no dead keys) and French(no dead keys): keycode 56 (keysym 0xad0, leftsinglequotemark) keycode 57 (keysym 0xad1, rightsinglequotemark) Should be same reason as above because of vnc only use keysym: keycode 51 (keysym 0xad1, rightsinglequotemark) Key doesn't exist in French(no dead keys) layout: keycode 61 (keysym 0xaa9, emdash) keycode 55 (keysym 0xafd, singlelowquotemark)
Hi Gerd, Please refer to the summary in comment 51, the improvements for keysyms of vnc are significant. I suppose the problem left won't cause much trouble to the end user? Can we mark this bug verified and use a new bug to track the problem in comment 51? BR/ Zhiyi
(In reply to Guo, Zhiyi from comment #52) > Hi Gerd, > > Please refer to the summary in comment 51, the improvements for keysyms > of vnc are significant. I suppose the problem left won't cause much trouble > to the end user? Can we mark this bug verified and use a new bug to track > the problem in comment 51? > > BR/ > Zhiyi Gerd, any feedback for this? BR/ Zhiyi
(In reply to Guo, Zhiyi from comment #52) > Hi Gerd, > > Please refer to the summary in comment 51, the improvements for keysyms > of vnc are significant. I suppose the problem left won't cause much trouble > to the end user? Can we mark this bug verified and use a new bug to track > the problem in comment 51? Yes, sounds fine.
(In reply to Guo, Zhiyi from comment #51) > Compare the result between German(no dead keys) and French(no dead keys), > here is the summary: > Missing in both German(no dead keys) and French(no dead keys): > keycode 56 (keysym 0xad0, leftsinglequotemark) > keycode 57 (keysym 0xad1, rightsinglequotemark) > > Should be same reason as above because of vnc only use keysym: > keycode 51 (keysym 0xad1, rightsinglequotemark) > > Key doesn't exist in French(no dead keys) layout: > keycode 61 (keysym 0xaa9, emdash) > keycode 55 (keysym 0xafd, singlelowquotemark) These have been tracked by Bug 1753814 - Some keysyms are missing when using vnc display + German/French keyboard layout
Verified per comment 53 and 54
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2019:3723