From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Volker Rümelin" <vr_qemu@t-online.de>,
"Howard Spoelstra" <hsp.cat7@gmail.com>,
"Bernhard Beschow" <shentey@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PULL 53/56] ui/sdl2: release all modifiers
Date: Wed, 11 Sep 2024 14:14:18 +0200 [thread overview]
Message-ID: <20240911121422.52585-54-philmd@linaro.org> (raw)
In-Reply-To: <20240911121422.52585-1-philmd@linaro.org>
From: Volker Rümelin <vr_qemu@t-online.de>
Each virtual console in the SDL2 frontend has a key state map.
When switching windows with GUI keys we have to release all
pressed modifier keys in the currently active window, because
after the switch the now inactive window no longer receives the
key release events.
To reproduce the issue open a text editor in the SDL UI and then
press Ctrl-Alt-2 to open a Compat Monitor Console. Close the
console with the mouse. Try to enter text in the text editor and
notice that the modifier keys Ctrl and Alt are stuck and need to
be pressed once to be released.
Tested-by: Howard Spoelstra <hsp.cat7@gmail.com>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Tested-by: Bernhard Beschow <shentey@gmail.com>
Message-ID: <20240909061552.6122-2-vr_qemu@t-online.de>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/ui/sdl2.h | 1 +
ui/sdl2-input.c | 5 +++++
ui/sdl2.c | 1 +
3 files changed, 7 insertions(+)
diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h
index e3acc7c82a..6907115809 100644
--- a/include/ui/sdl2.h
+++ b/include/ui/sdl2.h
@@ -60,6 +60,7 @@ void sdl2_poll_events(struct sdl2_console *scon);
void sdl2_process_key(struct sdl2_console *scon,
SDL_KeyboardEvent *ev);
+void sdl2_release_modifiers(struct sdl2_console *scon);
void sdl2_2d_update(DisplayChangeListener *dcl,
int x, int y, int w, int h);
diff --git a/ui/sdl2-input.c b/ui/sdl2-input.c
index b02a89ee7c..2286df4223 100644
--- a/ui/sdl2-input.c
+++ b/ui/sdl2-input.c
@@ -58,3 +58,8 @@ void sdl2_process_key(struct sdl2_console *scon,
}
}
}
+
+void sdl2_release_modifiers(struct sdl2_console *scon)
+{
+ qkbd_state_lift_all_keys(scon->kbd);
+}
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 98ed974371..bf6868f204 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -418,6 +418,7 @@ static void handle_keydown(SDL_Event *ev)
SDL_ShowWindow(sdl2_console[win].real_window);
}
}
+ sdl2_release_modifiers(scon);
gui_keysym = 1;
}
break;
--
2.45.2
next prev parent reply other threads:[~2024-09-11 12:21 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-11 12:13 [PULL 00/56] Misc HW & UI patches Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 01/56] hw/pci-host/designware: Declare CPU QOM types using DEFINE_TYPES() macro Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 02/56] hw/pci-host/designware: Add 'host_mem' variable for clarity Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 03/56] hw/intc/loongson_ipi: Remove unused headers Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 04/56] hw/sh4: Remove the deprecated SHIX machine Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 05/56] hw/block: Remove TC58128 NAND EEPROM Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 06/56] hw/sh4: Remove sh7750_register_io_device() helper Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 07/56] tests/tcg: Remove CRIS libc test files Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 08/56] tests/tcg: Remove CRIS bare " Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 09/56] buildsys: Remove CRIS cross container Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 10/56] linux-user: Remove support for CRIS target Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 11/56] hw/cris: Remove the axis-dev88 machine Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 12/56] hw/cris: Remove image loader helper Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 13/56] hw/intc: Remove TYPE_ETRAX_FS_PIC device Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 14/56] hw/char: Remove TYPE_ETRAX_FS_SERIAL device Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 15/56] hw/net: Remove TYPE_ETRAX_FS_ETH device Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 16/56] hw/dma: Remove ETRAX_FS DMA device Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 17/56] hw/timer: Remove TYPE_ETRAX_FS_TIMER device Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 18/56] system: Remove support for CRIS target Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 19/56] target/cris: Remove the deprecated " Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 20/56] seccomp: Remove check for CRIS host Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 21/56] target/riscv: Remove the deprecated 'any' CPU type Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 22/56] hw/audio/virtio-sound: fix heap buffer overflow Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 23/56] hw/char/pl011: Remove unused 'readbuff' field Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 24/56] hw/char/pl011: Move pl011_put_fifo() earlier Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 25/56] hw/char/pl011: Move pl011_loopback_enabled|tx() around Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 26/56] hw/char/pl011: Split RX/TX path of pl011_reset_fifo() Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 27/56] hw/char/pl011: Extract pl011_write_txdata() from pl011_write() Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 28/56] hw/char/pl011: Extract pl011_read_rxdata() from pl011_read() Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 29/56] hw/char/pl011: Warn when using disabled transmitter Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 30/56] hw/char/pl011: Rename RX FIFO methods Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 31/56] MAINTAINERS: Add myself as a reviewer of VT-d Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 32/56] fifo8: rename fifo8_peekpop_buf() to fifo8_peekpop_bufptr() Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 33/56] fifo8: introduce head variable for fifo8_peekpop_bufptr() Philippe Mathieu-Daudé
2024-09-11 12:13 ` [PULL 34/56] fifo8: add skip parameter to fifo8_peekpop_bufptr() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 35/56] fifo8: replace fifo8_pop_bufptr() with fifo8_peekpop_bufptr() in fifo8_pop_buf() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 36/56] fifo8: rename fifo8_pop_buf() to fifo8_peekpop_buf() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 37/56] fifo8: honour do_pop argument in fifo8_peekpop_buf() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 38/56] fifo8: add fifo8_peek_buf() function Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 39/56] fifo8: introduce fifo8_peek() function Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 40/56] tests/unit: add test-fifo unit test Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 41/56] tests/unit: Strengthen FIFO8 tests Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 42/56] tests/unit: Expand test_fifo8_peek_buf_wrap() coverage Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 43/56] tests/unit: Comment FIFO8 tests Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 44/56] hw/char/escc: convert Sun mouse to use QemuInputHandler Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 45/56] hw/input/adb-mouse: convert " Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 46/56] hw/char: replace assert(0) with g_assert_not_reached() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 47/56] hw/core: " Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 48/56] hw/watchdog: " Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 49/56] hw/gpio: remove break after g_assert_not_reached() Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 50/56] hw/misc: " Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 51/56] hw/pci-host: " Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 52/56] system: replace assert(0) with g_assert_not_reached() Philippe Mathieu-Daudé
2024-09-11 12:14 ` Philippe Mathieu-Daudé [this message]
2024-09-11 12:14 ` [PULL 54/56] ui/sdl2: ignore GUI keys in SDL_TEXTINPUT handler Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 55/56] ui/sdl2: set swap interval explicitly when OpenGL is enabled Philippe Mathieu-Daudé
2024-09-11 12:14 ` [PULL 56/56] ui: remove break after g_assert_not_reached() Philippe Mathieu-Daudé
2024-09-12 6:54 ` [PULL 00/56] Misc HW & UI patches Philippe Mathieu-Daudé
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=20240911121422.52585-54-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=hsp.cat7@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=shentey@gmail.com \
--cc=vr_qemu@t-online.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).