qemu/ui
Ian McKellar via Qemu-devel af8862b2a2 Improve Cocoa modifier key handling
I had two problems with QEMU on macOS:
 1) Sometimes when alt-tabbing to QEMU it would act as if the 'a' key
    was pressed so I'd get 'aaaaaaaaa....'.
 2) Using Sikuli to programatically send keys to the QEMU window text
    like "foo_bar" would come out as "fooa-bar".

They looked similar and after much digging the problem turned out to be
the same. When QEMU's ui/cocoa.m received an NSFlagsChanged NSEvent it
looked at the keyCode to determine what modifier key changed. This
usually works fine but sometimes the keyCode is 0 and the app should
instead be looking at the modifierFlags bitmask. Key code 0 is the 'a'
key.

I added code that handles keyCode == 0 differently. It checks the
modifierFlags and if they differ from QEMU's idea of which modifier
keys are currently pressed it toggles those changed keys.

This fixes my problems and seems work fine.

Signed-off-by: Ian McKellar <ianloic@google.com>
Message-id: 20170526233816.47627-1-ianloic@google.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2017-06-14 09:51:45 +02:00
..
shader console-gl: add opengl rendering helper functions 2015-05-05 10:48:22 +02:00
cocoa.m Improve Cocoa modifier key handling 2017-06-14 09:51:45 +02:00
console-gl.c ui/console-gl: Add support for big endian display surfaces 2016-06-10 11:13:59 +02:00
console.c char: move CharBackend handling in char-fe unit 2017-06-02 11:33:53 +04:00
curses.c curses: Fix compiler warnings (Mingw-w64 redefinition of macro KEY_EVENT) 2017-01-10 08:14:20 +01:00
curses_keys.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
cursor.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +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 egl: explicitly ask for core context 2017-05-12 12:02:48 +02:00
egl-headless.c opengl: add egl-headless display 2017-05-12 12:02:48 +02:00
egl-helpers.c egl: explicitly ask for core context 2017-05-12 12:02:48 +02:00
gtk-egl.c egl-helpers: fix display init for x11 2017-05-12 12:02:48 +02:00
gtk-gl-area.c console: rename dpy_gl_scanout to dpy_gl_scanout_texture 2017-02-27 16:15:28 +01:00
gtk.c chardev: move headers to include/chardev 2017-06-02 11:33:52 +04:00
input-keymap.c ps2: Fix lost scancodes by recent changes 2017-01-10 08:14:20 +01:00
input-legacy.c qapi: Don't special-case simple union wrappers 2016-03-18 10:29:26 +01:00
input-linux.c ui: input-linux: Add absolute event support 2017-05-11 09:42:16 +02:00
input.c ui: Support non-zero minimum values for absolute input axes 2017-05-11 09:42:16 +02:00
keymaps.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
keymaps.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
Makefile.objs ui: egl-headless requires dmabuf support 2017-05-19 10:46:00 +02:00
qemu-pixman.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
qemu-x509.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
sdl.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
sdl2-2d.c SDL2: add bgrx pixel format 2016-06-03 08:23:26 +02:00
sdl2-gl.c sdl2: add scanout_disable support 2017-02-27 16:15:29 +01:00
sdl2-input.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
sdl2-keymap.h sdl2: keymap fixups 2014-09-16 08:07:05 +02:00
sdl2.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
sdl_keysym.h ui/sdl2 : initial port to SDL 2.0 (v2.0) 2014-03-05 09:52:05 +01:00
sdl_zoom.c all: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
sdl_zoom.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
sdl_zoom_template.h sdl: Fix heap smash in sdl_zoom_rgb{16,32} for int > 32 bits 2013-01-15 18:25:30 -06:00
shader.c Changed malloc to g_malloc, free to g_free in ui/shader.c 2016-05-12 16:41:46 +02:00
spice-core.c migration: Move remaining exported functions to migration/misc.h 2017-06-13 11:00:45 +02:00
spice-display.c spice: add display & head options 2017-02-27 16:21:23 +01:00
spice-input.c ui: Support non-zero minimum values for absolute input axes 2017-05-11 09:42:16 +02:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
vgafont.h ui: move files to ui/ and include/ui/ 2012-12-19 08:31:30 +01:00
vnc-auth-sasl.c sockets: Limit SocketAddressLegacy to external interfaces 2017-05-09 09:14:40 +02:00
vnc-auth-sasl.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc-auth-vencrypt.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00: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 pixman/vnc: use pixman images in vnc. 2012-11-01 14:00:04 +01:00
vnc-enc-hextile.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-tight.c ui/vnc-enc-tight: remove switch and have single return 2016-09-28 12:55:09 +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 ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle-template.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zrle.c vnc: simple clean up 2017-05-12 12:34:31 +02: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 ui: Clean up includes 2016-02-04 17:01:04 +00:00
vnc-enc-zywrle.h Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
vnc-jobs.c ui/vnc: Drop unused vnc_has_job() and vnc_jobs_clear() 2017-02-08 14:59:36 +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 all: Clean up includes 2016-02-23 12:43:05 +00:00
vnc-ws.c io: change the QIOTask callback signature 2017-01-23 15:32:18 +00:00
vnc-ws.h Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
vnc.c vnc: replace hweight_long() with ctpopl() 2017-05-12 12:36:02 +02:00
vnc.h ui: refactor VncDisplay to allow multiple listening sockets 2017-02-08 14:59:37 +01:00
vnc_keysym.h qemu-char: add cyrillic characters 'numerosign' to VNC keysyms 2015-03-10 08:15:34 +03:00
x_keymap.c ui: Clean up includes 2016-02-04 17:01:04 +00:00
x_keymap.h Delete useless 'extern' qualifiers for functions 2011-01-23 16:21:20 +00:00