Thomas Huth <thuth@xxxxxxxxxx> 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@xxxxxxxxxx> > --- > 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' } > } > } [...]