[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Keysymbol interpretation missing in QEMU's VNC server?
From: |
Gonglei (Arei) |
Subject: |
Re: [Qemu-devel] Keysymbol interpretation missing in QEMU's VNC server? |
Date: |
Sat, 25 Jan 2014 05:13:34 +0000 |
Hi,
Would you give me some advice. Thanks!
I thank we can only need reserve four Qemu console,
Ctrl +1 for graphic show, Ctrl+2 for monitor console,
Ctrl + 3 for serial, Ctrl+4 for parallel. And then will not conflict with "de"
keymay.
Best regards,
-Gonglei
> -----Original Message-----
> From: Gonglei (Arei)
> Sent: Tuesday, January 14, 2014 4:45 PM
> To: 'address@hidden'; 'Anthony Liguori'; 'Gerd Hoffmann'
> Cc: Luonengjun; Huangweidong (Hardware); address@hidden
> Subject: Re: [Qemu-devel] Keysymbol interpretation missing in QEMU's VNC
> server?
>
> Hi,
>
> > Just a small addition: The AltGr Keys are not routed correctly through VNC!
> > I had a look at the "de" keymap, it looks as if they are described (e.g.
> > backslash \) which is placed on the german keyboard on the key right to the
> > 0 key (german key ssharp) and accessed via AltGr + this key. Same with }
> > which is at the 0 key position accessed via AltGr + 0. The shifted keys and
> > the Windows standard functions Ctrl + C / Ctrl + V works as well.
> > They are not lost completely but the AltGr press gets lost! So when
> > pressing AltGr + 0, I get only a 0 on the guest instead of a "}".
> >
> > Any ideas?
>
> By googled, I found the topic. and I encountered the same probleam.
> I am convinced that the AltGr key conflicted with the QEMU console switch.
> On the German keyboard, the AltGr as same with Ctrl + Alt on the US keyborad.
> Same as you said, the { accessed via AltGr + 7. But at present, the Ctrl +
> Alt +
> 1..9
> are reserved as QEMU console switch. When we push down the AltGr + 7,
> do_key_event function will reset key and enter console_select for AltGr (Ctrl
> +
> Alt),
> and finally we get the last key "7" instead of a "{".
>
> the Qemu code(qemu/ui/vnc.c):
> static void do_key_event(VncState *vs, int down, int keycode, int sym)
> {
> /* QEMU console switch */
> switch(keycode) {
> case 0x2a: /* Left Shift */
> case 0x36: /* Right Shift */
> case 0x1d: /* Left CTRL */
> case 0x9d: /* Right CTRL */
> case 0x38: /* Left ALT */
> case 0xb8: /* Right ALT */
> if (down)
> vs->modifiers_state[keycode] = 1;
> else
> vs->modifiers_state[keycode] = 0;
> break;
> case 0x02 ... 0x0a: /* '1' to '9' keys */
> if (down && vs->modifiers_state[0x1d] && vs->modifiers_state[0x38])
> {
> /* Reset the modifiers sent to the current console */
> reset_keys(vs);
> console_select(keycode - 0x02);
> return;
> }
> break;
> ... ...
> }
>
> Best regards,
> -Gonglei
>