[Spice-devel] [spice-gtk] mingw: Fix non-working AltGr with some layouts

Marc-André Lureau marcandre.lureau at gmail.com
Wed May 15 03:59:51 PDT 2013


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 <cfergeau at redhat.com>wrote:

> From: Mattias Grönlund <mattias at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
>



-- 
Marc-André Lureau
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20130515/21eb8aed/attachment.html>


More information about the Spice-devel mailing list