# -*- Mode: Python -*-
# vim: filetype=python
#

##
# = Remote desktop
##

{ 'include': 'common.json' }
{ 'include': 'sockets.json' }

##
# @DisplayProtocol:
#
# Display protocols which support changing password options.
#
# Since: 7.0
##
{ 'enum': 'DisplayProtocol',
  'data': [ 'vnc', 'spice' ] }

##
# @SetPasswordAction:
#
# An action to take on changing a password on a connection with active
# clients.
#
# @keep: maintain existing clients
#
# @fail: fail the command if clients are connected
#
# @disconnect: disconnect existing clients
#
# Since: 7.0
##
{ 'enum': 'SetPasswordAction',
  'data': [ 'keep', 'fail', 'disconnect' ] }

##
# @SetPasswordOptions:
#
# Options for set_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'. For VNC,
#     only 'keep' is currently implemented.
#
# Since: 7.0
##
{ 'union': 'SetPasswordOptions',
  'base': { 'protocol': 'DisplayProtocol',
            'password': 'str',
            '*connected': 'SetPasswordAction' },
  'discriminator': 'protocol',
  'data': { 'vnc': 'SetPasswordOptionsVnc' } }

##
# @SetPasswordOptionsVnc:
#
# Options for set_password specific to the VNC protocol.
#
# @display: The id of the display where the password should be
#     changed.  Defaults to the first.
#
# Since: 7.0
##
{ 'struct': 'SetPasswordOptionsVnc',
  'data': { '*display': 'str' } }

##
# @set_password:
#
# Set the password of a remote display server.
#
# Errors:
#     - If Spice is not enabled, DeviceNotFound
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "set_password", "arguments": { "protocol": "vnc",
#                                                    "password": "secret" } }
#     <- { "return": {} }
##
{ 'command': 'set_password', 'boxed': true, 'data': 'SetPasswordOptions' }

##
# @ExpirePasswordOptions:
#
# General options for expire_password.
#
# @protocol:
#     - 'vnc' to modify the VNC server expiration
#     - 'spice' to modify the Spice server expiration
#
# @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
#
# .. note:: Time is relative to the server and currently there is no way
#    to coordinate server time with client time.  It is not recommended
#    to use the absolute time version of the @time parameter unless
#    you're sure you are on the same machine as the QEMU instance.
#
# Since: 7.0
##
{ 'union': 'ExpirePasswordOptions',
  'base': { 'protocol': 'DisplayProtocol',
            'time': 'str' },
  'discriminator': 'protocol',
  'data': { 'vnc': 'ExpirePasswordOptionsVnc' } }

##
# @ExpirePasswordOptionsVnc:
#
# Options for expire_password specific to the VNC protocol.
#
# @display: The id of the display where the expiration should be
#     changed.  Defaults to the first.
#
# Since: 7.0
##
{ 'struct': 'ExpirePasswordOptionsVnc',
  'data': { '*display': 'str' } }

##
# @expire_password:
#
# Expire the password of a remote display server.
#
# Errors:
#     - If @protocol is 'spice' and Spice is not active,
#       DeviceNotFound
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
#                                                       "time": "+60" } }
#     <- { "return": {} }
##
{ 'command': 'expire_password', 'boxed': true, 'data': 'ExpirePasswordOptions' }

##
# @ImageFormat:
#
# Supported image format types.
#
# @png: PNG format
#
# @ppm: PPM format
#
# Since: 7.1
##
{ 'enum': 'ImageFormat',
  'data': ['ppm', 'png'] }

##
# @screendump:
#
# Capture the contents of a screen and write it to a file.
#
# @filename: the path of a new file to store the image
#
# @device: ID of the display device that should be dumped.  If this
#     parameter is missing, the primary display will be used.  (Since
#     2.12)
#
# @head: head to use in case the device supports multiple heads.  If
#     this parameter is missing, head #0 will be used.  Also note that
#     the head can only be specified in conjunction with the device
#     ID.  (Since 2.12)
#
# @format: image format for screendump.  (default: ppm) (Since 7.1)
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "screendump",
#          "arguments": { "filename": "/tmp/image" } }
#     <- { "return": {} }
##
{ 'command': 'screendump',
  'data': {'filename': 'str', '*device': 'str', '*head': 'int',
           '*format': 'ImageFormat'},
  'coroutine': true,
  'if': 'CONFIG_PIXMAN' }

##
# == Spice
##

##
# @SpiceBasicInfo:
#
# The basic information for SPICE network connection
#
# @host: IP address
#
# @port: port number
#
# @family: address family
#
# Since: 2.1
##
{ 'struct': 'SpiceBasicInfo',
  'data': { 'host': 'str',
            'port': 'str',
            'family': 'NetworkAddressFamily' },
  'if': 'CONFIG_SPICE' }

##
# @SpiceServerInfo:
#
# Information about a SPICE server
#
# @auth: authentication method
#
# Since: 2.1
##
{ 'struct': 'SpiceServerInfo',
  'base': 'SpiceBasicInfo',
  'data': { '*auth': 'str' },
  'if': 'CONFIG_SPICE' }

##
# @SpiceChannel:
#
# Information about a SPICE client channel.
#
# @connection-id: SPICE connection id number.  All channels with the
#     same id belong to the same SPICE session.
#
# @channel-type: SPICE channel type number.  "1" is the main control
#     channel, filter for this one if you want to track spice sessions
#     only
#
# @channel-id: SPICE channel ID number.  Usually "0", might be
#     different when multiple channels of the same type exist, such as
#     multiple display channels in a multihead setup
#
# @tls: true if the channel is encrypted, false otherwise.
#
# Since: 0.14
##
{ 'struct': 'SpiceChannel',
  'base': 'SpiceBasicInfo',
  'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
           'tls': 'bool'},
  'if': 'CONFIG_SPICE' }

##
# @SpiceQueryMouseMode:
#
# An enumeration of Spice mouse states.
#
# @client: Mouse cursor position is determined by the client.
#
# @server: Mouse cursor position is determined by the server.
#
# @unknown: No information is available about mouse mode used by the
#     spice server.
#
# Since: 1.1
##
{ 'enum': 'SpiceQueryMouseMode',
  'data': [ 'client', 'server', 'unknown' ],
  'if': 'CONFIG_SPICE' }

##
# @SpiceInfo:
#
# Information about the SPICE session.
#
# @enabled: true if the SPICE server is enabled, false otherwise
#
# @migrated: true if the last guest migration completed and spice
#     migration had completed as well, false otherwise (since 1.4)
#
# @host: The hostname the SPICE server is bound to.  This depends on
#     the name resolution on the host and may be an IP address.
#
# @port: The SPICE server's port number.
#
# @compiled-version: SPICE server version.
#
# @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
#
# @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 server doesn't provide this information.
#     (since: 1.1)
#
# @channels: a list of @SpiceChannel for each active spice channel
#
# Since: 0.14
##
{ 'struct': 'SpiceInfo',
  'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
           '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
           'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']},
  'if': 'CONFIG_SPICE' }

##
# @query-spice:
#
# Returns information about the current SPICE server
#
# Returns: @SpiceInfo
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "query-spice" }
#     <- { "return": {
#              "enabled": true,
#              "auth": "spice",
#              "port": 5920,
#              "migrated":false,
#              "tls-port": 5921,
#              "host": "0.0.0.0",
#              "mouse-mode":"client",
#              "channels": [
#                 {
#                    "port": "54924",
#                    "family": "ipv4",
#                    "channel-type": 1,
#                    "connection-id": 1804289383,
#                    "host": "127.0.0.1",
#                    "channel-id": 0,
#                    "tls": true
#                 },
#                 {
#                    "port": "36710",
#                    "family": "ipv4",
#                    "channel-type": 4,
#                    "connection-id": 1804289383,
#                    "host": "127.0.0.1",
#                    "channel-id": 0,
#                    "tls": false
#                 },
#                 ...
#              ]
#           }
#        }
##
{ 'command': 'query-spice', 'returns': 'SpiceInfo',
  'if': 'CONFIG_SPICE' }

##
# @SPICE_CONNECTED:
#
# Emitted when a SPICE client establishes a connection
#
# @server: server information
#
# @client: client information
#
# Since: 0.14
#
# .. qmp-example::
#
#     <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
#          "event": "SPICE_CONNECTED",
#          "data": {
#            "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
#            "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
#        }}
##
{ 'event': 'SPICE_CONNECTED',
  'data': { 'server': 'SpiceBasicInfo',
            'client': 'SpiceBasicInfo' },
  'if': 'CONFIG_SPICE' }

##
# @SPICE_INITIALIZED:
#
# Emitted after initial handshake and authentication takes place (if
# any) and the SPICE channel is up and running
#
# @server: server information
#
# @client: client information
#
# Since: 0.14
#
# .. qmp-example::
#
#     <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
#          "event": "SPICE_INITIALIZED",
#          "data": {"server": {"auth": "spice", "port": "5921",
#                              "family": "ipv4", "host": "127.0.0.1"},
#                   "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
#                              "connection-id": 1804289383, "host": "127.0.0.1",
#                              "channel-id": 0, "tls": true}
#        }}
##
{ 'event': 'SPICE_INITIALIZED',
  'data': { 'server': 'SpiceServerInfo',
            'client': 'SpiceChannel' },
  'if': 'CONFIG_SPICE' }

##
# @SPICE_DISCONNECTED:
#
# Emitted when the SPICE connection is closed
#
# @server: server information
#
# @client: client information
#
# Since: 0.14
#
# .. qmp-example::
#
#     <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
#          "event": "SPICE_DISCONNECTED",
#          "data": {
#            "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
#            "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
#        }}
##
{ 'event': 'SPICE_DISCONNECTED',
  'data': { 'server': 'SpiceBasicInfo',
            'client': 'SpiceBasicInfo' },
  'if': 'CONFIG_SPICE' }

##
# @SPICE_MIGRATE_COMPLETED:
#
# Emitted when SPICE migration has completed
#
# Since: 1.3
#
# .. qmp-example::
#
#     <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
#          "event": "SPICE_MIGRATE_COMPLETED" }
##
{ 'event': 'SPICE_MIGRATE_COMPLETED',
  'if': 'CONFIG_SPICE' }

##
# == VNC
##

##
# @VncBasicInfo:
#
# The basic information for vnc network connection
#
# @host: IP address
#
# @service: The service name of the vnc port.  This may depend on the
#     host system's service database so symbolic names should not be
#     relied on.
#
# @family: address family
#
# @websocket: true in case the socket is a websocket (since 2.3).
#
# Since: 2.1
##
{ 'struct': 'VncBasicInfo',
  'data': { 'host': 'str',
            'service': 'str',
            'family': 'NetworkAddressFamily',
            'websocket': 'bool' },
  'if': 'CONFIG_VNC' }

##
# @VncServerInfo:
#
# The network connection information for server
#
# @auth: authentication method used for the plain (non-websocket) VNC
#     server
#
# Since: 2.1
##
{ 'struct': 'VncServerInfo',
  'base': 'VncBasicInfo',
  'data': { '*auth': 'str' },
  'if': 'CONFIG_VNC' }

##
# @VncClientInfo:
#
# Information about a connected VNC client.
#
# @x509_dname: If x509 authentication is in use, the Distinguished
#     Name of the client.
#
# @sasl_username: If SASL authentication is in use, the SASL username
#     used for authentication.
#
# Since: 0.14
##
{ 'struct': 'VncClientInfo',
  'base': 'VncBasicInfo',
  'data': { '*x509_dname': 'str', '*sasl_username': 'str' },
  'if': 'CONFIG_VNC' }

##
# @VncInfo:
#
# Information about the VNC session.
#
# @enabled: true if the VNC server is enabled, false otherwise
#
# @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
#
# @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
#
# @clients: a list of @VncClientInfo of all currently connected
#     clients
#
# Since: 0.14
##
{ 'struct': 'VncInfo',
  'data': {'enabled': 'bool', '*host': 'str',
           '*family': 'NetworkAddressFamily',
           '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']},
  'if': 'CONFIG_VNC' }

##
# @VncPrimaryAuth:
#
# vnc primary authentication method.
#
# Since: 2.3
##
{ 'enum': 'VncPrimaryAuth',
  'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra',
            'tls', 'vencrypt', 'sasl' ],
  'if': 'CONFIG_VNC' }

##
# @VncVencryptSubAuth:
#
# vnc sub authentication method with vencrypt.
#
# Since: 2.3
##
{ 'enum': 'VncVencryptSubAuth',
  'data': [ 'plain',
            'tls-none',  'x509-none',
            'tls-vnc',   'x509-vnc',
            'tls-plain', 'x509-plain',
            'tls-sasl',  'x509-sasl' ],
  'if': 'CONFIG_VNC' }

##
# @VncServerInfo2:
#
# The network connection information for server
#
# @auth: The current authentication type used by the servers
#
# @vencrypt: The vencrypt sub authentication type used by the servers,
#     only specified in case auth == vencrypt.
#
# Since: 2.9
##
{ 'struct': 'VncServerInfo2',
  'base': 'VncBasicInfo',
  'data': { 'auth'      : 'VncPrimaryAuth',
            '*vencrypt' : 'VncVencryptSubAuth' },
  'if': 'CONFIG_VNC' }

##
# @VncInfo2:
#
# Information about a vnc server
#
# @id: vnc server name.
#
# @server: A list of @VncBasincInfo describing all listening sockets.
#     The list can be empty (in case the vnc server is disabled). It
#     also may have multiple entries: normal + websocket, possibly
#     also ipv4 + ipv6 in the future.
#
# @clients: A list of @VncClientInfo of all currently connected
#     clients.  The list can be empty, for obvious reasons.
#
# @auth: The current authentication type used by the non-websockets
#     servers
#
# @vencrypt: The vencrypt authentication type used by the servers,
#     only specified in case auth == vencrypt.
#
# @display: The display device the vnc server is linked to.
#
# Since: 2.3
##
{ 'struct': 'VncInfo2',
  'data': { 'id'        : 'str',
            'server'    : ['VncServerInfo2'],
            'clients'   : ['VncClientInfo'],
            'auth'      : 'VncPrimaryAuth',
            '*vencrypt' : 'VncVencryptSubAuth',
            '*display'  : 'str' },
  'if': 'CONFIG_VNC' }

##
# @query-vnc:
#
# Returns information about the current VNC server
#
# Returns: @VncInfo
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "query-vnc" }
#     <- { "return": {
#              "enabled":true,
#              "host":"0.0.0.0",
#              "service":"50402",
#              "auth":"vnc",
#              "family":"ipv4",
#              "clients":[
#                 {
#                    "host":"127.0.0.1",
#                    "service":"50401",
#                    "family":"ipv4",
#                    "websocket":false
#                 }
#              ]
#           }
#        }
##
{ 'command': 'query-vnc', 'returns': 'VncInfo',
  'if': 'CONFIG_VNC' }
##
# @query-vnc-servers:
#
# Returns a list of vnc servers.  The list can be empty.
#
# Returns: a list of @VncInfo2
#
# Since: 2.3
##
{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'],
  'if': 'CONFIG_VNC' }

##
# @change-vnc-password:
#
# Change the VNC server password.
#
# @password: the new password to use with VNC authentication
#
# Since: 1.1
#
# .. note:: 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' },
  'if': 'CONFIG_VNC' }

##
# @VNC_CONNECTED:
#
# Emitted when a VNC client establishes a connection
#
# @server: server information
#
# @client: client information
#
# .. note:: This event is emitted before any authentication takes place,
#    thus the authentication ID is not provided.
#
# Since: 0.13
#
# .. qmp-example::
#
#     <- { "event": "VNC_CONNECTED",
#          "data": {
#                "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
#                            "service": "5901", "host": "0.0.0.0" },
#                "client": { "family": "ipv4", "service": "58425",
#                            "host": "127.0.0.1", "websocket": false } },
#          "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
##
{ 'event': 'VNC_CONNECTED',
  'data': { 'server': 'VncServerInfo',
            'client': 'VncBasicInfo' },
  'if': 'CONFIG_VNC' }

##
# @VNC_INITIALIZED:
#
# Emitted after authentication takes place (if any) and the VNC
# session is made active
#
# @server: server information
#
# @client: client information
#
# Since: 0.13
#
# .. qmp-example::
#
#     <-  { "event": "VNC_INITIALIZED",
#           "data": {
#                "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
#                            "service": "5901", "host": "0.0.0.0"},
#                "client": { "family": "ipv4", "service": "46089", "websocket": false,
#                            "host": "127.0.0.1", "sasl_username": "luiz" } },
#           "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
##
{ 'event': 'VNC_INITIALIZED',
  'data': { 'server': 'VncServerInfo',
            'client': 'VncClientInfo' },
  'if': 'CONFIG_VNC' }

##
# @VNC_DISCONNECTED:
#
# Emitted when the connection is closed
#
# @server: server information
#
# @client: client information
#
# Since: 0.13
#
# .. qmp-example::
#
#     <- { "event": "VNC_DISCONNECTED",
#          "data": {
#                "server": { "auth": "sasl", "family": "ipv4", "websocket": false,
#                            "service": "5901", "host": "0.0.0.0" },
#                "client": { "family": "ipv4", "service": "58425", "websocket": false,
#                            "host": "127.0.0.1", "sasl_username": "luiz" } },
#          "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
##
{ 'event': 'VNC_DISCONNECTED',
  'data': { 'server': 'VncServerInfo',
            'client': 'VncClientInfo' },
  'if': 'CONFIG_VNC' }

##
# = Input
##

##
# @MouseInfo:
#
# Information about a mouse device.
#
# @name: the name of the mouse device
#
# @index: the index of the mouse device
#
# @current: true if this device is currently receiving mouse events
#
# @absolute: true if this device supports absolute coordinates as
#     input
#
# Since: 0.14
##
{ 'struct': 'MouseInfo',
  'data': {'name': 'str', 'index': 'int', 'current': 'bool',
           'absolute': 'bool'} }

##
# @query-mice:
#
# Returns information about each active mouse device
#
# Returns: a list of @MouseInfo for each device
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "query-mice" }
#     <- { "return": [
#              {
#                 "name":"QEMU Microsoft Mouse",
#                 "index":0,
#                 "current":false,
#                 "absolute":false
#              },
#              {
#                 "name":"QEMU PS/2 Mouse",
#                 "index":1,
#                 "current":true,
#                 "absolute":true
#              }
#           ]
#        }
##
{ 'command': 'query-mice', 'returns': ['MouseInfo'] }

##
# @QKeyCode:
#
# An enumeration of key name.
#
# This is used by the @send-key command.
#
# @unmapped: since 2.0
#
# @pause: since 2.0
#
# @ro: since 2.4
#
# @kp_comma: since 2.4
#
# @kp_equals: since 2.6
#
# @power: since 2.6
#
# @hiragana: since 2.9
#
# @henkan: since 2.9
#
# @yen: since 2.9
#
# @sleep: since 2.10
#
# @wake: since 2.10
#
# @audionext: since 2.10
#
# @audioprev: since 2.10
#
# @audiostop: since 2.10
#
# @audioplay: since 2.10
#
# @audiomute: since 2.10
#
# @volumeup: since 2.10
#
# @volumedown: since 2.10
#
# @mediaselect: since 2.10
#
# @mail: since 2.10
#
# @calculator: since 2.10
#
# @computer: since 2.10
#
# @ac_home: since 2.10
#
# @ac_back: since 2.10
#
# @ac_forward: since 2.10
#
# @ac_refresh: since 2.10
#
# @ac_bookmarks: since 2.10
#
# @muhenkan: since 2.12
#
# @katakanahiragana: since 2.12
#
# @lang1: since 6.1
#
# @lang2: since 6.1
#
# @f13: since 8.0
#
# @f14: since 8.0
#
# @f15: since 8.0
#
# @f16: since 8.0
#
# @f17: since 8.0
#
# @f18: since 8.0
#
# @f19: since 8.0
#
# @f20: since 8.0
#
# @f21: since 8.0
#
# @f22: since 8.0
#
# @f23: since 8.0
#
# @f24: since 8.0
#
# 'sysrq' was mistakenly added to hack around the fact that the ps2
# driver was not generating correct scancodes sequences when
# 'alt+print' was pressed.  This flaw is now fixed and the 'sysrq' key
# serves no further purpose.  Any further use of 'sysrq' will be
# transparently changed to 'print', so they are effectively synonyms.
#
# Since: 1.3
##
{ 'enum': 'QKeyCode',
  'data': [ 'unmapped',
            'shift', 'shift_r', 'alt', 'alt_r', 'ctrl',
            'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8',
            '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e',
            'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right',
            'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon',
            'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b',
            'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock',
            'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10',
            'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply',
            'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0',
            'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8',
            'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end',
            'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
            'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
            'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
            'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
            'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
            'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
            'volumeup', 'volumedown', 'mediaselect',
            'mail', 'calculator', 'computer',
            'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks',
            'lang1', 'lang2','f13','f14','f15','f16','f17','f18','f19','f20','f21','f22','f23','f24' ] }

##
# @KeyValueKind:
#
# Since: 1.3
##
{ 'enum': 'KeyValueKind',
  'data': [ 'number', 'qcode' ] }

##
# @IntWrapper:
#
# @data: a numeric key code
#
# Since: 1.3
##
{ 'struct': 'IntWrapper',
  'data': { 'data': 'int' } }

##
# @QKeyCodeWrapper:
#
# @data: An enumeration of key name
#
# Since: 1.3
##
{ 'struct': 'QKeyCodeWrapper',
  'data': { 'data': 'QKeyCode' } }

##
# @KeyValue:
#
# Represents a keyboard key.
#
# @type: key encoding
#
# Since: 1.3
##
{ 'union': 'KeyValue',
  'base': { 'type': 'KeyValueKind' },
  'discriminator': 'type',
  'data': {
    'number': 'IntWrapper',
    'qcode': 'QKeyCodeWrapper' } }

##
# @send-key:
#
# Send keys to guest.
#
# @keys: An array of @KeyValue elements.  All @KeyValues in this array
#     are simultaneously sent to the guest.  A @KeyValue.number value
#     is sent directly to the guest, while @KeyValue.qcode must be a
#     valid @QKeyCode value
#
# @hold-time: time to delay key up events, milliseconds.  Defaults to
#     100
#
# Errors:
#     - If key is unknown or redundant, GenericError
#
# Since: 1.3
#
# .. qmp-example::
#
#     -> { "execute": "send-key",
#          "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
#                                   { "type": "qcode", "data": "alt" },
#                                   { "type": "qcode", "data": "delete" } ] } }
#     <- { "return": {} }
##
{ 'command': 'send-key',
  'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }

##
# @InputButton:
#
# Button of a pointer input device (mouse, tablet).
#
# @side: front side button of a 5-button mouse (since 2.9)
#
# @extra: rear side button of a 5-button mouse (since 2.9)
#
# @touch: screen contact on a multi-touch device (since 8.1)
#
# Since: 2.0
##
{ 'enum'  : 'InputButton',
  'data'  : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side',
  'extra', 'wheel-left', 'wheel-right', 'touch' ] }

##
# @InputAxis:
#
# Position axis of a pointer input device (mouse, tablet).
#
# Since: 2.0
##
{ 'enum'  : 'InputAxis',
  'data'  : [ 'x', 'y' ] }

##
# @InputMultiTouchType:
#
# Type of a multi-touch event.
#
# @begin: A new touch event sequence has just started.
#
# @update: A touch event sequence has been updated.
#
# @end: A touch event sequence has finished.
#
# @cancel: A touch event sequence has been canceled.
#
# @data: Absolute position data.
#
# Since: 8.1
##
{ 'enum'  : 'InputMultiTouchType',
  'data'  : [ 'begin', 'update', 'end', 'cancel', 'data' ] }


##
# @InputKeyEvent:
#
# Keyboard input event.
#
# @key: Which key this event is for.
#
# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
{ 'struct'  : 'InputKeyEvent',
  'data'  : { 'key'     : 'KeyValue',
              'down'    : 'bool' } }

##
# @InputBtnEvent:
#
# Pointer button input event.
#
# @button: Which button this event is for.
#
# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
{ 'struct'  : 'InputBtnEvent',
  'data'  : { 'button'  : 'InputButton',
              'down'    : 'bool' } }

##
# @InputMoveEvent:
#
# Pointer motion input event.
#
# @axis: Which axis is referenced by @value.
#
# @value: Pointer position.  For absolute coordinates the valid range
#     is 0 -> 0x7ffff
#
# Since: 2.0
##
{ 'struct'  : 'InputMoveEvent',
  'data'  : { 'axis'    : 'InputAxis',
              'value'   : 'int' } }

##
# @InputMultiTouchEvent:
#
# MultiTouch input event.
#
# @type: The type of multi-touch event.
#
# @slot: Which slot has generated the event.
#
# @tracking-id: ID to correlate this event with previously generated
#     events.
#
# @axis: Which axis is referenced by @value.
#
# @value: Contact position.
#
# Since: 8.1
##
{ 'struct'  : 'InputMultiTouchEvent',
  'data'  : { 'type'       : 'InputMultiTouchType',
              'slot'       : 'int',
              'tracking-id': 'int',
              'axis'       : 'InputAxis',
              'value'      : 'int' } }

##
# @InputEventKind:
#
# @key: a keyboard input event
#
# @btn: a pointer button input event
#
# @rel: a relative pointer motion input event
#
# @abs: an absolute pointer motion input event
#
# @mtt: a multi-touch input event
#
# Since: 2.0
##
{ 'enum': 'InputEventKind',
  'data': [ 'key', 'btn', 'rel', 'abs', 'mtt' ] }

##
# @InputKeyEventWrapper:
#
# @data: Keyboard input event
#
# Since: 2.0
##
{ 'struct': 'InputKeyEventWrapper',
  'data': { 'data': 'InputKeyEvent' } }

##
# @InputBtnEventWrapper:
#
# @data: Pointer button input event
#
# Since: 2.0
##
{ 'struct': 'InputBtnEventWrapper',
  'data': { 'data': 'InputBtnEvent' } }

##
# @InputMoveEventWrapper:
#
# @data: Pointer motion input event
#
# Since: 2.0
##
{ 'struct': 'InputMoveEventWrapper',
  'data': { 'data': 'InputMoveEvent' } }

##
# @InputMultiTouchEventWrapper:
#
# @data: MultiTouch input event
#
# Since: 8.1
##
{ 'struct': 'InputMultiTouchEventWrapper',
  'data': { 'data': 'InputMultiTouchEvent' } }

##
# @InputEvent:
#
# Input event union.
#
# @type: the type of input event
#
# Since: 2.0
##
{ 'union' : 'InputEvent',
  'base': { 'type': 'InputEventKind' },
  'discriminator': 'type',
  'data'  : { 'key'     : 'InputKeyEventWrapper',
              'btn'     : 'InputBtnEventWrapper',
              'rel'     : 'InputMoveEventWrapper',
              'abs'     : 'InputMoveEventWrapper',
              'mtt'     : 'InputMultiTouchEventWrapper' } }

##
# @input-send-event:
#
# Send input event(s) to guest.
#
# 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
# configured input routing (see docs/multiseat.txt) for those input
# devices.  The parameters work exactly like the device and head
# properties of input devices.  If @device is missing, only devices
# that have no input routing config are admissible.  If @device is
# specified, both input devices with and without input routing config
# 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.
#
# 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.
#
# .. qmp-example::
#    :title: Press left mouse button
#
#     -> { "execute": "input-send-event",
#         "arguments": { "device": "video0",
#                        "events": [ { "type": "btn",
#                        "data" : { "down": true, "button": "left" } } ] } }
#     <- { "return": {} }
#
#     -> { "execute": "input-send-event",
#         "arguments": { "device": "video0",
#                        "events": [ { "type": "btn",
#                        "data" : { "down": false, "button": "left" } } ] } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :title: Press ctrl-alt-del
#
#     -> { "execute": "input-send-event",
#          "arguments": { "events": [
#             { "type": "key", "data" : { "down": true,
#               "key": {"type": "qcode", "data": "ctrl" } } },
#             { "type": "key", "data" : { "down": true,
#               "key": {"type": "qcode", "data": "alt" } } },
#             { "type": "key", "data" : { "down": true,
#               "key": {"type": "qcode", "data": "delete" } } } ] } }
#     <- { "return": {} }
#
# .. qmp-example::
#    :title: Move mouse pointer to absolute coordinates
#
#     -> { "execute": "input-send-event" ,
#       "arguments": { "events": [
#                    { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
#                    { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
#     <- { "return": {} }
##
{ 'command': 'input-send-event',
  'data': { '*device': 'str',
            '*head'  : 'int',
            'events' : [ 'InputEvent' ] } }

##
# @DisplayGTK:
#
# GTK display options.
#
# @grab-on-hover: Grab keyboard input on mouse hover.
#
# @zoom-to-fit: Zoom guest display to fit into the host window.  When
#     turned off the host window will be resized instead.  In case the
#     display device can notify the guest on window resizes
#     (virtio-gpu) this will default to "on", assuming the guest will
#     resize the display to match the window size then.  Otherwise it
#     defaults to "off".  (Since 3.1)
#
# @show-tabs: Display the tab bar for switching between the various
#     graphical interfaces (e.g. VGA and virtual console character
#     devices) by default.  (Since 7.1)
#
# @show-menubar: Display the main window menubar.  Defaults to "on".
#     (Since 8.0)
#
# Since: 2.12
##
{ 'struct'  : 'DisplayGTK',
  'data'    : { '*grab-on-hover' : 'bool',
                '*zoom-to-fit'   : 'bool',
                '*show-tabs'     : 'bool',
                '*show-menubar'  : 'bool'  } }

##
# @DisplayEGLHeadless:
#
# EGL headless display options.
#
# @rendernode: Which DRM render node should be used.  Default is the
#     first available node on the host.
#
# Since: 3.1
##
{ 'struct'  : 'DisplayEGLHeadless',
  'data'    : { '*rendernode' : 'str' } }

##
# @DisplayDBus:
#
# DBus display options.
#
# @addr: The D-Bus bus address (default to the session bus).
#
# @rendernode: Which DRM render node should be used.  Default is the
#     first available node on the host.
#
# @p2p: Whether to use peer-to-peer connections (accepted through
#     @add_client).
#
# @audiodev: Use the specified DBus audiodev to export audio.
#
# Since: 7.0
##
{ 'struct'  : 'DisplayDBus',
  'data'    : { '*rendernode' : 'str',
                '*addr': 'str',
                '*p2p': 'bool',
                '*audiodev': 'str' } }

##
# @DisplayGLMode:
#
# Display OpenGL mode.
#
# @off: Disable OpenGL (default).
#
# @on: Use OpenGL, pick context type automatically.  Would better be
#     named 'auto' but is called 'on' for backward compatibility with
#     bool type.
#
# @core: Use OpenGL with Core (desktop) Context.
#
# @es: Use OpenGL with ES (embedded systems) Context.
#
# Since: 3.0
##
{ 'enum'    : 'DisplayGLMode',
  'data'    : [ 'off', 'on', 'core', 'es' ] }

##
# @DisplayCurses:
#
# Curses display options.
#
# @charset: Font charset used by guest (default: CP437).
#
# Since: 4.0
##
{ 'struct'  : 'DisplayCurses',
  'data'    : { '*charset'       : 'str' } }

##
# @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"
#
# @full-grab: Capture all key presses, including system combos.  This
#     requires accessibility permissions, since it performs a global
#     grab on key events.  (default: off) See
#     https://support.apple.com/en-in/guide/mac-help/mh32356/mac
#
# @swap-opt-cmd: Swap the Option and Command keys so that their key
#     codes match their position on non-Mac keyboards and you can use
#     Meta/Super and Alt where you expect them.  (default: off)
#
# @zoom-to-fit: Zoom guest display to fit into the host window.  When
#     turned off the host window will be resized instead.  Defaults to
#     "off".  (Since 8.2)
#
# @zoom-interpolation: Apply interpolation to smooth output when
#     zoom-to-fit is enabled. Defaults to "off".  (Since 9.0)
#
# Since: 7.0
##
{ 'struct': 'DisplayCocoa',
  'data': {
      '*left-command-key': 'bool',
      '*full-grab': 'bool',
      '*swap-opt-cmd': 'bool',
      '*zoom-to-fit': 'bool',
      '*zoom-interpolation': 'bool'
  } }

##
# @HotKeyMod:
#
# Set of modifier keys that need to be held for shortcut key actions.
#
# Since: 7.1
##
{ 'enum'  : 'HotKeyMod',
  'data'  : [ 'lctrl-lalt', 'lshift-lctrl-lalt', 'rctrl' ] }

##
# @DisplaySDL:
#
# SDL2 display options.
#
# @grab-mod: Modifier keys that should be pressed together with the
#     "G" key to release the mouse grab.
#
# Since: 7.1
##
{ 'struct'  : 'DisplaySDL',
  'data'    : { '*grab-mod'   : 'HotKeyMod' } }

##
# @DisplayType:
#
# Display (user interface) type.
#
# @default: The default user interface, selecting from the first
#     available of gtk, sdl, cocoa, and vnc.
#
# @none: No user interface or video output display.  The guest will
#     still see an emulated graphics card, but its output will not be
#     displayed to the QEMU user.
#
# @gtk: The GTK user interface.
#
# @sdl: The SDL user interface.
#
# @egl-headless: No user interface, offload GL operations to a local
#     DRI device.  Graphical display need to be paired with VNC or
#     Spice.  (Since 3.1)
#
# @curses: Display video output via curses.  For graphics device
#     models which support a text mode, QEMU can display this output
#     using a curses/ncurses interface.  Nothing is displayed when the
#     graphics device is in graphical mode or if the graphics device
#     does not support a text mode.  Generally only the VGA device
#     models support text mode.
#
# @cocoa: The Cocoa user interface.
#
# @spice-app: Set up a Spice server and run the default associated
#     application to connect to it.  The server will redirect the
#     serial console and QEMU monitors.  (Since 4.0)
#
# @dbus: Start a D-Bus service for the display.  (Since 7.0)
#
# Since: 2.12
##
{ 'enum'    : 'DisplayType',
  'data'    : [
    { 'name': 'default' },
    { 'name': 'none' },
    { 'name': 'gtk', 'if': 'CONFIG_GTK' },
    { 'name': 'sdl', 'if': 'CONFIG_SDL' },
    { 'name': 'egl-headless', 'if': 'CONFIG_OPENGL' },
    { 'name': 'curses', 'if': 'CONFIG_CURSES' },
    { 'name': 'cocoa', 'if': 'CONFIG_COCOA' },
    { 'name': 'spice-app', 'if': 'CONFIG_SPICE' },
    { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' }
  ]
}

##
# @DisplayOptions:
#
# Display (user interface) options.
#
# @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
##
{ 'union'   : 'DisplayOptions',
  'base'    : { 'type'           : 'DisplayType',
                '*full-screen'   : 'bool',
                '*window-close'  : 'bool',
                '*show-cursor'   : 'bool',
                '*gl'            : 'DisplayGLMode' },
  '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': 'CONFIG_OPENGL' },
      'dbus': { 'type': 'DisplayDBus', 'if': 'CONFIG_DBUS_DISPLAY' },
      'sdl': { 'type': 'DisplaySDL', 'if': 'CONFIG_SDL' }
  }
}

##
# @query-display-options:
#
# Returns information about display configuration
#
# Returns: @DisplayOptions
#
# Since: 3.1
##
{ 'command': 'query-display-options',
  'returns': 'DisplayOptions' }

##
# @DisplayReloadType:
#
# Available DisplayReload types.
#
# @vnc: VNC display
#
# Since: 6.0
##
{ 'enum': 'DisplayReloadType',
  'data': ['vnc'] }

##
# @DisplayReloadOptionsVNC:
#
# Specify the VNC reload options.
#
# @tls-certs: reload tls certs or not.
#
# Since: 6.0
##
{ 'struct': 'DisplayReloadOptionsVNC',
  'data': { '*tls-certs': 'bool' } }

##
# @DisplayReloadOptions:
#
# Options of the display configuration reload.
#
# @type: Specify the display type.
#
# Since: 6.0
##
{ 'union': 'DisplayReloadOptions',
  'base': {'type': 'DisplayReloadType'},
  'discriminator': 'type',
  'data': { 'vnc': 'DisplayReloadOptionsVNC' } }

##
# @display-reload:
#
# Reload display configuration.
#
# Since: 6.0
#
# .. qmp-example::
#
#     -> { "execute": "display-reload",
#          "arguments": { "type": "vnc", "tls-certs": true  } }
#     <- { "return": {} }
##
{ 'command': 'display-reload',
  'data': 'DisplayReloadOptions',
  'boxed' : true }

##
# @DisplayUpdateType:
#
# Available DisplayUpdate types.
#
# @vnc: VNC display
#
# Since: 7.1
##
{ 'enum': 'DisplayUpdateType',
  'data': ['vnc'] }

##
# @DisplayUpdateOptionsVNC:
#
# Specify the VNC reload options.
#
# @addresses: If specified, change set of addresses to listen for
#     connections.  Addresses configured for websockets are not
#     touched.
#
# Since: 7.1
##
{ 'struct': 'DisplayUpdateOptionsVNC',
  'data': { '*addresses': ['SocketAddress'] } }

##
# @DisplayUpdateOptions:
#
# Options of the display configuration reload.
#
# @type: Specify the display type.
#
# Since: 7.1
##
{ 'union': 'DisplayUpdateOptions',
  'base': {'type': 'DisplayUpdateType'},
  'discriminator': 'type',
  'data': { 'vnc': 'DisplayUpdateOptionsVNC' } }

##
# @display-update:
#
# Update display configuration.
#
# Since: 7.1
#
# .. qmp-example::
#
#     -> { "execute": "display-update",
#          "arguments": { "type": "vnc", "addresses":
#                         [ { "type": "inet", "host": "0.0.0.0",
#                             "port": "5901" } ] } }
#     <- { "return": {} }
##
{ 'command': 'display-update',
  'data': 'DisplayUpdateOptions',
  'boxed' : true }

##
# @client_migrate_info:
#
# Set migration information for remote display.  This makes the server
# ask the client to automatically reconnect using the new parameters
# once migration finished successfully.  Only implemented for SPICE.
#
# @protocol: must be "spice"
#
# @hostname: migration target hostname
#
# @port: spice tcp port for plaintext channels
#
# @tls-port: spice tcp port for tls-secured channels
#
# @cert-subject: server certificate subject
#
# Since: 0.14
#
# .. qmp-example::
#
#     -> { "execute": "client_migrate_info",
#          "arguments": { "protocol": "spice",
#                         "hostname": "virt42.lab.kraxel.org",
#                         "port": 1234 } }
#     <- { "return": {} }
##
{ 'command': 'client_migrate_info',
  'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int',
            '*tls-port': 'int', '*cert-subject': 'str' } }
