xref: /qemu/qapi/ui.json (revision 100cc4fe0f0827f8da1a5c05f9c65e2aaa40e03d)
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#
15e050e426SPeter Maydell# @protocol: - 'vnc' to modify the VNC server password
16e050e426SPeter Maydell#            - '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
21449be9dfSPeter Maydell#             password.  If nothing is specified, defaults to 'keep'
22449be9dfSPeter Maydell#             'fail' to fail the command if clients are connected
23449be9dfSPeter Maydell#             'disconnect' to disconnect existing clients
24449be9dfSPeter Maydell#             'keep' to maintain existing clients
25608cfed6SMarkus Armbruster#
26e050e426SPeter Maydell# Returns: - Nothing on success
27e050e426SPeter Maydell#          - 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#
46449be9dfSPeter Maydell# @protocol: the name of the remote display protocol 'vnc' or 'spice'
47608cfed6SMarkus Armbruster#
48608cfed6SMarkus Armbruster# @time: when to expire the password.
49608cfed6SMarkus Armbruster#
50e050e426SPeter Maydell#        - 'now' to expire the password immediately
51e050e426SPeter Maydell#        - 'never' to cancel password expiration
52e050e426SPeter Maydell#        - '+INT' where INT is the number of seconds from now (integer)
53e050e426SPeter Maydell#        - 'INT' where INT is the absolute time in seconds
54e050e426SPeter Maydell#
55e050e426SPeter Maydell# Returns: - Nothing on success
56e050e426SPeter Maydell#          - If @protocol is 'spice' and Spice is not active, DeviceNotFound
57608cfed6SMarkus Armbruster#
58608cfed6SMarkus Armbruster# Since: 0.14.0
59608cfed6SMarkus Armbruster#
60608cfed6SMarkus Armbruster# Notes: Time is relative to the server and currently there is no way to
61608cfed6SMarkus Armbruster#        coordinate server time with client time.  It is not recommended to
62608cfed6SMarkus Armbruster#        use the absolute time version of the @time parameter unless you're
63608cfed6SMarkus Armbruster#        sure you are on the same machine as the QEMU instance.
64608cfed6SMarkus Armbruster#
65608cfed6SMarkus Armbruster# Example:
66608cfed6SMarkus Armbruster#
67608cfed6SMarkus Armbruster# -> { "execute": "expire_password", "arguments": { "protocol": "vnc",
68608cfed6SMarkus Armbruster#                                                   "time": "+60" } }
69608cfed6SMarkus Armbruster# <- { "return": {} }
70608cfed6SMarkus Armbruster#
71608cfed6SMarkus Armbruster##
72608cfed6SMarkus Armbruster{ 'command': 'expire_password', 'data': {'protocol': 'str', 'time': 'str'} }
73608cfed6SMarkus Armbruster
74608cfed6SMarkus Armbruster##
75608cfed6SMarkus Armbruster# @screendump:
76608cfed6SMarkus Armbruster#
77608cfed6SMarkus Armbruster# Write a PPM of the VGA screen to a file.
78608cfed6SMarkus Armbruster#
79608cfed6SMarkus Armbruster# @filename: the path of a new PPM file to store the image
80608cfed6SMarkus Armbruster#
81f771c544SThomas Huth# @device: ID of the display device that should be dumped. If this parameter
82f771c544SThomas Huth#          is missing, the primary display will be used. (Since 2.12)
83f771c544SThomas Huth#
84f771c544SThomas Huth# @head: head to use in case the device supports multiple heads. If this
85f771c544SThomas Huth#        parameter is missing, head #0 will be used. Also note that the head
86f771c544SThomas Huth#        can only be specified in conjunction with the device ID. (Since 2.12)
87f771c544SThomas Huth#
88608cfed6SMarkus Armbruster# Returns: Nothing on success
89608cfed6SMarkus Armbruster#
90608cfed6SMarkus Armbruster# Since: 0.14.0
91608cfed6SMarkus Armbruster#
92608cfed6SMarkus Armbruster# Example:
93608cfed6SMarkus Armbruster#
94608cfed6SMarkus Armbruster# -> { "execute": "screendump",
95608cfed6SMarkus Armbruster#      "arguments": { "filename": "/tmp/image" } }
96608cfed6SMarkus Armbruster# <- { "return": {} }
97608cfed6SMarkus Armbruster#
98608cfed6SMarkus Armbruster##
99f771c544SThomas Huth{ 'command': 'screendump',
100f771c544SThomas Huth  'data': {'filename': 'str', '*device': 'str', '*head': 'int'} }
101608cfed6SMarkus Armbruster
102608cfed6SMarkus Armbruster##
103608cfed6SMarkus Armbruster# == Spice
104608cfed6SMarkus Armbruster##
105608cfed6SMarkus Armbruster
106608cfed6SMarkus Armbruster##
107608cfed6SMarkus Armbruster# @SpiceBasicInfo:
108608cfed6SMarkus Armbruster#
109608cfed6SMarkus Armbruster# The basic information for SPICE network connection
110608cfed6SMarkus Armbruster#
111608cfed6SMarkus Armbruster# @host: IP address
112608cfed6SMarkus Armbruster#
113608cfed6SMarkus Armbruster# @port: port number
114608cfed6SMarkus Armbruster#
115608cfed6SMarkus Armbruster# @family: address family
116608cfed6SMarkus Armbruster#
117608cfed6SMarkus Armbruster# Since: 2.1
118608cfed6SMarkus Armbruster##
119608cfed6SMarkus Armbruster{ 'struct': 'SpiceBasicInfo',
120608cfed6SMarkus Armbruster  'data': { 'host': 'str',
121608cfed6SMarkus Armbruster            'port': 'str',
122514337c1SMarc-André Lureau            'family': 'NetworkAddressFamily' },
123514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
124608cfed6SMarkus Armbruster
125608cfed6SMarkus Armbruster##
126608cfed6SMarkus Armbruster# @SpiceServerInfo:
127608cfed6SMarkus Armbruster#
128608cfed6SMarkus Armbruster# Information about a SPICE server
129608cfed6SMarkus Armbruster#
130608cfed6SMarkus Armbruster# @auth: authentication method
131608cfed6SMarkus Armbruster#
132608cfed6SMarkus Armbruster# Since: 2.1
133608cfed6SMarkus Armbruster##
134608cfed6SMarkus Armbruster{ 'struct': 'SpiceServerInfo',
135608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
136514337c1SMarc-André Lureau  'data': { '*auth': 'str' },
137514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
138608cfed6SMarkus Armbruster
139608cfed6SMarkus Armbruster##
140608cfed6SMarkus Armbruster# @SpiceChannel:
141608cfed6SMarkus Armbruster#
142608cfed6SMarkus Armbruster# Information about a SPICE client channel.
143608cfed6SMarkus Armbruster#
144608cfed6SMarkus Armbruster# @connection-id: SPICE connection id number.  All channels with the same id
145608cfed6SMarkus Armbruster#                 belong to the same SPICE session.
146608cfed6SMarkus Armbruster#
147608cfed6SMarkus Armbruster# @channel-type: SPICE channel type number.  "1" is the main control
148608cfed6SMarkus Armbruster#                channel, filter for this one if you want to track spice
149608cfed6SMarkus Armbruster#                sessions only
150608cfed6SMarkus Armbruster#
151608cfed6SMarkus Armbruster# @channel-id: SPICE channel ID number.  Usually "0", might be different when
152608cfed6SMarkus Armbruster#              multiple channels of the same type exist, such as multiple
153608cfed6SMarkus Armbruster#              display channels in a multihead setup
154608cfed6SMarkus Armbruster#
155608cfed6SMarkus Armbruster# @tls: true if the channel is encrypted, false otherwise.
156608cfed6SMarkus Armbruster#
157608cfed6SMarkus Armbruster# Since: 0.14.0
158608cfed6SMarkus Armbruster##
159608cfed6SMarkus Armbruster{ 'struct': 'SpiceChannel',
160608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
161608cfed6SMarkus Armbruster  'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
162514337c1SMarc-André Lureau           'tls': 'bool'},
163514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
164608cfed6SMarkus Armbruster
165608cfed6SMarkus Armbruster##
166608cfed6SMarkus Armbruster# @SpiceQueryMouseMode:
167608cfed6SMarkus Armbruster#
168608cfed6SMarkus Armbruster# An enumeration of Spice mouse states.
169608cfed6SMarkus Armbruster#
170608cfed6SMarkus Armbruster# @client: Mouse cursor position is determined by the client.
171608cfed6SMarkus Armbruster#
172608cfed6SMarkus Armbruster# @server: Mouse cursor position is determined by the server.
173608cfed6SMarkus Armbruster#
174608cfed6SMarkus Armbruster# @unknown: No information is available about mouse mode used by
175608cfed6SMarkus Armbruster#           the spice server.
176608cfed6SMarkus Armbruster#
177608cfed6SMarkus Armbruster# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
178608cfed6SMarkus Armbruster#
179608cfed6SMarkus Armbruster# Since: 1.1
180608cfed6SMarkus Armbruster##
181608cfed6SMarkus Armbruster{ 'enum': 'SpiceQueryMouseMode',
182514337c1SMarc-André Lureau  'data': [ 'client', 'server', 'unknown' ],
183514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
184608cfed6SMarkus Armbruster
185608cfed6SMarkus Armbruster##
186608cfed6SMarkus Armbruster# @SpiceInfo:
187608cfed6SMarkus Armbruster#
188608cfed6SMarkus Armbruster# Information about the SPICE session.
189608cfed6SMarkus Armbruster#
190608cfed6SMarkus Armbruster# @enabled: true if the SPICE server is enabled, false otherwise
191608cfed6SMarkus Armbruster#
192608cfed6SMarkus Armbruster# @migrated: true if the last guest migration completed and spice
193608cfed6SMarkus Armbruster#            migration had completed as well. false otherwise. (since 1.4)
194608cfed6SMarkus Armbruster#
195608cfed6SMarkus Armbruster# @host: The hostname the SPICE server is bound to.  This depends on
196608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
197608cfed6SMarkus Armbruster#
198608cfed6SMarkus Armbruster# @port: The SPICE server's port number.
199608cfed6SMarkus Armbruster#
200608cfed6SMarkus Armbruster# @compiled-version: SPICE server version.
201608cfed6SMarkus Armbruster#
202608cfed6SMarkus Armbruster# @tls-port: The SPICE server's TLS port number.
203608cfed6SMarkus Armbruster#
204608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
205e050e426SPeter Maydell#
206e050e426SPeter Maydell#        - 'none'  if no authentication is being used
207e050e426SPeter Maydell#        - 'spice' uses SASL or direct TLS authentication, depending on command
208608cfed6SMarkus Armbruster#          line options
209608cfed6SMarkus Armbruster#
210608cfed6SMarkus Armbruster# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
211608cfed6SMarkus Armbruster#              be determined by the client or the server, or unknown if spice
212608cfed6SMarkus Armbruster#              server doesn't provide this information. (since: 1.1)
213608cfed6SMarkus Armbruster#
214608cfed6SMarkus Armbruster# @channels: a list of @SpiceChannel for each active spice channel
215608cfed6SMarkus Armbruster#
216608cfed6SMarkus Armbruster# Since: 0.14.0
217608cfed6SMarkus Armbruster##
218608cfed6SMarkus Armbruster{ 'struct': 'SpiceInfo',
219608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
220608cfed6SMarkus Armbruster           '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
221514337c1SMarc-André Lureau           'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']},
222514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
223608cfed6SMarkus Armbruster
224608cfed6SMarkus Armbruster##
225608cfed6SMarkus Armbruster# @query-spice:
226608cfed6SMarkus Armbruster#
227608cfed6SMarkus Armbruster# Returns information about the current SPICE server
228608cfed6SMarkus Armbruster#
229608cfed6SMarkus Armbruster# Returns: @SpiceInfo
230608cfed6SMarkus Armbruster#
231608cfed6SMarkus Armbruster# Since: 0.14.0
232608cfed6SMarkus Armbruster#
233608cfed6SMarkus Armbruster# Example:
234608cfed6SMarkus Armbruster#
235608cfed6SMarkus Armbruster# -> { "execute": "query-spice" }
236608cfed6SMarkus Armbruster# <- { "return": {
237608cfed6SMarkus Armbruster#          "enabled": true,
238608cfed6SMarkus Armbruster#          "auth": "spice",
239608cfed6SMarkus Armbruster#          "port": 5920,
240608cfed6SMarkus Armbruster#          "tls-port": 5921,
241608cfed6SMarkus Armbruster#          "host": "0.0.0.0",
242608cfed6SMarkus Armbruster#          "channels": [
243608cfed6SMarkus Armbruster#             {
244608cfed6SMarkus Armbruster#                "port": "54924",
245608cfed6SMarkus Armbruster#                "family": "ipv4",
246608cfed6SMarkus Armbruster#                "channel-type": 1,
247608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
248608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
249608cfed6SMarkus Armbruster#                "channel-id": 0,
250608cfed6SMarkus Armbruster#                "tls": true
251608cfed6SMarkus Armbruster#             },
252608cfed6SMarkus Armbruster#             {
253608cfed6SMarkus Armbruster#                "port": "36710",
254608cfed6SMarkus Armbruster#                "family": "ipv4",
255608cfed6SMarkus Armbruster#                "channel-type": 4,
256608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
257608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
258608cfed6SMarkus Armbruster#                "channel-id": 0,
259608cfed6SMarkus Armbruster#                "tls": false
260608cfed6SMarkus Armbruster#             },
261608cfed6SMarkus Armbruster#             [ ... more channels follow ... ]
262608cfed6SMarkus Armbruster#          ]
263608cfed6SMarkus Armbruster#       }
264608cfed6SMarkus Armbruster#    }
265608cfed6SMarkus Armbruster#
266608cfed6SMarkus Armbruster##
267514337c1SMarc-André Lureau{ 'command': 'query-spice', 'returns': 'SpiceInfo',
268514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
269608cfed6SMarkus Armbruster
270608cfed6SMarkus Armbruster##
271608cfed6SMarkus Armbruster# @SPICE_CONNECTED:
272608cfed6SMarkus Armbruster#
273608cfed6SMarkus Armbruster# Emitted when a SPICE client establishes a connection
274608cfed6SMarkus Armbruster#
275608cfed6SMarkus Armbruster# @server: server information
276608cfed6SMarkus Armbruster#
277608cfed6SMarkus Armbruster# @client: client information
278608cfed6SMarkus Armbruster#
279608cfed6SMarkus Armbruster# Since: 0.14.0
280608cfed6SMarkus Armbruster#
281608cfed6SMarkus Armbruster# Example:
282608cfed6SMarkus Armbruster#
283608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
284608cfed6SMarkus Armbruster#      "event": "SPICE_CONNECTED",
285608cfed6SMarkus Armbruster#      "data": {
286608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
287608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
288608cfed6SMarkus Armbruster#    }}
289608cfed6SMarkus Armbruster#
290608cfed6SMarkus Armbruster##
291608cfed6SMarkus Armbruster{ 'event': 'SPICE_CONNECTED',
292608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
293514337c1SMarc-André Lureau            'client': 'SpiceBasicInfo' },
294514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
295608cfed6SMarkus Armbruster
296608cfed6SMarkus Armbruster##
297608cfed6SMarkus Armbruster# @SPICE_INITIALIZED:
298608cfed6SMarkus Armbruster#
299608cfed6SMarkus Armbruster# Emitted after initial handshake and authentication takes place (if any)
300608cfed6SMarkus Armbruster# and the SPICE channel is up and running
301608cfed6SMarkus Armbruster#
302608cfed6SMarkus Armbruster# @server: server information
303608cfed6SMarkus Armbruster#
304608cfed6SMarkus Armbruster# @client: client information
305608cfed6SMarkus Armbruster#
306608cfed6SMarkus Armbruster# Since: 0.14.0
307608cfed6SMarkus Armbruster#
308608cfed6SMarkus Armbruster# Example:
309608cfed6SMarkus Armbruster#
310608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
311608cfed6SMarkus Armbruster#      "event": "SPICE_INITIALIZED",
312608cfed6SMarkus Armbruster#      "data": {"server": {"auth": "spice", "port": "5921",
313608cfed6SMarkus Armbruster#                          "family": "ipv4", "host": "127.0.0.1"},
314608cfed6SMarkus Armbruster#               "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
315608cfed6SMarkus Armbruster#                          "connection-id": 1804289383, "host": "127.0.0.1",
316608cfed6SMarkus Armbruster#                          "channel-id": 0, "tls": true}
317608cfed6SMarkus Armbruster#    }}
318608cfed6SMarkus Armbruster#
319608cfed6SMarkus Armbruster##
320608cfed6SMarkus Armbruster{ 'event': 'SPICE_INITIALIZED',
321608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceServerInfo',
322514337c1SMarc-André Lureau            'client': 'SpiceChannel' },
323514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
324608cfed6SMarkus Armbruster
325608cfed6SMarkus Armbruster##
326608cfed6SMarkus Armbruster# @SPICE_DISCONNECTED:
327608cfed6SMarkus Armbruster#
328608cfed6SMarkus Armbruster# Emitted when the SPICE connection is closed
329608cfed6SMarkus Armbruster#
330608cfed6SMarkus Armbruster# @server: server information
331608cfed6SMarkus Armbruster#
332608cfed6SMarkus Armbruster# @client: client information
333608cfed6SMarkus Armbruster#
334608cfed6SMarkus Armbruster# Since: 0.14.0
335608cfed6SMarkus Armbruster#
336608cfed6SMarkus Armbruster# Example:
337608cfed6SMarkus Armbruster#
338608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
339608cfed6SMarkus Armbruster#      "event": "SPICE_DISCONNECTED",
340608cfed6SMarkus Armbruster#      "data": {
341608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
342608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
343608cfed6SMarkus Armbruster#    }}
344608cfed6SMarkus Armbruster#
345608cfed6SMarkus Armbruster##
346608cfed6SMarkus Armbruster{ 'event': 'SPICE_DISCONNECTED',
347608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
348514337c1SMarc-André Lureau            'client': 'SpiceBasicInfo' },
349514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
350608cfed6SMarkus Armbruster
351608cfed6SMarkus Armbruster##
352608cfed6SMarkus Armbruster# @SPICE_MIGRATE_COMPLETED:
353608cfed6SMarkus Armbruster#
354608cfed6SMarkus Armbruster# Emitted when SPICE migration has completed
355608cfed6SMarkus Armbruster#
356608cfed6SMarkus Armbruster# Since: 1.3
357608cfed6SMarkus Armbruster#
358608cfed6SMarkus Armbruster# Example:
359608cfed6SMarkus Armbruster#
360608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
361608cfed6SMarkus Armbruster#      "event": "SPICE_MIGRATE_COMPLETED" }
362608cfed6SMarkus Armbruster#
363608cfed6SMarkus Armbruster##
364514337c1SMarc-André Lureau{ 'event': 'SPICE_MIGRATE_COMPLETED',
365514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
366608cfed6SMarkus Armbruster
367608cfed6SMarkus Armbruster##
368608cfed6SMarkus Armbruster# == VNC
369608cfed6SMarkus Armbruster##
370608cfed6SMarkus Armbruster
371608cfed6SMarkus Armbruster##
372608cfed6SMarkus Armbruster# @VncBasicInfo:
373608cfed6SMarkus Armbruster#
374608cfed6SMarkus Armbruster# The basic information for vnc network connection
375608cfed6SMarkus Armbruster#
376608cfed6SMarkus Armbruster# @host: IP address
377608cfed6SMarkus Armbruster#
378608cfed6SMarkus Armbruster# @service: The service name of the vnc port. This may depend on the host
379608cfed6SMarkus Armbruster#           system's service database so symbolic names should not be relied
380608cfed6SMarkus Armbruster#           on.
381608cfed6SMarkus Armbruster#
382608cfed6SMarkus Armbruster# @family: address family
383608cfed6SMarkus Armbruster#
384608cfed6SMarkus Armbruster# @websocket: true in case the socket is a websocket (since 2.3).
385608cfed6SMarkus Armbruster#
386608cfed6SMarkus Armbruster# Since: 2.1
387608cfed6SMarkus Armbruster##
388608cfed6SMarkus Armbruster{ 'struct': 'VncBasicInfo',
389608cfed6SMarkus Armbruster  'data': { 'host': 'str',
390608cfed6SMarkus Armbruster            'service': 'str',
391608cfed6SMarkus Armbruster            'family': 'NetworkAddressFamily',
39205eb4a25SMarc-André Lureau            'websocket': 'bool' },
39305eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
394608cfed6SMarkus Armbruster
395608cfed6SMarkus Armbruster##
396608cfed6SMarkus Armbruster# @VncServerInfo:
397608cfed6SMarkus Armbruster#
398608cfed6SMarkus Armbruster# The network connection information for server
399608cfed6SMarkus Armbruster#
400608cfed6SMarkus Armbruster# @auth: authentication method used for
401608cfed6SMarkus Armbruster#        the plain (non-websocket) VNC server
402608cfed6SMarkus Armbruster#
403608cfed6SMarkus Armbruster# Since: 2.1
404608cfed6SMarkus Armbruster##
405608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo',
406608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
40705eb4a25SMarc-André Lureau  'data': { '*auth': 'str' },
40805eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
409608cfed6SMarkus Armbruster
410608cfed6SMarkus Armbruster##
411608cfed6SMarkus Armbruster# @VncClientInfo:
412608cfed6SMarkus Armbruster#
413608cfed6SMarkus Armbruster# Information about a connected VNC client.
414608cfed6SMarkus Armbruster#
415608cfed6SMarkus Armbruster# @x509_dname: If x509 authentication is in use, the Distinguished
416608cfed6SMarkus Armbruster#              Name of the client.
417608cfed6SMarkus Armbruster#
418608cfed6SMarkus Armbruster# @sasl_username: If SASL authentication is in use, the SASL username
419608cfed6SMarkus Armbruster#                 used for authentication.
420608cfed6SMarkus Armbruster#
421608cfed6SMarkus Armbruster# Since: 0.14.0
422608cfed6SMarkus Armbruster##
423608cfed6SMarkus Armbruster{ 'struct': 'VncClientInfo',
424608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
42505eb4a25SMarc-André Lureau  'data': { '*x509_dname': 'str', '*sasl_username': 'str' },
42605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
427608cfed6SMarkus Armbruster
428608cfed6SMarkus Armbruster##
429608cfed6SMarkus Armbruster# @VncInfo:
430608cfed6SMarkus Armbruster#
431608cfed6SMarkus Armbruster# Information about the VNC session.
432608cfed6SMarkus Armbruster#
433608cfed6SMarkus Armbruster# @enabled: true if the VNC server is enabled, false otherwise
434608cfed6SMarkus Armbruster#
435608cfed6SMarkus Armbruster# @host: The hostname the VNC server is bound to.  This depends on
436608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
437608cfed6SMarkus Armbruster#
438e050e426SPeter Maydell# @family: - 'ipv6' if the host is listening for IPv6 connections
439e050e426SPeter Maydell#          - 'ipv4' if the host is listening for IPv4 connections
440e050e426SPeter Maydell#          - 'unix' if the host is listening on a unix domain socket
441e050e426SPeter Maydell#          - 'unknown' otherwise
442608cfed6SMarkus Armbruster#
443608cfed6SMarkus Armbruster# @service: The service name of the server's port.  This may depends
444608cfed6SMarkus Armbruster#           on the host system's service database so symbolic names should not
445608cfed6SMarkus Armbruster#           be relied on.
446608cfed6SMarkus Armbruster#
447608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
448e050e426SPeter Maydell#
449e050e426SPeter Maydell#        - 'none' if no authentication is being used
450e050e426SPeter Maydell#        - 'vnc' if VNC authentication is being used
451e050e426SPeter Maydell#        - 'vencrypt+plain' if VEncrypt is used with plain text authentication
452e050e426SPeter Maydell#        - 'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
453e050e426SPeter Maydell#        - 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
454e050e426SPeter Maydell#        - 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
455e050e426SPeter Maydell#        - 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
456e050e426SPeter Maydell#        - 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
457e050e426SPeter Maydell#        - 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
458e050e426SPeter Maydell#        - 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
459e050e426SPeter Maydell#        - 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
460608cfed6SMarkus Armbruster#
461608cfed6SMarkus Armbruster# @clients: a list of @VncClientInfo of all currently connected clients
462608cfed6SMarkus Armbruster#
463608cfed6SMarkus Armbruster# Since: 0.14.0
464608cfed6SMarkus Armbruster##
465608cfed6SMarkus Armbruster{ 'struct': 'VncInfo',
466608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', '*host': 'str',
467608cfed6SMarkus Armbruster           '*family': 'NetworkAddressFamily',
46805eb4a25SMarc-André Lureau           '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']},
46905eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
470608cfed6SMarkus Armbruster
471608cfed6SMarkus Armbruster##
472608cfed6SMarkus Armbruster# @VncPrimaryAuth:
473608cfed6SMarkus Armbruster#
474608cfed6SMarkus Armbruster# vnc primary authentication method.
475608cfed6SMarkus Armbruster#
476608cfed6SMarkus Armbruster# Since: 2.3
477608cfed6SMarkus Armbruster##
478608cfed6SMarkus Armbruster{ 'enum': 'VncPrimaryAuth',
479608cfed6SMarkus Armbruster  'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra',
48005eb4a25SMarc-André Lureau            'tls', 'vencrypt', 'sasl' ],
48105eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
482608cfed6SMarkus Armbruster
483608cfed6SMarkus Armbruster##
484608cfed6SMarkus Armbruster# @VncVencryptSubAuth:
485608cfed6SMarkus Armbruster#
486608cfed6SMarkus Armbruster# vnc sub authentication method with vencrypt.
487608cfed6SMarkus Armbruster#
488608cfed6SMarkus Armbruster# Since: 2.3
489608cfed6SMarkus Armbruster##
490608cfed6SMarkus Armbruster{ 'enum': 'VncVencryptSubAuth',
491608cfed6SMarkus Armbruster  'data': [ 'plain',
492608cfed6SMarkus Armbruster            'tls-none',  'x509-none',
493608cfed6SMarkus Armbruster            'tls-vnc',   'x509-vnc',
494608cfed6SMarkus Armbruster            'tls-plain', 'x509-plain',
49505eb4a25SMarc-André Lureau            'tls-sasl',  'x509-sasl' ],
49605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
497608cfed6SMarkus Armbruster
498608cfed6SMarkus Armbruster##
499608cfed6SMarkus Armbruster# @VncServerInfo2:
500608cfed6SMarkus Armbruster#
501608cfed6SMarkus Armbruster# The network connection information for server
502608cfed6SMarkus Armbruster#
503608cfed6SMarkus Armbruster# @auth: The current authentication type used by the servers
504608cfed6SMarkus Armbruster#
505608cfed6SMarkus Armbruster# @vencrypt: The vencrypt sub authentication type used by the
506608cfed6SMarkus Armbruster#            servers, only specified in case auth == vencrypt.
507608cfed6SMarkus Armbruster#
508608cfed6SMarkus Armbruster# Since: 2.9
509608cfed6SMarkus Armbruster##
510608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo2',
511608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
512608cfed6SMarkus Armbruster  'data': { 'auth'      : 'VncPrimaryAuth',
51305eb4a25SMarc-André Lureau            '*vencrypt' : 'VncVencryptSubAuth' },
51405eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
515608cfed6SMarkus Armbruster
516608cfed6SMarkus Armbruster##
517608cfed6SMarkus Armbruster# @VncInfo2:
518608cfed6SMarkus Armbruster#
519608cfed6SMarkus Armbruster# Information about a vnc server
520608cfed6SMarkus Armbruster#
521608cfed6SMarkus Armbruster# @id: vnc server name.
522608cfed6SMarkus Armbruster#
523608cfed6SMarkus Armbruster# @server: A list of @VncBasincInfo describing all listening sockets.
524608cfed6SMarkus Armbruster#          The list can be empty (in case the vnc server is disabled).
525608cfed6SMarkus Armbruster#          It also may have multiple entries: normal + websocket,
526608cfed6SMarkus Armbruster#          possibly also ipv4 + ipv6 in the future.
527608cfed6SMarkus Armbruster#
528608cfed6SMarkus Armbruster# @clients: A list of @VncClientInfo of all currently connected clients.
529608cfed6SMarkus Armbruster#           The list can be empty, for obvious reasons.
530608cfed6SMarkus Armbruster#
531608cfed6SMarkus Armbruster# @auth: The current authentication type used by the non-websockets servers
532608cfed6SMarkus Armbruster#
533608cfed6SMarkus Armbruster# @vencrypt: The vencrypt authentication type used by the servers,
534608cfed6SMarkus Armbruster#            only specified in case auth == vencrypt.
535608cfed6SMarkus Armbruster#
536608cfed6SMarkus Armbruster# @display: The display device the vnc server is linked to.
537608cfed6SMarkus Armbruster#
538608cfed6SMarkus Armbruster# Since: 2.3
539608cfed6SMarkus Armbruster##
540608cfed6SMarkus Armbruster{ 'struct': 'VncInfo2',
541608cfed6SMarkus Armbruster  'data': { 'id'        : 'str',
542608cfed6SMarkus Armbruster            'server'    : ['VncServerInfo2'],
543608cfed6SMarkus Armbruster            'clients'   : ['VncClientInfo'],
544608cfed6SMarkus Armbruster            'auth'      : 'VncPrimaryAuth',
545608cfed6SMarkus Armbruster            '*vencrypt' : 'VncVencryptSubAuth',
54605eb4a25SMarc-André Lureau            '*display'  : 'str' },
54705eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
548608cfed6SMarkus Armbruster
549608cfed6SMarkus Armbruster##
550608cfed6SMarkus Armbruster# @query-vnc:
551608cfed6SMarkus Armbruster#
552608cfed6SMarkus Armbruster# Returns information about the current VNC server
553608cfed6SMarkus Armbruster#
554608cfed6SMarkus Armbruster# Returns: @VncInfo
555608cfed6SMarkus Armbruster#
556608cfed6SMarkus Armbruster# Since: 0.14.0
557608cfed6SMarkus Armbruster#
558608cfed6SMarkus Armbruster# Example:
559608cfed6SMarkus Armbruster#
560608cfed6SMarkus Armbruster# -> { "execute": "query-vnc" }
561608cfed6SMarkus Armbruster# <- { "return": {
562608cfed6SMarkus Armbruster#          "enabled":true,
563608cfed6SMarkus Armbruster#          "host":"0.0.0.0",
564608cfed6SMarkus Armbruster#          "service":"50402",
565608cfed6SMarkus Armbruster#          "auth":"vnc",
566608cfed6SMarkus Armbruster#          "family":"ipv4",
567608cfed6SMarkus Armbruster#          "clients":[
568608cfed6SMarkus Armbruster#             {
569608cfed6SMarkus Armbruster#                "host":"127.0.0.1",
570608cfed6SMarkus Armbruster#                "service":"50401",
571608cfed6SMarkus Armbruster#                "family":"ipv4"
572608cfed6SMarkus Armbruster#             }
573608cfed6SMarkus Armbruster#          ]
574608cfed6SMarkus Armbruster#       }
575608cfed6SMarkus Armbruster#    }
576608cfed6SMarkus Armbruster#
577608cfed6SMarkus Armbruster##
57805eb4a25SMarc-André Lureau{ 'command': 'query-vnc', 'returns': 'VncInfo',
57905eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
580608cfed6SMarkus Armbruster##
581608cfed6SMarkus Armbruster# @query-vnc-servers:
582608cfed6SMarkus Armbruster#
583608cfed6SMarkus Armbruster# Returns a list of vnc servers.  The list can be empty.
584608cfed6SMarkus Armbruster#
585608cfed6SMarkus Armbruster# Returns: a list of @VncInfo2
586608cfed6SMarkus Armbruster#
587608cfed6SMarkus Armbruster# Since: 2.3
588608cfed6SMarkus Armbruster##
58905eb4a25SMarc-André Lureau{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'],
59005eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
591608cfed6SMarkus Armbruster
592608cfed6SMarkus Armbruster##
593608cfed6SMarkus Armbruster# @change-vnc-password:
594608cfed6SMarkus Armbruster#
595608cfed6SMarkus Armbruster# Change the VNC server password.
596608cfed6SMarkus Armbruster#
597608cfed6SMarkus Armbruster# @password: the new password to use with VNC authentication
598608cfed6SMarkus Armbruster#
599608cfed6SMarkus Armbruster# Since: 1.1
600608cfed6SMarkus Armbruster#
601608cfed6SMarkus Armbruster# Notes: An empty password in this command will set the password to the empty
602608cfed6SMarkus Armbruster#        string.  Existing clients are unaffected by executing this command.
603608cfed6SMarkus Armbruster##
604b0ddeba2SMarc-André Lureau{ 'command': 'change-vnc-password',
605b0ddeba2SMarc-André Lureau  'data': { 'password': 'str' },
60605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
607608cfed6SMarkus Armbruster
608608cfed6SMarkus Armbruster##
609608cfed6SMarkus Armbruster# @VNC_CONNECTED:
610608cfed6SMarkus Armbruster#
611608cfed6SMarkus Armbruster# Emitted when a VNC client establishes a connection
612608cfed6SMarkus Armbruster#
613608cfed6SMarkus Armbruster# @server: server information
614608cfed6SMarkus Armbruster#
615608cfed6SMarkus Armbruster# @client: client information
616608cfed6SMarkus Armbruster#
617608cfed6SMarkus Armbruster# Note: This event is emitted before any authentication takes place, thus
618608cfed6SMarkus Armbruster#       the authentication ID is not provided
619608cfed6SMarkus Armbruster#
620608cfed6SMarkus Armbruster# Since: 0.13.0
621608cfed6SMarkus Armbruster#
622608cfed6SMarkus Armbruster# Example:
623608cfed6SMarkus Armbruster#
624608cfed6SMarkus Armbruster# <- { "event": "VNC_CONNECTED",
625608cfed6SMarkus Armbruster#      "data": {
626608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
627608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0" },
628608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "58425",
629608cfed6SMarkus Armbruster#                        "host": "127.0.0.1" } },
630608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
631608cfed6SMarkus Armbruster#
632608cfed6SMarkus Armbruster##
633608cfed6SMarkus Armbruster{ 'event': 'VNC_CONNECTED',
634608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
63505eb4a25SMarc-André Lureau            'client': 'VncBasicInfo' },
63605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
637608cfed6SMarkus Armbruster
638608cfed6SMarkus Armbruster##
639608cfed6SMarkus Armbruster# @VNC_INITIALIZED:
640608cfed6SMarkus Armbruster#
641608cfed6SMarkus Armbruster# Emitted after authentication takes place (if any) and the VNC session is
642608cfed6SMarkus Armbruster# made active
643608cfed6SMarkus Armbruster#
644608cfed6SMarkus Armbruster# @server: server information
645608cfed6SMarkus Armbruster#
646608cfed6SMarkus Armbruster# @client: client information
647608cfed6SMarkus Armbruster#
648608cfed6SMarkus Armbruster# Since: 0.13.0
649608cfed6SMarkus Armbruster#
650608cfed6SMarkus Armbruster# Example:
651608cfed6SMarkus Armbruster#
652608cfed6SMarkus Armbruster# <-  { "event": "VNC_INITIALIZED",
653608cfed6SMarkus Armbruster#       "data": {
654608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
655608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0"},
656608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "46089",
657608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
658608cfed6SMarkus Armbruster#       "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
659608cfed6SMarkus Armbruster#
660608cfed6SMarkus Armbruster##
661608cfed6SMarkus Armbruster{ 'event': 'VNC_INITIALIZED',
662608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
66305eb4a25SMarc-André Lureau            'client': 'VncClientInfo' },
66405eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
665608cfed6SMarkus Armbruster
666608cfed6SMarkus Armbruster##
667608cfed6SMarkus Armbruster# @VNC_DISCONNECTED:
668608cfed6SMarkus Armbruster#
669608cfed6SMarkus Armbruster# Emitted when the connection is closed
670608cfed6SMarkus Armbruster#
671608cfed6SMarkus Armbruster# @server: server information
672608cfed6SMarkus Armbruster#
673608cfed6SMarkus Armbruster# @client: client information
674608cfed6SMarkus Armbruster#
675608cfed6SMarkus Armbruster# Since: 0.13.0
676608cfed6SMarkus Armbruster#
677608cfed6SMarkus Armbruster# Example:
678608cfed6SMarkus Armbruster#
679608cfed6SMarkus Armbruster# <- { "event": "VNC_DISCONNECTED",
680608cfed6SMarkus Armbruster#      "data": {
681608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
682608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0" },
683608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "58425",
684608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
685608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
686608cfed6SMarkus Armbruster#
687608cfed6SMarkus Armbruster##
688608cfed6SMarkus Armbruster{ 'event': 'VNC_DISCONNECTED',
689608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
69005eb4a25SMarc-André Lureau            'client': 'VncClientInfo' },
69105eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
692608cfed6SMarkus Armbruster
693608cfed6SMarkus Armbruster##
694608cfed6SMarkus Armbruster# = Input
695608cfed6SMarkus Armbruster##
696608cfed6SMarkus Armbruster
697608cfed6SMarkus Armbruster##
698608cfed6SMarkus Armbruster# @MouseInfo:
699608cfed6SMarkus Armbruster#
700608cfed6SMarkus Armbruster# Information about a mouse device.
701608cfed6SMarkus Armbruster#
702608cfed6SMarkus Armbruster# @name: the name of the mouse device
703608cfed6SMarkus Armbruster#
704608cfed6SMarkus Armbruster# @index: the index of the mouse device
705608cfed6SMarkus Armbruster#
706608cfed6SMarkus Armbruster# @current: true if this device is currently receiving mouse events
707608cfed6SMarkus Armbruster#
708608cfed6SMarkus Armbruster# @absolute: true if this device supports absolute coordinates as input
709608cfed6SMarkus Armbruster#
710608cfed6SMarkus Armbruster# Since: 0.14.0
711608cfed6SMarkus Armbruster##
712608cfed6SMarkus Armbruster{ 'struct': 'MouseInfo',
713608cfed6SMarkus Armbruster  'data': {'name': 'str', 'index': 'int', 'current': 'bool',
714608cfed6SMarkus Armbruster           'absolute': 'bool'} }
715608cfed6SMarkus Armbruster
716608cfed6SMarkus Armbruster##
717608cfed6SMarkus Armbruster# @query-mice:
718608cfed6SMarkus Armbruster#
719608cfed6SMarkus Armbruster# Returns information about each active mouse device
720608cfed6SMarkus Armbruster#
721608cfed6SMarkus Armbruster# Returns: a list of @MouseInfo for each device
722608cfed6SMarkus Armbruster#
723608cfed6SMarkus Armbruster# Since: 0.14.0
724608cfed6SMarkus Armbruster#
725608cfed6SMarkus Armbruster# Example:
726608cfed6SMarkus Armbruster#
727608cfed6SMarkus Armbruster# -> { "execute": "query-mice" }
728608cfed6SMarkus Armbruster# <- { "return": [
729608cfed6SMarkus Armbruster#          {
730608cfed6SMarkus Armbruster#             "name":"QEMU Microsoft Mouse",
731608cfed6SMarkus Armbruster#             "index":0,
732608cfed6SMarkus Armbruster#             "current":false,
733608cfed6SMarkus Armbruster#             "absolute":false
734608cfed6SMarkus Armbruster#          },
735608cfed6SMarkus Armbruster#          {
736608cfed6SMarkus Armbruster#             "name":"QEMU PS/2 Mouse",
737608cfed6SMarkus Armbruster#             "index":1,
738608cfed6SMarkus Armbruster#             "current":true,
739608cfed6SMarkus Armbruster#             "absolute":true
740608cfed6SMarkus Armbruster#          }
741608cfed6SMarkus Armbruster#       ]
742608cfed6SMarkus Armbruster#    }
743608cfed6SMarkus Armbruster#
744608cfed6SMarkus Armbruster##
745608cfed6SMarkus Armbruster{ 'command': 'query-mice', 'returns': ['MouseInfo'] }
746608cfed6SMarkus Armbruster
747608cfed6SMarkus Armbruster##
748608cfed6SMarkus Armbruster# @QKeyCode:
749608cfed6SMarkus Armbruster#
750608cfed6SMarkus Armbruster# An enumeration of key name.
751608cfed6SMarkus Armbruster#
752608cfed6SMarkus Armbruster# This is used by the @send-key command.
753608cfed6SMarkus Armbruster#
754608cfed6SMarkus Armbruster# @unmapped: since 2.0
755608cfed6SMarkus Armbruster# @pause: since 2.0
756608cfed6SMarkus Armbruster# @ro: since 2.4
757608cfed6SMarkus Armbruster# @kp_comma: since 2.4
758608cfed6SMarkus Armbruster# @kp_equals: since 2.6
759608cfed6SMarkus Armbruster# @power: since 2.6
760608cfed6SMarkus Armbruster# @hiragana: since 2.9
761608cfed6SMarkus Armbruster# @henkan: since 2.9
762608cfed6SMarkus Armbruster# @yen: since 2.9
763608cfed6SMarkus Armbruster#
764608cfed6SMarkus Armbruster# @sleep: since 2.10
765608cfed6SMarkus Armbruster# @wake: since 2.10
766608cfed6SMarkus Armbruster# @audionext: since 2.10
767608cfed6SMarkus Armbruster# @audioprev: since 2.10
768608cfed6SMarkus Armbruster# @audiostop: since 2.10
769608cfed6SMarkus Armbruster# @audioplay: since 2.10
770608cfed6SMarkus Armbruster# @audiomute: since 2.10
771608cfed6SMarkus Armbruster# @volumeup: since 2.10
772608cfed6SMarkus Armbruster# @volumedown: since 2.10
773608cfed6SMarkus Armbruster# @mediaselect: since 2.10
774608cfed6SMarkus Armbruster# @mail: since 2.10
775608cfed6SMarkus Armbruster# @calculator: since 2.10
776608cfed6SMarkus Armbruster# @computer: since 2.10
777608cfed6SMarkus Armbruster# @ac_home: since 2.10
778608cfed6SMarkus Armbruster# @ac_back: since 2.10
779608cfed6SMarkus Armbruster# @ac_forward: since 2.10
780608cfed6SMarkus Armbruster# @ac_refresh: since 2.10
781608cfed6SMarkus Armbruster# @ac_bookmarks: since 2.10
782608cfed6SMarkus Armbruster# altgr, altgr_r: dropped in 2.10
783608cfed6SMarkus Armbruster#
784280b8da3SMiika S# @muhenkan: since 2.12
785280b8da3SMiika S# @katakanahiragana: since 2.12
786280b8da3SMiika S#
78780b857f0SDaniel P. Berrange# 'sysrq' was mistakenly added to hack around the fact that
78880b857f0SDaniel P. Berrange# the ps2 driver was not generating correct scancodes sequences
78980b857f0SDaniel P. Berrange# when 'alt+print' was pressed. This flaw is now fixed and the
79080b857f0SDaniel P. Berrange# 'sysrq' key serves no further purpose. Any further use of
79180b857f0SDaniel P. Berrange# 'sysrq' will be transparently changed to 'print', so they
79280b857f0SDaniel P. Berrange# are effectively synonyms.
79380b857f0SDaniel P. Berrange#
794608cfed6SMarkus Armbruster# Since: 1.3.0
795608cfed6SMarkus Armbruster#
796608cfed6SMarkus Armbruster##
797608cfed6SMarkus Armbruster{ 'enum': 'QKeyCode',
798608cfed6SMarkus Armbruster  'data': [ 'unmapped',
799608cfed6SMarkus Armbruster            'shift', 'shift_r', 'alt', 'alt_r', 'ctrl',
800608cfed6SMarkus Armbruster            'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8',
801608cfed6SMarkus Armbruster            '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e',
802608cfed6SMarkus Armbruster            'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right',
803608cfed6SMarkus Armbruster            'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon',
804608cfed6SMarkus Armbruster            'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b',
805608cfed6SMarkus Armbruster            'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock',
806608cfed6SMarkus Armbruster            'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10',
807608cfed6SMarkus Armbruster            'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply',
808608cfed6SMarkus Armbruster            'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0',
809608cfed6SMarkus Armbruster            'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8',
810608cfed6SMarkus Armbruster            'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end',
811608cfed6SMarkus Armbruster            'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
812608cfed6SMarkus Armbruster            'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
813608cfed6SMarkus Armbruster            'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
814280b8da3SMiika S            'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
815608cfed6SMarkus Armbruster            'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
816608cfed6SMarkus Armbruster            'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
817608cfed6SMarkus Armbruster            'volumeup', 'volumedown', 'mediaselect',
818608cfed6SMarkus Armbruster            'mail', 'calculator', 'computer',
819608cfed6SMarkus Armbruster            'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks' ] }
820608cfed6SMarkus Armbruster
821608cfed6SMarkus Armbruster##
822608cfed6SMarkus Armbruster# @KeyValue:
823608cfed6SMarkus Armbruster#
824608cfed6SMarkus Armbruster# Represents a keyboard key.
825608cfed6SMarkus Armbruster#
826608cfed6SMarkus Armbruster# Since: 1.3.0
827608cfed6SMarkus Armbruster##
828608cfed6SMarkus Armbruster{ 'union': 'KeyValue',
829608cfed6SMarkus Armbruster  'data': {
830608cfed6SMarkus Armbruster    'number': 'int',
831608cfed6SMarkus Armbruster    'qcode': 'QKeyCode' } }
832608cfed6SMarkus Armbruster
833608cfed6SMarkus Armbruster##
834608cfed6SMarkus Armbruster# @send-key:
835608cfed6SMarkus Armbruster#
836608cfed6SMarkus Armbruster# Send keys to guest.
837608cfed6SMarkus Armbruster#
838608cfed6SMarkus Armbruster# @keys: An array of @KeyValue elements. All @KeyValues in this array are
839608cfed6SMarkus Armbruster#        simultaneously sent to the guest. A @KeyValue.number value is sent
840608cfed6SMarkus Armbruster#        directly to the guest, while @KeyValue.qcode must be a valid
841608cfed6SMarkus Armbruster#        @QKeyCode value
842608cfed6SMarkus Armbruster#
843608cfed6SMarkus Armbruster# @hold-time: time to delay key up events, milliseconds. Defaults
844608cfed6SMarkus Armbruster#             to 100
845608cfed6SMarkus Armbruster#
846e050e426SPeter Maydell# Returns: - Nothing on success
847e050e426SPeter Maydell#          - If key is unknown or redundant, InvalidParameter
848608cfed6SMarkus Armbruster#
849608cfed6SMarkus Armbruster# Since: 1.3.0
850608cfed6SMarkus Armbruster#
851608cfed6SMarkus Armbruster# Example:
852608cfed6SMarkus Armbruster#
853608cfed6SMarkus Armbruster# -> { "execute": "send-key",
854608cfed6SMarkus Armbruster#      "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
855608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "alt" },
856608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "delete" } ] } }
857608cfed6SMarkus Armbruster# <- { "return": {} }
858608cfed6SMarkus Armbruster#
859608cfed6SMarkus Armbruster##
860608cfed6SMarkus Armbruster{ 'command': 'send-key',
861608cfed6SMarkus Armbruster  'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }
862608cfed6SMarkus Armbruster
863608cfed6SMarkus Armbruster##
864608cfed6SMarkus Armbruster# @InputButton:
865608cfed6SMarkus Armbruster#
866608cfed6SMarkus Armbruster# Button of a pointer input device (mouse, tablet).
867608cfed6SMarkus Armbruster#
868608cfed6SMarkus Armbruster# @side: front side button of a 5-button mouse (since 2.9)
869608cfed6SMarkus Armbruster#
870608cfed6SMarkus Armbruster# @extra: rear side button of a 5-button mouse (since 2.9)
871608cfed6SMarkus Armbruster#
872608cfed6SMarkus Armbruster# Since: 2.0
873608cfed6SMarkus Armbruster##
874608cfed6SMarkus Armbruster{ 'enum'  : 'InputButton',
875608cfed6SMarkus Armbruster  'data'  : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side',
876608cfed6SMarkus Armbruster  'extra' ] }
877608cfed6SMarkus Armbruster
878608cfed6SMarkus Armbruster##
879608cfed6SMarkus Armbruster# @InputAxis:
880608cfed6SMarkus Armbruster#
881608cfed6SMarkus Armbruster# Position axis of a pointer input device (mouse, tablet).
882608cfed6SMarkus Armbruster#
883608cfed6SMarkus Armbruster# Since: 2.0
884608cfed6SMarkus Armbruster##
885608cfed6SMarkus Armbruster{ 'enum'  : 'InputAxis',
886608cfed6SMarkus Armbruster  'data'  : [ 'x', 'y' ] }
887608cfed6SMarkus Armbruster
888608cfed6SMarkus Armbruster##
889608cfed6SMarkus Armbruster# @InputKeyEvent:
890608cfed6SMarkus Armbruster#
891608cfed6SMarkus Armbruster# Keyboard input event.
892608cfed6SMarkus Armbruster#
893608cfed6SMarkus Armbruster# @key:    Which key this event is for.
894608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
895608cfed6SMarkus Armbruster#
896608cfed6SMarkus Armbruster# Since: 2.0
897608cfed6SMarkus Armbruster##
898608cfed6SMarkus Armbruster{ 'struct'  : 'InputKeyEvent',
899608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'KeyValue',
900608cfed6SMarkus Armbruster              'down'    : 'bool' } }
901608cfed6SMarkus Armbruster
902608cfed6SMarkus Armbruster##
903608cfed6SMarkus Armbruster# @InputBtnEvent:
904608cfed6SMarkus Armbruster#
905608cfed6SMarkus Armbruster# Pointer button input event.
906608cfed6SMarkus Armbruster#
907608cfed6SMarkus Armbruster# @button: Which button this event is for.
908608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
909608cfed6SMarkus Armbruster#
910608cfed6SMarkus Armbruster# Since: 2.0
911608cfed6SMarkus Armbruster##
912608cfed6SMarkus Armbruster{ 'struct'  : 'InputBtnEvent',
913608cfed6SMarkus Armbruster  'data'  : { 'button'  : 'InputButton',
914608cfed6SMarkus Armbruster              'down'    : 'bool' } }
915608cfed6SMarkus Armbruster
916608cfed6SMarkus Armbruster##
917608cfed6SMarkus Armbruster# @InputMoveEvent:
918608cfed6SMarkus Armbruster#
919608cfed6SMarkus Armbruster# Pointer motion input event.
920608cfed6SMarkus Armbruster#
921608cfed6SMarkus Armbruster# @axis: Which axis is referenced by @value.
922608cfed6SMarkus Armbruster# @value: Pointer position.  For absolute coordinates the
923608cfed6SMarkus Armbruster#         valid range is 0 -> 0x7ffff
924608cfed6SMarkus Armbruster#
925608cfed6SMarkus Armbruster# Since: 2.0
926608cfed6SMarkus Armbruster##
927608cfed6SMarkus Armbruster{ 'struct'  : 'InputMoveEvent',
928608cfed6SMarkus Armbruster  'data'  : { 'axis'    : 'InputAxis',
929608cfed6SMarkus Armbruster              'value'   : 'int' } }
930608cfed6SMarkus Armbruster
931608cfed6SMarkus Armbruster##
932608cfed6SMarkus Armbruster# @InputEvent:
933608cfed6SMarkus Armbruster#
934608cfed6SMarkus Armbruster# Input event union.
935608cfed6SMarkus Armbruster#
936608cfed6SMarkus Armbruster# @type: the input type, one of:
937*100cc4feSPeter Maydell#
938608cfed6SMarkus Armbruster#        - 'key': Input event of Keyboard
939608cfed6SMarkus Armbruster#        - 'btn': Input event of pointer buttons
940608cfed6SMarkus Armbruster#        - 'rel': Input event of relative pointer motion
941608cfed6SMarkus Armbruster#        - 'abs': Input event of absolute pointer motion
942608cfed6SMarkus Armbruster#
943608cfed6SMarkus Armbruster# Since: 2.0
944608cfed6SMarkus Armbruster##
945608cfed6SMarkus Armbruster{ 'union' : 'InputEvent',
946608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'InputKeyEvent',
947608cfed6SMarkus Armbruster              'btn'     : 'InputBtnEvent',
948608cfed6SMarkus Armbruster              'rel'     : 'InputMoveEvent',
949608cfed6SMarkus Armbruster              'abs'     : 'InputMoveEvent' } }
950608cfed6SMarkus Armbruster
951608cfed6SMarkus Armbruster##
952608cfed6SMarkus Armbruster# @input-send-event:
953608cfed6SMarkus Armbruster#
954608cfed6SMarkus Armbruster# Send input event(s) to guest.
955608cfed6SMarkus Armbruster#
956608cfed6SMarkus Armbruster# The @device and @head parameters can be used to send the input event
957608cfed6SMarkus Armbruster# to specific input devices in case (a) multiple input devices of the
958608cfed6SMarkus Armbruster# same kind are added to the virtual machine and (b) you have
959608cfed6SMarkus Armbruster# configured input routing (see docs/multiseat.txt) for those input
960608cfed6SMarkus Armbruster# devices.  The parameters work exactly like the device and head
961608cfed6SMarkus Armbruster# properties of input devices.  If @device is missing, only devices
962608cfed6SMarkus Armbruster# that have no input routing config are admissible.  If @device is
963608cfed6SMarkus Armbruster# specified, both input devices with and without input routing config
964608cfed6SMarkus Armbruster# are admissible, but devices with input routing config take
965608cfed6SMarkus Armbruster# precedence.
966608cfed6SMarkus Armbruster#
96743d7c2d0SPeter Maydell# @device: display device to send event(s) to.
96843d7c2d0SPeter Maydell# @head: head to send event(s) to, in case the
96943d7c2d0SPeter Maydell#        display device supports multiple scanouts.
97043d7c2d0SPeter Maydell# @events: List of InputEvent union.
97143d7c2d0SPeter Maydell#
97243d7c2d0SPeter Maydell# Returns: Nothing on success.
97343d7c2d0SPeter Maydell#
974608cfed6SMarkus Armbruster# Since: 2.6
975608cfed6SMarkus Armbruster#
976608cfed6SMarkus Armbruster# Note: The consoles are visible in the qom tree, under
977608cfed6SMarkus Armbruster#       /backend/console[$index]. They have a device link and head property,
978608cfed6SMarkus Armbruster#       so it is possible to map which console belongs to which device and
979608cfed6SMarkus Armbruster#       display.
980608cfed6SMarkus Armbruster#
981608cfed6SMarkus Armbruster# Example:
982608cfed6SMarkus Armbruster#
983608cfed6SMarkus Armbruster# 1. Press left mouse button.
984608cfed6SMarkus Armbruster#
985608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
986608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
987608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
988608cfed6SMarkus Armbruster#                    "data" : { "down": true, "button": "left" } } ] } }
989608cfed6SMarkus Armbruster# <- { "return": {} }
990608cfed6SMarkus Armbruster#
991608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
992608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
993608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
994608cfed6SMarkus Armbruster#                    "data" : { "down": false, "button": "left" } } ] } }
995608cfed6SMarkus Armbruster# <- { "return": {} }
996608cfed6SMarkus Armbruster#
997608cfed6SMarkus Armbruster# 2. Press ctrl-alt-del.
998608cfed6SMarkus Armbruster#
999608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
1000608cfed6SMarkus Armbruster#      "arguments": { "events": [
1001608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
1002608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "ctrl" } } },
1003608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
1004608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "alt" } } },
1005608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
1006608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "delete" } } } ] } }
1007608cfed6SMarkus Armbruster# <- { "return": {} }
1008608cfed6SMarkus Armbruster#
1009608cfed6SMarkus Armbruster# 3. Move mouse pointer to absolute coordinates (20000, 400).
1010608cfed6SMarkus Armbruster#
1011608cfed6SMarkus Armbruster# -> { "execute": "input-send-event" ,
1012608cfed6SMarkus Armbruster#   "arguments": { "events": [
1013608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
1014608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
1015608cfed6SMarkus Armbruster# <- { "return": {} }
1016608cfed6SMarkus Armbruster#
1017608cfed6SMarkus Armbruster##
1018608cfed6SMarkus Armbruster{ 'command': 'input-send-event',
1019608cfed6SMarkus Armbruster  'data': { '*device': 'str',
1020608cfed6SMarkus Armbruster            '*head'  : 'int',
1021608cfed6SMarkus Armbruster            'events' : [ 'InputEvent' ] } }
10220c8d7065SGerd Hoffmann
10232657846fSRyan El Kochta##
10242657846fSRyan El Kochta# @GrabToggleKeys:
10252657846fSRyan El Kochta#
10262657846fSRyan El Kochta# Keys to toggle input-linux between host and guest.
10272657846fSRyan El Kochta#
10282657846fSRyan El Kochta# Since: 4.0
10292657846fSRyan El Kochta#
10302657846fSRyan El Kochta##
10312657846fSRyan El Kochta{ 'enum': 'GrabToggleKeys',
1032a923b471SNiklas Haas  'data': [ 'ctrl-ctrl', 'alt-alt', 'shift-shift','meta-meta', 'scrolllock',
1033a923b471SNiklas Haas            'ctrl-scrolllock' ] }
10340c8d7065SGerd Hoffmann
10350c8d7065SGerd Hoffmann##
10360c8d7065SGerd Hoffmann# @DisplayGTK:
10370c8d7065SGerd Hoffmann#
10380c8d7065SGerd Hoffmann# GTK display options.
10390c8d7065SGerd Hoffmann#
10400c8d7065SGerd Hoffmann# @grab-on-hover: Grab keyboard input on mouse hover.
1041e8b1386eSGerd Hoffmann# @zoom-to-fit: Zoom guest display to fit into the host window.  When
1042e8b1386eSGerd Hoffmann#               turned off the host window will be resized instead.
1043e8b1386eSGerd Hoffmann#               In case the display device can notify the guest on
1044e8b1386eSGerd Hoffmann#               window resizes (virtio-gpu) this will default to "on",
1045e8b1386eSGerd Hoffmann#               assuming the guest will resize the display to match
1046e8b1386eSGerd Hoffmann#               the window size then.  Otherwise it defaults to "off".
1047e8b1386eSGerd Hoffmann#               Since 3.1
10480c8d7065SGerd Hoffmann#
10490c8d7065SGerd Hoffmann# Since: 2.12
10500c8d7065SGerd Hoffmann#
10510c8d7065SGerd Hoffmann##
10520c8d7065SGerd Hoffmann{ 'struct'  : 'DisplayGTK',
1053e8b1386eSGerd Hoffmann  'data'    : { '*grab-on-hover' : 'bool',
1054e8b1386eSGerd Hoffmann                '*zoom-to-fit'   : 'bool'  } }
10550c8d7065SGerd Hoffmann
10560c8d7065SGerd Hoffmann##
1057d4dc4ab1SErik Skultety# @DisplayEGLHeadless:
1058d4dc4ab1SErik Skultety#
1059d4dc4ab1SErik Skultety# EGL headless display options.
1060d4dc4ab1SErik Skultety#
1061d4dc4ab1SErik Skultety# @rendernode: Which DRM render node should be used. Default is the first
1062d4dc4ab1SErik Skultety#              available node on the host.
1063d4dc4ab1SErik Skultety#
1064d4dc4ab1SErik Skultety# Since: 3.1
1065d4dc4ab1SErik Skultety#
1066d4dc4ab1SErik Skultety##
1067d4dc4ab1SErik Skultety{ 'struct'  : 'DisplayEGLHeadless',
1068d4dc4ab1SErik Skultety  'data'    : { '*rendernode' : 'str' } }
1069d4dc4ab1SErik Skultety
1070d4dc4ab1SErik Skultety ##
107162f27922SElie Tournier # @DisplayGLMode:
107262f27922SElie Tournier #
107362f27922SElie Tournier # Display OpenGL mode.
107462f27922SElie Tournier #
107562f27922SElie Tournier # @off: Disable OpenGL (default).
107662f27922SElie Tournier # @on: Use OpenGL, pick context type automatically.
107762f27922SElie Tournier #      Would better be named 'auto' but is called 'on' for backward
107862f27922SElie Tournier #      compatibility with bool type.
107962f27922SElie Tournier # @core: Use OpenGL with Core (desktop) Context.
108062f27922SElie Tournier # @es: Use OpenGL with ES (embedded systems) Context.
108162f27922SElie Tournier #
108251f63ec7SPeter Maydell # Since: 3.0
108362f27922SElie Tournier #
108462f27922SElie Tournier ##
108562f27922SElie Tournier { 'enum'    : 'DisplayGLMode',
108662f27922SElie Tournier   'data'    : [ 'off', 'on', 'core', 'es' ] }
108762f27922SElie Tournier
108862f27922SElie Tournier##
10892f8b7cd5SSamuel Thibault# @DisplayCurses:
10902f8b7cd5SSamuel Thibault#
10912f8b7cd5SSamuel Thibault# Curses display options.
10922f8b7cd5SSamuel Thibault#
10932f8b7cd5SSamuel Thibault# @charset:       Font charset used by guest (default: CP437).
10942f8b7cd5SSamuel Thibault#
10952f8b7cd5SSamuel Thibault# Since: 4.0
10962f8b7cd5SSamuel Thibault#
10972f8b7cd5SSamuel Thibault##
10982f8b7cd5SSamuel Thibault{ 'struct'  : 'DisplayCurses',
10992f8b7cd5SSamuel Thibault  'data'    : { '*charset'       : 'str' } }
11002f8b7cd5SSamuel Thibault
11012f8b7cd5SSamuel Thibault##
11020c8d7065SGerd Hoffmann# @DisplayType:
11030c8d7065SGerd Hoffmann#
11040c8d7065SGerd Hoffmann# Display (user interface) type.
11050c8d7065SGerd Hoffmann#
110642176d77SMarc-André Lureau# @default: The default user interface, selecting from the first available
110742176d77SMarc-André Lureau#           of gtk, sdl, cocoa, and vnc.
110842176d77SMarc-André Lureau#
110942176d77SMarc-André Lureau# @none: No user interface or video output display. The guest will
111042176d77SMarc-André Lureau#        still see an emulated graphics card, but its output will not
111142176d77SMarc-André Lureau#        be displayed to the QEMU user.
111242176d77SMarc-André Lureau#
111342176d77SMarc-André Lureau# @gtk: The GTK user interface.
111442176d77SMarc-André Lureau#
111542176d77SMarc-André Lureau# @sdl: The SDL user interface.
111642176d77SMarc-André Lureau#
111742176d77SMarc-André Lureau# @egl-headless: No user interface, offload GL operations to a local
111842176d77SMarc-André Lureau#                DRI device. Graphical display need to be paired with
111942176d77SMarc-André Lureau#                VNC or Spice. (Since 3.1)
112042176d77SMarc-André Lureau#
112142176d77SMarc-André Lureau# @curses: Display video output via curses.  For graphics device
112242176d77SMarc-André Lureau#          models which support a text mode, QEMU can display this
112342176d77SMarc-André Lureau#          output using a curses/ncurses interface. Nothing is
112442176d77SMarc-André Lureau#          displayed when the graphics device is in graphical mode or
112542176d77SMarc-André Lureau#          if the graphics device does not support a text
112642176d77SMarc-André Lureau#          mode. Generally only the VGA device models support text
112742176d77SMarc-André Lureau#          mode.
112842176d77SMarc-André Lureau#
112942176d77SMarc-André Lureau# @cocoa: The Cocoa user interface.
113042176d77SMarc-André Lureau#
1131d8aec9d9SMarc-André Lureau# @spice-app: Set up a Spice server and run the default associated
1132d8aec9d9SMarc-André Lureau#             application to connect to it. The server will redirect
1133d8aec9d9SMarc-André Lureau#             the serial console and QEMU monitors. (Since 4.0)
1134d8aec9d9SMarc-André Lureau#
11350c8d7065SGerd Hoffmann# Since: 2.12
11360c8d7065SGerd Hoffmann#
11370c8d7065SGerd Hoffmann##
11380c8d7065SGerd Hoffmann{ 'enum'    : 'DisplayType',
1139e3af9f9aSGerd Hoffmann  'data'    : [ 'default', 'none', 'gtk', 'sdl',
1140d8aec9d9SMarc-André Lureau                'egl-headless', 'curses', 'cocoa',
1141d8aec9d9SMarc-André Lureau                'spice-app'] }
11420c8d7065SGerd Hoffmann
11430c8d7065SGerd Hoffmann##
11440c8d7065SGerd Hoffmann# @DisplayOptions:
11450c8d7065SGerd Hoffmann#
11460c8d7065SGerd Hoffmann# Display (user interface) options.
11470c8d7065SGerd Hoffmann#
11480c8d7065SGerd Hoffmann# @type:          Which DisplayType qemu should use.
11490c8d7065SGerd Hoffmann# @full-screen:   Start user interface in fullscreen mode (default: off).
11500c8d7065SGerd Hoffmann# @window-close:  Allow to quit qemu with window close button (default: on).
11517027bdd7SGerd Hoffmann# @show-cursor:   Force showing the mouse cursor (default: off).
11527027bdd7SGerd Hoffmann#                 (since: 5.0)
11530c8d7065SGerd Hoffmann# @gl:            Enable OpenGL support (default: off).
11540c8d7065SGerd Hoffmann#
11550c8d7065SGerd Hoffmann# Since: 2.12
11560c8d7065SGerd Hoffmann#
11570c8d7065SGerd Hoffmann##
11580c8d7065SGerd Hoffmann{ 'union'   : 'DisplayOptions',
11590c8d7065SGerd Hoffmann  'base'    : { 'type'           : 'DisplayType',
11600c8d7065SGerd Hoffmann                '*full-screen'   : 'bool',
11610c8d7065SGerd Hoffmann                '*window-close'  : 'bool',
11627027bdd7SGerd Hoffmann                '*show-cursor'   : 'bool',
116362f27922SElie Tournier                '*gl'            : 'DisplayGLMode' },
11640c8d7065SGerd Hoffmann  'discriminator' : 'type',
1165d4dc4ab1SErik Skultety  'data'    : { 'gtk'            : 'DisplayGTK',
11662f8b7cd5SSamuel Thibault                'curses'         : 'DisplayCurses',
1167d4dc4ab1SErik Skultety                'egl-headless'   : 'DisplayEGLHeadless'} }
1168e1ca8f7eSGerd Hoffmann
1169e1ca8f7eSGerd Hoffmann##
1170e1ca8f7eSGerd Hoffmann# @query-display-options:
1171e1ca8f7eSGerd Hoffmann#
1172e1ca8f7eSGerd Hoffmann# Returns information about display configuration
1173e1ca8f7eSGerd Hoffmann#
1174e1ca8f7eSGerd Hoffmann# Returns: @DisplayOptions
1175e1ca8f7eSGerd Hoffmann#
1176e1ca8f7eSGerd Hoffmann# Since: 3.1
1177e1ca8f7eSGerd Hoffmann#
1178e1ca8f7eSGerd Hoffmann##
1179e1ca8f7eSGerd Hoffmann{ 'command': 'query-display-options',
1180e1ca8f7eSGerd Hoffmann  'returns': 'DisplayOptions' }
1181