Am Freitag, den 08.05.2009, 18:06 +0200 schrieb Guido Günther: > On Sun, May 03, 2009 at 12:22:18AM +0200, Paul Menzel wrote: > > So it seems to be a QEMU bug. I therefore reassign. I thought it might > > be fixed with 0.10.3 because of this in changelog.gz > > > > - Fix keyboard mapping on newer Xords with non-default keymaps > > (balrog) > > > > but I can still reproduce this. > While the VM is on the grub command line we certainly can't expect to > have a german keyboard layout but what we *want* to have is an US > layout. > > On a german keyboard pressing the key next to backspace (which > corresponds to the key that has the equal sign on an american keybard) > gives these events:
Great idea to use the debug mode. With Vinagre it is activated with the
following command [3]. (Option also listed by vinagre --help-all.)
$ vinagre --gtk-vnc-debug
> (vm started with -k de):
> gtk-vnc-DEBUG: press keycode: 21 state: 0 group 0, keyval: 39
> gtk-vnc-DEBUG: Key event 39 21 1 1
> gtk-vnc-DEBUG: release keycode: 21 state: 0 group 0, keyval: 39
> gtk-vnc-DEBUG: Key event 39 21 0 1
>
> While on an american keyboard you get:
>
> (vm started with -k us):
> gtk-vnc-DEBUG: press keycode: 21 state: 0 group 0, keyval: 61
>
> So same keycode but different keyval. 61 is the equal sign (=) while 39
> is the tick (') which is the correct keyval for a german keyboard (so
> the vnc part looks alright). *However* grub in the virtual machine
> prints a closing brace at this point while it should print an equal
> sign.
>
> Paul is that what you're seeing?
Yeah. That is almost correct. I have to add that I use a different
layout NEO 2 [1], which claims to be optimized for the German language.
The xmodmap file [2] gets loaded with the following command.
setxkbmap lv && xmodmap neo_de.xmodmap
The equal-sign is located at the 3rd level and is entered with caps lock
+ o. (The o is the key on the QWERTZ/Y keyboard and it would be the f
with Neo 2.)
I get the following output.
### Caps lock alone ###
gtk-vnc: press keycode: 66 state: 0 group 0, keyval: 65406
gtk-vnc: Key event 65406 66 1 1gtk-vnc: release keycode: 66 state: 8192 group
1, keyval: 65036
### o/f alone ###
gtk-vnc: Key event 102 32 0 1gtk-vnc: press keycode: 32 state: 0 group
0, keyval: 102
gtk-vnc: Key event 102 32 1 1gtk-vnc: FramebufferUpdate(5, 32, 66, 32,
10)
gtk-vnc: FramebufferUpdate(5, 80, 66, 16, 10)
gtk-vnc: FramebufferUpdate(5, 112, 66, 96, 2)
gtk-vnc: FramebufferUpdate(5, 128, 68, 48, 8)
gtk-vnc: FramebufferUpdate(5, 192, 68, 16, 8)
gtk-vnc: FramebufferUpdate(5, 64, 69, 16, 7)
gtk-vnc: FramebufferUpdate(5, 96, 69, 32, 7)
gtk-vnc: FramebufferUpdate(5, 176, 69, 16, 7)
gtk-vnc: FramebufferUpdate(5, 32, 78, 32, 2)
gtk-vnc: Expose 192x66 @ 177,15
gtk-vnc: release keycode: 32 state: 0 group 0, keyval: 102
### caps lock + o/f ###
gtk-vnc: press keycode: 66 state: 0 group 0, keyval: 65406
gtk-vnc: Key event 65406 66 1 1gtk-vnc: press keycode: 32 state: 8192 group
1, keyval: 61
gtk-vnc: Key event 61 32 1 1gtk-vnc: release keycode: 32 state: 8192 group 1,
keyval: 61
gtk-vnc: Key event 61 32 0 1gtk-vnc: release keycode: 66 state: 8192 group 1,
keyval: 65036
So following Guido’s analysis it looks like = (keyval: 61) is sent
correctly. But it is not shown in the virtual machine.
Thanks,
Paul
[1] https://www.neo-layout.org/
[2] http://wiki.neo-layout.org/browser/linux/xmodmap/neo_de.xmodmap
[3] https://bugs.launchpad.net/debian/+source/gtk-vnc/+bug/212013
signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

