Philippe Mathieu-Daudé <f4...@amsat.org> writes: > On 18/2/22 19:55, Peter Maydell wrote: >> On Sun, 2 Jan 2022 at 17:42, Carwyn Ellis <carwynel...@gmail.com> wrote: >>> >>> When switching between guest and host on a Mac using command-tab the >>> command key is sent to the guest which can trigger functionality in the >>> guest OS. Specifying left-command-key=off disables forwarding this key >>> to the guest. Defaults to enabled. >>> >>> Also updated the cocoa display documentation to reference the new >>> left-command-key option along with the existing show-cursor option. >>> >>> Signed-off-by: Carwyn Ellis <carwynel...@gmail.com> >> Ccing the QAPI folks for review on the QAPI parts of this. >> -- PMM >> >>> --- >>> qapi/ui.json | 17 +++++++++++++++++ >>> qemu-options.hx | 12 ++++++++++++ >>> ui/cocoa.m | 8 +++++++- >>> 3 files changed, 36 insertions(+), 1 deletion(-) >>> >>> diff --git a/qapi/ui.json b/qapi/ui.json >>> index 2b4371da37..764480e145 100644 >>> --- a/qapi/ui.json >>> +++ b/qapi/ui.json >>> @@ -1107,6 +1107,22 @@ >>> 'data' : { '*grab-on-hover' : 'bool', >>> '*zoom-to-fit' : 'bool' } } >>> >>> +## >>> +# @DisplayCocoa: >>> +# >>> +# Cocoa display options. >>> +# >>> +# @left-command-key: Enable/disable forwarding of left command key to >>> +# guest. Allows command-tab window switching on the >>> +# host without sending this key to the guest when >>> +# "off". Defaults to "on" >>> +# >>> +# Since: 6.2.50 > > Not a QAPI folk, but LGTM using 7.0 here instead of 6.2.50 (this the > number of the *released* QEMU version which contains this new type).
Yes. >>> +# >>> +## >>> +{ 'struct' : 'DisplayCocoa', >>> + 'data' : { '*left-command-key' : 'bool' } } >>> + >>> ## >>> # @DisplayEGLHeadless: >>> # >>> @@ -1254,6 +1270,7 @@ >>> 'discriminator' : 'type', >>> 'data' : { >>> 'gtk': { 'type': 'DisplayGTK', 'if': 'CONFIG_GTK' }, >>> + 'cocoa': { 'type': 'DisplayCocoa', 'if': 'CONFIG_COCOA' }, >>> 'curses': { 'type': 'DisplayCurses', 'if': 'CONFIG_CURSES' }, >>> 'egl-headless': { 'type': 'DisplayEGLHeadless', >>> 'if': { 'all': ['CONFIG_OPENGL', 'CONFIG_GBM'] } >>> }, >>> diff --git a/qemu-options.hx b/qemu-options.hx >>> index fd1f8135fb..6fa9c38c83 100644 >>> --- a/qemu-options.hx >>> +++ b/qemu-options.hx >>> @@ -1912,6 +1912,9 @@ DEF("display", HAS_ARG, QEMU_OPTION_display, >>> #if defined(CONFIG_DBUS_DISPLAY) >>> "-display dbus[,addr=<dbusaddr>]\n" >>> " [,gl=on|core|es|off][,rendernode=<file>]\n" >>> +#endif >>> +#if defined(CONFIG_COCOA) >>> + "-display cocoa[,show-cursor=on|off][,left-command-key=on|off]\n" >>> #endif >>> "-display none\n" >>> " select display backend type\n" >>> @@ -1999,6 +2002,15 @@ SRST >>> ``charset=CP850`` for IBM CP850 encoding. The default is >>> ``CP437``. >>> >>> + ``cocoa`` >>> + Display video output in a Cocoa window. Mac only. This interface >>> + provides drop-down menus and other UI elements to configure and >>> + control the VM during runtime. Valid parameters are: >>> + >>> + ``show-cursor=on|off`` : Force showing the mouse cursor >>> + >>> + ``left-command-key=on|off`` : Disable forwarding left command key >>> to host >>> + >>> ``egl-headless[,rendernode=<file>]`` >>> Offload all OpenGL operations to a local DRI device. For any >>> graphical display, this display needs to be paired with either In the QAPI schema, @full-screen, @window-close and @show-cursor are common to all display types. Here, @full-screen is only documented with gtk, @window-close with gtk and sdl, @show-cursor with gtk, sdl and now cocoa. What's going on here? [...]