Hi list!

This is not the first post on this topic, but I haven't seen any solution about it. I tested so far linux guest on windows host and the AltGr key is dead in the guest. (using git master branch)

On french keyboard, the keys to yield the bar "|" are alt-gr + 6.
when executing this combination on keyboard, Windows generates this:
    - L-CTRL
    - R-ALT
    - 6

in Qemu (only digged gtk UI so far), pressing alt-gr + 6 generates the following trace
    - L-CTRL
    - L-ALT   <-- note left here
    - 6

This comes from the Win32 call MapVirtualKey in gtk.c that maps to scancodes without left/right distinction. Even when sending the right alt to the guest, the alt-gr key remains dead because of ctrl being virtually pressed. I found out however that if R-ALT + 6 is sent without the ctrl key, the guest finally recognize it and prints the bar, @, # and other [}{].

To make things easier, Windows delivers the ctrl code before the alt code, so catching it cleanly before delivery to the guest is probably tough. I could however come to an easy and quick fix with sending the "ctrl up" signal to the guest before the "r-alt down" is sent.

My current code do not handle all corner cases (eg: turbo mode) and only fixes the gtk ui, but would such fix be accepted in the repo?
Would this break somehow the windows guest on windows host?

Thanks,
Rémi

Reply via email to