diff options
author | Anthony Liguori <aliguori@amazon.com> | 2014-01-24 15:52:08 -0800 |
---|---|---|
committer | Anthony Liguori <aliguori@amazon.com> | 2014-01-24 15:52:09 -0800 |
commit | 7d64b2c2e22d956b358a97323f0d70060dcd9a06 (patch) | |
tree | ae57dd13c8f362ca2a2dd262a5552c8f761dbdb6 | |
parent | 14ac4febb22b4083a5a64b251ab15c94d7d65833 (diff) | |
parent | 2777ccc55bfe90bfa813b01faf36fa6ea16fbea8 (diff) | |
download | hqemu-7d64b2c2e22d956b358a97323f0d70060dcd9a06.zip hqemu-7d64b2c2e22d956b358a97323f0d70060dcd9a06.tar.gz |
Merge remote-tracking branch 'sweil/tags/for_anthony' into staging
Initial patch for QEMU GTK support on Windows
# gpg: Signature made Mon 20 Jan 2014 11:37:58 AM PST using RSA key ID FAD62069
# gpg: Can't check signature: public key not found
* sweil/tags/for_anthony:
gtk: Support keyboard translation for hosts running Windows
Message-id: 1390246909-18757-1-git-send-email-sw@weilnetz.de
Signed-off-by: Anthony Liguori <aliguori@amazon.com>
-rw-r--r-- | ui/gtk.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -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"); |