ack,

although it still needs the gdk patch, since this solution only work when
the widget has the keyboard focus, as explained in original thread.


On Wed, May 15, 2013 at 11:34 AM, Christophe Fergeau <cferg...@redhat.com>wrote:

> From: Mattias Grönlund <matt...@gronlund.se>
>
> Running virt-viewer-x64-0.5.6.msi, on Windows 7, connecting to QEMU using
> spice, AltGR key combinations fails (using Swedish keyboard layout both at
> server and client).
>
> I suspect that this is a variant of
> https://bugzilla.redhat.com/show_bug.cgi?id=904092.
>
> After some debugging, I realized that there is an extra VK_LCONTROL
> keypress sent by Windows. This extra VK_LCONTROL will then make the key
> e.g. AltGr-< actually be Control-AltGr-<, which is not interpreted as a |
> sign.
>
> So in spice-widget.c : keyboard_hook_cb(), I added SPICE_DEBUG lines which
> printed out the hooked->scanCode, and realized that this extra VK_LCONTROL
> has a very suspect scanCode with bit 9 set. If I instead press the left
> Ctrl key, it will also emit VK_LCONTROL, but with bit 9 cleared.
>
> So I just made sure that keyboard_hook_cb(), silently dropped these strange
> VK_LCONTROL events, which seems to work for me.
> ---
>  gtk/spice-widget.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c
> index 7eb9e64..4f74380 100644
> --- a/gtk/spice-widget.c
> +++ b/gtk/spice-widget.c
> @@ -672,11 +672,17 @@ static LRESULT CALLBACK keyboard_hook_cb(int code,
> WPARAM wparam, LPARAM lparam)
>          case VK_NUMLOCK:
>          case VK_LSHIFT:
>          case VK_RSHIFT:
> -        case VK_LCONTROL:
>          case VK_RCONTROL:
>          case VK_LMENU:
>          case VK_RMENU:
>              break;
> +        case VK_LCONTROL:
> +            /* When pressing AltGr, an extra VK_LCONTROL with a special
> +             * scancode with bit 9 set is sent. Let's ignore the extra
> +             * VK_LCONTROL, as that will make AltGr misbehave. */
> +            if (hooked->scanCode & 0x200)
> +                return 1;
> +            break;
>          default:
>              SendMessage(win32_window, wparam, hooked->vkCode, dwmsg);
>              return 1;
> --
> 1.8.2.1
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>



-- 
Marc-André Lureau
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to