qemu-patch-raspberry4/ui
Akihiko Odaki 6d73bb643a ui/cocoa: Clear modifiers whenever possible
ui/cocoa does not receive NSEventTypeFlagsChanged when it is not active,
and the modifier state can be desynchronized in such a situation.

[NSEvent -modifierFlags] tells whether a modifier is *not* pressed, so
check it whenever receiving an event and clear the modifier if it is not
pressed.

Note that [NSEvent -modifierFlags] does not tell if a certain modifier
*is* pressed because the documented mask for [NSEvent -modifierFlags]
generalizes left shift and right shift, for example. CapsLock is the
only exception. The pressed state is synchronized only with
NSEventTypeFlagsChanged.

This change also removes modifier keys from keycode map. If they
are input with NSEventTypeKeyDown or NSEventTypeKeyUp, it leads to
desynchronization. Although such a situation is not observed, they are
removed just in case.

Moreover, QKbdState is introduced for automatic key state tracking.

Thanks to Konstantin Nazarov for testing and finding a bug in this
change:
https://gist.github.com/akihikodaki/87df4149e7ca87f18dc56807ec5a1bc5#gistcomment-3659419

Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <20210310144602.58528-1-akihiko.odaki@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2021-03-11 10:06:44 +01:00
..
icons configure: move directory options from config-host.mak to meson 2020-10-26 07:08:38 -04:00
keycodemapdb@6119e6e19a ui: update keycodemapdb submodule commit 2021-01-29 17:07:53 +00:00
shader meson: clean up build_by_default 2020-09-30 19:09:19 +02:00
cocoa.m ui/cocoa: Clear modifiers whenever possible 2021-03-11 10:06:44 +01:00
console-gl.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
console.c ui/console: Pass placeholder surface to displays 2021-03-04 09:35:36 +01:00
curses.c curses: Fixes curses compiling errors. 2020-10-14 06:05:56 +02:00
curses_keys.h curses: support wide input 2019-03-11 08:39:02 +01:00
cursor.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
cursor_hidden.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
cursor_left_ptr.xpm ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
egl-context.c ui: remove gl_ctx_get_current 2021-02-04 15:58:54 +01:00
egl-headless.c ui: remove gl_ctx_get_current 2021-02-04 15:58:54 +01:00
egl-helpers.c configure: Improve OpenGL dependency detections 2021-03-04 09:35:30 +01:00
gtk-egl.c configure: Improve OpenGL dependency detections 2021-03-04 09:35:30 +01:00
gtk-gl-area.c configure: Improve OpenGL dependency detections 2021-03-04 09:35:30 +01:00
gtk.c ui/gtk: Remove NULL checks in gd_switch 2021-03-11 10:06:44 +01:00
input-barrier.c input-barrier: Register properties as class properties 2020-10-13 15:56:30 -04:00
input-barrier.h ui: add an embedded Barrier client 2019-09-17 13:43:22 +02:00
input-keymap.c meson: rename included C source files to .c.inc 2020-08-21 06:18:30 -04:00
input-legacy.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
input-linux.c machine + QOM queue, 2020-10-14 2020-10-15 16:35:06 +01:00
input.c qapi: Use QAPI_LIST_PREPEND() where possible 2020-12-19 10:20:14 +01:00
kbd-state.c Include qemu/queue.h slightly less 2019-08-16 13:31:52 +02:00
keymaps.c vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
keymaps.h Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
meson.build configure: Improve OpenGL dependency detections 2021-03-04 09:35:30 +01:00
qemu-pixman.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
qemu-x509.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
qemu.desktop ui: fix icon display for GTK frontend under GNOME Shell with Wayland 2019-01-21 09:43:13 +01:00
sdl2-2d.c ui/console: Pass placeholder surface to displays 2021-03-04 09:35:36 +01:00
sdl2-gl.c ui/console: Pass placeholder surface to displays 2021-03-04 09:35:36 +01:00
sdl2-input.c ui/sdl2-input: use trace-events to debug key events 2020-05-19 09:06:44 +02:00
sdl2.c ui: remove gl_ctx_get_current 2021-02-04 15:58:54 +01:00
shader.c meson: convert ui directory to Meson 2020-08-21 06:30:21 -04:00
spice-app.c spice-app: avoid crash when core spice module doesn't loaded 2021-02-19 15:00:13 +01:00
spice-core.c spice: delay starting until display are initialized 2021-02-04 14:32:40 +01:00
spice-display.c ui/console: Pass placeholder surface to displays 2021-03-04 09:35:36 +01:00
spice-input.c spice: move add_interface() to QemuSpiceOps. 2020-10-21 15:46:14 +02:00
spice-module.c spice: wire up monitor in QemuSpiceOps. 2020-10-21 15:46:14 +02:00
trace-events console: modify ppm_save to take a pixman image ref 2020-11-04 08:02:24 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vgafont.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
vnc-auth-sasl.c vnc: fix resource leak when websocket channel error 2020-11-04 08:25:17 +01:00
vnc-auth-sasl.h Include qemu/main-loop.h less 2019-08-16 13:31:52 +02:00
vnc-auth-vencrypt.c vnc: fix resource leak when websocket channel error 2020-11-04 08:25:17 +01:00
vnc-auth-vencrypt.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-enc-hextile-template.h ui: vnc: finish removing TABs 2019-02-05 16:50:18 +01:00
vnc-enc-hextile.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-tight.c vnc: Remove the superfluous break 2020-09-01 08:36:53 +02:00
vnc-enc-tight.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zlib.c vnc: fix memory leak when vnc disconnect 2019-09-17 13:45:10 +02:00
vnc-enc-zrle.c meson: rename included C source files to .c.inc 2020-08-21 06:18:30 -04:00
vnc-enc-zrle.c.inc meson: rename included C source files to .c.inc 2020-08-21 06:18:30 -04:00
vnc-enc-zrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-enc-zywrle-template.c avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
vnc-enc-zywrle.h ui: vnc: finish removing TABs 2019-02-05 16:50:18 +01:00
vnc-jobs.c vnc: fix resource leak when websocket channel error 2020-11-04 08:25:17 +01:00
vnc-jobs.h ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +01:00
vnc-palette.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
vnc-palette.h Include qapi/qmp/qlist.h exactly where needed 2018-02-09 13:52:15 +01:00
vnc-stubs.c vnc: support "-vnc help" 2021-01-23 15:55:07 -05:00
vnc-ws.c vnc: fix resource leak when websocket channel error 2020-11-04 08:25:17 +01:00
vnc-ws.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc.c ui/console: Pass placeholder surface to displays 2021-03-04 09:35:36 +01:00
vnc.h vnc: add support for extended desktop resize 2021-01-15 11:22:43 +01:00
vnc_keysym.h ui: add next and prior keysyms 2017-07-27 14:23:09 +02:00
win32-kbd-hook.c ui/win32-kbd-hook: handle AltGr in a hook procedure 2020-05-19 09:06:44 +02:00
x_keymap.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
x_keymap.h ui: convert GTK and SDL1 frontends to keycodemapdb 2018-01-25 15:02:00 +01:00