qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] gtk: Support keyboard translation for hosts run


From: Stefan Weil
Subject: Re: [Qemu-devel] [PATCH] gtk: Support keyboard translation for hosts running Windows
Date: Wed, 18 Dec 2013 19:14:48 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Am 07.12.2013 16:25, schrieb Stefan Weil:
> GTK uses different hardware keycodes on Windows hosts, so some special
> handling is needed to get the QEMU keycode.
>
> Signed-off-by: Stefan Weil <address@hidden>
> ---
>  ui/gtk.c |   18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/ui/gtk.c b/ui/gtk.c
> index 6316f5b..a633d89 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -34,6 +34,10 @@
>  #define GETTEXT_PACKAGE "qemu"
>  #define LOCALEDIR "po"
>  
> +#ifdef _WIN32
> +# define _WIN32_WINNT 0x0601 /* needed to get definition of MAPVK_VK_TO_VSC 
> */
> +#endif
> +
>  #include "qemu-common.h"
>  
>  #ifdef CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE
> @@ -704,11 +708,18 @@ static gboolean gd_button_event(GtkWidget *widget, 
> GdkEventButton *button,
>  static gboolean gd_key_event(GtkWidget *widget, GdkEventKey *key, void 
> *opaque)
>  {
>      GtkDisplayState *s = opaque;
> -    int gdk_keycode;
> -    int qemu_keycode;
> +    int gdk_keycode = key->hardware_keycode;
>      int i;
>  
> -    gdk_keycode = key->hardware_keycode;
> +#ifdef _WIN32
> +    UINT qemu_keycode = MapVirtualKey(gdk_keycode, MAPVK_VK_TO_VSC);
> +    switch (qemu_keycode) {
> +    case 103:   /* alt gr */
> +        qemu_keycode = 56 | SCANCODE_GREY;
> +        break;
> +    }
> +#else
> +    int qemu_keycode;
>  
>      if (gdk_keycode < 9) {
>          qemu_keycode = 0;
> @@ -723,6 +734,7 @@ static gboolean gd_key_event(GtkWidget *widget, 
> GdkEventKey *key, void *opaque)
>      } else {
>          qemu_keycode = 0;
>      }
> +#endif
>  
>      trace_gd_key_event(gdk_keycode, qemu_keycode,
>                         (key->type == GDK_KEY_PRESS) ? "down" : "up");

Ping? Should I send a MinGW pull request for this patch?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]