]>
Commit | Line | Data |
---|---|---|
608cfed6 | 1 | # -*- Mode: Python -*- |
f7160f32 | 2 | # vim: filetype=python |
608cfed6 MA |
3 | # |
4 | ||
5 | ## | |
6 | # = Remote desktop | |
7 | ## | |
8 | ||
30e863e5 | 9 | { 'include': 'common.json' } |
608cfed6 MA |
10 | { 'include': 'sockets.json' } |
11 | ||
7277db91 SR |
12 | ## |
13 | # @DisplayProtocol: | |
14 | # | |
15 | # Display protocols which support changing password options. | |
16 | # | |
17 | # Since: 7.0 | |
7277db91 SR |
18 | ## |
19 | { 'enum': 'DisplayProtocol', | |
20 | 'data': [ 'vnc', 'spice' ] } | |
21 | ||
22 | ## | |
23 | # @SetPasswordAction: | |
24 | # | |
a937b6aa MA |
25 | # An action to take on changing a password on a connection with active |
26 | # clients. | |
7277db91 SR |
27 | # |
28 | # @keep: maintain existing clients | |
29 | # | |
30 | # @fail: fail the command if clients are connected | |
31 | # | |
32 | # @disconnect: disconnect existing clients | |
33 | # | |
34 | # Since: 7.0 | |
7277db91 SR |
35 | ## |
36 | { 'enum': 'SetPasswordAction', | |
37 | 'data': [ 'keep', 'fail', 'disconnect' ] } | |
38 | ||
608cfed6 | 39 | ## |
675fd3c9 | 40 | # @SetPasswordOptions: |
608cfed6 | 41 | # |
675fd3c9 | 42 | # Options for set_password. |
608cfed6 | 43 | # |
a937b6aa MA |
44 | # @protocol: |
45 | # - 'vnc' to modify the VNC server password | |
46 | # - 'spice' to modify the Spice server password | |
608cfed6 MA |
47 | # |
48 | # @password: the new password | |
49 | # | |
675fd3c9 | 50 | # @connected: How to handle existing clients when changing the |
a937b6aa MA |
51 | # password. If nothing is specified, defaults to 'keep'. For VNC, |
52 | # only 'keep' is currently implemented. | |
675fd3c9 SR |
53 | # |
54 | # Since: 7.0 | |
675fd3c9 SR |
55 | ## |
56 | { 'union': 'SetPasswordOptions', | |
57 | 'base': { 'protocol': 'DisplayProtocol', | |
58 | 'password': 'str', | |
59 | '*connected': 'SetPasswordAction' }, | |
60 | 'discriminator': 'protocol', | |
61 | 'data': { 'vnc': 'SetPasswordOptionsVnc' } } | |
62 | ||
63 | ## | |
64 | # @SetPasswordOptionsVnc: | |
65 | # | |
66 | # Options for set_password specific to the VNC procotol. | |
67 | # | |
a937b6aa MA |
68 | # @display: The id of the display where the password should be |
69 | # changed. Defaults to the first. | |
675fd3c9 SR |
70 | # |
71 | # Since: 7.0 | |
675fd3c9 SR |
72 | ## |
73 | { 'struct': 'SetPasswordOptionsVnc', | |
74 | 'data': { '*display': 'str' } } | |
75 | ||
76 | ## | |
77 | # @set_password: | |
78 | # | |
79 | # Set the password of a remote display server. | |
608cfed6 | 80 | # |
a937b6aa MA |
81 | # Returns: |
82 | # - Nothing on success | |
83 | # - If Spice is not enabled, DeviceNotFound | |
608cfed6 | 84 | # |
9bc6e893 | 85 | # Since: 0.14 |
608cfed6 MA |
86 | # |
87 | # Example: | |
88 | # | |
89 | # -> { "execute": "set_password", "arguments": { "protocol": "vnc", | |
90 | # "password": "secret" } } | |
91 | # <- { "return": {} } | |
608cfed6 | 92 | ## |
675fd3c9 | 93 | { 'command': 'set_password', 'boxed': true, 'data': 'SetPasswordOptions' } |
608cfed6 MA |
94 | |
95 | ## | |
675fd3c9 | 96 | # @ExpirePasswordOptions: |
608cfed6 | 97 | # |
675fd3c9 | 98 | # General options for expire_password. |
608cfed6 | 99 | # |
a937b6aa MA |
100 | # @protocol: |
101 | # - 'vnc' to modify the VNC server expiration | |
102 | # - 'spice' to modify the Spice server expiration | |
608cfed6 MA |
103 | # |
104 | # @time: when to expire the password. | |
608cfed6 | 105 | # |
a937b6aa MA |
106 | # - 'now' to expire the password immediately |
107 | # - 'never' to cancel password expiration | |
108 | # - '+INT' where INT is the number of seconds from now (integer) | |
109 | # - 'INT' where INT is the absolute time in seconds | |
e050e426 | 110 | # |
a937b6aa MA |
111 | # Notes: Time is relative to the server and currently there is no way |
112 | # to coordinate server time with client time. It is not | |
113 | # recommended to use the absolute time version of the @time | |
114 | # parameter unless you're sure you are on the same machine as the | |
115 | # QEMU instance. | |
608cfed6 | 116 | # |
675fd3c9 | 117 | # Since: 7.0 |
675fd3c9 SR |
118 | ## |
119 | { 'union': 'ExpirePasswordOptions', | |
120 | 'base': { 'protocol': 'DisplayProtocol', | |
121 | 'time': 'str' }, | |
122 | 'discriminator': 'protocol', | |
123 | 'data': { 'vnc': 'ExpirePasswordOptionsVnc' } } | |
124 | ||
125 | ## | |
126 | # @ExpirePasswordOptionsVnc: | |
127 | # | |
128 | # Options for expire_password specific to the VNC procotol. | |
129 | # | |
a937b6aa MA |
130 | # @display: The id of the display where the expiration should be |
131 | # changed. Defaults to the first. | |
675fd3c9 SR |
132 | # |
133 | # Since: 7.0 | |
675fd3c9 | 134 | ## |
675fd3c9 SR |
135 | { 'struct': 'ExpirePasswordOptionsVnc', |
136 | 'data': { '*display': 'str' } } | |
137 | ||
138 | ## | |
139 | # @expire_password: | |
140 | # | |
141 | # Expire the password of a remote display server. | |
142 | # | |
a937b6aa MA |
143 | # Returns: |
144 | # - Nothing on success | |
145 | # - If @protocol is 'spice' and Spice is not active, | |
146 | # DeviceNotFound | |
675fd3c9 SR |
147 | # |
148 | # Since: 0.14 | |
149 | # | |
608cfed6 MA |
150 | # Example: |
151 | # | |
152 | # -> { "execute": "expire_password", "arguments": { "protocol": "vnc", | |
153 | # "time": "+60" } } | |
154 | # <- { "return": {} } | |
608cfed6 | 155 | ## |
675fd3c9 | 156 | { 'command': 'expire_password', 'boxed': true, 'data': 'ExpirePasswordOptions' } |
608cfed6 | 157 | |
9a0a119a KS |
158 | ## |
159 | # @ImageFormat: | |
160 | # | |
161 | # Supported image format types. | |
162 | # | |
163 | # @png: PNG format | |
164 | # | |
165 | # @ppm: PPM format | |
166 | # | |
167 | # Since: 7.1 | |
9a0a119a KS |
168 | ## |
169 | { 'enum': 'ImageFormat', | |
170 | 'data': ['ppm', 'png'] } | |
171 | ||
608cfed6 MA |
172 | ## |
173 | # @screendump: | |
174 | # | |
9a0a119a | 175 | # Capture the contents of a screen and write it to a file. |
608cfed6 | 176 | # |
9a0a119a | 177 | # @filename: the path of a new file to store the image |
608cfed6 | 178 | # |
a937b6aa MA |
179 | # @device: ID of the display device that should be dumped. If this |
180 | # parameter is missing, the primary display will be used. (Since | |
181 | # 2.12) | |
f771c544 | 182 | # |
a937b6aa MA |
183 | # @head: head to use in case the device supports multiple heads. If |
184 | # this parameter is missing, head #0 will be used. Also note that | |
185 | # the head can only be specified in conjunction with the device | |
186 | # ID. (Since 2.12) | |
f771c544 | 187 | # |
a937b6aa | 188 | # @format: image format for screendump. (default: ppm) (Since 7.1) |
9a0a119a | 189 | # |
608cfed6 MA |
190 | # Returns: Nothing on success |
191 | # | |
9bc6e893 | 192 | # Since: 0.14 |
608cfed6 MA |
193 | # |
194 | # Example: | |
195 | # | |
196 | # -> { "execute": "screendump", | |
197 | # "arguments": { "filename": "/tmp/image" } } | |
198 | # <- { "return": {} } | |
608cfed6 | 199 | ## |
f771c544 | 200 | { 'command': 'screendump', |
9a0a119a KS |
201 | 'data': {'filename': 'str', '*device': 'str', '*head': 'int', |
202 | '*format': 'ImageFormat'}, | |
0d9b90ce | 203 | 'coroutine': true } |
608cfed6 MA |
204 | |
205 | ## | |
206 | # == Spice | |
207 | ## | |
208 | ||
209 | ## | |
210 | # @SpiceBasicInfo: | |
211 | # | |
212 | # The basic information for SPICE network connection | |
213 | # | |
214 | # @host: IP address | |
215 | # | |
216 | # @port: port number | |
217 | # | |
218 | # @family: address family | |
219 | # | |
220 | # Since: 2.1 | |
221 | ## | |
222 | { 'struct': 'SpiceBasicInfo', | |
223 | 'data': { 'host': 'str', | |
224 | 'port': 'str', | |
514337c1 | 225 | 'family': 'NetworkAddressFamily' }, |
8a9f1e1d | 226 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
227 | |
228 | ## | |
229 | # @SpiceServerInfo: | |
230 | # | |
231 | # Information about a SPICE server | |
232 | # | |
233 | # @auth: authentication method | |
234 | # | |
235 | # Since: 2.1 | |
236 | ## | |
237 | { 'struct': 'SpiceServerInfo', | |
238 | 'base': 'SpiceBasicInfo', | |
514337c1 | 239 | 'data': { '*auth': 'str' }, |
8a9f1e1d | 240 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
241 | |
242 | ## | |
243 | # @SpiceChannel: | |
244 | # | |
245 | # Information about a SPICE client channel. | |
246 | # | |
a937b6aa MA |
247 | # @connection-id: SPICE connection id number. All channels with the |
248 | # same id belong to the same SPICE session. | |
608cfed6 MA |
249 | # |
250 | # @channel-type: SPICE channel type number. "1" is the main control | |
a937b6aa MA |
251 | # channel, filter for this one if you want to track spice sessions |
252 | # only | |
608cfed6 | 253 | # |
a937b6aa MA |
254 | # @channel-id: SPICE channel ID number. Usually "0", might be |
255 | # different when multiple channels of the same type exist, such as | |
256 | # multiple display channels in a multihead setup | |
608cfed6 MA |
257 | # |
258 | # @tls: true if the channel is encrypted, false otherwise. | |
259 | # | |
9bc6e893 | 260 | # Since: 0.14 |
608cfed6 MA |
261 | ## |
262 | { 'struct': 'SpiceChannel', | |
263 | 'base': 'SpiceBasicInfo', | |
264 | 'data': {'connection-id': 'int', 'channel-type': 'int', 'channel-id': 'int', | |
514337c1 | 265 | 'tls': 'bool'}, |
8a9f1e1d | 266 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
267 | |
268 | ## | |
269 | # @SpiceQueryMouseMode: | |
270 | # | |
271 | # An enumeration of Spice mouse states. | |
272 | # | |
273 | # @client: Mouse cursor position is determined by the client. | |
274 | # | |
275 | # @server: Mouse cursor position is determined by the server. | |
276 | # | |
a937b6aa MA |
277 | # @unknown: No information is available about mouse mode used by the |
278 | # spice server. | |
608cfed6 MA |
279 | # |
280 | # Note: spice/enums.h has a SpiceMouseMode already, hence the name. | |
281 | # | |
282 | # Since: 1.1 | |
283 | ## | |
284 | { 'enum': 'SpiceQueryMouseMode', | |
514337c1 | 285 | 'data': [ 'client', 'server', 'unknown' ], |
8a9f1e1d | 286 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
287 | |
288 | ## | |
289 | # @SpiceInfo: | |
290 | # | |
291 | # Information about the SPICE session. | |
292 | # | |
293 | # @enabled: true if the SPICE server is enabled, false otherwise | |
294 | # | |
295 | # @migrated: true if the last guest migration completed and spice | |
a937b6aa | 296 | # migration had completed as well. false otherwise. (since 1.4) |
608cfed6 MA |
297 | # |
298 | # @host: The hostname the SPICE server is bound to. This depends on | |
a937b6aa | 299 | # the name resolution on the host and may be an IP address. |
608cfed6 MA |
300 | # |
301 | # @port: The SPICE server's port number. | |
302 | # | |
303 | # @compiled-version: SPICE server version. | |
304 | # | |
305 | # @tls-port: The SPICE server's TLS port number. | |
306 | # | |
307 | # @auth: the current authentication type used by the server | |
e050e426 | 308 | # |
a937b6aa MA |
309 | # - 'none' if no authentication is being used |
310 | # - 'spice' uses SASL or direct TLS authentication, depending on | |
311 | # command line options | |
608cfed6 | 312 | # |
a937b6aa MA |
313 | # @mouse-mode: The mode in which the mouse cursor is displayed |
314 | # currently. Can be determined by the client or the server, or | |
315 | # unknown if spice server doesn't provide this information. | |
316 | # (since: 1.1) | |
608cfed6 MA |
317 | # |
318 | # @channels: a list of @SpiceChannel for each active spice channel | |
319 | # | |
9bc6e893 | 320 | # Since: 0.14 |
608cfed6 MA |
321 | ## |
322 | { 'struct': 'SpiceInfo', | |
323 | 'data': {'enabled': 'bool', 'migrated': 'bool', '*host': 'str', '*port': 'int', | |
324 | '*tls-port': 'int', '*auth': 'str', '*compiled-version': 'str', | |
514337c1 | 325 | 'mouse-mode': 'SpiceQueryMouseMode', '*channels': ['SpiceChannel']}, |
8a9f1e1d | 326 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
327 | |
328 | ## | |
329 | # @query-spice: | |
330 | # | |
331 | # Returns information about the current SPICE server | |
332 | # | |
333 | # Returns: @SpiceInfo | |
334 | # | |
9bc6e893 | 335 | # Since: 0.14 |
608cfed6 MA |
336 | # |
337 | # Example: | |
338 | # | |
339 | # -> { "execute": "query-spice" } | |
340 | # <- { "return": { | |
341 | # "enabled": true, | |
342 | # "auth": "spice", | |
343 | # "port": 5920, | |
74dd52e5 | 344 | # "migrated":false, |
608cfed6 MA |
345 | # "tls-port": 5921, |
346 | # "host": "0.0.0.0", | |
74dd52e5 | 347 | # "mouse-mode":"client", |
608cfed6 MA |
348 | # "channels": [ |
349 | # { | |
350 | # "port": "54924", | |
351 | # "family": "ipv4", | |
352 | # "channel-type": 1, | |
353 | # "connection-id": 1804289383, | |
354 | # "host": "127.0.0.1", | |
355 | # "channel-id": 0, | |
356 | # "tls": true | |
357 | # }, | |
358 | # { | |
359 | # "port": "36710", | |
360 | # "family": "ipv4", | |
361 | # "channel-type": 4, | |
362 | # "connection-id": 1804289383, | |
363 | # "host": "127.0.0.1", | |
364 | # "channel-id": 0, | |
365 | # "tls": false | |
366 | # }, | |
367 | # [ ... more channels follow ... ] | |
368 | # ] | |
369 | # } | |
370 | # } | |
608cfed6 | 371 | ## |
514337c1 | 372 | { 'command': 'query-spice', 'returns': 'SpiceInfo', |
8a9f1e1d | 373 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
374 | |
375 | ## | |
376 | # @SPICE_CONNECTED: | |
377 | # | |
378 | # Emitted when a SPICE client establishes a connection | |
379 | # | |
380 | # @server: server information | |
381 | # | |
382 | # @client: client information | |
383 | # | |
9bc6e893 | 384 | # Since: 0.14 |
608cfed6 MA |
385 | # |
386 | # Example: | |
387 | # | |
388 | # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707}, | |
389 | # "event": "SPICE_CONNECTED", | |
390 | # "data": { | |
391 | # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"}, | |
392 | # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"} | |
393 | # }} | |
608cfed6 MA |
394 | ## |
395 | { 'event': 'SPICE_CONNECTED', | |
396 | 'data': { 'server': 'SpiceBasicInfo', | |
514337c1 | 397 | 'client': 'SpiceBasicInfo' }, |
8a9f1e1d | 398 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
399 | |
400 | ## | |
401 | # @SPICE_INITIALIZED: | |
402 | # | |
a937b6aa MA |
403 | # Emitted after initial handshake and authentication takes place (if |
404 | # any) and the SPICE channel is up and running | |
608cfed6 MA |
405 | # |
406 | # @server: server information | |
407 | # | |
408 | # @client: client information | |
409 | # | |
9bc6e893 | 410 | # Since: 0.14 |
608cfed6 MA |
411 | # |
412 | # Example: | |
413 | # | |
414 | # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172}, | |
415 | # "event": "SPICE_INITIALIZED", | |
416 | # "data": {"server": {"auth": "spice", "port": "5921", | |
417 | # "family": "ipv4", "host": "127.0.0.1"}, | |
418 | # "client": {"port": "49004", "family": "ipv4", "channel-type": 3, | |
419 | # "connection-id": 1804289383, "host": "127.0.0.1", | |
420 | # "channel-id": 0, "tls": true} | |
421 | # }} | |
608cfed6 MA |
422 | ## |
423 | { 'event': 'SPICE_INITIALIZED', | |
424 | 'data': { 'server': 'SpiceServerInfo', | |
514337c1 | 425 | 'client': 'SpiceChannel' }, |
8a9f1e1d | 426 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
427 | |
428 | ## | |
429 | # @SPICE_DISCONNECTED: | |
430 | # | |
431 | # Emitted when the SPICE connection is closed | |
432 | # | |
433 | # @server: server information | |
434 | # | |
435 | # @client: client information | |
436 | # | |
9bc6e893 | 437 | # Since: 0.14 |
608cfed6 MA |
438 | # |
439 | # Example: | |
440 | # | |
441 | # <- { "timestamp": {"seconds": 1290688046, "microseconds": 388707}, | |
442 | # "event": "SPICE_DISCONNECTED", | |
443 | # "data": { | |
444 | # "server": { "port": "5920", "family": "ipv4", "host": "127.0.0.1"}, | |
445 | # "client": {"port": "52873", "family": "ipv4", "host": "127.0.0.1"} | |
446 | # }} | |
608cfed6 MA |
447 | ## |
448 | { 'event': 'SPICE_DISCONNECTED', | |
449 | 'data': { 'server': 'SpiceBasicInfo', | |
514337c1 | 450 | 'client': 'SpiceBasicInfo' }, |
8a9f1e1d | 451 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
452 | |
453 | ## | |
454 | # @SPICE_MIGRATE_COMPLETED: | |
455 | # | |
456 | # Emitted when SPICE migration has completed | |
457 | # | |
458 | # Since: 1.3 | |
459 | # | |
460 | # Example: | |
461 | # | |
462 | # <- { "timestamp": {"seconds": 1290688046, "microseconds": 417172}, | |
463 | # "event": "SPICE_MIGRATE_COMPLETED" } | |
608cfed6 | 464 | ## |
514337c1 | 465 | { 'event': 'SPICE_MIGRATE_COMPLETED', |
8a9f1e1d | 466 | 'if': 'CONFIG_SPICE' } |
608cfed6 MA |
467 | |
468 | ## | |
469 | # == VNC | |
470 | ## | |
471 | ||
472 | ## | |
473 | # @VncBasicInfo: | |
474 | # | |
475 | # The basic information for vnc network connection | |
476 | # | |
477 | # @host: IP address | |
478 | # | |
a937b6aa MA |
479 | # @service: The service name of the vnc port. This may depend on the |
480 | # host system's service database so symbolic names should not be | |
481 | # relied on. | |
608cfed6 MA |
482 | # |
483 | # @family: address family | |
484 | # | |
485 | # @websocket: true in case the socket is a websocket (since 2.3). | |
486 | # | |
487 | # Since: 2.1 | |
488 | ## | |
489 | { 'struct': 'VncBasicInfo', | |
490 | 'data': { 'host': 'str', | |
491 | 'service': 'str', | |
492 | 'family': 'NetworkAddressFamily', | |
05eb4a25 | 493 | 'websocket': 'bool' }, |
8a9f1e1d | 494 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
495 | |
496 | ## | |
497 | # @VncServerInfo: | |
498 | # | |
499 | # The network connection information for server | |
500 | # | |
a937b6aa MA |
501 | # @auth: authentication method used for the plain (non-websocket) VNC |
502 | # server | |
608cfed6 MA |
503 | # |
504 | # Since: 2.1 | |
505 | ## | |
506 | { 'struct': 'VncServerInfo', | |
507 | 'base': 'VncBasicInfo', | |
05eb4a25 | 508 | 'data': { '*auth': 'str' }, |
8a9f1e1d | 509 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
510 | |
511 | ## | |
512 | # @VncClientInfo: | |
513 | # | |
514 | # Information about a connected VNC client. | |
515 | # | |
516 | # @x509_dname: If x509 authentication is in use, the Distinguished | |
a937b6aa | 517 | # Name of the client. |
608cfed6 MA |
518 | # |
519 | # @sasl_username: If SASL authentication is in use, the SASL username | |
a937b6aa | 520 | # used for authentication. |
608cfed6 | 521 | # |
9bc6e893 | 522 | # Since: 0.14 |
608cfed6 MA |
523 | ## |
524 | { 'struct': 'VncClientInfo', | |
525 | 'base': 'VncBasicInfo', | |
05eb4a25 | 526 | 'data': { '*x509_dname': 'str', '*sasl_username': 'str' }, |
8a9f1e1d | 527 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
528 | |
529 | ## | |
530 | # @VncInfo: | |
531 | # | |
532 | # Information about the VNC session. | |
533 | # | |
534 | # @enabled: true if the VNC server is enabled, false otherwise | |
535 | # | |
a937b6aa MA |
536 | # @host: The hostname the VNC server is bound to. This depends on the |
537 | # name resolution on the host and may be an IP address. | |
608cfed6 | 538 | # |
a937b6aa MA |
539 | # @family: |
540 | # - 'ipv6' if the host is listening for IPv6 connections | |
541 | # - 'ipv4' if the host is listening for IPv4 connections | |
542 | # - 'unix' if the host is listening on a unix domain socket | |
543 | # - 'unknown' otherwise | |
608cfed6 MA |
544 | # |
545 | # @service: The service name of the server's port. This may depends | |
a937b6aa MA |
546 | # on the host system's service database so symbolic names should |
547 | # not be relied on. | |
608cfed6 MA |
548 | # |
549 | # @auth: the current authentication type used by the server | |
e050e426 | 550 | # |
a937b6aa MA |
551 | # - 'none' if no authentication is being used |
552 | # - 'vnc' if VNC authentication is being used | |
553 | # - 'vencrypt+plain' if VEncrypt is used with plain text | |
554 | # authentication | |
555 | # - 'vencrypt+tls+none' if VEncrypt is used with TLS and no | |
556 | # authentication | |
557 | # - 'vencrypt+tls+vnc' if VEncrypt is used with TLS and VNC | |
558 | # authentication | |
559 | # - 'vencrypt+tls+plain' if VEncrypt is used with TLS and plain | |
560 | # text auth | |
561 | # - 'vencrypt+x509+none' if VEncrypt is used with x509 and no auth | |
562 | # - 'vencrypt+x509+vnc' if VEncrypt is used with x509 and VNC auth | |
563 | # - 'vencrypt+x509+plain' if VEncrypt is used with x509 and plain | |
564 | # text auth | |
565 | # - 'vencrypt+tls+sasl' if VEncrypt is used with TLS and SASL auth | |
566 | # - 'vencrypt+x509+sasl' if VEncrypt is used with x509 and SASL | |
567 | # auth | |
568 | # | |
569 | # @clients: a list of @VncClientInfo of all currently connected | |
570 | # clients | |
608cfed6 | 571 | # |
9bc6e893 | 572 | # Since: 0.14 |
608cfed6 MA |
573 | ## |
574 | { 'struct': 'VncInfo', | |
575 | 'data': {'enabled': 'bool', '*host': 'str', | |
576 | '*family': 'NetworkAddressFamily', | |
05eb4a25 | 577 | '*service': 'str', '*auth': 'str', '*clients': ['VncClientInfo']}, |
8a9f1e1d | 578 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
579 | |
580 | ## | |
581 | # @VncPrimaryAuth: | |
582 | # | |
583 | # vnc primary authentication method. | |
584 | # | |
585 | # Since: 2.3 | |
586 | ## | |
587 | { 'enum': 'VncPrimaryAuth', | |
588 | 'data': [ 'none', 'vnc', 'ra2', 'ra2ne', 'tight', 'ultra', | |
05eb4a25 | 589 | 'tls', 'vencrypt', 'sasl' ], |
8a9f1e1d | 590 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
591 | |
592 | ## | |
593 | # @VncVencryptSubAuth: | |
594 | # | |
595 | # vnc sub authentication method with vencrypt. | |
596 | # | |
597 | # Since: 2.3 | |
598 | ## | |
599 | { 'enum': 'VncVencryptSubAuth', | |
600 | 'data': [ 'plain', | |
601 | 'tls-none', 'x509-none', | |
602 | 'tls-vnc', 'x509-vnc', | |
603 | 'tls-plain', 'x509-plain', | |
05eb4a25 | 604 | 'tls-sasl', 'x509-sasl' ], |
8a9f1e1d | 605 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
606 | |
607 | ## | |
608 | # @VncServerInfo2: | |
609 | # | |
610 | # The network connection information for server | |
611 | # | |
612 | # @auth: The current authentication type used by the servers | |
613 | # | |
a937b6aa MA |
614 | # @vencrypt: The vencrypt sub authentication type used by the servers, |
615 | # only specified in case auth == vencrypt. | |
608cfed6 MA |
616 | # |
617 | # Since: 2.9 | |
618 | ## | |
619 | { 'struct': 'VncServerInfo2', | |
620 | 'base': 'VncBasicInfo', | |
621 | 'data': { 'auth' : 'VncPrimaryAuth', | |
05eb4a25 | 622 | '*vencrypt' : 'VncVencryptSubAuth' }, |
8a9f1e1d | 623 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
624 | |
625 | ## | |
626 | # @VncInfo2: | |
627 | # | |
628 | # Information about a vnc server | |
629 | # | |
630 | # @id: vnc server name. | |
631 | # | |
632 | # @server: A list of @VncBasincInfo describing all listening sockets. | |
a937b6aa MA |
633 | # The list can be empty (in case the vnc server is disabled). It |
634 | # also may have multiple entries: normal + websocket, possibly | |
635 | # also ipv4 + ipv6 in the future. | |
608cfed6 | 636 | # |
a937b6aa MA |
637 | # @clients: A list of @VncClientInfo of all currently connected |
638 | # clients. The list can be empty, for obvious reasons. | |
608cfed6 | 639 | # |
a937b6aa MA |
640 | # @auth: The current authentication type used by the non-websockets |
641 | # servers | |
608cfed6 MA |
642 | # |
643 | # @vencrypt: The vencrypt authentication type used by the servers, | |
a937b6aa | 644 | # only specified in case auth == vencrypt. |
608cfed6 MA |
645 | # |
646 | # @display: The display device the vnc server is linked to. | |
647 | # | |
648 | # Since: 2.3 | |
649 | ## | |
650 | { 'struct': 'VncInfo2', | |
651 | 'data': { 'id' : 'str', | |
652 | 'server' : ['VncServerInfo2'], | |
653 | 'clients' : ['VncClientInfo'], | |
654 | 'auth' : 'VncPrimaryAuth', | |
655 | '*vencrypt' : 'VncVencryptSubAuth', | |
05eb4a25 | 656 | '*display' : 'str' }, |
8a9f1e1d | 657 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
658 | |
659 | ## | |
660 | # @query-vnc: | |
661 | # | |
662 | # Returns information about the current VNC server | |
663 | # | |
664 | # Returns: @VncInfo | |
665 | # | |
9bc6e893 | 666 | # Since: 0.14 |
608cfed6 MA |
667 | # |
668 | # Example: | |
669 | # | |
670 | # -> { "execute": "query-vnc" } | |
671 | # <- { "return": { | |
672 | # "enabled":true, | |
673 | # "host":"0.0.0.0", | |
674 | # "service":"50402", | |
675 | # "auth":"vnc", | |
676 | # "family":"ipv4", | |
677 | # "clients":[ | |
678 | # { | |
679 | # "host":"127.0.0.1", | |
680 | # "service":"50401", | |
5be07b3e VT |
681 | # "family":"ipv4", |
682 | # "websocket":false | |
608cfed6 MA |
683 | # } |
684 | # ] | |
685 | # } | |
686 | # } | |
608cfed6 | 687 | ## |
05eb4a25 | 688 | { 'command': 'query-vnc', 'returns': 'VncInfo', |
8a9f1e1d | 689 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
690 | ## |
691 | # @query-vnc-servers: | |
692 | # | |
693 | # Returns a list of vnc servers. The list can be empty. | |
694 | # | |
695 | # Returns: a list of @VncInfo2 | |
696 | # | |
697 | # Since: 2.3 | |
698 | ## | |
05eb4a25 | 699 | { 'command': 'query-vnc-servers', 'returns': ['VncInfo2'], |
8a9f1e1d | 700 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
701 | |
702 | ## | |
703 | # @change-vnc-password: | |
704 | # | |
705 | # Change the VNC server password. | |
706 | # | |
26ec4e53 | 707 | # @password: the new password to use with VNC authentication |
608cfed6 MA |
708 | # |
709 | # Since: 1.1 | |
710 | # | |
a937b6aa MA |
711 | # Notes: An empty password in this command will set the password to |
712 | # the empty string. Existing clients are unaffected by executing | |
713 | # this command. | |
608cfed6 | 714 | ## |
b0ddeba2 MAL |
715 | { 'command': 'change-vnc-password', |
716 | 'data': { 'password': 'str' }, | |
8a9f1e1d | 717 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
718 | |
719 | ## | |
720 | # @VNC_CONNECTED: | |
721 | # | |
722 | # Emitted when a VNC client establishes a connection | |
723 | # | |
724 | # @server: server information | |
725 | # | |
726 | # @client: client information | |
727 | # | |
a937b6aa MA |
728 | # Note: This event is emitted before any authentication takes place, |
729 | # thus the authentication ID is not provided | |
608cfed6 | 730 | # |
9bc6e893 | 731 | # Since: 0.13 |
608cfed6 MA |
732 | # |
733 | # Example: | |
734 | # | |
735 | # <- { "event": "VNC_CONNECTED", | |
736 | # "data": { | |
aecba617 | 737 | # "server": { "auth": "sasl", "family": "ipv4", "websocket": false, |
608cfed6 MA |
738 | # "service": "5901", "host": "0.0.0.0" }, |
739 | # "client": { "family": "ipv4", "service": "58425", | |
aecba617 | 740 | # "host": "127.0.0.1", "websocket": false } }, |
608cfed6 | 741 | # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } } |
608cfed6 MA |
742 | ## |
743 | { 'event': 'VNC_CONNECTED', | |
744 | 'data': { 'server': 'VncServerInfo', | |
05eb4a25 | 745 | 'client': 'VncBasicInfo' }, |
8a9f1e1d | 746 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
747 | |
748 | ## | |
749 | # @VNC_INITIALIZED: | |
750 | # | |
a937b6aa MA |
751 | # Emitted after authentication takes place (if any) and the VNC |
752 | # session is made active | |
608cfed6 MA |
753 | # |
754 | # @server: server information | |
755 | # | |
756 | # @client: client information | |
757 | # | |
9bc6e893 | 758 | # Since: 0.13 |
608cfed6 MA |
759 | # |
760 | # Example: | |
761 | # | |
762 | # <- { "event": "VNC_INITIALIZED", | |
763 | # "data": { | |
aecba617 | 764 | # "server": { "auth": "sasl", "family": "ipv4", "websocket": false, |
608cfed6 | 765 | # "service": "5901", "host": "0.0.0.0"}, |
aecba617 | 766 | # "client": { "family": "ipv4", "service": "46089", "websocket": false, |
608cfed6 MA |
767 | # "host": "127.0.0.1", "sasl_username": "luiz" } }, |
768 | # "timestamp": { "seconds": 1263475302, "microseconds": 150772 } } | |
608cfed6 MA |
769 | ## |
770 | { 'event': 'VNC_INITIALIZED', | |
771 | 'data': { 'server': 'VncServerInfo', | |
05eb4a25 | 772 | 'client': 'VncClientInfo' }, |
8a9f1e1d | 773 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
774 | |
775 | ## | |
776 | # @VNC_DISCONNECTED: | |
777 | # | |
778 | # Emitted when the connection is closed | |
779 | # | |
780 | # @server: server information | |
781 | # | |
782 | # @client: client information | |
783 | # | |
9bc6e893 | 784 | # Since: 0.13 |
608cfed6 MA |
785 | # |
786 | # Example: | |
787 | # | |
788 | # <- { "event": "VNC_DISCONNECTED", | |
789 | # "data": { | |
aecba617 | 790 | # "server": { "auth": "sasl", "family": "ipv4", "websocket": false, |
608cfed6 | 791 | # "service": "5901", "host": "0.0.0.0" }, |
aecba617 | 792 | # "client": { "family": "ipv4", "service": "58425", "websocket": false, |
608cfed6 MA |
793 | # "host": "127.0.0.1", "sasl_username": "luiz" } }, |
794 | # "timestamp": { "seconds": 1262976601, "microseconds": 975795 } } | |
608cfed6 MA |
795 | ## |
796 | { 'event': 'VNC_DISCONNECTED', | |
797 | 'data': { 'server': 'VncServerInfo', | |
05eb4a25 | 798 | 'client': 'VncClientInfo' }, |
8a9f1e1d | 799 | 'if': 'CONFIG_VNC' } |
608cfed6 MA |
800 | |
801 | ## | |
802 | # = Input | |
803 | ## | |
804 | ||
805 | ## | |
806 | # @MouseInfo: | |
807 | # | |
808 | # Information about a mouse device. | |
809 | # | |
810 | # @name: the name of the mouse device | |
811 | # | |
812 | # @index: the index of the mouse device | |
813 | # | |
814 | # @current: true if this device is currently receiving mouse events | |
815 | # | |
a937b6aa MA |
816 | # @absolute: true if this device supports absolute coordinates as |
817 | # input | |
608cfed6 | 818 | # |
9bc6e893 | 819 | # Since: 0.14 |
608cfed6 MA |
820 | ## |
821 | { 'struct': 'MouseInfo', | |
822 | 'data': {'name': 'str', 'index': 'int', 'current': 'bool', | |
823 | 'absolute': 'bool'} } | |
824 | ||
825 | ## | |
826 | # @query-mice: | |
827 | # | |
828 | # Returns information about each active mouse device | |
829 | # | |
830 | # Returns: a list of @MouseInfo for each device | |
831 | # | |
9bc6e893 | 832 | # Since: 0.14 |
608cfed6 MA |
833 | # |
834 | # Example: | |
835 | # | |
836 | # -> { "execute": "query-mice" } | |
837 | # <- { "return": [ | |
838 | # { | |
839 | # "name":"QEMU Microsoft Mouse", | |
840 | # "index":0, | |
841 | # "current":false, | |
842 | # "absolute":false | |
843 | # }, | |
844 | # { | |
845 | # "name":"QEMU PS/2 Mouse", | |
846 | # "index":1, | |
847 | # "current":true, | |
848 | # "absolute":true | |
849 | # } | |
850 | # ] | |
851 | # } | |
608cfed6 MA |
852 | ## |
853 | { 'command': 'query-mice', 'returns': ['MouseInfo'] } | |
854 | ||
855 | ## | |
856 | # @QKeyCode: | |
857 | # | |
858 | # An enumeration of key name. | |
859 | # | |
860 | # This is used by the @send-key command. | |
861 | # | |
862 | # @unmapped: since 2.0 | |
a937b6aa | 863 | # |
608cfed6 | 864 | # @pause: since 2.0 |
a937b6aa | 865 | # |
608cfed6 | 866 | # @ro: since 2.4 |
a937b6aa | 867 | # |
608cfed6 | 868 | # @kp_comma: since 2.4 |
a937b6aa | 869 | # |
608cfed6 | 870 | # @kp_equals: since 2.6 |
a937b6aa | 871 | # |
608cfed6 | 872 | # @power: since 2.6 |
a937b6aa | 873 | # |
608cfed6 | 874 | # @hiragana: since 2.9 |
a937b6aa | 875 | # |
608cfed6 | 876 | # @henkan: since 2.9 |
a937b6aa | 877 | # |
608cfed6 MA |
878 | # @yen: since 2.9 |
879 | # | |
880 | # @sleep: since 2.10 | |
a937b6aa | 881 | # |
608cfed6 | 882 | # @wake: since 2.10 |
a937b6aa | 883 | # |
608cfed6 | 884 | # @audionext: since 2.10 |
a937b6aa | 885 | # |
608cfed6 | 886 | # @audioprev: since 2.10 |
a937b6aa | 887 | # |
608cfed6 | 888 | # @audiostop: since 2.10 |
a937b6aa | 889 | # |
608cfed6 | 890 | # @audioplay: since 2.10 |
a937b6aa | 891 | # |
608cfed6 | 892 | # @audiomute: since 2.10 |
a937b6aa | 893 | # |
608cfed6 | 894 | # @volumeup: since 2.10 |
a937b6aa | 895 | # |
608cfed6 | 896 | # @volumedown: since 2.10 |
a937b6aa | 897 | # |
608cfed6 | 898 | # @mediaselect: since 2.10 |
a937b6aa | 899 | # |
608cfed6 | 900 | # @mail: since 2.10 |
a937b6aa | 901 | # |
608cfed6 | 902 | # @calculator: since 2.10 |
a937b6aa | 903 | # |
608cfed6 | 904 | # @computer: since 2.10 |
a937b6aa | 905 | # |
608cfed6 | 906 | # @ac_home: since 2.10 |
a937b6aa | 907 | # |
608cfed6 | 908 | # @ac_back: since 2.10 |
a937b6aa | 909 | # |
608cfed6 | 910 | # @ac_forward: since 2.10 |
a937b6aa | 911 | # |
608cfed6 | 912 | # @ac_refresh: since 2.10 |
a937b6aa | 913 | # |
608cfed6 | 914 | # @ac_bookmarks: since 2.10 |
608cfed6 | 915 | # |
280b8da3 | 916 | # @muhenkan: since 2.12 |
a937b6aa | 917 | # |
280b8da3 M |
918 | # @katakanahiragana: since 2.12 |
919 | # | |
d7696ff8 | 920 | # @lang1: since 6.1 |
a937b6aa | 921 | # |
d7696ff8 AO |
922 | # @lang2: since 6.1 |
923 | # | |
ac19b516 | 924 | # @f13: since 8.0 |
a937b6aa | 925 | # |
ac19b516 | 926 | # @f14: since 8.0 |
a937b6aa | 927 | # |
ac19b516 | 928 | # @f15: since 8.0 |
a937b6aa | 929 | # |
ac19b516 | 930 | # @f16: since 8.0 |
a937b6aa | 931 | # |
ac19b516 | 932 | # @f17: since 8.0 |
a937b6aa | 933 | # |
ac19b516 | 934 | # @f18: since 8.0 |
a937b6aa | 935 | # |
ac19b516 | 936 | # @f19: since 8.0 |
a937b6aa | 937 | # |
ac19b516 | 938 | # @f20: since 8.0 |
a937b6aa | 939 | # |
ac19b516 | 940 | # @f21: since 8.0 |
a937b6aa | 941 | # |
ac19b516 | 942 | # @f22: since 8.0 |
a937b6aa | 943 | # |
ac19b516 | 944 | # @f23: since 8.0 |
a937b6aa | 945 | # |
ac19b516 WV |
946 | # @f24: since 8.0 |
947 | # | |
a937b6aa MA |
948 | # 'sysrq' was mistakenly added to hack around the fact that the ps2 |
949 | # driver was not generating correct scancodes sequences when | |
950 | # 'alt+print' was pressed. This flaw is now fixed and the 'sysrq' key | |
951 | # serves no further purpose. Any further use of 'sysrq' will be | |
952 | # transparently changed to 'print', so they are effectively synonyms. | |
80b857f0 | 953 | # |
9bc6e893 | 954 | # Since: 1.3 |
608cfed6 MA |
955 | ## |
956 | { 'enum': 'QKeyCode', | |
957 | 'data': [ 'unmapped', | |
958 | 'shift', 'shift_r', 'alt', 'alt_r', 'ctrl', | |
959 | 'ctrl_r', 'menu', 'esc', '1', '2', '3', '4', '5', '6', '7', '8', | |
960 | '9', '0', 'minus', 'equal', 'backspace', 'tab', 'q', 'w', 'e', | |
961 | 'r', 't', 'y', 'u', 'i', 'o', 'p', 'bracket_left', 'bracket_right', | |
962 | 'ret', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'semicolon', | |
963 | 'apostrophe', 'grave_accent', 'backslash', 'z', 'x', 'c', 'v', 'b', | |
964 | 'n', 'm', 'comma', 'dot', 'slash', 'asterisk', 'spc', 'caps_lock', | |
965 | 'f1', 'f2', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'f10', | |
966 | 'num_lock', 'scroll_lock', 'kp_divide', 'kp_multiply', | |
967 | 'kp_subtract', 'kp_add', 'kp_enter', 'kp_decimal', 'sysrq', 'kp_0', | |
968 | 'kp_1', 'kp_2', 'kp_3', 'kp_4', 'kp_5', 'kp_6', 'kp_7', 'kp_8', | |
969 | 'kp_9', 'less', 'f11', 'f12', 'print', 'home', 'pgup', 'pgdn', 'end', | |
970 | 'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again', | |
971 | 'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut', | |
972 | 'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause', | |
280b8da3 | 973 | 'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana', |
608cfed6 MA |
974 | 'kp_comma', 'kp_equals', 'power', 'sleep', 'wake', |
975 | 'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute', | |
976 | 'volumeup', 'volumedown', 'mediaselect', | |
977 | 'mail', 'calculator', 'computer', | |
d7696ff8 | 978 | 'ac_home', 'ac_back', 'ac_forward', 'ac_refresh', 'ac_bookmarks', |
ac19b516 | 979 | 'lang1', 'lang2','f13','f14','f15','f16','f17','f18','f19','f20','f21','f22','f23','f24' ] } |
608cfed6 | 980 | |
3cda299d MA |
981 | ## |
982 | # @KeyValueKind: | |
983 | # | |
984 | # Since: 1.3 | |
985 | ## | |
986 | { 'enum': 'KeyValueKind', | |
987 | 'data': [ 'number', 'qcode' ] } | |
988 | ||
989 | ## | |
990 | # @IntWrapper: | |
991 | # | |
992 | # Since: 1.3 | |
993 | ## | |
994 | { 'struct': 'IntWrapper', | |
995 | 'data': { 'data': 'int' } } | |
996 | ||
997 | ## | |
998 | # @QKeyCodeWrapper: | |
999 | # | |
1000 | # Since: 1.3 | |
1001 | ## | |
1002 | { 'struct': 'QKeyCodeWrapper', | |
1003 | 'data': { 'data': 'QKeyCode' } } | |
1004 | ||
608cfed6 MA |
1005 | ## |
1006 | # @KeyValue: | |
1007 | # | |
1008 | # Represents a keyboard key. | |
1009 | # | |
9bc6e893 | 1010 | # Since: 1.3 |
608cfed6 MA |
1011 | ## |
1012 | { 'union': 'KeyValue', | |
3cda299d MA |
1013 | 'base': { 'type': 'KeyValueKind' }, |
1014 | 'discriminator': 'type', | |
608cfed6 | 1015 | 'data': { |
3cda299d MA |
1016 | 'number': 'IntWrapper', |
1017 | 'qcode': 'QKeyCodeWrapper' } } | |
608cfed6 MA |
1018 | |
1019 | ## | |
1020 | # @send-key: | |
1021 | # | |
1022 | # Send keys to guest. | |
1023 | # | |
a937b6aa MA |
1024 | # @keys: An array of @KeyValue elements. All @KeyValues in this array |
1025 | # are simultaneously sent to the guest. A @KeyValue.number value | |
1026 | # is sent directly to the guest, while @KeyValue.qcode must be a | |
1027 | # valid @QKeyCode value | |
608cfed6 | 1028 | # |
a937b6aa MA |
1029 | # @hold-time: time to delay key up events, milliseconds. Defaults to |
1030 | # 100 | |
608cfed6 | 1031 | # |
a937b6aa MA |
1032 | # Returns: |
1033 | # - Nothing on success | |
1034 | # - If key is unknown or redundant, GenericError | |
608cfed6 | 1035 | # |
9bc6e893 | 1036 | # Since: 1.3 |
608cfed6 MA |
1037 | # |
1038 | # Example: | |
1039 | # | |
1040 | # -> { "execute": "send-key", | |
1041 | # "arguments": { "keys": [ { "type": "qcode", "data": "ctrl" }, | |
1042 | # { "type": "qcode", "data": "alt" }, | |
1043 | # { "type": "qcode", "data": "delete" } ] } } | |
1044 | # <- { "return": {} } | |
608cfed6 MA |
1045 | ## |
1046 | { 'command': 'send-key', | |
1047 | 'data': { 'keys': ['KeyValue'], '*hold-time': 'int' } } | |
1048 | ||
1049 | ## | |
1050 | # @InputButton: | |
1051 | # | |
1052 | # Button of a pointer input device (mouse, tablet). | |
1053 | # | |
1054 | # @side: front side button of a 5-button mouse (since 2.9) | |
1055 | # | |
1056 | # @extra: rear side button of a 5-button mouse (since 2.9) | |
1057 | # | |
2bfb10df SL |
1058 | # @touch: screen contact on a multi-touch device (since 8.1) |
1059 | # | |
608cfed6 MA |
1060 | # Since: 2.0 |
1061 | ## | |
1062 | { 'enum' : 'InputButton', | |
1063 | 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side', | |
2bfb10df | 1064 | 'extra', 'wheel-left', 'wheel-right', 'touch' ] } |
608cfed6 MA |
1065 | |
1066 | ## | |
1067 | # @InputAxis: | |
1068 | # | |
1069 | # Position axis of a pointer input device (mouse, tablet). | |
1070 | # | |
1071 | # Since: 2.0 | |
1072 | ## | |
1073 | { 'enum' : 'InputAxis', | |
1074 | 'data' : [ 'x', 'y' ] } | |
1075 | ||
2bfb10df SL |
1076 | ## |
1077 | # @InputMultiTouchType: | |
1078 | # | |
1079 | # Type of a multi-touch event. | |
1080 | # | |
1081 | # Since: 8.1 | |
1082 | ## | |
1083 | { 'enum' : 'InputMultiTouchType', | |
1084 | 'data' : [ 'begin', 'update', 'end', 'cancel', 'data' ] } | |
1085 | ||
1086 | ||
608cfed6 MA |
1087 | ## |
1088 | # @InputKeyEvent: | |
1089 | # | |
1090 | # Keyboard input event. | |
1091 | # | |
c0ac533b | 1092 | # @key: Which key this event is for. |
a937b6aa | 1093 | # |
c0ac533b | 1094 | # @down: True for key-down and false for key-up events. |
608cfed6 MA |
1095 | # |
1096 | # Since: 2.0 | |
1097 | ## | |
1098 | { 'struct' : 'InputKeyEvent', | |
1099 | 'data' : { 'key' : 'KeyValue', | |
1100 | 'down' : 'bool' } } | |
1101 | ||
1102 | ## | |
1103 | # @InputBtnEvent: | |
1104 | # | |
1105 | # Pointer button input event. | |
1106 | # | |
1107 | # @button: Which button this event is for. | |
a937b6aa | 1108 | # |
c0ac533b | 1109 | # @down: True for key-down and false for key-up events. |
608cfed6 MA |
1110 | # |
1111 | # Since: 2.0 | |
1112 | ## | |
1113 | { 'struct' : 'InputBtnEvent', | |
1114 | 'data' : { 'button' : 'InputButton', | |
1115 | 'down' : 'bool' } } | |
1116 | ||
1117 | ## | |
1118 | # @InputMoveEvent: | |
1119 | # | |
1120 | # Pointer motion input event. | |
1121 | # | |
26ec4e53 | 1122 | # @axis: Which axis is referenced by @value. |
a937b6aa MA |
1123 | # |
1124 | # @value: Pointer position. For absolute coordinates the valid range | |
1125 | # is 0 -> 0x7ffff | |
608cfed6 MA |
1126 | # |
1127 | # Since: 2.0 | |
1128 | ## | |
1129 | { 'struct' : 'InputMoveEvent', | |
1130 | 'data' : { 'axis' : 'InputAxis', | |
1131 | 'value' : 'int' } } | |
1132 | ||
2bfb10df SL |
1133 | ## |
1134 | # @InputMultiTouchEvent: | |
1135 | # | |
1136 | # MultiTouch input event. | |
1137 | # | |
1138 | # @slot: Which slot has generated the event. | |
1139 | # | |
1140 | # @tracking-id: ID to correlate this event with previously generated | |
1141 | # events. | |
1142 | # | |
1143 | # @axis: Which axis is referenced by @value. | |
1144 | # | |
1145 | # @value: Contact position. | |
1146 | # | |
1147 | # Since: 8.1 | |
1148 | ## | |
1149 | { 'struct' : 'InputMultiTouchEvent', | |
1150 | 'data' : { 'type' : 'InputMultiTouchType', | |
1151 | 'slot' : 'int', | |
1152 | 'tracking-id': 'int', | |
1153 | 'axis' : 'InputAxis', | |
1154 | 'value' : 'int' } } | |
1155 | ||
b6fd5434 MA |
1156 | ## |
1157 | # @InputEventKind: | |
1158 | # | |
2bfb10df SL |
1159 | # @key: a keyboard input event |
1160 | # | |
1161 | # @btn: a pointer button input event | |
1162 | # | |
1163 | # @rel: a relative pointer motion input event | |
1164 | # | |
1165 | # @abs: an absolute pointer motion input event | |
1166 | # | |
1167 | # @mtt: a multi-touch input event | |
1168 | # | |
b6fd5434 MA |
1169 | # Since: 2.0 |
1170 | ## | |
1171 | { 'enum': 'InputEventKind', | |
2bfb10df | 1172 | 'data': [ 'key', 'btn', 'rel', 'abs', 'mtt' ] } |
b6fd5434 MA |
1173 | |
1174 | ## | |
1175 | # @InputKeyEventWrapper: | |
1176 | # | |
1177 | # Since: 2.0 | |
1178 | ## | |
1179 | { 'struct': 'InputKeyEventWrapper', | |
1180 | 'data': { 'data': 'InputKeyEvent' } } | |
1181 | ||
1182 | ## | |
1183 | # @InputBtnEventWrapper: | |
1184 | # | |
1185 | # Since: 2.0 | |
1186 | ## | |
1187 | { 'struct': 'InputBtnEventWrapper', | |
1188 | 'data': { 'data': 'InputBtnEvent' } } | |
1189 | ||
1190 | ## | |
1191 | # @InputMoveEventWrapper: | |
1192 | # | |
1193 | # Since: 2.0 | |
1194 | ## | |
1195 | { 'struct': 'InputMoveEventWrapper', | |
1196 | 'data': { 'data': 'InputMoveEvent' } } | |
1197 | ||
2bfb10df SL |
1198 | ## |
1199 | # @InputMultiTouchEventWrapper: | |
1200 | # | |
1201 | # Since: 8.1 | |
1202 | ## | |
1203 | { 'struct': 'InputMultiTouchEventWrapper', | |
1204 | 'data': { 'data': 'InputMultiTouchEvent' } } | |
1205 | ||
608cfed6 MA |
1206 | ## |
1207 | # @InputEvent: | |
1208 | # | |
1209 | # Input event union. | |
1210 | # | |
2bfb10df | 1211 | # @type: the type of input event |
608cfed6 MA |
1212 | # |
1213 | # Since: 2.0 | |
1214 | ## | |
1215 | { 'union' : 'InputEvent', | |
b6fd5434 MA |
1216 | 'base': { 'type': 'InputEventKind' }, |
1217 | 'discriminator': 'type', | |
1218 | 'data' : { 'key' : 'InputKeyEventWrapper', | |
1219 | 'btn' : 'InputBtnEventWrapper', | |
1220 | 'rel' : 'InputMoveEventWrapper', | |
2bfb10df SL |
1221 | 'abs' : 'InputMoveEventWrapper', |
1222 | 'mtt' : 'InputMultiTouchEventWrapper' } } | |
608cfed6 MA |
1223 | |
1224 | ## | |
1225 | # @input-send-event: | |
1226 | # | |
1227 | # Send input event(s) to guest. | |
1228 | # | |
608cfed6 MA |
1229 | # The @device and @head parameters can be used to send the input event |
1230 | # to specific input devices in case (a) multiple input devices of the | |
1231 | # same kind are added to the virtual machine and (b) you have | |
1232 | # configured input routing (see docs/multiseat.txt) for those input | |
1233 | # devices. The parameters work exactly like the device and head | |
1234 | # properties of input devices. If @device is missing, only devices | |
1235 | # that have no input routing config are admissible. If @device is | |
1236 | # specified, both input devices with and without input routing config | |
1237 | # are admissible, but devices with input routing config take | |
1238 | # precedence. | |
1239 | # | |
43d7c2d0 | 1240 | # @device: display device to send event(s) to. |
a937b6aa MA |
1241 | # |
1242 | # @head: head to send event(s) to, in case the display device supports | |
1243 | # multiple scanouts. | |
1244 | # | |
43d7c2d0 PM |
1245 | # @events: List of InputEvent union. |
1246 | # | |
1247 | # Returns: Nothing on success. | |
1248 | # | |
608cfed6 MA |
1249 | # Since: 2.6 |
1250 | # | |
1251 | # Note: The consoles are visible in the qom tree, under | |
a937b6aa MA |
1252 | # /backend/console[$index]. They have a device link and head |
1253 | # property, so it is possible to map which console belongs to | |
1254 | # which device and display. | |
608cfed6 | 1255 | # |
37fa48a4 | 1256 | # Examples: |
608cfed6 MA |
1257 | # |
1258 | # 1. Press left mouse button. | |
1259 | # | |
1260 | # -> { "execute": "input-send-event", | |
1261 | # "arguments": { "device": "video0", | |
1262 | # "events": [ { "type": "btn", | |
1263 | # "data" : { "down": true, "button": "left" } } ] } } | |
1264 | # <- { "return": {} } | |
1265 | # | |
1266 | # -> { "execute": "input-send-event", | |
1267 | # "arguments": { "device": "video0", | |
1268 | # "events": [ { "type": "btn", | |
1269 | # "data" : { "down": false, "button": "left" } } ] } } | |
1270 | # <- { "return": {} } | |
1271 | # | |
1272 | # 2. Press ctrl-alt-del. | |
1273 | # | |
1274 | # -> { "execute": "input-send-event", | |
1275 | # "arguments": { "events": [ | |
1276 | # { "type": "key", "data" : { "down": true, | |
1277 | # "key": {"type": "qcode", "data": "ctrl" } } }, | |
1278 | # { "type": "key", "data" : { "down": true, | |
1279 | # "key": {"type": "qcode", "data": "alt" } } }, | |
1280 | # { "type": "key", "data" : { "down": true, | |
1281 | # "key": {"type": "qcode", "data": "delete" } } } ] } } | |
1282 | # <- { "return": {} } | |
1283 | # | |
1284 | # 3. Move mouse pointer to absolute coordinates (20000, 400). | |
1285 | # | |
1286 | # -> { "execute": "input-send-event" , | |
1287 | # "arguments": { "events": [ | |
1288 | # { "type": "abs", "data" : { "axis": "x", "value" : 20000 } }, | |
1289 | # { "type": "abs", "data" : { "axis": "y", "value" : 400 } } ] } } | |
1290 | # <- { "return": {} } | |
608cfed6 MA |
1291 | ## |
1292 | { 'command': 'input-send-event', | |
1293 | 'data': { '*device': 'str', | |
1294 | '*head' : 'int', | |
1295 | 'events' : [ 'InputEvent' ] } } | |
0c8d7065 | 1296 | |
0c8d7065 GH |
1297 | ## |
1298 | # @DisplayGTK: | |
1299 | # | |
1300 | # GTK display options. | |
1301 | # | |
1302 | # @grab-on-hover: Grab keyboard input on mouse hover. | |
a937b6aa | 1303 | # |
e8b1386e | 1304 | # @zoom-to-fit: Zoom guest display to fit into the host window. When |
a937b6aa MA |
1305 | # turned off the host window will be resized instead. In case the |
1306 | # display device can notify the guest on window resizes | |
1307 | # (virtio-gpu) this will default to "on", assuming the guest will | |
1308 | # resize the display to match the window size then. Otherwise it | |
1309 | # defaults to "off". (Since 3.1) | |
1310 | # | |
1311 | # @show-tabs: Display the tab bar for switching between the various | |
9e272073 | 1312 | # graphical interfaces (e.g. VGA and virtual console character |
a937b6aa MA |
1313 | # devices) by default. (Since 7.1) |
1314 | # | |
1315 | # @show-menubar: Display the main window menubar. Defaults to "on". | |
1316 | # (Since 8.0) | |
0c8d7065 GH |
1317 | # |
1318 | # Since: 2.12 | |
0c8d7065 GH |
1319 | ## |
1320 | { 'struct' : 'DisplayGTK', | |
e8b1386e | 1321 | 'data' : { '*grab-on-hover' : 'bool', |
c34a9338 | 1322 | '*zoom-to-fit' : 'bool', |
dbccb1a5 BM |
1323 | '*show-tabs' : 'bool', |
1324 | '*show-menubar' : 'bool' } } | |
0c8d7065 | 1325 | |
d4dc4ab1 ES |
1326 | ## |
1327 | # @DisplayEGLHeadless: | |
1328 | # | |
1329 | # EGL headless display options. | |
1330 | # | |
a937b6aa MA |
1331 | # @rendernode: Which DRM render node should be used. Default is the |
1332 | # first available node on the host. | |
d4dc4ab1 ES |
1333 | # |
1334 | # Since: 3.1 | |
d4dc4ab1 ES |
1335 | ## |
1336 | { 'struct' : 'DisplayEGLHeadless', | |
1337 | 'data' : { '*rendernode' : 'str' } } | |
1338 | ||
142ca628 MAL |
1339 | ## |
1340 | # @DisplayDBus: | |
1341 | # | |
1342 | # DBus display options. | |
1343 | # | |
1344 | # @addr: The D-Bus bus address (default to the session bus). | |
1345 | # | |
a937b6aa MA |
1346 | # @rendernode: Which DRM render node should be used. Default is the |
1347 | # first available node on the host. | |
142ca628 | 1348 | # |
99997823 | 1349 | # @p2p: Whether to use peer-to-peer connections (accepted through |
a937b6aa | 1350 | # @add_client). |
99997823 | 1351 | # |
739362d4 MAL |
1352 | # @audiodev: Use the specified DBus audiodev to export audio. |
1353 | # | |
142ca628 | 1354 | # Since: 7.0 |
142ca628 MAL |
1355 | ## |
1356 | { 'struct' : 'DisplayDBus', | |
1357 | 'data' : { '*rendernode' : 'str', | |
99997823 | 1358 | '*addr': 'str', |
739362d4 MAL |
1359 | '*p2p': 'bool', |
1360 | '*audiodev': 'str' } } | |
142ca628 | 1361 | |
406dfba6 AB |
1362 | ## |
1363 | # @DisplayGLMode: | |
1364 | # | |
1365 | # Display OpenGL mode. | |
1366 | # | |
1367 | # @off: Disable OpenGL (default). | |
a937b6aa MA |
1368 | # |
1369 | # @on: Use OpenGL, pick context type automatically. Would better be | |
1370 | # named 'auto' but is called 'on' for backward compatibility with | |
1371 | # bool type. | |
1372 | # | |
406dfba6 | 1373 | # @core: Use OpenGL with Core (desktop) Context. |
a937b6aa | 1374 | # |
406dfba6 AB |
1375 | # @es: Use OpenGL with ES (embedded systems) Context. |
1376 | # | |
1377 | # Since: 3.0 | |
406dfba6 | 1378 | ## |
fbeed197 MA |
1379 | { 'enum' : 'DisplayGLMode', |
1380 | 'data' : [ 'off', 'on', 'core', 'es' ] } | |
62f27922 | 1381 | |
2f8b7cd5 ST |
1382 | ## |
1383 | # @DisplayCurses: | |
1384 | # | |
1385 | # Curses display options. | |
1386 | # | |
23e46452 | 1387 | # @charset: Font charset used by guest (default: CP437). |
2f8b7cd5 ST |
1388 | # |
1389 | # Since: 4.0 | |
2f8b7cd5 ST |
1390 | ## |
1391 | { 'struct' : 'DisplayCurses', | |
1392 | 'data' : { '*charset' : 'str' } } | |
1393 | ||
48941a52 CE |
1394 | ## |
1395 | # @DisplayCocoa: | |
1396 | # | |
1397 | # Cocoa display options. | |
1398 | # | |
1399 | # @left-command-key: Enable/disable forwarding of left command key to | |
a937b6aa MA |
1400 | # guest. Allows command-tab window switching on the host without |
1401 | # sending this key to the guest when "off". Defaults to "on" | |
48941a52 | 1402 | # |
a937b6aa MA |
1403 | # @full-grab: Capture all key presses, including system combos. This |
1404 | # requires accessibility permissions, since it performs a global | |
1405 | # grab on key events. (default: off) See | |
1406 | # https://support.apple.com/en-in/guide/mac-help/mh32356/mac | |
f844cdb9 | 1407 | # |
a937b6aa MA |
1408 | # @swap-opt-cmd: Swap the Option and Command keys so that their key |
1409 | # codes match their position on non-Mac keyboards and you can use | |
1410 | # Meta/Super and Alt where you expect them. (default: off) | |
4797adce | 1411 | # |
48941a52 CE |
1412 | # Since: 7.0 |
1413 | ## | |
1414 | { 'struct': 'DisplayCocoa', | |
1415 | 'data': { | |
f844cdb9 | 1416 | '*left-command-key': 'bool', |
4797adce GNS |
1417 | '*full-grab': 'bool', |
1418 | '*swap-opt-cmd': 'bool' | |
48941a52 CE |
1419 | } } |
1420 | ||
9eafdeea TH |
1421 | ## |
1422 | # @HotKeyMod: | |
1423 | # | |
1424 | # Set of modifier keys that need to be held for shortcut key actions. | |
1425 | # | |
1426 | # Since: 7.1 | |
1427 | ## | |
1428 | { 'enum' : 'HotKeyMod', | |
1429 | 'data' : [ 'lctrl-lalt', 'lshift-lctrl-lalt', 'rctrl' ] } | |
1430 | ||
1431 | ## | |
1432 | # @DisplaySDL: | |
1433 | # | |
1434 | # SDL2 display options. | |
1435 | # | |
a937b6aa MA |
1436 | # @grab-mod: Modifier keys that should be pressed together with the |
1437 | # "G" key to release the mouse grab. | |
9eafdeea TH |
1438 | # |
1439 | # Since: 7.1 | |
1440 | ## | |
1441 | { 'struct' : 'DisplaySDL', | |
1442 | 'data' : { '*grab-mod' : 'HotKeyMod' } } | |
1443 | ||
0c8d7065 GH |
1444 | ## |
1445 | # @DisplayType: | |
1446 | # | |
1447 | # Display (user interface) type. | |
1448 | # | |
a937b6aa MA |
1449 | # @default: The default user interface, selecting from the first |
1450 | # available of gtk, sdl, cocoa, and vnc. | |
42176d77 | 1451 | # |
a937b6aa MA |
1452 | # @none: No user interface or video output display. The guest will |
1453 | # still see an emulated graphics card, but its output will not be | |
1454 | # displayed to the QEMU user. | |
42176d77 MAL |
1455 | # |
1456 | # @gtk: The GTK user interface. | |
1457 | # | |
1458 | # @sdl: The SDL user interface. | |
1459 | # | |
1460 | # @egl-headless: No user interface, offload GL operations to a local | |
a937b6aa MA |
1461 | # DRI device. Graphical display need to be paired with VNC or |
1462 | # Spice. (Since 3.1) | |
42176d77 MAL |
1463 | # |
1464 | # @curses: Display video output via curses. For graphics device | |
a937b6aa MA |
1465 | # models which support a text mode, QEMU can display this output |
1466 | # using a curses/ncurses interface. Nothing is displayed when the | |
1467 | # graphics device is in graphical mode or if the graphics device | |
1468 | # does not support a text mode. Generally only the VGA device | |
1469 | # models support text mode. | |
42176d77 MAL |
1470 | # |
1471 | # @cocoa: The Cocoa user interface. | |
1472 | # | |
d8aec9d9 | 1473 | # @spice-app: Set up a Spice server and run the default associated |
a937b6aa MA |
1474 | # application to connect to it. The server will redirect the |
1475 | # serial console and QEMU monitors. (Since 4.0) | |
d8aec9d9 | 1476 | # |
a937b6aa | 1477 | # @dbus: Start a D-Bus service for the display. (Since 7.0) |
142ca628 | 1478 | # |
0c8d7065 | 1479 | # Since: 2.12 |
0c8d7065 GH |
1480 | ## |
1481 | { 'enum' : 'DisplayType', | |
66c2207f TH |
1482 | 'data' : [ |
1483 | { 'name': 'default' }, | |
1484 | { 'name': 'none' }, | |
8a9f1e1d MAL |
1485 | { 'name': 'gtk', 'if': 'CONFIG_GTK' }, |
1486 | { 'name': 'sdl', 'if': 'CONFIG_SDL' }, | |
39324b49 | 1487 | { 'name': 'egl-headless', 'if': 'CONFIG_OPENGL' }, |
8a9f1e1d MAL |
1488 | { 'name': 'curses', 'if': 'CONFIG_CURSES' }, |
1489 | { 'name': 'cocoa', 'if': 'CONFIG_COCOA' }, | |
142ca628 MAL |
1490 | { 'name': 'spice-app', 'if': 'CONFIG_SPICE' }, |
1491 | { 'name': 'dbus', 'if': 'CONFIG_DBUS_DISPLAY' } | |
1492 | ] | |
1493 | } | |
0c8d7065 GH |
1494 | |
1495 | ## | |
1496 | # @DisplayOptions: | |
1497 | # | |
1498 | # Display (user interface) options. | |
1499 | # | |
c0ac533b | 1500 | # @type: Which DisplayType qemu should use. |
a937b6aa MA |
1501 | # |
1502 | # @full-screen: Start user interface in fullscreen mode | |
1503 | # (default: off). | |
1504 | # | |
1505 | # @window-close: Allow to quit qemu with window close button | |
1506 | # (default: on). | |
1507 | # | |
1508 | # @show-cursor: Force showing the mouse cursor (default: off). | |
1509 | # (since: 5.0) | |
1510 | # | |
c0ac533b | 1511 | # @gl: Enable OpenGL support (default: off). |
0c8d7065 GH |
1512 | # |
1513 | # Since: 2.12 | |
0c8d7065 GH |
1514 | ## |
1515 | { 'union' : 'DisplayOptions', | |
1516 | 'base' : { 'type' : 'DisplayType', | |
1517 | '*full-screen' : 'bool', | |
1518 | '*window-close' : 'bool', | |
7027bdd7 | 1519 | '*show-cursor' : 'bool', |
62f27922 | 1520 | '*gl' : 'DisplayGLMode' }, |
0c8d7065 | 1521 | 'discriminator' : 'type', |
66c2207f | 1522 | 'data' : { |
8a9f1e1d | 1523 | 'gtk': { 'type': 'DisplayGTK', 'if': 'CONFIG_GTK' }, |
48941a52 | 1524 | 'cocoa': { 'type': 'DisplayCocoa', 'if': 'CONFIG_COCOA' }, |
8a9f1e1d | 1525 | 'curses': { 'type': 'DisplayCurses', 'if': 'CONFIG_CURSES' }, |
66c2207f | 1526 | 'egl-headless': { 'type': 'DisplayEGLHeadless', |
39324b49 | 1527 | 'if': 'CONFIG_OPENGL' }, |
9eafdeea TH |
1528 | 'dbus': { 'type': 'DisplayDBus', 'if': 'CONFIG_DBUS_DISPLAY' }, |
1529 | 'sdl': { 'type': 'DisplaySDL', 'if': 'CONFIG_SDL' } | |
66c2207f TH |
1530 | } |
1531 | } | |
e1ca8f7e GH |
1532 | |
1533 | ## | |
1534 | # @query-display-options: | |
1535 | # | |
1536 | # Returns information about display configuration | |
1537 | # | |
1538 | # Returns: @DisplayOptions | |
1539 | # | |
1540 | # Since: 3.1 | |
e1ca8f7e GH |
1541 | ## |
1542 | { 'command': 'query-display-options', | |
1543 | 'returns': 'DisplayOptions' } | |
9cc07651 ZC |
1544 | |
1545 | ## | |
1546 | # @DisplayReloadType: | |
1547 | # | |
1548 | # Available DisplayReload types. | |
1549 | # | |
1550 | # @vnc: VNC display | |
1551 | # | |
1552 | # Since: 6.0 | |
9cc07651 ZC |
1553 | ## |
1554 | { 'enum': 'DisplayReloadType', | |
1555 | 'data': ['vnc'] } | |
1556 | ||
1557 | ## | |
1558 | # @DisplayReloadOptionsVNC: | |
1559 | # | |
1560 | # Specify the VNC reload options. | |
1561 | # | |
1562 | # @tls-certs: reload tls certs or not. | |
1563 | # | |
1564 | # Since: 6.0 | |
9cc07651 ZC |
1565 | ## |
1566 | { 'struct': 'DisplayReloadOptionsVNC', | |
1567 | 'data': { '*tls-certs': 'bool' } } | |
1568 | ||
1569 | ## | |
1570 | # @DisplayReloadOptions: | |
1571 | # | |
1572 | # Options of the display configuration reload. | |
1573 | # | |
1574 | # @type: Specify the display type. | |
1575 | # | |
1576 | # Since: 6.0 | |
9cc07651 ZC |
1577 | ## |
1578 | { 'union': 'DisplayReloadOptions', | |
1579 | 'base': {'type': 'DisplayReloadType'}, | |
1580 | 'discriminator': 'type', | |
1581 | 'data': { 'vnc': 'DisplayReloadOptionsVNC' } } | |
1582 | ||
1583 | ## | |
1584 | # @display-reload: | |
1585 | # | |
1586 | # Reload display configuration. | |
1587 | # | |
1588 | # Returns: Nothing on success. | |
1589 | # | |
1590 | # Since: 6.0 | |
1591 | # | |
1592 | # Example: | |
1593 | # | |
1594 | # -> { "execute": "display-reload", | |
1595 | # "arguments": { "type": "vnc", "tls-certs": true } } | |
1596 | # <- { "return": {} } | |
9cc07651 ZC |
1597 | ## |
1598 | { 'command': 'display-reload', | |
1599 | 'data': 'DisplayReloadOptions', | |
1600 | 'boxed' : true } | |
abea1946 VSO |
1601 | |
1602 | ## | |
1603 | # @DisplayUpdateType: | |
1604 | # | |
1605 | # Available DisplayUpdate types. | |
1606 | # | |
1607 | # @vnc: VNC display | |
1608 | # | |
1609 | # Since: 7.1 | |
abea1946 VSO |
1610 | ## |
1611 | { 'enum': 'DisplayUpdateType', | |
1612 | 'data': ['vnc'] } | |
1613 | ||
1614 | ## | |
1615 | # @DisplayUpdateOptionsVNC: | |
1616 | # | |
1617 | # Specify the VNC reload options. | |
1618 | # | |
a937b6aa MA |
1619 | # @addresses: If specified, change set of addresses to listen for |
1620 | # connections. Addresses configured for websockets are not | |
1621 | # touched. | |
abea1946 VSO |
1622 | # |
1623 | # Since: 7.1 | |
abea1946 VSO |
1624 | ## |
1625 | { 'struct': 'DisplayUpdateOptionsVNC', | |
1626 | 'data': { '*addresses': ['SocketAddress'] } } | |
1627 | ||
1628 | ## | |
1629 | # @DisplayUpdateOptions: | |
1630 | # | |
1631 | # Options of the display configuration reload. | |
1632 | # | |
1633 | # @type: Specify the display type. | |
1634 | # | |
1635 | # Since: 7.1 | |
abea1946 VSO |
1636 | ## |
1637 | { 'union': 'DisplayUpdateOptions', | |
1638 | 'base': {'type': 'DisplayUpdateType'}, | |
1639 | 'discriminator': 'type', | |
1640 | 'data': { 'vnc': 'DisplayUpdateOptionsVNC' } } | |
1641 | ||
1642 | ## | |
1643 | # @display-update: | |
1644 | # | |
1645 | # Update display configuration. | |
1646 | # | |
1647 | # Returns: Nothing on success. | |
1648 | # | |
1649 | # Since: 7.1 | |
1650 | # | |
1651 | # Example: | |
1652 | # | |
1653 | # -> { "execute": "display-update", | |
1654 | # "arguments": { "type": "vnc", "addresses": | |
1655 | # [ { "type": "inet", "host": "0.0.0.0", | |
1656 | # "port": "5901" } ] } } | |
1657 | # <- { "return": {} } | |
abea1946 VSO |
1658 | ## |
1659 | { 'command': 'display-update', | |
1660 | 'data': 'DisplayUpdateOptions', | |
1661 | 'boxed' : true } | |
f9e1ef74 JQ |
1662 | |
1663 | ## | |
1664 | # @client_migrate_info: | |
1665 | # | |
1666 | # Set migration information for remote display. This makes the server | |
1667 | # ask the client to automatically reconnect using the new parameters | |
1668 | # once migration finished successfully. Only implemented for SPICE. | |
1669 | # | |
1670 | # @protocol: must be "spice" | |
a937b6aa | 1671 | # |
f9e1ef74 | 1672 | # @hostname: migration target hostname |
a937b6aa | 1673 | # |
f9e1ef74 | 1674 | # @port: spice tcp port for plaintext channels |
a937b6aa | 1675 | # |
f9e1ef74 | 1676 | # @tls-port: spice tcp port for tls-secured channels |
a937b6aa | 1677 | # |
f9e1ef74 JQ |
1678 | # @cert-subject: server certificate subject |
1679 | # | |
1680 | # Since: 0.14 | |
1681 | # | |
1682 | # Example: | |
1683 | # | |
1684 | # -> { "execute": "client_migrate_info", | |
1685 | # "arguments": { "protocol": "spice", | |
1686 | # "hostname": "virt42.lab.kraxel.org", | |
1687 | # "port": 1234 } } | |
1688 | # <- { "return": {} } | |
f9e1ef74 JQ |
1689 | ## |
1690 | { 'command': 'client_migrate_info', | |
1691 | 'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int', | |
1692 | '*tls-port': 'int', '*cert-subject': 'str' } } |