diff options
author | Markus Armbruster <armbru@redhat.com> | 2017-08-24 21:14:00 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2017-09-04 13:09:12 +0200 |
commit | 608cfed66a6adeac136b0c09cd62d081062256f3 (patch) | |
tree | 0704ca4b5a82dbc46eb4b78735324d7f0b845a35 /qapi-schema.json | |
parent | 3c0bd37dac270b52159057065cdefe2496dc0e89 (diff) |
qapi-schema: Collect UI stuff in qapi/ui.json
UI stuff is remote desktop stuff (Spice, VNC) and input stuff (mouse,
keyboard).
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-Id: <1503602048-12268-9-git-send-email-armbru@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'qapi-schema.json')
-rw-r--r-- | qapi-schema.json | 784 |
1 files changed, 1 insertions, 783 deletions
diff --git a/qapi-schema.json b/qapi-schema.json index e9b61ebf12..6a23f5991c 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -86,6 +86,7 @@ { 'include': 'qapi/char.json' } { 'include': 'qapi/net.json' } { 'include': 'qapi/rocker.json' } +{ 'include': 'qapi/ui.json' } { 'include': 'qapi/event.json' } { 'include': 'qapi/trace.json' } { 'include': 'qapi/introspect.json' } @@ -1087,56 +1088,6 @@ { 'command': 'x-colo-lost-heartbeat' } ## -# @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.0 -## -{ '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.0 -# -# 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'] } - -## # @CpuInfoArch: # # An enumeration of cpu types that enable additional information during @@ -1349,376 +1300,6 @@ { 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] } ## -# @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' } } - -## -# @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' } } - -## -# @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.0 -## -{ 'struct': 'VncClientInfo', - 'base': 'VncBasicInfo', - 'data': { '*x509_dname': 'str', '*sasl_username': 'str' } } - -## -# @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.0 -## -{ 'struct': 'VncInfo', - 'data': {'enabled': 'bool', '*host': 'str', - '*family': 'NetworkAddressFamily', - '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} } - -## -# @VncPrimaryAuth: -# -# vnc primary authentication method. -# -# Since: 2.3 -## -{ 'enum': 'VncPrimaryAuth', - 'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra', - 'tls', 'vencrypt', 'sasl' ] } - -## -# @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' ] } - - -## -# @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' } } - - -## -# @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' } } - -## -# @query-vnc: -# -# Returns information about the current VNC server -# -# Returns: @VncInfo -# -# Since: 0.14.0 -# -# 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" -# } -# ] -# } -# } -# -## -{ 'command': 'query-vnc', 'returns': 'VncInfo' } - -## -# @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'] } - -## -# @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' } } - -## -# @SpiceServerInfo: -# -# Information about a SPICE server -# -# @auth: authentication method -# -# Since: 2.1 -## -{ 'struct': 'SpiceServerInfo', - 'base': 'SpiceBasicInfo', - 'data': { '*auth': 'str' } } - -## -# @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.0 -## -{ 'struct': 'SpiceChannel', - 'base': 'SpiceBasicInfo', - 'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int', - 'tls': 'bool'} } - -## -# @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. -# -# Note: spice/enums.h has a SpiceMouseMode already, hence the name. -# -# Since: 1.1 -## -{ 'enum': 'SpiceQueryMouseMode', - 'data': [ 'client', 'server', 'unknown' ] } - -## -# @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.0 -## -{ 'struct': 'SpiceInfo', - 'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int', - '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str', - 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} } - -## -# @query-spice: -# -# Returns information about the current SPICE server -# -# Returns: @SpiceInfo -# -# Since: 0.14.0 -# -# Example: -# -# -> { "execute": "query-spice" } -# <- { "return": { -# "enabled": true, -# "auth": "spice", -# "port": 5920, -# "tls-port": 5921, -# "host": "0.0.0.0", -# "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 -# }, -# [ ... more channels follow ... ] -# ] -# } -# } -# -## -{ 'command': 'query-spice', 'returns': 'SpiceInfo' } - -## # @BalloonInfo: # # Information about the guest balloon device. @@ -2685,83 +2266,6 @@ 'data': { 'path': 'str', 'property': 'str', 'value': 'any' } } ## -# @set_password: -# -# Sets the password of a remote display session. -# -# @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 -# -# Returns: Nothing on success -# If Spice is not enabled, DeviceNotFound -# -# Since: 0.14.0 -# -# Example: -# -# -> { "execute": "set_password", "arguments": { "protocol": "vnc", -# "password": "secret" } } -# <- { "return": {} } -# -## -{ 'command': 'set_password', - 'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} } - -## -# @expire_password: -# -# Expire the password of a remote display server. -# -# @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 -# -# Since: 0.14.0 -# -# 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 -# use the absolute time version of the @time parameter unless you're -# sure you are on the same machine as the QEMU instance. -# -# Example: -# -# -> { "execute": "expire_password", "arguments": { "protocol": "vnc", -# "time": "+60" } } -# <- { "return": {} } -# -## -{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} } - -## -# @change-vnc-password: -# -# Change the VNC server password. -# -# @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. -## -{ 'command': 'change-vnc-password', 'data': {'password': 'str'} } - -## # @change: # # This command is multiple commands multiplexed together. @@ -3839,133 +3343,6 @@ { 'command': 'query-target', 'returns': 'TargetInfo' } ## -# @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 -# altgr, altgr_r: dropped in 2.10 -# -# Since: 1.3.0 -# -## -{ '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', - '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' ] } - -## -# @KeyValue: -# -# Represents a keyboard key. -# -# Since: 1.3.0 -## -{ 'union': 'KeyValue', - 'data': { - 'number': 'int', - 'qcode': 'QKeyCode' } } - -## -# @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 -# -# Returns: Nothing on success -# If key is unknown or redundant, InvalidParameter -# -# Since: 1.3.0 -# -# 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' } } - -## -# @screendump: -# -# Write a PPM of the VGA screen to a file. -# -# @filename: the path of a new PPM file to store the image -# -# Returns: Nothing on success -# -# Since: 0.14.0 -# -# Example: -# -# -> { "execute": "screendump", -# "arguments": { "filename": "/tmp/image" } } -# <- { "return": {} } -# -## -{ 'command': 'screendump', 'data': {'filename': 'str'} } - - -## # @TpmModel: # # An enumeration of TPM models @@ -4289,165 +3666,6 @@ ## -# @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) -# -# Since: 2.0 -## -{ 'enum' : 'InputButton', - 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side', - 'extra' ] } - -## -# @InputAxis: -# -# Position axis of a pointer input device (mouse, tablet). -# -# Since: 2.0 -## -{ 'enum' : 'InputAxis', - 'data' : [ 'x', 'y' ] } - -## -# @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' } } - -## -# @InputEvent: -# -# 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 -# -# Since: 2.0 -## -{ 'union' : 'InputEvent', - 'data' : { 'key' : 'InputKeyEvent', - 'btn' : 'InputBtnEvent', - 'rel' : 'InputMoveEvent', - 'abs' : 'InputMoveEvent' } } - -## -# @input-send-event: -# -# 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 -# 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. -# -# 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. -# -# Example: -# -# 1. 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": {} } -# -# 2. 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": {} } -# -# 3. Move mouse pointer to absolute coordinates (20000, 400). -# -# -> { "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' ] } } - -## # @NumaOptionsType: # # @node: NUMA nodes configuration |