All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Volker Rümelin" <vr_qemu@t-online.de>
To: "Gerd Hoffmann" <kraxel@redhat.com>,
	"Stefan Weil" <sw@weilnetz.de>,
	"Daniel P . Berrangé" <berrange@redhat.com>
Cc: QEMU <qemu-devel@nongnu.org>
Subject: [PATCH 06/10] ui/sdl2: fix handling of AltGr key on Windows
Date: Sun, 10 May 2020 20:43:00 +0200	[thread overview]
Message-ID: <20200510184304.9267-6-vr_qemu@t-online.de> (raw)
In-Reply-To: <2393388c-86c3-4d7e-178e-2c7e6d14a8de@t-online.de>

Wire up the keyboard hooking code on Windows to fix the AltGr
key and improve keyboard grabbing.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
---
 ui/sdl2.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/ui/sdl2.c b/ui/sdl2.c
index 3c9424eb42..ec1cb8131f 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -30,6 +30,9 @@
 #include "ui/sdl2.h"
 #include "sysemu/runstate.h"
 #include "sysemu/sysemu.h"
+#ifdef CONFIG_WIN32
+#include "win32-kbd-hook.h"
+#endif
 
 static int sdl2_num_outputs;
 static struct sdl2_console *sdl2_console;
@@ -220,6 +223,9 @@ static void sdl_grab_start(struct sdl2_console *scon)
     }
     SDL_SetWindowGrab(scon->real_window, SDL_TRUE);
     gui_grab = 1;
+#ifdef CONFIG_WIN32
+    win32_kbd_set_grab(true);
+#endif
     sdl_update_caption(scon);
 }
 
@@ -227,6 +233,9 @@ static void sdl_grab_end(struct sdl2_console *scon)
 {
     SDL_SetWindowGrab(scon->real_window, SDL_FALSE);
     gui_grab = 0;
+#ifdef CONFIG_WIN32
+    win32_kbd_set_grab(false);
+#endif
     sdl_show_cursor(scon);
     sdl_update_caption(scon);
 }
@@ -532,6 +541,18 @@ static void handle_windowevent(SDL_Event *ev)
         sdl2_redraw(scon);
         break;
     case SDL_WINDOWEVENT_FOCUS_GAINED:
+#ifdef CONFIG_WIN32
+        if (qemu_console_is_graphic(scon->dcl.con)) {
+            SDL_SysWMinfo info;
+
+            SDL_VERSION(&info.version);
+            if (SDL_GetWindowWMInfo(scon->real_window, &info)) {
+                win32_kbd_set_grab(gui_grab);
+                win32_kbd_set_window(info.info.win.window);
+            }
+        }
+#endif
+        /* fall through */
     case SDL_WINDOWEVENT_ENTER:
         if (!gui_grab && (qemu_input_is_absolute() || absolute_enabled)) {
             absolute_mouse_grab(scon);
@@ -546,6 +567,11 @@ static void handle_windowevent(SDL_Event *ev)
         scon->ignore_hotkeys = get_mod_state();
         break;
     case SDL_WINDOWEVENT_FOCUS_LOST:
+#ifdef CONFIG_WIN32
+        if (qemu_console_is_graphic(scon->dcl.con)) {
+            win32_kbd_set_window(NULL);
+        }
+#endif
         if (gui_grab && !gui_fullscreen) {
             sdl_grab_end(scon);
         }
-- 
2.26.1



  parent reply	other threads:[~2020-05-10 18:46 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-10 18:42 Patches for ui/gtk and ui/sdl Volker Rümelin
2020-05-10 18:42 ` [PATCH 01/10] ui/win32-kbd-hook: handle AltGr in a hook procedure Volker Rümelin
2020-05-12 11:21   ` Gerd Hoffmann
2020-05-10 18:42 ` [PATCH 02/10] ui/gtk: fix handling of AltGr key on Windows Volker Rümelin
2020-05-12 11:23   ` Gerd Hoffmann
2020-05-10 18:42 ` [PATCH 03/10] ui/gkt: release all keys on grab-broken-event Volker Rümelin
2020-05-12 11:28   ` Gerd Hoffmann
2020-05-10 18:42 ` [PATCH 04/10] ui/gtk: remove unused code Volker Rümelin
2020-05-12 11:46   ` Philippe Mathieu-Daudé
2020-05-10 18:42 ` [PATCH 05/10] ui/gtk: remove unused variable ignore_keys Volker Rümelin
2020-05-12 11:50   ` Philippe Mathieu-Daudé
2020-05-10 18:43 ` Volker Rümelin [this message]
2020-05-10 18:43 ` [PATCH 07/10] ui/sdl2: start in full screen with grab enabled Volker Rümelin
2020-05-10 18:43 ` [PATCH 08/10] ui/sdl2-input: use trace-events to debug key events Volker Rümelin
2020-05-12 11:51   ` Philippe Mathieu-Daudé
2020-05-10 18:43 ` [PATCH 09/10] ui/gtk: don't pass on win keys without keyboard grab Volker Rümelin
2020-05-12 11:30   ` Gerd Hoffmann
2020-05-10 18:43 ` [PATCH 10/10] ui/gtk: use native keyboard scancodes on Windows Volker Rümelin
2020-05-12 11:31   ` Daniel P. Berrangé
2020-05-14 20:46     ` Volker Rümelin
2020-05-11  7:56 ` Patches for ui/gtk and ui/sdl Howard Spoelstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200510184304.9267-6-vr_qemu@t-online.de \
    --to=vr_qemu@t-online.de \
    --cc=berrange@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=sw@weilnetz.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.