xref: /qemu/qapi/ui.json (revision e3af9f9a4075e81a0854017721de1799795d0a15)
1608cfed6SMarkus Armbruster# -*- Mode: Python -*-
2608cfed6SMarkus Armbruster#
3608cfed6SMarkus Armbruster
4608cfed6SMarkus Armbruster##
5608cfed6SMarkus Armbruster# = Remote desktop
6608cfed6SMarkus Armbruster##
7608cfed6SMarkus Armbruster
8608cfed6SMarkus Armbruster{ 'include': 'sockets.json' }
9608cfed6SMarkus Armbruster
10608cfed6SMarkus Armbruster##
11608cfed6SMarkus Armbruster# @set_password:
12608cfed6SMarkus Armbruster#
13608cfed6SMarkus Armbruster# Sets the password of a remote display session.
14608cfed6SMarkus Armbruster#
15608cfed6SMarkus Armbruster# @protocol: `vnc' to modify the VNC server password
16608cfed6SMarkus Armbruster#            `spice' to modify the Spice server password
17608cfed6SMarkus Armbruster#
18608cfed6SMarkus Armbruster# @password: the new password
19608cfed6SMarkus Armbruster#
20608cfed6SMarkus Armbruster# @connected: how to handle existing clients when changing the
21608cfed6SMarkus Armbruster#                       password.  If nothing is specified, defaults to `keep'
22608cfed6SMarkus Armbruster#                       `fail' to fail the command if clients are connected
23608cfed6SMarkus Armbruster#                       `disconnect' to disconnect existing clients
24608cfed6SMarkus Armbruster#                       `keep' to maintain existing clients
25608cfed6SMarkus Armbruster#
26608cfed6SMarkus Armbruster# Returns: Nothing on success
27608cfed6SMarkus Armbruster#          If Spice is not enabled, DeviceNotFound
28608cfed6SMarkus Armbruster#
29608cfed6SMarkus Armbruster# Since: 0.14.0
30608cfed6SMarkus Armbruster#
31608cfed6SMarkus Armbruster# Example:
32608cfed6SMarkus Armbruster#
33608cfed6SMarkus Armbruster# -> { "execute": "set_password", "arguments": { "protocol": "vnc",
34608cfed6SMarkus Armbruster#                                                "password": "secret" } }
35608cfed6SMarkus Armbruster# <- { "return": {} }
36608cfed6SMarkus Armbruster#
37608cfed6SMarkus Armbruster##
38608cfed6SMarkus Armbruster{ 'command': 'set_password',
39608cfed6SMarkus Armbruster  'data': {'protocol': 'str', 'password': 'str', '*connected': 'str'} }
40608cfed6SMarkus Armbruster
41608cfed6SMarkus Armbruster##
42608cfed6SMarkus Armbruster# @expire_password:
43608cfed6SMarkus Armbruster#
44608cfed6SMarkus Armbruster# Expire the password of a remote display server.
45608cfed6SMarkus Armbruster#
46608cfed6SMarkus Armbruster# @protocol: the name of the remote display protocol `vnc' or `spice'
47608cfed6SMarkus Armbruster#
48608cfed6SMarkus Armbruster# @time: when to expire the password.
49608cfed6SMarkus Armbruster#        `now' to expire the password immediately
50608cfed6SMarkus Armbruster#        `never' to cancel password expiration
51608cfed6SMarkus Armbruster#        `+INT' where INT is the number of seconds from now (integer)
52608cfed6SMarkus Armbruster#        `INT' where INT is the absolute time in seconds
53608cfed6SMarkus Armbruster#
54608cfed6SMarkus Armbruster# Returns: Nothing on success
55608cfed6SMarkus Armbruster#          If @protocol is `spice' and Spice is not active, DeviceNotFound
56608cfed6SMarkus Armbruster#
57608cfed6SMarkus Armbruster# Since: 0.14.0
58608cfed6SMarkus Armbruster#
59608cfed6SMarkus Armbruster# Notes: Time is relative to the server and currently there is no way to
60608cfed6SMarkus Armbruster#        coordinate server time with client time.  It is not recommended to
61608cfed6SMarkus Armbruster#        use the absolute time version of the @time parameter unless you're
62608cfed6SMarkus Armbruster#        sure you are on the same machine as the QEMU instance.
63608cfed6SMarkus Armbruster#
64608cfed6SMarkus Armbruster# Example:
65608cfed6SMarkus Armbruster#
66608cfed6SMarkus Armbruster# -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
67608cfed6SMarkus Armbruster#                                                   "time": "+60" } }
68608cfed6SMarkus Armbruster# <- { "return": {} }
69608cfed6SMarkus Armbruster#
70608cfed6SMarkus Armbruster##
71608cfed6SMarkus Armbruster{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
72608cfed6SMarkus Armbruster
73608cfed6SMarkus Armbruster##
74608cfed6SMarkus Armbruster# @screendump:
75608cfed6SMarkus Armbruster#
76608cfed6SMarkus Armbruster# Write a PPM of the VGA screen to a file.
77608cfed6SMarkus Armbruster#
78608cfed6SMarkus Armbruster# @filename: the path of a new PPM file to store the image
79608cfed6SMarkus Armbruster#
80608cfed6SMarkus Armbruster# Returns: Nothing on success
81608cfed6SMarkus Armbruster#
82608cfed6SMarkus Armbruster# Since: 0.14.0
83608cfed6SMarkus Armbruster#
84608cfed6SMarkus Armbruster# Example:
85608cfed6SMarkus Armbruster#
86608cfed6SMarkus Armbruster# -> { "execute": "screendump",
87608cfed6SMarkus Armbruster#      "arguments": { "filename": "/tmp/image" } }
88608cfed6SMarkus Armbruster# <- { "return": {} }
89608cfed6SMarkus Armbruster#
90608cfed6SMarkus Armbruster##
91608cfed6SMarkus Armbruster{ 'command': 'screendump', 'data': {'filename': 'str'} }
92608cfed6SMarkus Armbruster
93608cfed6SMarkus Armbruster##
94608cfed6SMarkus Armbruster# == Spice
95608cfed6SMarkus Armbruster##
96608cfed6SMarkus Armbruster
97608cfed6SMarkus Armbruster##
98608cfed6SMarkus Armbruster# @SpiceBasicInfo:
99608cfed6SMarkus Armbruster#
100608cfed6SMarkus Armbruster# The basic information for SPICE network connection
101608cfed6SMarkus Armbruster#
102608cfed6SMarkus Armbruster# @host: IP address
103608cfed6SMarkus Armbruster#
104608cfed6SMarkus Armbruster# @port: port number
105608cfed6SMarkus Armbruster#
106608cfed6SMarkus Armbruster# @family: address family
107608cfed6SMarkus Armbruster#
108608cfed6SMarkus Armbruster# Since: 2.1
109608cfed6SMarkus Armbruster##
110608cfed6SMarkus Armbruster{ 'struct': 'SpiceBasicInfo',
111608cfed6SMarkus Armbruster  'data': { 'host': 'str',
112608cfed6SMarkus Armbruster            'port': 'str',
113608cfed6SMarkus Armbruster            'family': 'NetworkAddressFamily' } }
114608cfed6SMarkus Armbruster
115608cfed6SMarkus Armbruster##
116608cfed6SMarkus Armbruster# @SpiceServerInfo:
117608cfed6SMarkus Armbruster#
118608cfed6SMarkus Armbruster# Information about a SPICE server
119608cfed6SMarkus Armbruster#
120608cfed6SMarkus Armbruster# @auth: authentication method
121608cfed6SMarkus Armbruster#
122608cfed6SMarkus Armbruster# Since: 2.1
123608cfed6SMarkus Armbruster##
124608cfed6SMarkus Armbruster{ 'struct': 'SpiceServerInfo',
125608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
126608cfed6SMarkus Armbruster  'data': { '*auth': 'str' } }
127608cfed6SMarkus Armbruster
128608cfed6SMarkus Armbruster##
129608cfed6SMarkus Armbruster# @SpiceChannel:
130608cfed6SMarkus Armbruster#
131608cfed6SMarkus Armbruster# Information about a SPICE client channel.
132608cfed6SMarkus Armbruster#
133608cfed6SMarkus Armbruster# @connection-id: SPICE connection id number.  All channels with the same id
134608cfed6SMarkus Armbruster#                 belong to the same SPICE session.
135608cfed6SMarkus Armbruster#
136608cfed6SMarkus Armbruster# @channel-type: SPICE channel type number.  "1" is the main control
137608cfed6SMarkus Armbruster#                channel, filter for this one if you want to track spice
138608cfed6SMarkus Armbruster#                sessions only
139608cfed6SMarkus Armbruster#
140608cfed6SMarkus Armbruster# @channel-id: SPICE channel ID number.  Usually "0", might be different when
141608cfed6SMarkus Armbruster#              multiple channels of the same type exist, such as multiple
142608cfed6SMarkus Armbruster#              display channels in a multihead setup
143608cfed6SMarkus Armbruster#
144608cfed6SMarkus Armbruster# @tls: true if the channel is encrypted, false otherwise.
145608cfed6SMarkus Armbruster#
146608cfed6SMarkus Armbruster# Since: 0.14.0
147608cfed6SMarkus Armbruster##
148608cfed6SMarkus Armbruster{ 'struct': 'SpiceChannel',
149608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
150608cfed6SMarkus Armbruster  'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
151608cfed6SMarkus Armbruster           'tls': 'bool'} }
152608cfed6SMarkus Armbruster
153608cfed6SMarkus Armbruster##
154608cfed6SMarkus Armbruster# @SpiceQueryMouseMode:
155608cfed6SMarkus Armbruster#
156608cfed6SMarkus Armbruster# An enumeration of Spice mouse states.
157608cfed6SMarkus Armbruster#
158608cfed6SMarkus Armbruster# @client: Mouse cursor position is determined by the client.
159608cfed6SMarkus Armbruster#
160608cfed6SMarkus Armbruster# @server: Mouse cursor position is determined by the server.
161608cfed6SMarkus Armbruster#
162608cfed6SMarkus Armbruster# @unknown: No information is available about mouse mode used by
163608cfed6SMarkus Armbruster#           the spice server.
164608cfed6SMarkus Armbruster#
165608cfed6SMarkus Armbruster# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
166608cfed6SMarkus Armbruster#
167608cfed6SMarkus Armbruster# Since: 1.1
168608cfed6SMarkus Armbruster##
169608cfed6SMarkus Armbruster{ 'enum': 'SpiceQueryMouseMode',
170608cfed6SMarkus Armbruster  'data': [ 'client', 'server', 'unknown' ] }
171608cfed6SMarkus Armbruster
172608cfed6SMarkus Armbruster##
173608cfed6SMarkus Armbruster# @SpiceInfo:
174608cfed6SMarkus Armbruster#
175608cfed6SMarkus Armbruster# Information about the SPICE session.
176608cfed6SMarkus Armbruster#
177608cfed6SMarkus Armbruster# @enabled: true if the SPICE server is enabled, false otherwise
178608cfed6SMarkus Armbruster#
179608cfed6SMarkus Armbruster# @migrated: true if the last guest migration completed and spice
180608cfed6SMarkus Armbruster#            migration had completed as well. false otherwise. (since 1.4)
181608cfed6SMarkus Armbruster#
182608cfed6SMarkus Armbruster# @host: The hostname the SPICE server is bound to.  This depends on
183608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
184608cfed6SMarkus Armbruster#
185608cfed6SMarkus Armbruster# @port: The SPICE server's port number.
186608cfed6SMarkus Armbruster#
187608cfed6SMarkus Armbruster# @compiled-version: SPICE server version.
188608cfed6SMarkus Armbruster#
189608cfed6SMarkus Armbruster# @tls-port: The SPICE server's TLS port number.
190608cfed6SMarkus Armbruster#
191608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
192608cfed6SMarkus Armbruster#        'none'  if no authentication is being used
193608cfed6SMarkus Armbruster#        'spice' uses SASL or direct TLS authentication, depending on command
194608cfed6SMarkus Armbruster#                line options
195608cfed6SMarkus Armbruster#
196608cfed6SMarkus Armbruster# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
197608cfed6SMarkus Armbruster#              be determined by the client or the server, or unknown if spice
198608cfed6SMarkus Armbruster#              server doesn't provide this information. (since: 1.1)
199608cfed6SMarkus Armbruster#
200608cfed6SMarkus Armbruster# @channels: a list of @SpiceChannel for each active spice channel
201608cfed6SMarkus Armbruster#
202608cfed6SMarkus Armbruster# Since: 0.14.0
203608cfed6SMarkus Armbruster##
204608cfed6SMarkus Armbruster{ 'struct': 'SpiceInfo',
205608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
206608cfed6SMarkus Armbruster           '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
207608cfed6SMarkus Armbruster           'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']} }
208608cfed6SMarkus Armbruster
209608cfed6SMarkus Armbruster##
210608cfed6SMarkus Armbruster# @query-spice:
211608cfed6SMarkus Armbruster#
212608cfed6SMarkus Armbruster# Returns information about the current SPICE server
213608cfed6SMarkus Armbruster#
214608cfed6SMarkus Armbruster# Returns: @SpiceInfo
215608cfed6SMarkus Armbruster#
216608cfed6SMarkus Armbruster# Since: 0.14.0
217608cfed6SMarkus Armbruster#
218608cfed6SMarkus Armbruster# Example:
219608cfed6SMarkus Armbruster#
220608cfed6SMarkus Armbruster# -> { "execute": "query-spice" }
221608cfed6SMarkus Armbruster# <- { "return": {
222608cfed6SMarkus Armbruster#          "enabled": true,
223608cfed6SMarkus Armbruster#          "auth": "spice",
224608cfed6SMarkus Armbruster#          "port": 5920,
225608cfed6SMarkus Armbruster#          "tls-port": 5921,
226608cfed6SMarkus Armbruster#          "host": "0.0.0.0",
227608cfed6SMarkus Armbruster#          "channels": [
228608cfed6SMarkus Armbruster#             {
229608cfed6SMarkus Armbruster#                "port": "54924",
230608cfed6SMarkus Armbruster#                "family": "ipv4",
231608cfed6SMarkus Armbruster#                "channel-type": 1,
232608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
233608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
234608cfed6SMarkus Armbruster#                "channel-id": 0,
235608cfed6SMarkus Armbruster#                "tls": true
236608cfed6SMarkus Armbruster#             },
237608cfed6SMarkus Armbruster#             {
238608cfed6SMarkus Armbruster#                "port": "36710",
239608cfed6SMarkus Armbruster#                "family": "ipv4",
240608cfed6SMarkus Armbruster#                "channel-type": 4,
241608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
242608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
243608cfed6SMarkus Armbruster#                "channel-id": 0,
244608cfed6SMarkus Armbruster#                "tls": false
245608cfed6SMarkus Armbruster#             },
246608cfed6SMarkus Armbruster#             [ ... more channels follow ... ]
247608cfed6SMarkus Armbruster#          ]
248608cfed6SMarkus Armbruster#       }
249608cfed6SMarkus Armbruster#    }
250608cfed6SMarkus Armbruster#
251608cfed6SMarkus Armbruster##
252608cfed6SMarkus Armbruster{ 'command': 'query-spice', 'returns': 'SpiceInfo' }
253608cfed6SMarkus Armbruster
254608cfed6SMarkus Armbruster##
255608cfed6SMarkus Armbruster# @SPICE_CONNECTED:
256608cfed6SMarkus Armbruster#
257608cfed6SMarkus Armbruster# Emitted when a SPICE client establishes a connection
258608cfed6SMarkus Armbruster#
259608cfed6SMarkus Armbruster# @server: server information
260608cfed6SMarkus Armbruster#
261608cfed6SMarkus Armbruster# @client: client information
262608cfed6SMarkus Armbruster#
263608cfed6SMarkus Armbruster# Since: 0.14.0
264608cfed6SMarkus Armbruster#
265608cfed6SMarkus Armbruster# Example:
266608cfed6SMarkus Armbruster#
267608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
268608cfed6SMarkus Armbruster#      "event": "SPICE_CONNECTED",
269608cfed6SMarkus Armbruster#      "data": {
270608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
271608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
272608cfed6SMarkus Armbruster#    }}
273608cfed6SMarkus Armbruster#
274608cfed6SMarkus Armbruster##
275608cfed6SMarkus Armbruster{ 'event': 'SPICE_CONNECTED',
276608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
277608cfed6SMarkus Armbruster            'client': 'SpiceBasicInfo' } }
278608cfed6SMarkus Armbruster
279608cfed6SMarkus Armbruster##
280608cfed6SMarkus Armbruster# @SPICE_INITIALIZED:
281608cfed6SMarkus Armbruster#
282608cfed6SMarkus Armbruster# Emitted after initial handshake and authentication takes place (if any)
283608cfed6SMarkus Armbruster# and the SPICE channel is up and running
284608cfed6SMarkus Armbruster#
285608cfed6SMarkus Armbruster# @server: server information
286608cfed6SMarkus Armbruster#
287608cfed6SMarkus Armbruster# @client: client information
288608cfed6SMarkus Armbruster#
289608cfed6SMarkus Armbruster# Since: 0.14.0
290608cfed6SMarkus Armbruster#
291608cfed6SMarkus Armbruster# Example:
292608cfed6SMarkus Armbruster#
293608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
294608cfed6SMarkus Armbruster#      "event": "SPICE_INITIALIZED",
295608cfed6SMarkus Armbruster#      "data": {"server": {"auth": "spice", "port": "5921",
296608cfed6SMarkus Armbruster#                          "family": "ipv4", "host": "127.0.0.1"},
297608cfed6SMarkus Armbruster#               "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
298608cfed6SMarkus Armbruster#                          "connection-id": 1804289383, "host": "127.0.0.1",
299608cfed6SMarkus Armbruster#                          "channel-id": 0, "tls": true}
300608cfed6SMarkus Armbruster#    }}
301608cfed6SMarkus Armbruster#
302608cfed6SMarkus Armbruster##
303608cfed6SMarkus Armbruster{ 'event': 'SPICE_INITIALIZED',
304608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceServerInfo',
305608cfed6SMarkus Armbruster            'client': 'SpiceChannel' } }
306608cfed6SMarkus Armbruster
307608cfed6SMarkus Armbruster##
308608cfed6SMarkus Armbruster# @SPICE_DISCONNECTED:
309608cfed6SMarkus Armbruster#
310608cfed6SMarkus Armbruster# Emitted when the SPICE connection is closed
311608cfed6SMarkus Armbruster#
312608cfed6SMarkus Armbruster# @server: server information
313608cfed6SMarkus Armbruster#
314608cfed6SMarkus Armbruster# @client: client information
315608cfed6SMarkus Armbruster#
316608cfed6SMarkus Armbruster# Since: 0.14.0
317608cfed6SMarkus Armbruster#
318608cfed6SMarkus Armbruster# Example:
319608cfed6SMarkus Armbruster#
320608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
321608cfed6SMarkus Armbruster#      "event": "SPICE_DISCONNECTED",
322608cfed6SMarkus Armbruster#      "data": {
323608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
324608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
325608cfed6SMarkus Armbruster#    }}
326608cfed6SMarkus Armbruster#
327608cfed6SMarkus Armbruster##
328608cfed6SMarkus Armbruster{ 'event': 'SPICE_DISCONNECTED',
329608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
330608cfed6SMarkus Armbruster            'client': 'SpiceBasicInfo' } }
331608cfed6SMarkus Armbruster
332608cfed6SMarkus Armbruster##
333608cfed6SMarkus Armbruster# @SPICE_MIGRATE_COMPLETED:
334608cfed6SMarkus Armbruster#
335608cfed6SMarkus Armbruster# Emitted when SPICE migration has completed
336608cfed6SMarkus Armbruster#
337608cfed6SMarkus Armbruster# Since: 1.3
338608cfed6SMarkus Armbruster#
339608cfed6SMarkus Armbruster# Example:
340608cfed6SMarkus Armbruster#
341608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
342608cfed6SMarkus Armbruster#      "event": "SPICE_MIGRATE_COMPLETED" }
343608cfed6SMarkus Armbruster#
344608cfed6SMarkus Armbruster##
345608cfed6SMarkus Armbruster{ 'event': 'SPICE_MIGRATE_COMPLETED' }
346608cfed6SMarkus Armbruster
347608cfed6SMarkus Armbruster##
348608cfed6SMarkus Armbruster# == VNC
349608cfed6SMarkus Armbruster##
350608cfed6SMarkus Armbruster
351608cfed6SMarkus Armbruster##
352608cfed6SMarkus Armbruster# @VncBasicInfo:
353608cfed6SMarkus Armbruster#
354608cfed6SMarkus Armbruster# The basic information for vnc network connection
355608cfed6SMarkus Armbruster#
356608cfed6SMarkus Armbruster# @host: IP address
357608cfed6SMarkus Armbruster#
358608cfed6SMarkus Armbruster# @service: The service name of the vnc port. This may depend on the host
359608cfed6SMarkus Armbruster#           system's service database so symbolic names should not be relied
360608cfed6SMarkus Armbruster#           on.
361608cfed6SMarkus Armbruster#
362608cfed6SMarkus Armbruster# @family: address family
363608cfed6SMarkus Armbruster#
364608cfed6SMarkus Armbruster# @websocket: true in case the socket is a websocket (since 2.3).
365608cfed6SMarkus Armbruster#
366608cfed6SMarkus Armbruster# Since: 2.1
367608cfed6SMarkus Armbruster##
368608cfed6SMarkus Armbruster{ 'struct': 'VncBasicInfo',
369608cfed6SMarkus Armbruster  'data': { 'host': 'str',
370608cfed6SMarkus Armbruster            'service': 'str',
371608cfed6SMarkus Armbruster            'family': 'NetworkAddressFamily',
372608cfed6SMarkus Armbruster            'websocket': 'bool' } }
373608cfed6SMarkus Armbruster
374608cfed6SMarkus Armbruster##
375608cfed6SMarkus Armbruster# @VncServerInfo:
376608cfed6SMarkus Armbruster#
377608cfed6SMarkus Armbruster# The network connection information for server
378608cfed6SMarkus Armbruster#
379608cfed6SMarkus Armbruster# @auth: authentication method used for
380608cfed6SMarkus Armbruster#        the plain (non-websocket) VNC server
381608cfed6SMarkus Armbruster#
382608cfed6SMarkus Armbruster# Since: 2.1
383608cfed6SMarkus Armbruster##
384608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo',
385608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
386608cfed6SMarkus Armbruster  'data': { '*auth': 'str' } }
387608cfed6SMarkus Armbruster
388608cfed6SMarkus Armbruster##
389608cfed6SMarkus Armbruster# @VncClientInfo:
390608cfed6SMarkus Armbruster#
391608cfed6SMarkus Armbruster# Information about a connected VNC client.
392608cfed6SMarkus Armbruster#
393608cfed6SMarkus Armbruster# @x509_dname: If x509 authentication is in use, the Distinguished
394608cfed6SMarkus Armbruster#              Name of the client.
395608cfed6SMarkus Armbruster#
396608cfed6SMarkus Armbruster# @sasl_username: If SASL authentication is in use, the SASL username
397608cfed6SMarkus Armbruster#                 used for authentication.
398608cfed6SMarkus Armbruster#
399608cfed6SMarkus Armbruster# Since: 0.14.0
400608cfed6SMarkus Armbruster##
401608cfed6SMarkus Armbruster{ 'struct': 'VncClientInfo',
402608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
403608cfed6SMarkus Armbruster  'data': { '*x509_dname': 'str', '*sasl_username': 'str' } }
404608cfed6SMarkus Armbruster
405608cfed6SMarkus Armbruster##
406608cfed6SMarkus Armbruster# @VncInfo:
407608cfed6SMarkus Armbruster#
408608cfed6SMarkus Armbruster# Information about the VNC session.
409608cfed6SMarkus Armbruster#
410608cfed6SMarkus Armbruster# @enabled: true if the VNC server is enabled, false otherwise
411608cfed6SMarkus Armbruster#
412608cfed6SMarkus Armbruster# @host: The hostname the VNC server is bound to.  This depends on
413608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
414608cfed6SMarkus Armbruster#
415608cfed6SMarkus Armbruster# @family: 'ipv6' if the host is listening for IPv6 connections
416608cfed6SMarkus Armbruster#                    'ipv4' if the host is listening for IPv4 connections
417608cfed6SMarkus Armbruster#                    'unix' if the host is listening on a unix domain socket
418608cfed6SMarkus Armbruster#                    'unknown' otherwise
419608cfed6SMarkus Armbruster#
420608cfed6SMarkus Armbruster# @service: The service name of the server's port.  This may depends
421608cfed6SMarkus Armbruster#           on the host system's service database so symbolic names should not
422608cfed6SMarkus Armbruster#           be relied on.
423608cfed6SMarkus Armbruster#
424608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
425608cfed6SMarkus Armbruster#        'none' if no authentication is being used
426608cfed6SMarkus Armbruster#        'vnc' if VNC authentication is being used
427608cfed6SMarkus Armbruster#        'vencrypt+plain' if VEncrypt is used with plain text authentication
428608cfed6SMarkus Armbruster#        'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
429608cfed6SMarkus Armbruster#        'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
430608cfed6SMarkus Armbruster#        'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
431608cfed6SMarkus Armbruster#        'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
432608cfed6SMarkus Armbruster#        'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
433608cfed6SMarkus Armbruster#        'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
434608cfed6SMarkus Armbruster#        'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
435608cfed6SMarkus Armbruster#        'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
436608cfed6SMarkus Armbruster#
437608cfed6SMarkus Armbruster# @clients: a list of @VncClientInfo of all currently connected clients
438608cfed6SMarkus Armbruster#
439608cfed6SMarkus Armbruster# Since: 0.14.0
440608cfed6SMarkus Armbruster##
441608cfed6SMarkus Armbruster{ 'struct': 'VncInfo',
442608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', '*host': 'str',
443608cfed6SMarkus Armbruster           '*family': 'NetworkAddressFamily',
444608cfed6SMarkus Armbruster           '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']} }
445608cfed6SMarkus Armbruster
446608cfed6SMarkus Armbruster##
447608cfed6SMarkus Armbruster# @VncPrimaryAuth:
448608cfed6SMarkus Armbruster#
449608cfed6SMarkus Armbruster# vnc primary authentication method.
450608cfed6SMarkus Armbruster#
451608cfed6SMarkus Armbruster# Since: 2.3
452608cfed6SMarkus Armbruster##
453608cfed6SMarkus Armbruster{ 'enum': 'VncPrimaryAuth',
454608cfed6SMarkus Armbruster  'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra',
455608cfed6SMarkus Armbruster            'tls', 'vencrypt', 'sasl' ] }
456608cfed6SMarkus Armbruster
457608cfed6SMarkus Armbruster##
458608cfed6SMarkus Armbruster# @VncVencryptSubAuth:
459608cfed6SMarkus Armbruster#
460608cfed6SMarkus Armbruster# vnc sub authentication method with vencrypt.
461608cfed6SMarkus Armbruster#
462608cfed6SMarkus Armbruster# Since: 2.3
463608cfed6SMarkus Armbruster##
464608cfed6SMarkus Armbruster{ 'enum': 'VncVencryptSubAuth',
465608cfed6SMarkus Armbruster  'data': [ 'plain',
466608cfed6SMarkus Armbruster            'tls-none',  'x509-none',
467608cfed6SMarkus Armbruster            'tls-vnc',   'x509-vnc',
468608cfed6SMarkus Armbruster            'tls-plain', 'x509-plain',
469608cfed6SMarkus Armbruster            'tls-sasl',  'x509-sasl' ] }
470608cfed6SMarkus Armbruster
471608cfed6SMarkus Armbruster
472608cfed6SMarkus Armbruster##
473608cfed6SMarkus Armbruster# @VncServerInfo2:
474608cfed6SMarkus Armbruster#
475608cfed6SMarkus Armbruster# The network connection information for server
476608cfed6SMarkus Armbruster#
477608cfed6SMarkus Armbruster# @auth: The current authentication type used by the servers
478608cfed6SMarkus Armbruster#
479608cfed6SMarkus Armbruster# @vencrypt: The vencrypt sub authentication type used by the
480608cfed6SMarkus Armbruster#            servers, only specified in case auth == vencrypt.
481608cfed6SMarkus Armbruster#
482608cfed6SMarkus Armbruster# Since: 2.9
483608cfed6SMarkus Armbruster##
484608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo2',
485608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
486608cfed6SMarkus Armbruster  'data': { 'auth'      : 'VncPrimaryAuth',
487608cfed6SMarkus Armbruster            '*vencrypt' : 'VncVencryptSubAuth' } }
488608cfed6SMarkus Armbruster
489608cfed6SMarkus Armbruster
490608cfed6SMarkus Armbruster##
491608cfed6SMarkus Armbruster# @VncInfo2:
492608cfed6SMarkus Armbruster#
493608cfed6SMarkus Armbruster# Information about a vnc server
494608cfed6SMarkus Armbruster#
495608cfed6SMarkus Armbruster# @id: vnc server name.
496608cfed6SMarkus Armbruster#
497608cfed6SMarkus Armbruster# @server: A list of @VncBasincInfo describing all listening sockets.
498608cfed6SMarkus Armbruster#          The list can be empty (in case the vnc server is disabled).
499608cfed6SMarkus Armbruster#          It also may have multiple entries: normal + websocket,
500608cfed6SMarkus Armbruster#          possibly also ipv4 + ipv6 in the future.
501608cfed6SMarkus Armbruster#
502608cfed6SMarkus Armbruster# @clients: A list of @VncClientInfo of all currently connected clients.
503608cfed6SMarkus Armbruster#           The list can be empty, for obvious reasons.
504608cfed6SMarkus Armbruster#
505608cfed6SMarkus Armbruster# @auth: The current authentication type used by the non-websockets servers
506608cfed6SMarkus Armbruster#
507608cfed6SMarkus Armbruster# @vencrypt: The vencrypt authentication type used by the servers,
508608cfed6SMarkus Armbruster#            only specified in case auth == vencrypt.
509608cfed6SMarkus Armbruster#
510608cfed6SMarkus Armbruster# @display: The display device the vnc server is linked to.
511608cfed6SMarkus Armbruster#
512608cfed6SMarkus Armbruster# Since: 2.3
513608cfed6SMarkus Armbruster##
514608cfed6SMarkus Armbruster{ 'struct': 'VncInfo2',
515608cfed6SMarkus Armbruster  'data': { 'id'        : 'str',
516608cfed6SMarkus Armbruster            'server'    : ['VncServerInfo2'],
517608cfed6SMarkus Armbruster            'clients'   : ['VncClientInfo'],
518608cfed6SMarkus Armbruster            'auth'      : 'VncPrimaryAuth',
519608cfed6SMarkus Armbruster            '*vencrypt' : 'VncVencryptSubAuth',
520608cfed6SMarkus Armbruster            '*display'  : 'str' } }
521608cfed6SMarkus Armbruster
522608cfed6SMarkus Armbruster##
523608cfed6SMarkus Armbruster# @query-vnc:
524608cfed6SMarkus Armbruster#
525608cfed6SMarkus Armbruster# Returns information about the current VNC server
526608cfed6SMarkus Armbruster#
527608cfed6SMarkus Armbruster# Returns: @VncInfo
528608cfed6SMarkus Armbruster#
529608cfed6SMarkus Armbruster# Since: 0.14.0
530608cfed6SMarkus Armbruster#
531608cfed6SMarkus Armbruster# Example:
532608cfed6SMarkus Armbruster#
533608cfed6SMarkus Armbruster# -> { "execute": "query-vnc" }
534608cfed6SMarkus Armbruster# <- { "return": {
535608cfed6SMarkus Armbruster#          "enabled":true,
536608cfed6SMarkus Armbruster#          "host":"0.0.0.0",
537608cfed6SMarkus Armbruster#          "service":"50402",
538608cfed6SMarkus Armbruster#          "auth":"vnc",
539608cfed6SMarkus Armbruster#          "family":"ipv4",
540608cfed6SMarkus Armbruster#          "clients":[
541608cfed6SMarkus Armbruster#             {
542608cfed6SMarkus Armbruster#                "host":"127.0.0.1",
543608cfed6SMarkus Armbruster#                "service":"50401",
544608cfed6SMarkus Armbruster#                "family":"ipv4"
545608cfed6SMarkus Armbruster#             }
546608cfed6SMarkus Armbruster#          ]
547608cfed6SMarkus Armbruster#       }
548608cfed6SMarkus Armbruster#    }
549608cfed6SMarkus Armbruster#
550608cfed6SMarkus Armbruster##
551608cfed6SMarkus Armbruster{ 'command': 'query-vnc', 'returns': 'VncInfo' }
552608cfed6SMarkus Armbruster
553608cfed6SMarkus Armbruster##
554608cfed6SMarkus Armbruster# @query-vnc-servers:
555608cfed6SMarkus Armbruster#
556608cfed6SMarkus Armbruster# Returns a list of vnc servers.  The list can be empty.
557608cfed6SMarkus Armbruster#
558608cfed6SMarkus Armbruster# Returns: a list of @VncInfo2
559608cfed6SMarkus Armbruster#
560608cfed6SMarkus Armbruster# Since: 2.3
561608cfed6SMarkus Armbruster##
562608cfed6SMarkus Armbruster{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'] }
563608cfed6SMarkus Armbruster
564608cfed6SMarkus Armbruster##
565608cfed6SMarkus Armbruster# @change-vnc-password:
566608cfed6SMarkus Armbruster#
567608cfed6SMarkus Armbruster# Change the VNC server password.
568608cfed6SMarkus Armbruster#
569608cfed6SMarkus Armbruster# @password:  the new password to use with VNC authentication
570608cfed6SMarkus Armbruster#
571608cfed6SMarkus Armbruster# Since: 1.1
572608cfed6SMarkus Armbruster#
573608cfed6SMarkus Armbruster# Notes:  An empty password in this command will set the password to the empty
574608cfed6SMarkus Armbruster#         string.  Existing clients are unaffected by executing this command.
575608cfed6SMarkus Armbruster##
576608cfed6SMarkus Armbruster{ 'command': 'change-vnc-password', 'data': {'password': 'str'} }
577608cfed6SMarkus Armbruster
578608cfed6SMarkus Armbruster##
579608cfed6SMarkus Armbruster# @VNC_CONNECTED:
580608cfed6SMarkus Armbruster#
581608cfed6SMarkus Armbruster# Emitted when a VNC client establishes a connection
582608cfed6SMarkus Armbruster#
583608cfed6SMarkus Armbruster# @server: server information
584608cfed6SMarkus Armbruster#
585608cfed6SMarkus Armbruster# @client: client information
586608cfed6SMarkus Armbruster#
587608cfed6SMarkus Armbruster# Note: This event is emitted before any authentication takes place, thus
588608cfed6SMarkus Armbruster# the authentication ID is not provided
589608cfed6SMarkus Armbruster#
590608cfed6SMarkus Armbruster# Since: 0.13.0
591608cfed6SMarkus Armbruster#
592608cfed6SMarkus Armbruster# Example:
593608cfed6SMarkus Armbruster#
594608cfed6SMarkus Armbruster# <- { "event": "VNC_CONNECTED",
595608cfed6SMarkus Armbruster#      "data": {
596608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
597608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0" },
598608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "58425",
599608cfed6SMarkus Armbruster#                        "host": "127.0.0.1" } },
600608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
601608cfed6SMarkus Armbruster#
602608cfed6SMarkus Armbruster##
603608cfed6SMarkus Armbruster{ 'event': 'VNC_CONNECTED',
604608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
605608cfed6SMarkus Armbruster            'client': 'VncBasicInfo' } }
606608cfed6SMarkus Armbruster
607608cfed6SMarkus Armbruster##
608608cfed6SMarkus Armbruster# @VNC_INITIALIZED:
609608cfed6SMarkus Armbruster#
610608cfed6SMarkus Armbruster# Emitted after authentication takes place (if any) and the VNC session is
611608cfed6SMarkus Armbruster# made active
612608cfed6SMarkus Armbruster#
613608cfed6SMarkus Armbruster# @server: server information
614608cfed6SMarkus Armbruster#
615608cfed6SMarkus Armbruster# @client: client information
616608cfed6SMarkus Armbruster#
617608cfed6SMarkus Armbruster# Since: 0.13.0
618608cfed6SMarkus Armbruster#
619608cfed6SMarkus Armbruster# Example:
620608cfed6SMarkus Armbruster#
621608cfed6SMarkus Armbruster# <-  { "event": "VNC_INITIALIZED",
622608cfed6SMarkus Armbruster#       "data": {
623608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
624608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0"},
625608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "46089",
626608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
627608cfed6SMarkus Armbruster#       "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
628608cfed6SMarkus Armbruster#
629608cfed6SMarkus Armbruster##
630608cfed6SMarkus Armbruster{ 'event': 'VNC_INITIALIZED',
631608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
632608cfed6SMarkus Armbruster            'client': 'VncClientInfo' } }
633608cfed6SMarkus Armbruster
634608cfed6SMarkus Armbruster##
635608cfed6SMarkus Armbruster# @VNC_DISCONNECTED:
636608cfed6SMarkus Armbruster#
637608cfed6SMarkus Armbruster# Emitted when the connection is closed
638608cfed6SMarkus Armbruster#
639608cfed6SMarkus Armbruster# @server: server information
640608cfed6SMarkus Armbruster#
641608cfed6SMarkus Armbruster# @client: client information
642608cfed6SMarkus Armbruster#
643608cfed6SMarkus Armbruster# Since: 0.13.0
644608cfed6SMarkus Armbruster#
645608cfed6SMarkus Armbruster# Example:
646608cfed6SMarkus Armbruster#
647608cfed6SMarkus Armbruster# <- { "event": "VNC_DISCONNECTED",
648608cfed6SMarkus Armbruster#      "data": {
649608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
650608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0" },
651608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "58425",
652608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
653608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
654608cfed6SMarkus Armbruster#
655608cfed6SMarkus Armbruster##
656608cfed6SMarkus Armbruster{ 'event': 'VNC_DISCONNECTED',
657608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
658608cfed6SMarkus Armbruster            'client': 'VncClientInfo' } }
659608cfed6SMarkus Armbruster
660608cfed6SMarkus Armbruster##
661608cfed6SMarkus Armbruster# = Input
662608cfed6SMarkus Armbruster##
663608cfed6SMarkus Armbruster
664608cfed6SMarkus Armbruster##
665608cfed6SMarkus Armbruster# @MouseInfo:
666608cfed6SMarkus Armbruster#
667608cfed6SMarkus Armbruster# Information about a mouse device.
668608cfed6SMarkus Armbruster#
669608cfed6SMarkus Armbruster# @name: the name of the mouse device
670608cfed6SMarkus Armbruster#
671608cfed6SMarkus Armbruster# @index: the index of the mouse device
672608cfed6SMarkus Armbruster#
673608cfed6SMarkus Armbruster# @current: true if this device is currently receiving mouse events
674608cfed6SMarkus Armbruster#
675608cfed6SMarkus Armbruster# @absolute: true if this device supports absolute coordinates as input
676608cfed6SMarkus Armbruster#
677608cfed6SMarkus Armbruster# Since: 0.14.0
678608cfed6SMarkus Armbruster##
679608cfed6SMarkus Armbruster{ 'struct': 'MouseInfo',
680608cfed6SMarkus Armbruster  'data': {'name': 'str', 'index': 'int', 'current': 'bool',
681608cfed6SMarkus Armbruster           'absolute': 'bool'} }
682608cfed6SMarkus Armbruster
683608cfed6SMarkus Armbruster##
684608cfed6SMarkus Armbruster# @query-mice:
685608cfed6SMarkus Armbruster#
686608cfed6SMarkus Armbruster# Returns information about each active mouse device
687608cfed6SMarkus Armbruster#
688608cfed6SMarkus Armbruster# Returns: a list of @MouseInfo for each device
689608cfed6SMarkus Armbruster#
690608cfed6SMarkus Armbruster# Since: 0.14.0
691608cfed6SMarkus Armbruster#
692608cfed6SMarkus Armbruster# Example:
693608cfed6SMarkus Armbruster#
694608cfed6SMarkus Armbruster# -> { "execute": "query-mice" }
695608cfed6SMarkus Armbruster# <- { "return": [
696608cfed6SMarkus Armbruster#          {
697608cfed6SMarkus Armbruster#             "name":"QEMU Microsoft Mouse",
698608cfed6SMarkus Armbruster#             "index":0,
699608cfed6SMarkus Armbruster#             "current":false,
700608cfed6SMarkus Armbruster#             "absolute":false
701608cfed6SMarkus Armbruster#          },
702608cfed6SMarkus Armbruster#          {
703608cfed6SMarkus Armbruster#             "name":"QEMU PS/2 Mouse",
704608cfed6SMarkus Armbruster#             "index":1,
705608cfed6SMarkus Armbruster#             "current":true,
706608cfed6SMarkus Armbruster#             "absolute":true
707608cfed6SMarkus Armbruster#          }
708608cfed6SMarkus Armbruster#       ]
709608cfed6SMarkus Armbruster#    }
710608cfed6SMarkus Armbruster#
711608cfed6SMarkus Armbruster##
712608cfed6SMarkus Armbruster{ 'command': 'query-mice', 'returns': ['MouseInfo'] }
713608cfed6SMarkus Armbruster
714608cfed6SMarkus Armbruster##
715608cfed6SMarkus Armbruster# @QKeyCode:
716608cfed6SMarkus Armbruster#
717608cfed6SMarkus Armbruster# An enumeration of key name.
718608cfed6SMarkus Armbruster#
719608cfed6SMarkus Armbruster# This is used by the @send-key command.
720608cfed6SMarkus Armbruster#
721608cfed6SMarkus Armbruster# @unmapped: since 2.0
722608cfed6SMarkus Armbruster# @pause: since 2.0
723608cfed6SMarkus Armbruster# @ro: since 2.4
724608cfed6SMarkus Armbruster# @kp_comma: since 2.4
725608cfed6SMarkus Armbruster# @kp_equals: since 2.6
726608cfed6SMarkus Armbruster# @power: since 2.6
727608cfed6SMarkus Armbruster# @hiragana: since 2.9
728608cfed6SMarkus Armbruster# @henkan: since 2.9
729608cfed6SMarkus Armbruster# @yen: since 2.9
730608cfed6SMarkus Armbruster#
731608cfed6SMarkus Armbruster# @sleep: since 2.10
732608cfed6SMarkus Armbruster# @wake: since 2.10
733608cfed6SMarkus Armbruster# @audionext: since 2.10
734608cfed6SMarkus Armbruster# @audioprev: since 2.10
735608cfed6SMarkus Armbruster# @audiostop: since 2.10
736608cfed6SMarkus Armbruster# @audioplay: since 2.10
737608cfed6SMarkus Armbruster# @audiomute: since 2.10
738608cfed6SMarkus Armbruster# @volumeup: since 2.10
739608cfed6SMarkus Armbruster# @volumedown: since 2.10
740608cfed6SMarkus Armbruster# @mediaselect: since 2.10
741608cfed6SMarkus Armbruster# @mail: since 2.10
742608cfed6SMarkus Armbruster# @calculator: since 2.10
743608cfed6SMarkus Armbruster# @computer: since 2.10
744608cfed6SMarkus Armbruster# @ac_home: since 2.10
745608cfed6SMarkus Armbruster# @ac_back: since 2.10
746608cfed6SMarkus Armbruster# @ac_forward: since 2.10
747608cfed6SMarkus Armbruster# @ac_refresh: since 2.10
748608cfed6SMarkus Armbruster# @ac_bookmarks: since 2.10
749608cfed6SMarkus Armbruster# altgr, altgr_r: dropped in 2.10
750608cfed6SMarkus Armbruster#
751280b8da3SMiika S# @muhenkan: since 2.12
752280b8da3SMiika S# @katakanahiragana: since 2.12
753280b8da3SMiika S#
75480b857f0SDaniel P. Berrange# 'sysrq' was mistakenly added to hack around the fact that
75580b857f0SDaniel P. Berrange# the ps2 driver was not generating correct scancodes sequences
75680b857f0SDaniel P. Berrange# when 'alt+print' was pressed. This flaw is now fixed and the
75780b857f0SDaniel P. Berrange# 'sysrq' key serves no further purpose. Any further use of
75880b857f0SDaniel P. Berrange# 'sysrq' will be transparently changed to 'print', so they
75980b857f0SDaniel P. Berrange# are effectively synonyms.
76080b857f0SDaniel P. Berrange#
761608cfed6SMarkus Armbruster# Since: 1.3.0
762608cfed6SMarkus Armbruster#
763608cfed6SMarkus Armbruster##
764608cfed6SMarkus Armbruster{ 'enum': 'QKeyCode',
765608cfed6SMarkus Armbruster  'data': [ 'unmapped',
766608cfed6SMarkus Armbruster            'shift', 'shift_r', 'alt', 'alt_r', 'ctrl',
767608cfed6SMarkus Armbruster            'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8',
768608cfed6SMarkus Armbruster            '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e',
769608cfed6SMarkus Armbruster            'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right',
770608cfed6SMarkus Armbruster            'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon',
771608cfed6SMarkus Armbruster            'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b',
772608cfed6SMarkus Armbruster            'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock',
773608cfed6SMarkus Armbruster            'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10',
774608cfed6SMarkus Armbruster            'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply',
775608cfed6SMarkus Armbruster            'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0',
776608cfed6SMarkus Armbruster            'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8',
777608cfed6SMarkus Armbruster            'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end',
778608cfed6SMarkus Armbruster            'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
779608cfed6SMarkus Armbruster            'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
780608cfed6SMarkus Armbruster            'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
781280b8da3SMiika S            'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
782608cfed6SMarkus Armbruster            'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
783608cfed6SMarkus Armbruster            'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
784608cfed6SMarkus Armbruster            'volumeup', 'volumedown', 'mediaselect',
785608cfed6SMarkus Armbruster            'mail', 'calculator', 'computer',
786608cfed6SMarkus Armbruster            'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks' ] }
787608cfed6SMarkus Armbruster
788608cfed6SMarkus Armbruster##
789608cfed6SMarkus Armbruster# @KeyValue:
790608cfed6SMarkus Armbruster#
791608cfed6SMarkus Armbruster# Represents a keyboard key.
792608cfed6SMarkus Armbruster#
793608cfed6SMarkus Armbruster# Since: 1.3.0
794608cfed6SMarkus Armbruster##
795608cfed6SMarkus Armbruster{ 'union': 'KeyValue',
796608cfed6SMarkus Armbruster  'data': {
797608cfed6SMarkus Armbruster    'number': 'int',
798608cfed6SMarkus Armbruster    'qcode': 'QKeyCode' } }
799608cfed6SMarkus Armbruster
800608cfed6SMarkus Armbruster##
801608cfed6SMarkus Armbruster# @send-key:
802608cfed6SMarkus Armbruster#
803608cfed6SMarkus Armbruster# Send keys to guest.
804608cfed6SMarkus Armbruster#
805608cfed6SMarkus Armbruster# @keys: An array of @KeyValue elements. All @KeyValues in this array are
806608cfed6SMarkus Armbruster#        simultaneously sent to the guest. A @KeyValue.number value is sent
807608cfed6SMarkus Armbruster#        directly to the guest, while @KeyValue.qcode must be a valid
808608cfed6SMarkus Armbruster#        @QKeyCode value
809608cfed6SMarkus Armbruster#
810608cfed6SMarkus Armbruster# @hold-time: time to delay key up events, milliseconds. Defaults
811608cfed6SMarkus Armbruster#             to 100
812608cfed6SMarkus Armbruster#
813608cfed6SMarkus Armbruster# Returns: Nothing on success
814608cfed6SMarkus Armbruster#          If key is unknown or redundant, InvalidParameter
815608cfed6SMarkus Armbruster#
816608cfed6SMarkus Armbruster# Since: 1.3.0
817608cfed6SMarkus Armbruster#
818608cfed6SMarkus Armbruster# Example:
819608cfed6SMarkus Armbruster#
820608cfed6SMarkus Armbruster# -> { "execute": "send-key",
821608cfed6SMarkus Armbruster#      "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
822608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "alt" },
823608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "delete" } ] } }
824608cfed6SMarkus Armbruster# <- { "return": {} }
825608cfed6SMarkus Armbruster#
826608cfed6SMarkus Armbruster##
827608cfed6SMarkus Armbruster{ 'command': 'send-key',
828608cfed6SMarkus Armbruster  'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }
829608cfed6SMarkus Armbruster
830608cfed6SMarkus Armbruster##
831608cfed6SMarkus Armbruster# @InputButton:
832608cfed6SMarkus Armbruster#
833608cfed6SMarkus Armbruster# Button of a pointer input device (mouse, tablet).
834608cfed6SMarkus Armbruster#
835608cfed6SMarkus Armbruster# @side: front side button of a 5-button mouse (since 2.9)
836608cfed6SMarkus Armbruster#
837608cfed6SMarkus Armbruster# @extra: rear side button of a 5-button mouse (since 2.9)
838608cfed6SMarkus Armbruster#
839608cfed6SMarkus Armbruster# Since: 2.0
840608cfed6SMarkus Armbruster##
841608cfed6SMarkus Armbruster{ 'enum'  : 'InputButton',
842608cfed6SMarkus Armbruster  'data'  : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side',
843608cfed6SMarkus Armbruster  'extra' ] }
844608cfed6SMarkus Armbruster
845608cfed6SMarkus Armbruster##
846608cfed6SMarkus Armbruster# @InputAxis:
847608cfed6SMarkus Armbruster#
848608cfed6SMarkus Armbruster# Position axis of a pointer input device (mouse, tablet).
849608cfed6SMarkus Armbruster#
850608cfed6SMarkus Armbruster# Since: 2.0
851608cfed6SMarkus Armbruster##
852608cfed6SMarkus Armbruster{ 'enum'  : 'InputAxis',
853608cfed6SMarkus Armbruster  'data'  : [ 'x', 'y' ] }
854608cfed6SMarkus Armbruster
855608cfed6SMarkus Armbruster##
856608cfed6SMarkus Armbruster# @InputKeyEvent:
857608cfed6SMarkus Armbruster#
858608cfed6SMarkus Armbruster# Keyboard input event.
859608cfed6SMarkus Armbruster#
860608cfed6SMarkus Armbruster# @key:    Which key this event is for.
861608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
862608cfed6SMarkus Armbruster#
863608cfed6SMarkus Armbruster# Since: 2.0
864608cfed6SMarkus Armbruster##
865608cfed6SMarkus Armbruster{ 'struct'  : 'InputKeyEvent',
866608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'KeyValue',
867608cfed6SMarkus Armbruster              'down'    : 'bool' } }
868608cfed6SMarkus Armbruster
869608cfed6SMarkus Armbruster##
870608cfed6SMarkus Armbruster# @InputBtnEvent:
871608cfed6SMarkus Armbruster#
872608cfed6SMarkus Armbruster# Pointer button input event.
873608cfed6SMarkus Armbruster#
874608cfed6SMarkus Armbruster# @button: Which button this event is for.
875608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
876608cfed6SMarkus Armbruster#
877608cfed6SMarkus Armbruster# Since: 2.0
878608cfed6SMarkus Armbruster##
879608cfed6SMarkus Armbruster{ 'struct'  : 'InputBtnEvent',
880608cfed6SMarkus Armbruster  'data'  : { 'button'  : 'InputButton',
881608cfed6SMarkus Armbruster              'down'    : 'bool' } }
882608cfed6SMarkus Armbruster
883608cfed6SMarkus Armbruster##
884608cfed6SMarkus Armbruster# @InputMoveEvent:
885608cfed6SMarkus Armbruster#
886608cfed6SMarkus Armbruster# Pointer motion input event.
887608cfed6SMarkus Armbruster#
888608cfed6SMarkus Armbruster# @axis:   Which axis is referenced by @value.
889608cfed6SMarkus Armbruster# @value:  Pointer position.  For absolute coordinates the
890608cfed6SMarkus Armbruster#          valid range is 0 -> 0x7ffff
891608cfed6SMarkus Armbruster#
892608cfed6SMarkus Armbruster# Since: 2.0
893608cfed6SMarkus Armbruster##
894608cfed6SMarkus Armbruster{ 'struct'  : 'InputMoveEvent',
895608cfed6SMarkus Armbruster  'data'  : { 'axis'    : 'InputAxis',
896608cfed6SMarkus Armbruster              'value'   : 'int' } }
897608cfed6SMarkus Armbruster
898608cfed6SMarkus Armbruster##
899608cfed6SMarkus Armbruster# @InputEvent:
900608cfed6SMarkus Armbruster#
901608cfed6SMarkus Armbruster# Input event union.
902608cfed6SMarkus Armbruster#
903608cfed6SMarkus Armbruster# @type: the input type, one of:
904608cfed6SMarkus Armbruster#  - 'key': Input event of Keyboard
905608cfed6SMarkus Armbruster#  - 'btn': Input event of pointer buttons
906608cfed6SMarkus Armbruster#  - 'rel': Input event of relative pointer motion
907608cfed6SMarkus Armbruster#  - 'abs': Input event of absolute pointer motion
908608cfed6SMarkus Armbruster#
909608cfed6SMarkus Armbruster# Since: 2.0
910608cfed6SMarkus Armbruster##
911608cfed6SMarkus Armbruster{ 'union' : 'InputEvent',
912608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'InputKeyEvent',
913608cfed6SMarkus Armbruster              'btn'     : 'InputBtnEvent',
914608cfed6SMarkus Armbruster              'rel'     : 'InputMoveEvent',
915608cfed6SMarkus Armbruster              'abs'     : 'InputMoveEvent' } }
916608cfed6SMarkus Armbruster
917608cfed6SMarkus Armbruster##
918608cfed6SMarkus Armbruster# @input-send-event:
919608cfed6SMarkus Armbruster#
920608cfed6SMarkus Armbruster# Send input event(s) to guest.
921608cfed6SMarkus Armbruster#
922608cfed6SMarkus Armbruster# @device: display device to send event(s) to.
923608cfed6SMarkus Armbruster# @head: head to send event(s) to, in case the
924608cfed6SMarkus Armbruster#        display device supports multiple scanouts.
925608cfed6SMarkus Armbruster# @events: List of InputEvent union.
926608cfed6SMarkus Armbruster#
927608cfed6SMarkus Armbruster# Returns: Nothing on success.
928608cfed6SMarkus Armbruster#
929608cfed6SMarkus Armbruster# The @device and @head parameters can be used to send the input event
930608cfed6SMarkus Armbruster# to specific input devices in case (a) multiple input devices of the
931608cfed6SMarkus Armbruster# same kind are added to the virtual machine and (b) you have
932608cfed6SMarkus Armbruster# configured input routing (see docs/multiseat.txt) for those input
933608cfed6SMarkus Armbruster# devices.  The parameters work exactly like the device and head
934608cfed6SMarkus Armbruster# properties of input devices.  If @device is missing, only devices
935608cfed6SMarkus Armbruster# that have no input routing config are admissible.  If @device is
936608cfed6SMarkus Armbruster# specified, both input devices with and without input routing config
937608cfed6SMarkus Armbruster# are admissible, but devices with input routing config take
938608cfed6SMarkus Armbruster# precedence.
939608cfed6SMarkus Armbruster#
940608cfed6SMarkus Armbruster# Since: 2.6
941608cfed6SMarkus Armbruster#
942608cfed6SMarkus Armbruster# Note: The consoles are visible in the qom tree, under
943608cfed6SMarkus Armbruster# /backend/console[$index]. They have a device link and head property,
944608cfed6SMarkus Armbruster# so it is possible to map which console belongs to which device and
945608cfed6SMarkus Armbruster# display.
946608cfed6SMarkus Armbruster#
947608cfed6SMarkus Armbruster# Example:
948608cfed6SMarkus Armbruster#
949608cfed6SMarkus Armbruster# 1. Press left mouse button.
950608cfed6SMarkus Armbruster#
951608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
952608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
953608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
954608cfed6SMarkus Armbruster#                    "data" : { "down": true, "button": "left" } } ] } }
955608cfed6SMarkus Armbruster# <- { "return": {} }
956608cfed6SMarkus Armbruster#
957608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
958608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
959608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
960608cfed6SMarkus Armbruster#                    "data" : { "down": false, "button": "left" } } ] } }
961608cfed6SMarkus Armbruster# <- { "return": {} }
962608cfed6SMarkus Armbruster#
963608cfed6SMarkus Armbruster# 2. Press ctrl-alt-del.
964608cfed6SMarkus Armbruster#
965608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
966608cfed6SMarkus Armbruster#      "arguments": { "events": [
967608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
968608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "ctrl" } } },
969608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
970608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "alt" } } },
971608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
972608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "delete" } } } ] } }
973608cfed6SMarkus Armbruster# <- { "return": {} }
974608cfed6SMarkus Armbruster#
975608cfed6SMarkus Armbruster# 3. Move mouse pointer to absolute coordinates (20000, 400).
976608cfed6SMarkus Armbruster#
977608cfed6SMarkus Armbruster# -> { "execute": "input-send-event" ,
978608cfed6SMarkus Armbruster#   "arguments": { "events": [
979608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
980608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
981608cfed6SMarkus Armbruster# <- { "return": {} }
982608cfed6SMarkus Armbruster#
983608cfed6SMarkus Armbruster##
984608cfed6SMarkus Armbruster{ 'command': 'input-send-event',
985608cfed6SMarkus Armbruster  'data': { '*device': 'str',
986608cfed6SMarkus Armbruster            '*head'  : 'int',
987608cfed6SMarkus Armbruster            'events' : [ 'InputEvent' ] } }
9880c8d7065SGerd Hoffmann
9890c8d7065SGerd Hoffmann
9900c8d7065SGerd Hoffmann##
9910c8d7065SGerd Hoffmann# @DisplayNoOpts:
9920c8d7065SGerd Hoffmann#
9930c8d7065SGerd Hoffmann# Empty struct for displays without config options.
9940c8d7065SGerd Hoffmann#
9950c8d7065SGerd Hoffmann# Since: 2.12
9960c8d7065SGerd Hoffmann#
9970c8d7065SGerd Hoffmann##
9980c8d7065SGerd Hoffmann{ 'struct'  : 'DisplayNoOpts',
9990c8d7065SGerd Hoffmann  'data'    : { } }
10000c8d7065SGerd Hoffmann
10010c8d7065SGerd Hoffmann##
10020c8d7065SGerd Hoffmann# @DisplayGTK:
10030c8d7065SGerd Hoffmann#
10040c8d7065SGerd Hoffmann# GTK display options.
10050c8d7065SGerd Hoffmann#
10060c8d7065SGerd Hoffmann# @grab-on-hover: Grab keyboard input on mouse hover.
10070c8d7065SGerd Hoffmann#
10080c8d7065SGerd Hoffmann# Since: 2.12
10090c8d7065SGerd Hoffmann#
10100c8d7065SGerd Hoffmann##
10110c8d7065SGerd Hoffmann{ 'struct'  : 'DisplayGTK',
10120c8d7065SGerd Hoffmann  'data'    : { '*grab-on-hover' : 'bool' } }
10130c8d7065SGerd Hoffmann
10140c8d7065SGerd Hoffmann##
10150c8d7065SGerd Hoffmann# @DisplayType:
10160c8d7065SGerd Hoffmann#
10170c8d7065SGerd Hoffmann# Display (user interface) type.
10180c8d7065SGerd Hoffmann#
10190c8d7065SGerd Hoffmann# Since: 2.12
10200c8d7065SGerd Hoffmann#
10210c8d7065SGerd Hoffmann##
10220c8d7065SGerd Hoffmann{ 'enum'    : 'DisplayType',
1023*e3af9f9aSGerd Hoffmann  'data'    : [ 'default', 'none', 'gtk', 'sdl',
1024767f9bf3SGerd Hoffmann                'egl-headless', 'curses', 'cocoa' ] }
10250c8d7065SGerd Hoffmann
10260c8d7065SGerd Hoffmann##
10270c8d7065SGerd Hoffmann# @DisplayOptions:
10280c8d7065SGerd Hoffmann#
10290c8d7065SGerd Hoffmann# Display (user interface) options.
10300c8d7065SGerd Hoffmann#
10310c8d7065SGerd Hoffmann# @type:          Which DisplayType qemu should use.
10320c8d7065SGerd Hoffmann# @full-screen:   Start user interface in fullscreen mode (default: off).
10330c8d7065SGerd Hoffmann# @window-close:  Allow to quit qemu with window close button (default: on).
10340c8d7065SGerd Hoffmann# @gl:            Enable OpenGL support (default: off).
10350c8d7065SGerd Hoffmann#
10360c8d7065SGerd Hoffmann# Since: 2.12
10370c8d7065SGerd Hoffmann#
10380c8d7065SGerd Hoffmann##
10390c8d7065SGerd Hoffmann{ 'union'   : 'DisplayOptions',
10400c8d7065SGerd Hoffmann  'base'    : { 'type'           : 'DisplayType',
10410c8d7065SGerd Hoffmann                '*full-screen'   : 'bool',
10420c8d7065SGerd Hoffmann                '*window-close'  : 'bool',
10430c8d7065SGerd Hoffmann                '*gl'            : 'bool' },
10440c8d7065SGerd Hoffmann  'discriminator' : 'type',
1045*e3af9f9aSGerd Hoffmann  'data'    : { 'default'        : 'DisplayNoOpts',
1046*e3af9f9aSGerd Hoffmann                'none'           : 'DisplayNoOpts',
1047fe91f36aSGerd Hoffmann                'gtk'            : 'DisplayGTK',
10480d2dd9f0SGerd Hoffmann                'sdl'            : 'DisplayNoOpts',
104914f130faSGerd Hoffmann                'egl-headless'   : 'DisplayNoOpts',
1050767f9bf3SGerd Hoffmann                'curses'         : 'DisplayNoOpts',
1051767f9bf3SGerd Hoffmann                'cocoa'          : 'DisplayNoOpts' } }
1052