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: Fri, 10 Jan 2014 20:02:24 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Am 18.12.2013 19:14, schrieb Stefan Weil:
> 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?
> 


Ping^2? I tried to answer Andreas' questions. Are there any more?

Stefan




reply via email to

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