diff options
-rw-r--r-- | qemu-options.hx | 6 | ||||
-rw-r--r-- | softmmu/vl.c | 15 |
2 files changed, 17 insertions, 4 deletions
diff --git a/qemu-options.hx b/qemu-options.hx index 4a9ee722c9..124ed51ede 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1834,7 +1834,7 @@ DEF("display", HAS_ARG, QEMU_OPTION_display, #endif #if defined(CONFIG_SDL) "-display sdl[,alt_grab=on|off][,ctrl_grab=on|off][,gl=on|core|es|off]\n" - " [,show-cursor=on|off][,window-close=on|off]\n" + " [,grab-mod=<mod>][,show-cursor=on|off][,window-close=on|off]\n" #endif #if defined(CONFIG_GTK) "-display gtk[,full-screen=on|off][,gl=on|off][,grab-on-hover=on|off]\n" @@ -1880,6 +1880,10 @@ SRST window; see the SDL documentation for other possibilities). Valid parameters are: + ``grab-mod=<mods>`` : Used to select the modifier keys for toggling + the mouse grabbing in conjunction with the "g" key. `<mods>` can be + either `lshift-lctrl-lalt` or `rctrl`. + ``alt_grab=on|off`` : Use Control+Alt+Shift-g to toggle mouse grabbing ``ctrl_grab=on|off`` : Use Right-Control-g to toggle mouse grabbing diff --git a/softmmu/vl.c b/softmmu/vl.c index ea05bb39c5..2176e3c5ae 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -1017,15 +1017,24 @@ static void parse_display(const char *p) * parse_display_qapi() due to some options not in * DisplayOptions, specifically: * - ctrl_grab + alt_grab - * Not clear yet what happens to them long-term. Should - * replaced by something better or deprecated and dropped. + * They can't be moved into the QAPI since they use underscores, + * thus they will get replaced by "grab-mod" in the long term */ #if defined(CONFIG_SDL) dpy.type = DISPLAY_TYPE_SDL; while (*opts) { const char *nextopt; - if (strstart(opts, ",alt_grab=", &nextopt)) { + if (strstart(opts, ",grab-mod=", &nextopt)) { + opts = nextopt; + if (strstart(opts, "lshift-lctrl-lalt", &nextopt)) { + alt_grab = 1; + } else if (strstart(opts, "rctrl", &nextopt)) { + ctrl_grab = 1; + } else { + goto invalid_sdl_args; + } + } else if (strstart(opts, ",alt_grab=", &nextopt)) { opts = nextopt; if (strstart(opts, "on", &nextopt)) { alt_grab = 1; |