Thomas Huth <thuth(a)redhat.com> writes:
The "-display sdl" option still uses a hand-crafted parser
for its
parameters since we didn't want to drag an interface we considered
somewhat flawed into the QAPI schema. Since the flaws are gone now,
it's time to QAPIfy.
This introduces the new "DisplaySDL" QAPI struct that is used to hold
the parameters that are unique to the SDL display. The only specific
parameter is currently "grab-mod" that is used to specify the required
modifier keys to escape from the mouse grabbing mode.
Signed-off-by: Thomas Huth <thuth(a)redhat.com>
---
qapi/ui.json | 27 +++++++++++++++-
include/sysemu/sysemu.h | 2 --
softmmu/globals.c | 2 --
softmmu/vl.c | 70 +----------------------------------------
ui/sdl2.c | 10 ++++++
5 files changed, 37 insertions(+), 74 deletions(-)
diff --git a/qapi/ui.json b/qapi/ui.json
index 11a827d10f..a244e26e0f 100644
--- a/qapi/ui.json
+++ b/qapi/ui.json
@@ -1295,6 +1295,30 @@
'*swap-opt-cmd': 'bool'
} }
+##
+# @GrabMod:
+#
+# Set of modifier keys that need to be hold for shortcut key actions.
+#
+# Since: 7.1
+##
+{ 'enum' : 'GrabMod',
+ 'data' : [ 'lctrl-lalt', 'lshift-lctrl-lalt', 'rctrl'
] }
This is fine now. If we ever generalize to "arbitrary set of modifier
keys", it'll become somewhat awkward. No objection from me.
+
+##
+# @DisplaySDL:
+#
+# SDL2 display options.
+#
+# @grab-mod: String with modifier keys that should be pressed together with
s/String with modifier keys/Modifier keys/
+# the "G" key to release the mouse grab. Only
"lshift-lctrl-lalt"
+# and "rctrl" are currently supported.
Why do we define lctrl-lalt if it's not supported?
+#
+# Since: 7.1
+##
+{ 'struct' : 'DisplaySDL',
+ 'data' : { '*grab-mod' : 'GrabMod' } }
+
##
# @DisplayType:
#
@@ -1374,7 +1398,8 @@
'curses': { 'type': 'DisplayCurses', 'if':
'CONFIG_CURSES' },
'egl-headless': { 'type': 'DisplayEGLHeadless',
'if': { 'all': ['CONFIG_OPENGL',
'CONFIG_GBM'] } },
- 'dbus': { 'type': 'DisplayDBus', 'if':
'CONFIG_DBUS_DISPLAY' }
+ 'dbus': { 'type': 'DisplayDBus', 'if':
'CONFIG_DBUS_DISPLAY' },
+ 'sdl': { 'type': 'DisplaySDL', 'if':
'CONFIG_SDL' }
}
}
[...]