# -*- Mode: Python -*-
+# vim: filetype=python
#
##
#
# Sets the password of a remote display session.
#
-# @protocol: `vnc' to modify the VNC server password
-# `spice' to modify the Spice server password
+# @protocol: - 'vnc' to modify the VNC server password
+# - 'spice' to modify the Spice server password
#
# @password: the new password
#
# @connected: how to handle existing clients when changing the
-# password. If nothing is specified, defaults to `keep'
-# `fail' to fail the command if clients are connected
-# `disconnect' to disconnect existing clients
-# `keep' to maintain existing clients
+# password. If nothing is specified, defaults to 'keep'
+# 'fail' to fail the command if clients are connected
+# 'disconnect' to disconnect existing clients
+# 'keep' to maintain existing clients
#
-# Returns: Nothing on success
-# If Spice is not enabled, DeviceNotFound
+# Returns: - Nothing on success
+# - If Spice is not enabled, DeviceNotFound
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
# Expire the password of a remote display server.
#
-# @protocol: the name of the remote display protocol `vnc' or `spice'
+# @protocol: the name of the remote display protocol 'vnc' or 'spice'
#
# @time: when to expire the password.
-# `now' to expire the password immediately
-# `never' to cancel password expiration
-# `+INT' where INT is the number of seconds from now (integer)
-# `INT' where INT is the absolute time in seconds
#
-# Returns: Nothing on success
-# If @protocol is `spice' and Spice is not active, DeviceNotFound
+# - 'now' to expire the password immediately
+# - 'never' to cancel password expiration
+# - '+INT' where INT is the number of seconds from now (integer)
+# - 'INT' where INT is the absolute time in seconds
+#
+# Returns: - Nothing on success
+# - If @protocol is 'spice' and Spice is not active, DeviceNotFound
#
-# Since: 0.14.0
+# Since: 0.14
#
# Notes: Time is relative to the server and currently there is no way to
# coordinate server time with client time. It is not recommended to
#
# Returns: Nothing on success
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
##
{ 'command': 'screendump',
- 'data': {'filename': 'str', '*device': 'str', '*head': 'int'} }
+ 'data': {'filename': 'str', '*device': 'str', '*head': 'int'},
+ 'coroutine': true }
##
# == Spice
#
# @tls: true if the channel is encrypted, false otherwise.
#
-# Since: 0.14.0
+# Since: 0.14
##
{ 'struct': 'SpiceChannel',
'base': 'SpiceBasicInfo',
# @tls-port: The SPICE server's TLS port number.
#
# @auth: the current authentication type used by the server
-# 'none' if no authentication is being used
-# 'spice' uses SASL or direct TLS authentication, depending on command
-# line options
+#
+# - 'none' if no authentication is being used
+# - 'spice' uses SASL or direct TLS authentication, depending on command
+# line options
#
# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
# be determined by the client or the server, or unknown if spice
#
# @channels: a list of @SpiceChannel for each active spice channel
#
-# Since: 0.14.0
+# Since: 0.14
##
{ 'struct': 'SpiceInfo',
'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
#
# Returns: @SpiceInfo
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
# @client: client information
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
# @client: client information
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
# @client: client information
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
# @sasl_username: If SASL authentication is in use, the SASL username
# used for authentication.
#
-# Since: 0.14.0
+# Since: 0.14
##
{ 'struct': 'VncClientInfo',
'base': 'VncBasicInfo',
# @host: The hostname the VNC server is bound to. This depends on
# the name resolution on the host and may be an IP address.
#
-# @family: 'ipv6' if the host is listening for IPv6 connections
-# 'ipv4' if the host is listening for IPv4 connections
-# 'unix' if the host is listening on a unix domain socket
-# 'unknown' otherwise
+# @family: - 'ipv6' if the host is listening for IPv6 connections
+# - 'ipv4' if the host is listening for IPv4 connections
+# - 'unix' if the host is listening on a unix domain socket
+# - 'unknown' otherwise
#
# @service: The service name of the server's port. This may depends
# on the host system's service database so symbolic names should not
# be relied on.
#
# @auth: the current authentication type used by the server
-# 'none' if no authentication is being used
-# 'vnc' if VNC authentication is being used
-# 'vencrypt+plain' if VEncrypt is used with plain text authentication
-# 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
-# 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
-# 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
-# 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
-# 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
-# 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
-# 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
-# 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
+#
+# - 'none' if no authentication is being used
+# - 'vnc' if VNC authentication is being used
+# - 'vencrypt+plain' if VEncrypt is used with plain text authentication
+# - 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
+# - 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
+# - 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
+# - 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
+# - 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
+# - 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
+# - 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
+# - 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
#
# @clients: a list of @VncClientInfo of all currently connected clients
#
-# Since: 0.14.0
+# Since: 0.14
##
{ 'struct': 'VncInfo',
'data': {'enabled': 'bool', '*host': 'str',
#
# Returns: @VncInfo
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
#
# Change the VNC server password.
#
-# @password: the new password to use with VNC authentication
+# @password: the new password to use with VNC authentication
#
# Since: 1.1
#
-# Notes: An empty password in this command will set the password to the empty
-# string. Existing clients are unaffected by executing this command.
+# Notes: An empty password in this command will set the password to the empty
+# string. Existing clients are unaffected by executing this command.
##
{ 'command': 'change-vnc-password',
'data': { 'password': 'str' },
# @client: client information
#
# Note: This event is emitted before any authentication takes place, thus
-# the authentication ID is not provided
+# the authentication ID is not provided
#
-# Since: 0.13.0
+# Since: 0.13
#
# Example:
#
#
# @client: client information
#
-# Since: 0.13.0
+# Since: 0.13
#
# Example:
#
#
# @client: client information
#
-# Since: 0.13.0
+# Since: 0.13
#
# Example:
#
#
# @absolute: true if this device supports absolute coordinates as input
#
-# Since: 0.14.0
+# Since: 0.14
##
{ 'struct': 'MouseInfo',
'data': {'name': 'str', 'index': 'int', 'current': 'bool',
#
# Returns: a list of @MouseInfo for each device
#
-# Since: 0.14.0
+# Since: 0.14
#
# Example:
#
# @ac_forward: since 2.10
# @ac_refresh: since 2.10
# @ac_bookmarks: since 2.10
-# altgr, altgr_r: dropped in 2.10
#
# @muhenkan: since 2.12
# @katakanahiragana: since 2.12
# 'sysrq' will be transparently changed to 'print', so they
# are effectively synonyms.
#
-# Since: 1.3.0
+# Since: 1.3
#
##
{ 'enum': 'QKeyCode',
#
# Represents a keyboard key.
#
-# Since: 1.3.0
+# Since: 1.3
##
{ 'union': 'KeyValue',
'data': {
# @hold-time: time to delay key up events, milliseconds. Defaults
# to 100
#
-# Returns: Nothing on success
-# If key is unknown or redundant, InvalidParameter
+# Returns: - Nothing on success
+# - If key is unknown or redundant, InvalidParameter
#
-# Since: 1.3.0
+# Since: 1.3
#
# Example:
#
#
# Pointer motion input event.
#
-# @axis: Which axis is referenced by @value.
-# @value: Pointer position. For absolute coordinates the
-# valid range is 0 -> 0x7ffff
+# @axis: Which axis is referenced by @value.
+# @value: Pointer position. For absolute coordinates the
+# valid range is 0 -> 0x7ffff
#
# Since: 2.0
##
# Input event union.
#
# @type: the input type, one of:
-# - 'key': Input event of Keyboard
-# - 'btn': Input event of pointer buttons
-# - 'rel': Input event of relative pointer motion
-# - 'abs': Input event of absolute pointer motion
+#
+# - 'key': Input event of Keyboard
+# - 'btn': Input event of pointer buttons
+# - 'rel': Input event of relative pointer motion
+# - 'abs': Input event of absolute pointer motion
#
# Since: 2.0
##
#
# Send input event(s) to guest.
#
-# @device: display device to send event(s) to.
-# @head: head to send event(s) to, in case the
-# display device supports multiple scanouts.
-# @events: List of InputEvent union.
-#
-# Returns: Nothing on success.
-#
# The @device and @head parameters can be used to send the input event
# to specific input devices in case (a) multiple input devices of the
# same kind are added to the virtual machine and (b) you have
# are admissible, but devices with input routing config take
# precedence.
#
+# @device: display device to send event(s) to.
+# @head: head to send event(s) to, in case the
+# display device supports multiple scanouts.
+# @events: List of InputEvent union.
+#
+# Returns: Nothing on success.
+#
# Since: 2.6
#
# Note: The consoles are visible in the qom tree, under
-# /backend/console[$index]. They have a device link and head property,
-# so it is possible to map which console belongs to which device and
-# display.
+# /backend/console[$index]. They have a device link and head property,
+# so it is possible to map which console belongs to which device and
+# display.
#
# Example:
#
# Since: 3.0
#
##
- { 'enum' : 'DisplayGLMode',
- 'data' : [ 'off', 'on', 'core', 'es' ] }
+{ 'enum' : 'DisplayGLMode',
+ 'data' : [ 'off', 'on', 'core', 'es' ] }
##
# @DisplayCurses:
# @type: Which DisplayType qemu should use.
# @full-screen: Start user interface in fullscreen mode (default: off).
# @window-close: Allow to quit qemu with window close button (default: on).
+# @show-cursor: Force showing the mouse cursor (default: off).
+# (since: 5.0)
# @gl: Enable OpenGL support (default: off).
#
# Since: 2.12
'base' : { 'type' : 'DisplayType',
'*full-screen' : 'bool',
'*window-close' : 'bool',
+ '*show-cursor' : 'bool',
'*gl' : 'DisplayGLMode' },
'discriminator' : 'type',
'data' : { 'gtk' : 'DisplayGTK',