1<?xml version="1.0" encoding="utf-8"?> 2<node> 3 <!-- 4 org.qemu.Display1.VM: 5 6 This interface is implemented on ``/org/qemu/Display1/VM``. 7 --> 8 <interface name="org.qemu.Display1.VM"> 9 <!-- 10 Name: 11 12 The name of the VM. 13 --> 14 <property name="Name" type="s" access="read"/> 15 16 <!-- 17 UUID: 18 19 The UUID of the VM. 20 --> 21 <property name="UUID" type="s" access="read"/> 22 23 <!-- 24 ConsoleIDs: 25 26 The list of consoles available on ``/org/qemu/Display1/Console_$id``. 27 --> 28 <property name="ConsoleIDs" type="au" access="read"/> 29 </interface> 30 31 <!-- 32 org.qemu.Display1.Console: 33 34 This interface is implemented on ``/org/qemu/Display1/Console_$id``. You 35 may discover available consoles through introspection or with the 36 :dbus:prop:`org.qemu.Display1.VM.ConsoleIDs` property. 37 38 A console is attached to a video device head. It may be "Graphic" or 39 "Text" (see :dbus:prop:`Type` and other properties). 40 41 Interactions with a console may be done with 42 :dbus:iface:`org.qemu.Display1.Keyboard` and 43 :dbus:iface:`org.qemu.Display1.Mouse` interfaces when available. 44 --> 45 <interface name="org.qemu.Display1.Console"> 46 <!-- 47 RegisterListener: 48 @listener: a Unix socket FD, for peer-to-peer D-Bus communication. 49 50 Register a console listener, which will receive display updates, until 51 it is disconnected. 52 53 Multiple listeners may be registered simultaneously. 54 55 The listener is expected to implement the 56 :dbus:iface:`org.qemu.Display1.Listener` interface. 57 --> 58 <method name="RegisterListener"> 59 <arg type="h" name="listener" direction="in"/> 60 </method> 61 62 <!-- 63 SetUIInfo: 64 @width_mm: the physical display width in millimeters. 65 @height_mm: the physical display height in millimeters. 66 @xoff: horizontal offset, in pixels. 67 @yoff: vertical offset, in pixels. 68 @width: console width, in pixels. 69 @height: console height, in pixels. 70 71 Modify the dimensions and display settings. 72 --> 73 <method name="SetUIInfo"> 74 <arg name="width_mm" type="q" direction="in"/> 75 <arg name="height_mm" type="q" direction="in"/> 76 <arg name="xoff" type="i" direction="in"/> 77 <arg name="yoff" type="i" direction="in"/> 78 <arg name="width" type="u" direction="in"/> 79 <arg name="height" type="u" direction="in"/> 80 </method> 81 82 <!-- 83 Label: 84 85 A user-friendly name for the console (for ex: "VGA"). 86 --> 87 <property name="Label" type="s" access="read"/> 88 89 <!-- 90 Head: 91 92 Graphical device head number. 93 --> 94 <property name="Head" type="u" access="read"/> 95 96 <!-- 97 Type: 98 99 Console type ("Graphic" or "Text"). 100 --> 101 <property name="Type" type="s" access="read"/> 102 103 <!-- 104 Width: 105 106 Console width, in pixels. 107 --> 108 <property name="Width" type="u" access="read"/> 109 110 <!-- 111 Height: 112 113 Console height, in pixels. 114 --> 115 <property name="Height" type="u" access="read"/> 116 117 <!-- 118 DeviceAddress: 119 120 The device address (ex: "pci/0000/02.0"). 121 --> 122 <property name="DeviceAddress" type="s" access="read"/> 123 </interface> 124 125 <!-- 126 org.qemu.Display1.Keyboard: 127 128 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see 129 :dbus:iface:`~org.qemu.Display1.Console`). 130 --> 131 <interface name="org.qemu.Display1.Keyboard"> 132 <!-- 133 Press: 134 @keycode: QEMU key number (xtkbd + special re-encoding of high bit) 135 136 Send a key press event. 137 --> 138 <method name="Press"> 139 <arg type="u" name="keycode" direction="in"/> 140 </method> 141 142 <!-- 143 Release: 144 @keycode: QEMU key number (xtkbd + special re-encoding of high bit) 145 146 Send a key release event. 147 --> 148 <method name="Release"> 149 <arg type="u" name="keycode" direction="in"/> 150 </method> 151 152 <!-- 153 Modifiers: 154 155 The active keyboard modifiers:: 156 157 Scroll = 1 << 0 158 Num = 1 << 1 159 Caps = 1 << 2 160 --> 161 <property name="Modifiers" type="u" access="read"/> 162 </interface> 163 164 <!-- 165 org.qemu.Display1.Mouse: 166 167 This interface in implemented on ``/org/qemu/Display1/Console_$id`` (see 168 :dbus:iface:`~org.qemu.Display1.Console` documentation). 169 170 .. _dbus-button-values: 171 172 **Button values**:: 173 174 Left = 0 175 Middle = 1 176 Right = 2 177 Wheel-up = 3 178 Wheel-down = 4 179 Side = 5 180 Extra = 6 181 --> 182 <interface name="org.qemu.Display1.Mouse"> 183 <!-- 184 Press: 185 @button: :ref:`button value<dbus-button-values>`. 186 187 Send a mouse button press event. 188 --> 189 <method name="Press"> 190 <arg type="u" name="button" direction="in"/> 191 </method> 192 193 <!-- 194 Release: 195 @button: :ref:`button value<dbus-button-values>`. 196 197 Send a mouse button release event. 198 --> 199 <method name="Release"> 200 <arg type="u" name="button" direction="in"/> 201 </method> 202 203 <!-- 204 SetAbsPosition: 205 @x: X position, in pixels. 206 @y: Y position, in pixels. 207 208 Set the mouse pointer position. 209 210 Returns an error if not :dbus:prop:`IsAbsolute`. 211 --> 212 <method name="SetAbsPosition"> 213 <arg type="u" name="x" direction="in"/> 214 <arg type="u" name="y" direction="in"/> 215 </method> 216 217 <!-- 218 RelMotion: 219 @dx: X-delta, in pixels. 220 @dy: Y-delta, in pixels. 221 222 Move the mouse pointer position, relative to the current position. 223 224 Returns an error if :dbus:prop:`IsAbsolute`. 225 --> 226 <method name="RelMotion"> 227 <arg type="i" name="dx" direction="in"/> 228 <arg type="i" name="dy" direction="in"/> 229 </method> 230 231 <!-- 232 IsAbsolute: 233 234 Whether the mouse is using absolute movements. 235 --> 236 <property name="IsAbsolute" type="b" access="read"/> 237 </interface> 238 239 <!-- 240 org.qemu.Display1.Listener: 241 242 This client-side interface must be available on 243 ``/org/qemu/Display1/Listener`` when registering the peer-to-peer 244 connection with :dbus:meth:`~org.qemu.Display1.Console.Register`. 245 --> 246 <interface name="org.qemu.Display1.Listener"> 247 <!-- 248 Scanout: 249 @width: display width, in pixels. 250 @height: display height, in pixels. 251 @stride: data stride, in bytes. 252 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``). 253 @data: image data. 254 255 Resize and update the display content. 256 257 The data to transfer for the display update may be large. The preferred 258 scanout method is :dbus:meth:`ScanoutDMABUF`, used whenever possible. 259 --> 260 <method name="Scanout"> 261 <arg type="u" name="width" direction="in"/> 262 <arg type="u" name="height" direction="in"/> 263 <arg type="u" name="stride" direction="in"/> 264 <arg type="u" name="pixman_format" direction="in"/> 265 <arg type="ay" name="data" direction="in"> 266 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> 267 </arg> 268 </method> 269 270 <!-- 271 Update: 272 @x: X update position, in pixels. 273 @y: Y update position, in pixels. 274 @width: update width, in pixels. 275 @height: update height, in pixels. 276 @stride: data stride, in bytes. 277 @pixman_format: image format (ex: ``PIXMAN_X8R8G8B8``). 278 @data: display image data. 279 280 Update the display content. 281 282 This method is only called after a :dbus:meth:`Scanout` call. 283 --> 284 <method name="Update"> 285 <arg type="i" name="x" direction="in"/> 286 <arg type="i" name="y" direction="in"/> 287 <arg type="i" name="width" direction="in"/> 288 <arg type="i" name="height" direction="in"/> 289 <arg type="u" name="stride" direction="in"/> 290 <arg type="u" name="pixman_format" direction="in"/> 291 <arg type="ay" name="data" direction="in"> 292 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> 293 </arg> 294 </method> 295 296 <!-- 297 ScanoutDMABUF: 298 @dmabuf: the DMABUF file descriptor. 299 @width: display width, in pixels. 300 @height: display height, in pixels. 301 @stride: stride, in bytes. 302 @fourcc: DMABUF fourcc. 303 @modifier: DMABUF modifier. 304 @y0_top: whether Y position 0 is the top or not. 305 306 Resize and update the display content with a DMABUF. 307 --> 308 <method name="ScanoutDMABUF"> 309 <arg type="h" name="dmabuf" direction="in"/> 310 <arg type="u" name="width" direction="in"/> 311 <arg type="u" name="height" direction="in"/> 312 <arg type="u" name="stride" direction="in"/> 313 <arg type="u" name="fourcc" direction="in"/> 314 <!-- xywh? --> 315 <arg type="t" name="modifier" direction="in"/> 316 <arg type="b" name="y0_top" direction="in"/> 317 </method> 318 319 <!-- 320 UpdateDMABUF: 321 @x: the X update position, in pixels. 322 @y: the Y update position, in pixels. 323 @width: the update width, in pixels. 324 @height: the update height, in pixels. 325 326 Update the display content with the current DMABUF and the given region. 327 --> 328 <method name="UpdateDMABUF"> 329 <arg type="i" name="x" direction="in"/> 330 <arg type="i" name="y" direction="in"/> 331 <arg type="i" name="width" direction="in"/> 332 <arg type="i" name="height" direction="in"/> 333 </method> 334 335 <!-- 336 Disable: 337 338 Disable the display (turn it off). 339 --> 340 <method name="Disable"> 341 </method> 342 343 <!-- 344 MouseSet: 345 @x: X mouse position, in pixels. 346 @y: Y mouse position, in pixels. 347 @on: whether the mouse is visible or not. 348 349 Set the mouse position and visibility. 350 --> 351 <method name="MouseSet"> 352 <arg type="i" name="x" direction="in"/> 353 <arg type="i" name="y" direction="in"/> 354 <arg type="i" name="on" direction="in"/> 355 </method> 356 357 <!-- 358 CursorDefine: 359 @width: cursor width, in pixels. 360 @height: cursor height, in pixels. 361 @hot_x: hot-spot X position, in pixels. 362 @hot_y: hot-spot Y position, in pixels. 363 @data: the cursor data. 364 365 Set the mouse cursor shape and hot-spot. The "data" must be ARGB, 32-bit 366 per pixel. 367 --> 368 <method name="CursorDefine"> 369 <arg type="i" name="width" direction="in"/> 370 <arg type="i" name="height" direction="in"/> 371 <arg type="i" name="hot_x" direction="in"/> 372 <arg type="i" name="hot_y" direction="in"/> 373 <arg type="ay" name="data" direction="in"> 374 <annotation name="org.gtk.GDBus.C.ForceGVariant" value="true"/> 375 </arg> 376 </method> 377 </interface> 378</node> 379