xref: /qemu/qapi/ui.json (revision 449be9df521c87c5b7b12c5e66d006d4cba80aaa)
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#
15*449be9dfSPeter Maydell# @protocol: 'vnc' to modify the VNC server password
16*449be9dfSPeter 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
21*449be9dfSPeter Maydell#             password.  If nothing is specified, defaults to 'keep'
22*449be9dfSPeter Maydell#             'fail' to fail the command if clients are connected
23*449be9dfSPeter Maydell#             'disconnect' to disconnect existing clients
24*449be9dfSPeter Maydell#             '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#
46*449be9dfSPeter Maydell# @protocol: the name of the remote display protocol 'vnc' or 'spice'
47608cfed6SMarkus Armbruster#
48608cfed6SMarkus Armbruster# @time: when to expire the password.
49*449be9dfSPeter Maydell#        'now' to expire the password immediately
50*449be9dfSPeter Maydell#        'never' to cancel password expiration
51*449be9dfSPeter Maydell#        '+INT' where INT is the number of seconds from now (integer)
52*449be9dfSPeter Maydell#        'INT' where INT is the absolute time in seconds
53608cfed6SMarkus Armbruster#
54608cfed6SMarkus Armbruster# Returns: Nothing on success
55*449be9dfSPeter Maydell#          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#
80f771c544SThomas Huth# @device: ID of the display device that should be dumped. If this parameter
81f771c544SThomas Huth#          is missing, the primary display will be used. (Since 2.12)
82f771c544SThomas Huth#
83f771c544SThomas Huth# @head: head to use in case the device supports multiple heads. If this
84f771c544SThomas Huth#        parameter is missing, head #0 will be used. Also note that the head
85f771c544SThomas Huth#        can only be specified in conjunction with the device ID. (Since 2.12)
86f771c544SThomas Huth#
87608cfed6SMarkus Armbruster# Returns: Nothing on success
88608cfed6SMarkus Armbruster#
89608cfed6SMarkus Armbruster# Since: 0.14.0
90608cfed6SMarkus Armbruster#
91608cfed6SMarkus Armbruster# Example:
92608cfed6SMarkus Armbruster#
93608cfed6SMarkus Armbruster# -> { "execute": "screendump",
94608cfed6SMarkus Armbruster#      "arguments": { "filename": "/tmp/image" } }
95608cfed6SMarkus Armbruster# <- { "return": {} }
96608cfed6SMarkus Armbruster#
97608cfed6SMarkus Armbruster##
98f771c544SThomas Huth{ 'command': 'screendump',
99f771c544SThomas Huth  'data': {'filename': 'str', '*device': 'str', '*head': 'int'} }
100608cfed6SMarkus Armbruster
101608cfed6SMarkus Armbruster##
102608cfed6SMarkus Armbruster# == Spice
103608cfed6SMarkus Armbruster##
104608cfed6SMarkus Armbruster
105608cfed6SMarkus Armbruster##
106608cfed6SMarkus Armbruster# @SpiceBasicInfo:
107608cfed6SMarkus Armbruster#
108608cfed6SMarkus Armbruster# The basic information for SPICE network connection
109608cfed6SMarkus Armbruster#
110608cfed6SMarkus Armbruster# @host: IP address
111608cfed6SMarkus Armbruster#
112608cfed6SMarkus Armbruster# @port: port number
113608cfed6SMarkus Armbruster#
114608cfed6SMarkus Armbruster# @family: address family
115608cfed6SMarkus Armbruster#
116608cfed6SMarkus Armbruster# Since: 2.1
117608cfed6SMarkus Armbruster##
118608cfed6SMarkus Armbruster{ 'struct': 'SpiceBasicInfo',
119608cfed6SMarkus Armbruster  'data': { 'host': 'str',
120608cfed6SMarkus Armbruster            'port': 'str',
121514337c1SMarc-André Lureau            'family': 'NetworkAddressFamily' },
122514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
123608cfed6SMarkus Armbruster
124608cfed6SMarkus Armbruster##
125608cfed6SMarkus Armbruster# @SpiceServerInfo:
126608cfed6SMarkus Armbruster#
127608cfed6SMarkus Armbruster# Information about a SPICE server
128608cfed6SMarkus Armbruster#
129608cfed6SMarkus Armbruster# @auth: authentication method
130608cfed6SMarkus Armbruster#
131608cfed6SMarkus Armbruster# Since: 2.1
132608cfed6SMarkus Armbruster##
133608cfed6SMarkus Armbruster{ 'struct': 'SpiceServerInfo',
134608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
135514337c1SMarc-André Lureau  'data': { '*auth': 'str' },
136514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
137608cfed6SMarkus Armbruster
138608cfed6SMarkus Armbruster##
139608cfed6SMarkus Armbruster# @SpiceChannel:
140608cfed6SMarkus Armbruster#
141608cfed6SMarkus Armbruster# Information about a SPICE client channel.
142608cfed6SMarkus Armbruster#
143608cfed6SMarkus Armbruster# @connection-id: SPICE connection id number.  All channels with the same id
144608cfed6SMarkus Armbruster#                 belong to the same SPICE session.
145608cfed6SMarkus Armbruster#
146608cfed6SMarkus Armbruster# @channel-type: SPICE channel type number.  "1" is the main control
147608cfed6SMarkus Armbruster#                channel, filter for this one if you want to track spice
148608cfed6SMarkus Armbruster#                sessions only
149608cfed6SMarkus Armbruster#
150608cfed6SMarkus Armbruster# @channel-id: SPICE channel ID number.  Usually "0", might be different when
151608cfed6SMarkus Armbruster#              multiple channels of the same type exist, such as multiple
152608cfed6SMarkus Armbruster#              display channels in a multihead setup
153608cfed6SMarkus Armbruster#
154608cfed6SMarkus Armbruster# @tls: true if the channel is encrypted, false otherwise.
155608cfed6SMarkus Armbruster#
156608cfed6SMarkus Armbruster# Since: 0.14.0
157608cfed6SMarkus Armbruster##
158608cfed6SMarkus Armbruster{ 'struct': 'SpiceChannel',
159608cfed6SMarkus Armbruster  'base': 'SpiceBasicInfo',
160608cfed6SMarkus Armbruster  'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int',
161514337c1SMarc-André Lureau           'tls': 'bool'},
162514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
163608cfed6SMarkus Armbruster
164608cfed6SMarkus Armbruster##
165608cfed6SMarkus Armbruster# @SpiceQueryMouseMode:
166608cfed6SMarkus Armbruster#
167608cfed6SMarkus Armbruster# An enumeration of Spice mouse states.
168608cfed6SMarkus Armbruster#
169608cfed6SMarkus Armbruster# @client: Mouse cursor position is determined by the client.
170608cfed6SMarkus Armbruster#
171608cfed6SMarkus Armbruster# @server: Mouse cursor position is determined by the server.
172608cfed6SMarkus Armbruster#
173608cfed6SMarkus Armbruster# @unknown: No information is available about mouse mode used by
174608cfed6SMarkus Armbruster#           the spice server.
175608cfed6SMarkus Armbruster#
176608cfed6SMarkus Armbruster# Note: spice/enums.h has a SpiceMouseMode already, hence the name.
177608cfed6SMarkus Armbruster#
178608cfed6SMarkus Armbruster# Since: 1.1
179608cfed6SMarkus Armbruster##
180608cfed6SMarkus Armbruster{ 'enum': 'SpiceQueryMouseMode',
181514337c1SMarc-André Lureau  'data': [ 'client', 'server', 'unknown' ],
182514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
183608cfed6SMarkus Armbruster
184608cfed6SMarkus Armbruster##
185608cfed6SMarkus Armbruster# @SpiceInfo:
186608cfed6SMarkus Armbruster#
187608cfed6SMarkus Armbruster# Information about the SPICE session.
188608cfed6SMarkus Armbruster#
189608cfed6SMarkus Armbruster# @enabled: true if the SPICE server is enabled, false otherwise
190608cfed6SMarkus Armbruster#
191608cfed6SMarkus Armbruster# @migrated: true if the last guest migration completed and spice
192608cfed6SMarkus Armbruster#            migration had completed as well. false otherwise. (since 1.4)
193608cfed6SMarkus Armbruster#
194608cfed6SMarkus Armbruster# @host: The hostname the SPICE server is bound to.  This depends on
195608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
196608cfed6SMarkus Armbruster#
197608cfed6SMarkus Armbruster# @port: The SPICE server's port number.
198608cfed6SMarkus Armbruster#
199608cfed6SMarkus Armbruster# @compiled-version: SPICE server version.
200608cfed6SMarkus Armbruster#
201608cfed6SMarkus Armbruster# @tls-port: The SPICE server's TLS port number.
202608cfed6SMarkus Armbruster#
203608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
204608cfed6SMarkus Armbruster#        'none'  if no authentication is being used
205608cfed6SMarkus Armbruster#        'spice' uses SASL or direct TLS authentication, depending on command
206608cfed6SMarkus Armbruster#                line options
207608cfed6SMarkus Armbruster#
208608cfed6SMarkus Armbruster# @mouse-mode: The mode in which the mouse cursor is displayed currently. Can
209608cfed6SMarkus Armbruster#              be determined by the client or the server, or unknown if spice
210608cfed6SMarkus Armbruster#              server doesn't provide this information. (since: 1.1)
211608cfed6SMarkus Armbruster#
212608cfed6SMarkus Armbruster# @channels: a list of @SpiceChannel for each active spice channel
213608cfed6SMarkus Armbruster#
214608cfed6SMarkus Armbruster# Since: 0.14.0
215608cfed6SMarkus Armbruster##
216608cfed6SMarkus Armbruster{ 'struct': 'SpiceInfo',
217608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int',
218608cfed6SMarkus Armbruster           '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str',
219514337c1SMarc-André Lureau           'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']},
220514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
221608cfed6SMarkus Armbruster
222608cfed6SMarkus Armbruster##
223608cfed6SMarkus Armbruster# @query-spice:
224608cfed6SMarkus Armbruster#
225608cfed6SMarkus Armbruster# Returns information about the current SPICE server
226608cfed6SMarkus Armbruster#
227608cfed6SMarkus Armbruster# Returns: @SpiceInfo
228608cfed6SMarkus Armbruster#
229608cfed6SMarkus Armbruster# Since: 0.14.0
230608cfed6SMarkus Armbruster#
231608cfed6SMarkus Armbruster# Example:
232608cfed6SMarkus Armbruster#
233608cfed6SMarkus Armbruster# -> { "execute": "query-spice" }
234608cfed6SMarkus Armbruster# <- { "return": {
235608cfed6SMarkus Armbruster#          "enabled": true,
236608cfed6SMarkus Armbruster#          "auth": "spice",
237608cfed6SMarkus Armbruster#          "port": 5920,
238608cfed6SMarkus Armbruster#          "tls-port": 5921,
239608cfed6SMarkus Armbruster#          "host": "0.0.0.0",
240608cfed6SMarkus Armbruster#          "channels": [
241608cfed6SMarkus Armbruster#             {
242608cfed6SMarkus Armbruster#                "port": "54924",
243608cfed6SMarkus Armbruster#                "family": "ipv4",
244608cfed6SMarkus Armbruster#                "channel-type": 1,
245608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
246608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
247608cfed6SMarkus Armbruster#                "channel-id": 0,
248608cfed6SMarkus Armbruster#                "tls": true
249608cfed6SMarkus Armbruster#             },
250608cfed6SMarkus Armbruster#             {
251608cfed6SMarkus Armbruster#                "port": "36710",
252608cfed6SMarkus Armbruster#                "family": "ipv4",
253608cfed6SMarkus Armbruster#                "channel-type": 4,
254608cfed6SMarkus Armbruster#                "connection-id": 1804289383,
255608cfed6SMarkus Armbruster#                "host": "127.0.0.1",
256608cfed6SMarkus Armbruster#                "channel-id": 0,
257608cfed6SMarkus Armbruster#                "tls": false
258608cfed6SMarkus Armbruster#             },
259608cfed6SMarkus Armbruster#             [ ... more channels follow ... ]
260608cfed6SMarkus Armbruster#          ]
261608cfed6SMarkus Armbruster#       }
262608cfed6SMarkus Armbruster#    }
263608cfed6SMarkus Armbruster#
264608cfed6SMarkus Armbruster##
265514337c1SMarc-André Lureau{ 'command': 'query-spice', 'returns': 'SpiceInfo',
266514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
267608cfed6SMarkus Armbruster
268608cfed6SMarkus Armbruster##
269608cfed6SMarkus Armbruster# @SPICE_CONNECTED:
270608cfed6SMarkus Armbruster#
271608cfed6SMarkus Armbruster# Emitted when a SPICE client establishes a connection
272608cfed6SMarkus Armbruster#
273608cfed6SMarkus Armbruster# @server: server information
274608cfed6SMarkus Armbruster#
275608cfed6SMarkus Armbruster# @client: client information
276608cfed6SMarkus Armbruster#
277608cfed6SMarkus Armbruster# Since: 0.14.0
278608cfed6SMarkus Armbruster#
279608cfed6SMarkus Armbruster# Example:
280608cfed6SMarkus Armbruster#
281608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
282608cfed6SMarkus Armbruster#      "event": "SPICE_CONNECTED",
283608cfed6SMarkus Armbruster#      "data": {
284608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
285608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
286608cfed6SMarkus Armbruster#    }}
287608cfed6SMarkus Armbruster#
288608cfed6SMarkus Armbruster##
289608cfed6SMarkus Armbruster{ 'event': 'SPICE_CONNECTED',
290608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
291514337c1SMarc-André Lureau            'client': 'SpiceBasicInfo' },
292514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
293608cfed6SMarkus Armbruster
294608cfed6SMarkus Armbruster##
295608cfed6SMarkus Armbruster# @SPICE_INITIALIZED:
296608cfed6SMarkus Armbruster#
297608cfed6SMarkus Armbruster# Emitted after initial handshake and authentication takes place (if any)
298608cfed6SMarkus Armbruster# and the SPICE channel is up and running
299608cfed6SMarkus Armbruster#
300608cfed6SMarkus Armbruster# @server: server information
301608cfed6SMarkus Armbruster#
302608cfed6SMarkus Armbruster# @client: client information
303608cfed6SMarkus Armbruster#
304608cfed6SMarkus Armbruster# Since: 0.14.0
305608cfed6SMarkus Armbruster#
306608cfed6SMarkus Armbruster# Example:
307608cfed6SMarkus Armbruster#
308608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
309608cfed6SMarkus Armbruster#      "event": "SPICE_INITIALIZED",
310608cfed6SMarkus Armbruster#      "data": {"server": {"auth": "spice", "port": "5921",
311608cfed6SMarkus Armbruster#                          "family": "ipv4", "host": "127.0.0.1"},
312608cfed6SMarkus Armbruster#               "client": {"port": "49004", "family": "ipv4", "channel-type": 3,
313608cfed6SMarkus Armbruster#                          "connection-id": 1804289383, "host": "127.0.0.1",
314608cfed6SMarkus Armbruster#                          "channel-id": 0, "tls": true}
315608cfed6SMarkus Armbruster#    }}
316608cfed6SMarkus Armbruster#
317608cfed6SMarkus Armbruster##
318608cfed6SMarkus Armbruster{ 'event': 'SPICE_INITIALIZED',
319608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceServerInfo',
320514337c1SMarc-André Lureau            'client': 'SpiceChannel' },
321514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
322608cfed6SMarkus Armbruster
323608cfed6SMarkus Armbruster##
324608cfed6SMarkus Armbruster# @SPICE_DISCONNECTED:
325608cfed6SMarkus Armbruster#
326608cfed6SMarkus Armbruster# Emitted when the SPICE connection is closed
327608cfed6SMarkus Armbruster#
328608cfed6SMarkus Armbruster# @server: server information
329608cfed6SMarkus Armbruster#
330608cfed6SMarkus Armbruster# @client: client information
331608cfed6SMarkus Armbruster#
332608cfed6SMarkus Armbruster# Since: 0.14.0
333608cfed6SMarkus Armbruster#
334608cfed6SMarkus Armbruster# Example:
335608cfed6SMarkus Armbruster#
336608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707},
337608cfed6SMarkus Armbruster#      "event": "SPICE_DISCONNECTED",
338608cfed6SMarkus Armbruster#      "data": {
339608cfed6SMarkus Armbruster#        "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"},
340608cfed6SMarkus Armbruster#        "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"}
341608cfed6SMarkus Armbruster#    }}
342608cfed6SMarkus Armbruster#
343608cfed6SMarkus Armbruster##
344608cfed6SMarkus Armbruster{ 'event': 'SPICE_DISCONNECTED',
345608cfed6SMarkus Armbruster  'data': { 'server': 'SpiceBasicInfo',
346514337c1SMarc-André Lureau            'client': 'SpiceBasicInfo' },
347514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
348608cfed6SMarkus Armbruster
349608cfed6SMarkus Armbruster##
350608cfed6SMarkus Armbruster# @SPICE_MIGRATE_COMPLETED:
351608cfed6SMarkus Armbruster#
352608cfed6SMarkus Armbruster# Emitted when SPICE migration has completed
353608cfed6SMarkus Armbruster#
354608cfed6SMarkus Armbruster# Since: 1.3
355608cfed6SMarkus Armbruster#
356608cfed6SMarkus Armbruster# Example:
357608cfed6SMarkus Armbruster#
358608cfed6SMarkus Armbruster# <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172},
359608cfed6SMarkus Armbruster#      "event": "SPICE_MIGRATE_COMPLETED" }
360608cfed6SMarkus Armbruster#
361608cfed6SMarkus Armbruster##
362514337c1SMarc-André Lureau{ 'event': 'SPICE_MIGRATE_COMPLETED',
363514337c1SMarc-André Lureau  'if': 'defined(CONFIG_SPICE)' }
364608cfed6SMarkus Armbruster
365608cfed6SMarkus Armbruster##
366608cfed6SMarkus Armbruster# == VNC
367608cfed6SMarkus Armbruster##
368608cfed6SMarkus Armbruster
369608cfed6SMarkus Armbruster##
370608cfed6SMarkus Armbruster# @VncBasicInfo:
371608cfed6SMarkus Armbruster#
372608cfed6SMarkus Armbruster# The basic information for vnc network connection
373608cfed6SMarkus Armbruster#
374608cfed6SMarkus Armbruster# @host: IP address
375608cfed6SMarkus Armbruster#
376608cfed6SMarkus Armbruster# @service: The service name of the vnc port. This may depend on the host
377608cfed6SMarkus Armbruster#           system's service database so symbolic names should not be relied
378608cfed6SMarkus Armbruster#           on.
379608cfed6SMarkus Armbruster#
380608cfed6SMarkus Armbruster# @family: address family
381608cfed6SMarkus Armbruster#
382608cfed6SMarkus Armbruster# @websocket: true in case the socket is a websocket (since 2.3).
383608cfed6SMarkus Armbruster#
384608cfed6SMarkus Armbruster# Since: 2.1
385608cfed6SMarkus Armbruster##
386608cfed6SMarkus Armbruster{ 'struct': 'VncBasicInfo',
387608cfed6SMarkus Armbruster  'data': { 'host': 'str',
388608cfed6SMarkus Armbruster            'service': 'str',
389608cfed6SMarkus Armbruster            'family': 'NetworkAddressFamily',
39005eb4a25SMarc-André Lureau            'websocket': 'bool' },
39105eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
392608cfed6SMarkus Armbruster
393608cfed6SMarkus Armbruster##
394608cfed6SMarkus Armbruster# @VncServerInfo:
395608cfed6SMarkus Armbruster#
396608cfed6SMarkus Armbruster# The network connection information for server
397608cfed6SMarkus Armbruster#
398608cfed6SMarkus Armbruster# @auth: authentication method used for
399608cfed6SMarkus Armbruster#        the plain (non-websocket) VNC server
400608cfed6SMarkus Armbruster#
401608cfed6SMarkus Armbruster# Since: 2.1
402608cfed6SMarkus Armbruster##
403608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo',
404608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
40505eb4a25SMarc-André Lureau  'data': { '*auth': 'str' },
40605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
407608cfed6SMarkus Armbruster
408608cfed6SMarkus Armbruster##
409608cfed6SMarkus Armbruster# @VncClientInfo:
410608cfed6SMarkus Armbruster#
411608cfed6SMarkus Armbruster# Information about a connected VNC client.
412608cfed6SMarkus Armbruster#
413608cfed6SMarkus Armbruster# @x509_dname: If x509 authentication is in use, the Distinguished
414608cfed6SMarkus Armbruster#              Name of the client.
415608cfed6SMarkus Armbruster#
416608cfed6SMarkus Armbruster# @sasl_username: If SASL authentication is in use, the SASL username
417608cfed6SMarkus Armbruster#                 used for authentication.
418608cfed6SMarkus Armbruster#
419608cfed6SMarkus Armbruster# Since: 0.14.0
420608cfed6SMarkus Armbruster##
421608cfed6SMarkus Armbruster{ 'struct': 'VncClientInfo',
422608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
42305eb4a25SMarc-André Lureau  'data': { '*x509_dname': 'str', '*sasl_username': 'str' },
42405eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
425608cfed6SMarkus Armbruster
426608cfed6SMarkus Armbruster##
427608cfed6SMarkus Armbruster# @VncInfo:
428608cfed6SMarkus Armbruster#
429608cfed6SMarkus Armbruster# Information about the VNC session.
430608cfed6SMarkus Armbruster#
431608cfed6SMarkus Armbruster# @enabled: true if the VNC server is enabled, false otherwise
432608cfed6SMarkus Armbruster#
433608cfed6SMarkus Armbruster# @host: The hostname the VNC server is bound to.  This depends on
434608cfed6SMarkus Armbruster#        the name resolution on the host and may be an IP address.
435608cfed6SMarkus Armbruster#
436608cfed6SMarkus Armbruster# @family: 'ipv6' if the host is listening for IPv6 connections
437608cfed6SMarkus Armbruster#                    'ipv4' if the host is listening for IPv4 connections
438608cfed6SMarkus Armbruster#                    'unix' if the host is listening on a unix domain socket
439608cfed6SMarkus Armbruster#                    'unknown' otherwise
440608cfed6SMarkus Armbruster#
441608cfed6SMarkus Armbruster# @service: The service name of the server's port.  This may depends
442608cfed6SMarkus Armbruster#           on the host system's service database so symbolic names should not
443608cfed6SMarkus Armbruster#           be relied on.
444608cfed6SMarkus Armbruster#
445608cfed6SMarkus Armbruster# @auth: the current authentication type used by the server
446608cfed6SMarkus Armbruster#        'none' if no authentication is being used
447608cfed6SMarkus Armbruster#        'vnc' if VNC authentication is being used
448608cfed6SMarkus Armbruster#        'vencrypt+plain' if VEncrypt is used with plain text authentication
449608cfed6SMarkus Armbruster#        'vencrypt+tls+none' if VEncrypt is used with TLS and no authentication
450608cfed6SMarkus Armbruster#        'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC authentication
451608cfed6SMarkus Armbruster#        'vencrypt+tls+plain' if VEncrypt is used with TLS and plain text auth
452608cfed6SMarkus Armbruster#        'vencrypt+x509+none' if VEncrypt is used with x509 and no auth
453608cfed6SMarkus Armbruster#        'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth
454608cfed6SMarkus Armbruster#        'vencrypt+x509+plain' if VEncrypt is used with x509 and plain text auth
455608cfed6SMarkus Armbruster#        'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth
456608cfed6SMarkus Armbruster#        'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL auth
457608cfed6SMarkus Armbruster#
458608cfed6SMarkus Armbruster# @clients: a list of @VncClientInfo of all currently connected clients
459608cfed6SMarkus Armbruster#
460608cfed6SMarkus Armbruster# Since: 0.14.0
461608cfed6SMarkus Armbruster##
462608cfed6SMarkus Armbruster{ 'struct': 'VncInfo',
463608cfed6SMarkus Armbruster  'data': {'enabled': 'bool', '*host': 'str',
464608cfed6SMarkus Armbruster           '*family': 'NetworkAddressFamily',
46505eb4a25SMarc-André Lureau           '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']},
46605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
467608cfed6SMarkus Armbruster
468608cfed6SMarkus Armbruster##
469608cfed6SMarkus Armbruster# @VncPrimaryAuth:
470608cfed6SMarkus Armbruster#
471608cfed6SMarkus Armbruster# vnc primary authentication method.
472608cfed6SMarkus Armbruster#
473608cfed6SMarkus Armbruster# Since: 2.3
474608cfed6SMarkus Armbruster##
475608cfed6SMarkus Armbruster{ 'enum': 'VncPrimaryAuth',
476608cfed6SMarkus Armbruster  'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra',
47705eb4a25SMarc-André Lureau            'tls', 'vencrypt', 'sasl' ],
47805eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
479608cfed6SMarkus Armbruster
480608cfed6SMarkus Armbruster##
481608cfed6SMarkus Armbruster# @VncVencryptSubAuth:
482608cfed6SMarkus Armbruster#
483608cfed6SMarkus Armbruster# vnc sub authentication method with vencrypt.
484608cfed6SMarkus Armbruster#
485608cfed6SMarkus Armbruster# Since: 2.3
486608cfed6SMarkus Armbruster##
487608cfed6SMarkus Armbruster{ 'enum': 'VncVencryptSubAuth',
488608cfed6SMarkus Armbruster  'data': [ 'plain',
489608cfed6SMarkus Armbruster            'tls-none',  'x509-none',
490608cfed6SMarkus Armbruster            'tls-vnc',   'x509-vnc',
491608cfed6SMarkus Armbruster            'tls-plain', 'x509-plain',
49205eb4a25SMarc-André Lureau            'tls-sasl',  'x509-sasl' ],
49305eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
494608cfed6SMarkus Armbruster
495608cfed6SMarkus Armbruster##
496608cfed6SMarkus Armbruster# @VncServerInfo2:
497608cfed6SMarkus Armbruster#
498608cfed6SMarkus Armbruster# The network connection information for server
499608cfed6SMarkus Armbruster#
500608cfed6SMarkus Armbruster# @auth: The current authentication type used by the servers
501608cfed6SMarkus Armbruster#
502608cfed6SMarkus Armbruster# @vencrypt: The vencrypt sub authentication type used by the
503608cfed6SMarkus Armbruster#            servers, only specified in case auth == vencrypt.
504608cfed6SMarkus Armbruster#
505608cfed6SMarkus Armbruster# Since: 2.9
506608cfed6SMarkus Armbruster##
507608cfed6SMarkus Armbruster{ 'struct': 'VncServerInfo2',
508608cfed6SMarkus Armbruster  'base': 'VncBasicInfo',
509608cfed6SMarkus Armbruster  'data': { 'auth'      : 'VncPrimaryAuth',
51005eb4a25SMarc-André Lureau            '*vencrypt' : 'VncVencryptSubAuth' },
51105eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
512608cfed6SMarkus Armbruster
513608cfed6SMarkus Armbruster##
514608cfed6SMarkus Armbruster# @VncInfo2:
515608cfed6SMarkus Armbruster#
516608cfed6SMarkus Armbruster# Information about a vnc server
517608cfed6SMarkus Armbruster#
518608cfed6SMarkus Armbruster# @id: vnc server name.
519608cfed6SMarkus Armbruster#
520608cfed6SMarkus Armbruster# @server: A list of @VncBasincInfo describing all listening sockets.
521608cfed6SMarkus Armbruster#          The list can be empty (in case the vnc server is disabled).
522608cfed6SMarkus Armbruster#          It also may have multiple entries: normal + websocket,
523608cfed6SMarkus Armbruster#          possibly also ipv4 + ipv6 in the future.
524608cfed6SMarkus Armbruster#
525608cfed6SMarkus Armbruster# @clients: A list of @VncClientInfo of all currently connected clients.
526608cfed6SMarkus Armbruster#           The list can be empty, for obvious reasons.
527608cfed6SMarkus Armbruster#
528608cfed6SMarkus Armbruster# @auth: The current authentication type used by the non-websockets servers
529608cfed6SMarkus Armbruster#
530608cfed6SMarkus Armbruster# @vencrypt: The vencrypt authentication type used by the servers,
531608cfed6SMarkus Armbruster#            only specified in case auth == vencrypt.
532608cfed6SMarkus Armbruster#
533608cfed6SMarkus Armbruster# @display: The display device the vnc server is linked to.
534608cfed6SMarkus Armbruster#
535608cfed6SMarkus Armbruster# Since: 2.3
536608cfed6SMarkus Armbruster##
537608cfed6SMarkus Armbruster{ 'struct': 'VncInfo2',
538608cfed6SMarkus Armbruster  'data': { 'id'        : 'str',
539608cfed6SMarkus Armbruster            'server'    : ['VncServerInfo2'],
540608cfed6SMarkus Armbruster            'clients'   : ['VncClientInfo'],
541608cfed6SMarkus Armbruster            'auth'      : 'VncPrimaryAuth',
542608cfed6SMarkus Armbruster            '*vencrypt' : 'VncVencryptSubAuth',
54305eb4a25SMarc-André Lureau            '*display'  : 'str' },
54405eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
545608cfed6SMarkus Armbruster
546608cfed6SMarkus Armbruster##
547608cfed6SMarkus Armbruster# @query-vnc:
548608cfed6SMarkus Armbruster#
549608cfed6SMarkus Armbruster# Returns information about the current VNC server
550608cfed6SMarkus Armbruster#
551608cfed6SMarkus Armbruster# Returns: @VncInfo
552608cfed6SMarkus Armbruster#
553608cfed6SMarkus Armbruster# Since: 0.14.0
554608cfed6SMarkus Armbruster#
555608cfed6SMarkus Armbruster# Example:
556608cfed6SMarkus Armbruster#
557608cfed6SMarkus Armbruster# -> { "execute": "query-vnc" }
558608cfed6SMarkus Armbruster# <- { "return": {
559608cfed6SMarkus Armbruster#          "enabled":true,
560608cfed6SMarkus Armbruster#          "host":"0.0.0.0",
561608cfed6SMarkus Armbruster#          "service":"50402",
562608cfed6SMarkus Armbruster#          "auth":"vnc",
563608cfed6SMarkus Armbruster#          "family":"ipv4",
564608cfed6SMarkus Armbruster#          "clients":[
565608cfed6SMarkus Armbruster#             {
566608cfed6SMarkus Armbruster#                "host":"127.0.0.1",
567608cfed6SMarkus Armbruster#                "service":"50401",
568608cfed6SMarkus Armbruster#                "family":"ipv4"
569608cfed6SMarkus Armbruster#             }
570608cfed6SMarkus Armbruster#          ]
571608cfed6SMarkus Armbruster#       }
572608cfed6SMarkus Armbruster#    }
573608cfed6SMarkus Armbruster#
574608cfed6SMarkus Armbruster##
57505eb4a25SMarc-André Lureau{ 'command': 'query-vnc', 'returns': 'VncInfo',
57605eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
577608cfed6SMarkus Armbruster##
578608cfed6SMarkus Armbruster# @query-vnc-servers:
579608cfed6SMarkus Armbruster#
580608cfed6SMarkus Armbruster# Returns a list of vnc servers.  The list can be empty.
581608cfed6SMarkus Armbruster#
582608cfed6SMarkus Armbruster# Returns: a list of @VncInfo2
583608cfed6SMarkus Armbruster#
584608cfed6SMarkus Armbruster# Since: 2.3
585608cfed6SMarkus Armbruster##
58605eb4a25SMarc-André Lureau{ 'command': 'query-vnc-servers', 'returns': ['VncInfo2'],
58705eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
588608cfed6SMarkus Armbruster
589608cfed6SMarkus Armbruster##
590608cfed6SMarkus Armbruster# @change-vnc-password:
591608cfed6SMarkus Armbruster#
592608cfed6SMarkus Armbruster# Change the VNC server password.
593608cfed6SMarkus Armbruster#
594608cfed6SMarkus Armbruster# @password: the new password to use with VNC authentication
595608cfed6SMarkus Armbruster#
596608cfed6SMarkus Armbruster# Since: 1.1
597608cfed6SMarkus Armbruster#
598608cfed6SMarkus Armbruster# Notes: An empty password in this command will set the password to the empty
599608cfed6SMarkus Armbruster#        string.  Existing clients are unaffected by executing this command.
600608cfed6SMarkus Armbruster##
601b0ddeba2SMarc-André Lureau{ 'command': 'change-vnc-password',
602b0ddeba2SMarc-André Lureau  'data': { 'password': 'str' },
60305eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
604608cfed6SMarkus Armbruster
605608cfed6SMarkus Armbruster##
606608cfed6SMarkus Armbruster# @VNC_CONNECTED:
607608cfed6SMarkus Armbruster#
608608cfed6SMarkus Armbruster# Emitted when a VNC client establishes a connection
609608cfed6SMarkus Armbruster#
610608cfed6SMarkus Armbruster# @server: server information
611608cfed6SMarkus Armbruster#
612608cfed6SMarkus Armbruster# @client: client information
613608cfed6SMarkus Armbruster#
614608cfed6SMarkus Armbruster# Note: This event is emitted before any authentication takes place, thus
615608cfed6SMarkus Armbruster#       the authentication ID is not provided
616608cfed6SMarkus Armbruster#
617608cfed6SMarkus Armbruster# Since: 0.13.0
618608cfed6SMarkus Armbruster#
619608cfed6SMarkus Armbruster# Example:
620608cfed6SMarkus Armbruster#
621608cfed6SMarkus Armbruster# <- { "event": "VNC_CONNECTED",
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": "58425",
626608cfed6SMarkus Armbruster#                        "host": "127.0.0.1" } },
627608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
628608cfed6SMarkus Armbruster#
629608cfed6SMarkus Armbruster##
630608cfed6SMarkus Armbruster{ 'event': 'VNC_CONNECTED',
631608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
63205eb4a25SMarc-André Lureau            'client': 'VncBasicInfo' },
63305eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
634608cfed6SMarkus Armbruster
635608cfed6SMarkus Armbruster##
636608cfed6SMarkus Armbruster# @VNC_INITIALIZED:
637608cfed6SMarkus Armbruster#
638608cfed6SMarkus Armbruster# Emitted after authentication takes place (if any) and the VNC session is
639608cfed6SMarkus Armbruster# made active
640608cfed6SMarkus Armbruster#
641608cfed6SMarkus Armbruster# @server: server information
642608cfed6SMarkus Armbruster#
643608cfed6SMarkus Armbruster# @client: client information
644608cfed6SMarkus Armbruster#
645608cfed6SMarkus Armbruster# Since: 0.13.0
646608cfed6SMarkus Armbruster#
647608cfed6SMarkus Armbruster# Example:
648608cfed6SMarkus Armbruster#
649608cfed6SMarkus Armbruster# <-  { "event": "VNC_INITIALIZED",
650608cfed6SMarkus Armbruster#       "data": {
651608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
652608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0"},
653608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "46089",
654608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
655608cfed6SMarkus Armbruster#       "timestamp": { "seconds": 1263475302, "microseconds": 150772 } }
656608cfed6SMarkus Armbruster#
657608cfed6SMarkus Armbruster##
658608cfed6SMarkus Armbruster{ 'event': 'VNC_INITIALIZED',
659608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
66005eb4a25SMarc-André Lureau            'client': 'VncClientInfo' },
66105eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
662608cfed6SMarkus Armbruster
663608cfed6SMarkus Armbruster##
664608cfed6SMarkus Armbruster# @VNC_DISCONNECTED:
665608cfed6SMarkus Armbruster#
666608cfed6SMarkus Armbruster# Emitted when the connection is closed
667608cfed6SMarkus Armbruster#
668608cfed6SMarkus Armbruster# @server: server information
669608cfed6SMarkus Armbruster#
670608cfed6SMarkus Armbruster# @client: client information
671608cfed6SMarkus Armbruster#
672608cfed6SMarkus Armbruster# Since: 0.13.0
673608cfed6SMarkus Armbruster#
674608cfed6SMarkus Armbruster# Example:
675608cfed6SMarkus Armbruster#
676608cfed6SMarkus Armbruster# <- { "event": "VNC_DISCONNECTED",
677608cfed6SMarkus Armbruster#      "data": {
678608cfed6SMarkus Armbruster#            "server": { "auth": "sasl", "family": "ipv4",
679608cfed6SMarkus Armbruster#                        "service": "5901", "host": "0.0.0.0" },
680608cfed6SMarkus Armbruster#            "client": { "family": "ipv4", "service": "58425",
681608cfed6SMarkus Armbruster#                        "host": "127.0.0.1", "sasl_username": "luiz" } },
682608cfed6SMarkus Armbruster#      "timestamp": { "seconds": 1262976601, "microseconds": 975795 } }
683608cfed6SMarkus Armbruster#
684608cfed6SMarkus Armbruster##
685608cfed6SMarkus Armbruster{ 'event': 'VNC_DISCONNECTED',
686608cfed6SMarkus Armbruster  'data': { 'server': 'VncServerInfo',
68705eb4a25SMarc-André Lureau            'client': 'VncClientInfo' },
68805eb4a25SMarc-André Lureau  'if': 'defined(CONFIG_VNC)' }
689608cfed6SMarkus Armbruster
690608cfed6SMarkus Armbruster##
691608cfed6SMarkus Armbruster# = Input
692608cfed6SMarkus Armbruster##
693608cfed6SMarkus Armbruster
694608cfed6SMarkus Armbruster##
695608cfed6SMarkus Armbruster# @MouseInfo:
696608cfed6SMarkus Armbruster#
697608cfed6SMarkus Armbruster# Information about a mouse device.
698608cfed6SMarkus Armbruster#
699608cfed6SMarkus Armbruster# @name: the name of the mouse device
700608cfed6SMarkus Armbruster#
701608cfed6SMarkus Armbruster# @index: the index of the mouse device
702608cfed6SMarkus Armbruster#
703608cfed6SMarkus Armbruster# @current: true if this device is currently receiving mouse events
704608cfed6SMarkus Armbruster#
705608cfed6SMarkus Armbruster# @absolute: true if this device supports absolute coordinates as input
706608cfed6SMarkus Armbruster#
707608cfed6SMarkus Armbruster# Since: 0.14.0
708608cfed6SMarkus Armbruster##
709608cfed6SMarkus Armbruster{ 'struct': 'MouseInfo',
710608cfed6SMarkus Armbruster  'data': {'name': 'str', 'index': 'int', 'current': 'bool',
711608cfed6SMarkus Armbruster           'absolute': 'bool'} }
712608cfed6SMarkus Armbruster
713608cfed6SMarkus Armbruster##
714608cfed6SMarkus Armbruster# @query-mice:
715608cfed6SMarkus Armbruster#
716608cfed6SMarkus Armbruster# Returns information about each active mouse device
717608cfed6SMarkus Armbruster#
718608cfed6SMarkus Armbruster# Returns: a list of @MouseInfo for each device
719608cfed6SMarkus Armbruster#
720608cfed6SMarkus Armbruster# Since: 0.14.0
721608cfed6SMarkus Armbruster#
722608cfed6SMarkus Armbruster# Example:
723608cfed6SMarkus Armbruster#
724608cfed6SMarkus Armbruster# -> { "execute": "query-mice" }
725608cfed6SMarkus Armbruster# <- { "return": [
726608cfed6SMarkus Armbruster#          {
727608cfed6SMarkus Armbruster#             "name":"QEMU Microsoft Mouse",
728608cfed6SMarkus Armbruster#             "index":0,
729608cfed6SMarkus Armbruster#             "current":false,
730608cfed6SMarkus Armbruster#             "absolute":false
731608cfed6SMarkus Armbruster#          },
732608cfed6SMarkus Armbruster#          {
733608cfed6SMarkus Armbruster#             "name":"QEMU PS/2 Mouse",
734608cfed6SMarkus Armbruster#             "index":1,
735608cfed6SMarkus Armbruster#             "current":true,
736608cfed6SMarkus Armbruster#             "absolute":true
737608cfed6SMarkus Armbruster#          }
738608cfed6SMarkus Armbruster#       ]
739608cfed6SMarkus Armbruster#    }
740608cfed6SMarkus Armbruster#
741608cfed6SMarkus Armbruster##
742608cfed6SMarkus Armbruster{ 'command': 'query-mice', 'returns': ['MouseInfo'] }
743608cfed6SMarkus Armbruster
744608cfed6SMarkus Armbruster##
745608cfed6SMarkus Armbruster# @QKeyCode:
746608cfed6SMarkus Armbruster#
747608cfed6SMarkus Armbruster# An enumeration of key name.
748608cfed6SMarkus Armbruster#
749608cfed6SMarkus Armbruster# This is used by the @send-key command.
750608cfed6SMarkus Armbruster#
751608cfed6SMarkus Armbruster# @unmapped: since 2.0
752608cfed6SMarkus Armbruster# @pause: since 2.0
753608cfed6SMarkus Armbruster# @ro: since 2.4
754608cfed6SMarkus Armbruster# @kp_comma: since 2.4
755608cfed6SMarkus Armbruster# @kp_equals: since 2.6
756608cfed6SMarkus Armbruster# @power: since 2.6
757608cfed6SMarkus Armbruster# @hiragana: since 2.9
758608cfed6SMarkus Armbruster# @henkan: since 2.9
759608cfed6SMarkus Armbruster# @yen: since 2.9
760608cfed6SMarkus Armbruster#
761608cfed6SMarkus Armbruster# @sleep: since 2.10
762608cfed6SMarkus Armbruster# @wake: since 2.10
763608cfed6SMarkus Armbruster# @audionext: since 2.10
764608cfed6SMarkus Armbruster# @audioprev: since 2.10
765608cfed6SMarkus Armbruster# @audiostop: since 2.10
766608cfed6SMarkus Armbruster# @audioplay: since 2.10
767608cfed6SMarkus Armbruster# @audiomute: since 2.10
768608cfed6SMarkus Armbruster# @volumeup: since 2.10
769608cfed6SMarkus Armbruster# @volumedown: since 2.10
770608cfed6SMarkus Armbruster# @mediaselect: since 2.10
771608cfed6SMarkus Armbruster# @mail: since 2.10
772608cfed6SMarkus Armbruster# @calculator: since 2.10
773608cfed6SMarkus Armbruster# @computer: since 2.10
774608cfed6SMarkus Armbruster# @ac_home: since 2.10
775608cfed6SMarkus Armbruster# @ac_back: since 2.10
776608cfed6SMarkus Armbruster# @ac_forward: since 2.10
777608cfed6SMarkus Armbruster# @ac_refresh: since 2.10
778608cfed6SMarkus Armbruster# @ac_bookmarks: since 2.10
779608cfed6SMarkus Armbruster# altgr, altgr_r: dropped in 2.10
780608cfed6SMarkus Armbruster#
781280b8da3SMiika S# @muhenkan: since 2.12
782280b8da3SMiika S# @katakanahiragana: since 2.12
783280b8da3SMiika S#
78480b857f0SDaniel P. Berrange# 'sysrq' was mistakenly added to hack around the fact that
78580b857f0SDaniel P. Berrange# the ps2 driver was not generating correct scancodes sequences
78680b857f0SDaniel P. Berrange# when 'alt+print' was pressed. This flaw is now fixed and the
78780b857f0SDaniel P. Berrange# 'sysrq' key serves no further purpose. Any further use of
78880b857f0SDaniel P. Berrange# 'sysrq' will be transparently changed to 'print', so they
78980b857f0SDaniel P. Berrange# are effectively synonyms.
79080b857f0SDaniel P. Berrange#
791608cfed6SMarkus Armbruster# Since: 1.3.0
792608cfed6SMarkus Armbruster#
793608cfed6SMarkus Armbruster##
794608cfed6SMarkus Armbruster{ 'enum': 'QKeyCode',
795608cfed6SMarkus Armbruster  'data': [ 'unmapped',
796608cfed6SMarkus Armbruster            'shift', 'shift_r', 'alt', 'alt_r', 'ctrl',
797608cfed6SMarkus Armbruster            'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8',
798608cfed6SMarkus Armbruster            '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e',
799608cfed6SMarkus Armbruster            'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right',
800608cfed6SMarkus Armbruster            'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon',
801608cfed6SMarkus Armbruster            'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b',
802608cfed6SMarkus Armbruster            'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock',
803608cfed6SMarkus Armbruster            'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10',
804608cfed6SMarkus Armbruster            'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply',
805608cfed6SMarkus Armbruster            'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0',
806608cfed6SMarkus Armbruster            'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8',
807608cfed6SMarkus Armbruster            'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end',
808608cfed6SMarkus Armbruster            'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
809608cfed6SMarkus Armbruster            'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
810608cfed6SMarkus Armbruster            'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
811280b8da3SMiika S            'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
812608cfed6SMarkus Armbruster            'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
813608cfed6SMarkus Armbruster            'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
814608cfed6SMarkus Armbruster            'volumeup', 'volumedown', 'mediaselect',
815608cfed6SMarkus Armbruster            'mail', 'calculator', 'computer',
816608cfed6SMarkus Armbruster            'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks' ] }
817608cfed6SMarkus Armbruster
818608cfed6SMarkus Armbruster##
819608cfed6SMarkus Armbruster# @KeyValue:
820608cfed6SMarkus Armbruster#
821608cfed6SMarkus Armbruster# Represents a keyboard key.
822608cfed6SMarkus Armbruster#
823608cfed6SMarkus Armbruster# Since: 1.3.0
824608cfed6SMarkus Armbruster##
825608cfed6SMarkus Armbruster{ 'union': 'KeyValue',
826608cfed6SMarkus Armbruster  'data': {
827608cfed6SMarkus Armbruster    'number': 'int',
828608cfed6SMarkus Armbruster    'qcode': 'QKeyCode' } }
829608cfed6SMarkus Armbruster
830608cfed6SMarkus Armbruster##
831608cfed6SMarkus Armbruster# @send-key:
832608cfed6SMarkus Armbruster#
833608cfed6SMarkus Armbruster# Send keys to guest.
834608cfed6SMarkus Armbruster#
835608cfed6SMarkus Armbruster# @keys: An array of @KeyValue elements. All @KeyValues in this array are
836608cfed6SMarkus Armbruster#        simultaneously sent to the guest. A @KeyValue.number value is sent
837608cfed6SMarkus Armbruster#        directly to the guest, while @KeyValue.qcode must be a valid
838608cfed6SMarkus Armbruster#        @QKeyCode value
839608cfed6SMarkus Armbruster#
840608cfed6SMarkus Armbruster# @hold-time: time to delay key up events, milliseconds. Defaults
841608cfed6SMarkus Armbruster#             to 100
842608cfed6SMarkus Armbruster#
843608cfed6SMarkus Armbruster# Returns: Nothing on success
844608cfed6SMarkus Armbruster#          If key is unknown or redundant, InvalidParameter
845608cfed6SMarkus Armbruster#
846608cfed6SMarkus Armbruster# Since: 1.3.0
847608cfed6SMarkus Armbruster#
848608cfed6SMarkus Armbruster# Example:
849608cfed6SMarkus Armbruster#
850608cfed6SMarkus Armbruster# -> { "execute": "send-key",
851608cfed6SMarkus Armbruster#      "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" },
852608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "alt" },
853608cfed6SMarkus Armbruster#                               { "type": "qcode", "data": "delete" } ] } }
854608cfed6SMarkus Armbruster# <- { "return": {} }
855608cfed6SMarkus Armbruster#
856608cfed6SMarkus Armbruster##
857608cfed6SMarkus Armbruster{ 'command': 'send-key',
858608cfed6SMarkus Armbruster  'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } }
859608cfed6SMarkus Armbruster
860608cfed6SMarkus Armbruster##
861608cfed6SMarkus Armbruster# @InputButton:
862608cfed6SMarkus Armbruster#
863608cfed6SMarkus Armbruster# Button of a pointer input device (mouse, tablet).
864608cfed6SMarkus Armbruster#
865608cfed6SMarkus Armbruster# @side: front side button of a 5-button mouse (since 2.9)
866608cfed6SMarkus Armbruster#
867608cfed6SMarkus Armbruster# @extra: rear side button of a 5-button mouse (since 2.9)
868608cfed6SMarkus Armbruster#
869608cfed6SMarkus Armbruster# Since: 2.0
870608cfed6SMarkus Armbruster##
871608cfed6SMarkus Armbruster{ 'enum'  : 'InputButton',
872608cfed6SMarkus Armbruster  'data'  : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side',
873608cfed6SMarkus Armbruster  'extra' ] }
874608cfed6SMarkus Armbruster
875608cfed6SMarkus Armbruster##
876608cfed6SMarkus Armbruster# @InputAxis:
877608cfed6SMarkus Armbruster#
878608cfed6SMarkus Armbruster# Position axis of a pointer input device (mouse, tablet).
879608cfed6SMarkus Armbruster#
880608cfed6SMarkus Armbruster# Since: 2.0
881608cfed6SMarkus Armbruster##
882608cfed6SMarkus Armbruster{ 'enum'  : 'InputAxis',
883608cfed6SMarkus Armbruster  'data'  : [ 'x', 'y' ] }
884608cfed6SMarkus Armbruster
885608cfed6SMarkus Armbruster##
886608cfed6SMarkus Armbruster# @InputKeyEvent:
887608cfed6SMarkus Armbruster#
888608cfed6SMarkus Armbruster# Keyboard input event.
889608cfed6SMarkus Armbruster#
890608cfed6SMarkus Armbruster# @key:    Which key this event is for.
891608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
892608cfed6SMarkus Armbruster#
893608cfed6SMarkus Armbruster# Since: 2.0
894608cfed6SMarkus Armbruster##
895608cfed6SMarkus Armbruster{ 'struct'  : 'InputKeyEvent',
896608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'KeyValue',
897608cfed6SMarkus Armbruster              'down'    : 'bool' } }
898608cfed6SMarkus Armbruster
899608cfed6SMarkus Armbruster##
900608cfed6SMarkus Armbruster# @InputBtnEvent:
901608cfed6SMarkus Armbruster#
902608cfed6SMarkus Armbruster# Pointer button input event.
903608cfed6SMarkus Armbruster#
904608cfed6SMarkus Armbruster# @button: Which button this event is for.
905608cfed6SMarkus Armbruster# @down:   True for key-down and false for key-up events.
906608cfed6SMarkus Armbruster#
907608cfed6SMarkus Armbruster# Since: 2.0
908608cfed6SMarkus Armbruster##
909608cfed6SMarkus Armbruster{ 'struct'  : 'InputBtnEvent',
910608cfed6SMarkus Armbruster  'data'  : { 'button'  : 'InputButton',
911608cfed6SMarkus Armbruster              'down'    : 'bool' } }
912608cfed6SMarkus Armbruster
913608cfed6SMarkus Armbruster##
914608cfed6SMarkus Armbruster# @InputMoveEvent:
915608cfed6SMarkus Armbruster#
916608cfed6SMarkus Armbruster# Pointer motion input event.
917608cfed6SMarkus Armbruster#
918608cfed6SMarkus Armbruster# @axis: Which axis is referenced by @value.
919608cfed6SMarkus Armbruster# @value: Pointer position.  For absolute coordinates the
920608cfed6SMarkus Armbruster#         valid range is 0 -> 0x7ffff
921608cfed6SMarkus Armbruster#
922608cfed6SMarkus Armbruster# Since: 2.0
923608cfed6SMarkus Armbruster##
924608cfed6SMarkus Armbruster{ 'struct'  : 'InputMoveEvent',
925608cfed6SMarkus Armbruster  'data'  : { 'axis'    : 'InputAxis',
926608cfed6SMarkus Armbruster              'value'   : 'int' } }
927608cfed6SMarkus Armbruster
928608cfed6SMarkus Armbruster##
929608cfed6SMarkus Armbruster# @InputEvent:
930608cfed6SMarkus Armbruster#
931608cfed6SMarkus Armbruster# Input event union.
932608cfed6SMarkus Armbruster#
933608cfed6SMarkus Armbruster# @type: the input type, one of:
934608cfed6SMarkus Armbruster#        - 'key': Input event of Keyboard
935608cfed6SMarkus Armbruster#        - 'btn': Input event of pointer buttons
936608cfed6SMarkus Armbruster#        - 'rel': Input event of relative pointer motion
937608cfed6SMarkus Armbruster#        - 'abs': Input event of absolute pointer motion
938608cfed6SMarkus Armbruster#
939608cfed6SMarkus Armbruster# Since: 2.0
940608cfed6SMarkus Armbruster##
941608cfed6SMarkus Armbruster{ 'union' : 'InputEvent',
942608cfed6SMarkus Armbruster  'data'  : { 'key'     : 'InputKeyEvent',
943608cfed6SMarkus Armbruster              'btn'     : 'InputBtnEvent',
944608cfed6SMarkus Armbruster              'rel'     : 'InputMoveEvent',
945608cfed6SMarkus Armbruster              'abs'     : 'InputMoveEvent' } }
946608cfed6SMarkus Armbruster
947608cfed6SMarkus Armbruster##
948608cfed6SMarkus Armbruster# @input-send-event:
949608cfed6SMarkus Armbruster#
950608cfed6SMarkus Armbruster# Send input event(s) to guest.
951608cfed6SMarkus Armbruster#
952608cfed6SMarkus Armbruster# The @device and @head parameters can be used to send the input event
953608cfed6SMarkus Armbruster# to specific input devices in case (a) multiple input devices of the
954608cfed6SMarkus Armbruster# same kind are added to the virtual machine and (b) you have
955608cfed6SMarkus Armbruster# configured input routing (see docs/multiseat.txt) for those input
956608cfed6SMarkus Armbruster# devices.  The parameters work exactly like the device and head
957608cfed6SMarkus Armbruster# properties of input devices.  If @device is missing, only devices
958608cfed6SMarkus Armbruster# that have no input routing config are admissible.  If @device is
959608cfed6SMarkus Armbruster# specified, both input devices with and without input routing config
960608cfed6SMarkus Armbruster# are admissible, but devices with input routing config take
961608cfed6SMarkus Armbruster# precedence.
962608cfed6SMarkus Armbruster#
96343d7c2d0SPeter Maydell# @device: display device to send event(s) to.
96443d7c2d0SPeter Maydell# @head: head to send event(s) to, in case the
96543d7c2d0SPeter Maydell#        display device supports multiple scanouts.
96643d7c2d0SPeter Maydell# @events: List of InputEvent union.
96743d7c2d0SPeter Maydell#
96843d7c2d0SPeter Maydell# Returns: Nothing on success.
96943d7c2d0SPeter Maydell#
970608cfed6SMarkus Armbruster# Since: 2.6
971608cfed6SMarkus Armbruster#
972608cfed6SMarkus Armbruster# Note: The consoles are visible in the qom tree, under
973608cfed6SMarkus Armbruster#       /backend/console[$index]. They have a device link and head property,
974608cfed6SMarkus Armbruster#       so it is possible to map which console belongs to which device and
975608cfed6SMarkus Armbruster#       display.
976608cfed6SMarkus Armbruster#
977608cfed6SMarkus Armbruster# Example:
978608cfed6SMarkus Armbruster#
979608cfed6SMarkus Armbruster# 1. Press left mouse button.
980608cfed6SMarkus Armbruster#
981608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
982608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
983608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
984608cfed6SMarkus Armbruster#                    "data" : { "down": true, "button": "left" } } ] } }
985608cfed6SMarkus Armbruster# <- { "return": {} }
986608cfed6SMarkus Armbruster#
987608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
988608cfed6SMarkus Armbruster#     "arguments": { "device": "video0",
989608cfed6SMarkus Armbruster#                    "events": [ { "type": "btn",
990608cfed6SMarkus Armbruster#                    "data" : { "down": false, "button": "left" } } ] } }
991608cfed6SMarkus Armbruster# <- { "return": {} }
992608cfed6SMarkus Armbruster#
993608cfed6SMarkus Armbruster# 2. Press ctrl-alt-del.
994608cfed6SMarkus Armbruster#
995608cfed6SMarkus Armbruster# -> { "execute": "input-send-event",
996608cfed6SMarkus Armbruster#      "arguments": { "events": [
997608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
998608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "ctrl" } } },
999608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
1000608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "alt" } } },
1001608cfed6SMarkus Armbruster#         { "type": "key", "data" : { "down": true,
1002608cfed6SMarkus Armbruster#           "key": {"type": "qcode", "data": "delete" } } } ] } }
1003608cfed6SMarkus Armbruster# <- { "return": {} }
1004608cfed6SMarkus Armbruster#
1005608cfed6SMarkus Armbruster# 3. Move mouse pointer to absolute coordinates (20000, 400).
1006608cfed6SMarkus Armbruster#
1007608cfed6SMarkus Armbruster# -> { "execute": "input-send-event" ,
1008608cfed6SMarkus Armbruster#   "arguments": { "events": [
1009608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "x", "value" : 20000 } },
1010608cfed6SMarkus Armbruster#                { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } }
1011608cfed6SMarkus Armbruster# <- { "return": {} }
1012608cfed6SMarkus Armbruster#
1013608cfed6SMarkus Armbruster##
1014608cfed6SMarkus Armbruster{ 'command': 'input-send-event',
1015608cfed6SMarkus Armbruster  'data': { '*device': 'str',
1016608cfed6SMarkus Armbruster            '*head'  : 'int',
1017608cfed6SMarkus Armbruster            'events' : [ 'InputEvent' ] } }
10180c8d7065SGerd Hoffmann
10192657846fSRyan El Kochta##
10202657846fSRyan El Kochta# @GrabToggleKeys:
10212657846fSRyan El Kochta#
10222657846fSRyan El Kochta# Keys to toggle input-linux between host and guest.
10232657846fSRyan El Kochta#
10242657846fSRyan El Kochta# Since: 4.0
10252657846fSRyan El Kochta#
10262657846fSRyan El Kochta##
10272657846fSRyan El Kochta{ 'enum': 'GrabToggleKeys',
1028a923b471SNiklas Haas  'data': [ 'ctrl-ctrl', 'alt-alt', 'shift-shift','meta-meta', 'scrolllock',
1029a923b471SNiklas Haas            'ctrl-scrolllock' ] }
10300c8d7065SGerd Hoffmann
10310c8d7065SGerd Hoffmann##
10320c8d7065SGerd Hoffmann# @DisplayGTK:
10330c8d7065SGerd Hoffmann#
10340c8d7065SGerd Hoffmann# GTK display options.
10350c8d7065SGerd Hoffmann#
10360c8d7065SGerd Hoffmann# @grab-on-hover: Grab keyboard input on mouse hover.
1037e8b1386eSGerd Hoffmann# @zoom-to-fit: Zoom guest display to fit into the host window.  When
1038e8b1386eSGerd Hoffmann#               turned off the host window will be resized instead.
1039e8b1386eSGerd Hoffmann#               In case the display device can notify the guest on
1040e8b1386eSGerd Hoffmann#               window resizes (virtio-gpu) this will default to "on",
1041e8b1386eSGerd Hoffmann#               assuming the guest will resize the display to match
1042e8b1386eSGerd Hoffmann#               the window size then.  Otherwise it defaults to "off".
1043e8b1386eSGerd Hoffmann#               Since 3.1
10440c8d7065SGerd Hoffmann#
10450c8d7065SGerd Hoffmann# Since: 2.12
10460c8d7065SGerd Hoffmann#
10470c8d7065SGerd Hoffmann##
10480c8d7065SGerd Hoffmann{ 'struct'  : 'DisplayGTK',
1049e8b1386eSGerd Hoffmann  'data'    : { '*grab-on-hover' : 'bool',
1050e8b1386eSGerd Hoffmann                '*zoom-to-fit'   : 'bool'  } }
10510c8d7065SGerd Hoffmann
10520c8d7065SGerd Hoffmann##
1053d4dc4ab1SErik Skultety# @DisplayEGLHeadless:
1054d4dc4ab1SErik Skultety#
1055d4dc4ab1SErik Skultety# EGL headless display options.
1056d4dc4ab1SErik Skultety#
1057d4dc4ab1SErik Skultety# @rendernode: Which DRM render node should be used. Default is the first
1058d4dc4ab1SErik Skultety#              available node on the host.
1059d4dc4ab1SErik Skultety#
1060d4dc4ab1SErik Skultety# Since: 3.1
1061d4dc4ab1SErik Skultety#
1062d4dc4ab1SErik Skultety##
1063d4dc4ab1SErik Skultety{ 'struct'  : 'DisplayEGLHeadless',
1064d4dc4ab1SErik Skultety  'data'    : { '*rendernode' : 'str' } }
1065d4dc4ab1SErik Skultety
1066d4dc4ab1SErik Skultety ##
106762f27922SElie Tournier # @DisplayGLMode:
106862f27922SElie Tournier #
106962f27922SElie Tournier # Display OpenGL mode.
107062f27922SElie Tournier #
107162f27922SElie Tournier # @off: Disable OpenGL (default).
107262f27922SElie Tournier # @on: Use OpenGL, pick context type automatically.
107362f27922SElie Tournier #      Would better be named 'auto' but is called 'on' for backward
107462f27922SElie Tournier #      compatibility with bool type.
107562f27922SElie Tournier # @core: Use OpenGL with Core (desktop) Context.
107662f27922SElie Tournier # @es: Use OpenGL with ES (embedded systems) Context.
107762f27922SElie Tournier #
107851f63ec7SPeter Maydell # Since: 3.0
107962f27922SElie Tournier #
108062f27922SElie Tournier ##
108162f27922SElie Tournier { 'enum'    : 'DisplayGLMode',
108262f27922SElie Tournier   'data'    : [ 'off', 'on', 'core', 'es' ] }
108362f27922SElie Tournier
108462f27922SElie Tournier##
10852f8b7cd5SSamuel Thibault# @DisplayCurses:
10862f8b7cd5SSamuel Thibault#
10872f8b7cd5SSamuel Thibault# Curses display options.
10882f8b7cd5SSamuel Thibault#
10892f8b7cd5SSamuel Thibault# @charset:       Font charset used by guest (default: CP437).
10902f8b7cd5SSamuel Thibault#
10912f8b7cd5SSamuel Thibault# Since: 4.0
10922f8b7cd5SSamuel Thibault#
10932f8b7cd5SSamuel Thibault##
10942f8b7cd5SSamuel Thibault{ 'struct'  : 'DisplayCurses',
10952f8b7cd5SSamuel Thibault  'data'    : { '*charset'       : 'str' } }
10962f8b7cd5SSamuel Thibault
10972f8b7cd5SSamuel Thibault##
10980c8d7065SGerd Hoffmann# @DisplayType:
10990c8d7065SGerd Hoffmann#
11000c8d7065SGerd Hoffmann# Display (user interface) type.
11010c8d7065SGerd Hoffmann#
110242176d77SMarc-André Lureau# @default: The default user interface, selecting from the first available
110342176d77SMarc-André Lureau#           of gtk, sdl, cocoa, and vnc.
110442176d77SMarc-André Lureau#
110542176d77SMarc-André Lureau# @none: No user interface or video output display. The guest will
110642176d77SMarc-André Lureau#        still see an emulated graphics card, but its output will not
110742176d77SMarc-André Lureau#        be displayed to the QEMU user.
110842176d77SMarc-André Lureau#
110942176d77SMarc-André Lureau# @gtk: The GTK user interface.
111042176d77SMarc-André Lureau#
111142176d77SMarc-André Lureau# @sdl: The SDL user interface.
111242176d77SMarc-André Lureau#
111342176d77SMarc-André Lureau# @egl-headless: No user interface, offload GL operations to a local
111442176d77SMarc-André Lureau#                DRI device. Graphical display need to be paired with
111542176d77SMarc-André Lureau#                VNC or Spice. (Since 3.1)
111642176d77SMarc-André Lureau#
111742176d77SMarc-André Lureau# @curses: Display video output via curses.  For graphics device
111842176d77SMarc-André Lureau#          models which support a text mode, QEMU can display this
111942176d77SMarc-André Lureau#          output using a curses/ncurses interface. Nothing is
112042176d77SMarc-André Lureau#          displayed when the graphics device is in graphical mode or
112142176d77SMarc-André Lureau#          if the graphics device does not support a text
112242176d77SMarc-André Lureau#          mode. Generally only the VGA device models support text
112342176d77SMarc-André Lureau#          mode.
112442176d77SMarc-André Lureau#
112542176d77SMarc-André Lureau# @cocoa: The Cocoa user interface.
112642176d77SMarc-André Lureau#
1127d8aec9d9SMarc-André Lureau# @spice-app: Set up a Spice server and run the default associated
1128d8aec9d9SMarc-André Lureau#             application to connect to it. The server will redirect
1129d8aec9d9SMarc-André Lureau#             the serial console and QEMU monitors. (Since 4.0)
1130d8aec9d9SMarc-André Lureau#
11310c8d7065SGerd Hoffmann# Since: 2.12
11320c8d7065SGerd Hoffmann#
11330c8d7065SGerd Hoffmann##
11340c8d7065SGerd Hoffmann{ 'enum'    : 'DisplayType',
1135e3af9f9aSGerd Hoffmann  'data'    : [ 'default', 'none', 'gtk', 'sdl',
1136d8aec9d9SMarc-André Lureau                'egl-headless', 'curses', 'cocoa',
1137d8aec9d9SMarc-André Lureau                'spice-app'] }
11380c8d7065SGerd Hoffmann
11390c8d7065SGerd Hoffmann##
11400c8d7065SGerd Hoffmann# @DisplayOptions:
11410c8d7065SGerd Hoffmann#
11420c8d7065SGerd Hoffmann# Display (user interface) options.
11430c8d7065SGerd Hoffmann#
11440c8d7065SGerd Hoffmann# @type:          Which DisplayType qemu should use.
11450c8d7065SGerd Hoffmann# @full-screen:   Start user interface in fullscreen mode (default: off).
11460c8d7065SGerd Hoffmann# @window-close:  Allow to quit qemu with window close button (default: on).
11477027bdd7SGerd Hoffmann# @show-cursor:   Force showing the mouse cursor (default: off).
11487027bdd7SGerd Hoffmann#                 (since: 5.0)
11490c8d7065SGerd Hoffmann# @gl:            Enable OpenGL support (default: off).
11500c8d7065SGerd Hoffmann#
11510c8d7065SGerd Hoffmann# Since: 2.12
11520c8d7065SGerd Hoffmann#
11530c8d7065SGerd Hoffmann##
11540c8d7065SGerd Hoffmann{ 'union'   : 'DisplayOptions',
11550c8d7065SGerd Hoffmann  'base'    : { 'type'           : 'DisplayType',
11560c8d7065SGerd Hoffmann                '*full-screen'   : 'bool',
11570c8d7065SGerd Hoffmann                '*window-close'  : 'bool',
11587027bdd7SGerd Hoffmann                '*show-cursor'   : 'bool',
115962f27922SElie Tournier                '*gl'            : 'DisplayGLMode' },
11600c8d7065SGerd Hoffmann  'discriminator' : 'type',
1161d4dc4ab1SErik Skultety  'data'    : { 'gtk'            : 'DisplayGTK',
11622f8b7cd5SSamuel Thibault                'curses'         : 'DisplayCurses',
1163d4dc4ab1SErik Skultety                'egl-headless'   : 'DisplayEGLHeadless'} }
1164e1ca8f7eSGerd Hoffmann
1165e1ca8f7eSGerd Hoffmann##
1166e1ca8f7eSGerd Hoffmann# @query-display-options:
1167e1ca8f7eSGerd Hoffmann#
1168e1ca8f7eSGerd Hoffmann# Returns information about display configuration
1169e1ca8f7eSGerd Hoffmann#
1170e1ca8f7eSGerd Hoffmann# Returns: @DisplayOptions
1171e1ca8f7eSGerd Hoffmann#
1172e1ca8f7eSGerd Hoffmann# Since: 3.1
1173e1ca8f7eSGerd Hoffmann#
1174e1ca8f7eSGerd Hoffmann##
1175e1ca8f7eSGerd Hoffmann{ 'command': 'query-display-options',
1176e1ca8f7eSGerd Hoffmann  'returns': 'DisplayOptions' }
1177