[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: |
Sun, 19 Jan 2014 22:18:47 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 |
Am 10.01.2014 20:02, schrieb Stefan Weil:
> 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
>
Ping^3. What is missing to get this patch applied? It was sent more than
a month ago (2012-12-07).
Stefan