| 1 | |
| 2 | |
| 3 | Client-to-Server DMX Extension to the X Protocol |
| 4 | |
| 5 | $Date$, $Revision$ |
| 6 | |
| 7 | Rickard E. (Rik) Faith (faith@redhat.com) |
| 8 | Kevin E. Martin (kem@redhat.com) |
| 9 | |
| 10 | Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina. |
| 11 | |
| 12 | Permission is hereby granted, free of charge, to any person |
| 13 | obtaining a copy of this software and associated documentation files |
| 14 | (the "Software"), to deal in the Software without restriction, |
| 15 | including without limitation on the rights to use, copy, modify, |
| 16 | merge, publish, distribute, sublicense, and/or sell copies of the |
| 17 | Software, and to permit persons to whom the Software is furnished to |
| 18 | do so, subject to the following conditions: |
| 19 | |
| 20 | The above copyright notice and this permission notice (including the |
| 21 | next paragraph) shall be included in all copies or substantial |
| 22 | portions of the Software. |
| 23 | |
| 24 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| 25 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 26 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 27 | NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS |
| 28 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| 29 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 30 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 31 | SOFTWARE. |
| 32 | |
| 33 | |
| 34 | |
| 35 | 1. Overview |
| 36 | |
| 37 | The client-to-server DMX extension to the X protocol (DMX) provides |
| 38 | normal client applications with the ability to determine information |
| 39 | about the characteristics of the Xdmx server and the back-end X |
| 40 | servers that DMX is using. |
| 41 | |
| 42 | The name for this extension is "DMX". |
| 43 | |
| 44 | |
| 45 | |
| 46 | 2. Syntactic conventions |
| 47 | |
| 48 | This document uses the same syntactic conventions requests and data |
| 49 | types as [X11R6.4]. |
| 50 | |
| 51 | |
| 52 | |
| 53 | 3. Data types |
| 54 | |
| 55 | No new data types are defined by this extension. All data types |
| 56 | referenced in this document are defined in [X11R6.4]. |
| 57 | |
| 58 | |
| 59 | |
| 60 | 4. Requests |
| 61 | |
| 62 | DMXQueryVersion |
| 63 | ==> |
| 64 | majorVersion: CARD32 |
| 65 | minorVersion: CARD32 |
| 66 | patchVersion: CARD32 |
| 67 | |
| 68 | Errors: None |
| 69 | |
| 70 | The protocol this extension actually supports is indicated by |
| 71 | majorVersion and minorVersion (patchVersion indicates the |
| 72 | patchlevel and is for informational purposes only). |
| 73 | |
| 74 | Any incompatible changes to the protocol should be indicated by |
| 75 | incrementing majorVersion. |
| 76 | |
| 77 | Small, upward-compatible changes should be indicated by incrementing |
| 78 | minorVersion. |
| 79 | |
| 80 | Servers that support the protocol defined in this document will |
| 81 | return a majorVersion of 2 and a minorVersion of 2. |
| 82 | |
| 83 | (Version 1.5 was the last version in the 1.x series; version 2.0 was |
| 84 | a testing version that was poorly defined.) |
| 85 | |
| 86 | |
| 87 | |
| 88 | DMXSync |
| 89 | ==> |
| 90 | status: CARD32 |
| 91 | |
| 92 | Errors: None |
| 93 | |
| 94 | This request was first supported in version 1.5 of this protocol. |
| 95 | The status field in the reply was introduced in version 2.0 of this |
| 96 | protocol. Since the status field is ignored, no changes to the |
| 97 | underlying protocol were required. |
| 98 | |
| 99 | This request flushes all pending protocol requests between the Xdmx |
| 100 | server and each back-end X server. It is used by clients that |
| 101 | talk directly to back-end X servers to ensure that all pending Xdmx |
| 102 | requests have reached all back-end servers and have been processed |
| 103 | by those servers. |
| 104 | |
| 105 | The value of status is always 0. |
| 106 | |
| 107 | |
| 108 | |
| 109 | DMXForceWindowCreation |
| 110 | window: CARD32 |
| 111 | ==> |
| 112 | status: CARD32 |
| 113 | |
| 114 | Errors: Window |
| 115 | |
| 116 | This request was first supported in version 1.2 of this protocol. |
| 117 | This request was changed to have a reply in version 2.0 of this |
| 118 | protocol. The old version of this request was deprecated and will |
| 119 | return BadImplementation. |
| 120 | |
| 121 | When using the lazy window creation optimization, windows are not |
| 122 | created on the back-end X servers until they are required. This |
| 123 | request forces the immediate creation of the window requested. |
| 124 | |
| 125 | The value of status is always 0. |
| 126 | |
| 127 | |
| 128 | |
| 129 | |
| 130 | DMXGetScreenCount |
| 131 | ==> |
| 132 | screenCount: CARD32 |
| 133 | |
| 134 | Errors: None |
| 135 | |
| 136 | This request returns the number of screens that the Xdmx server |
| 137 | controls. Since a DMX screen usually fills all of the available |
| 138 | area on a back-end server, there is usually a one-to-one |
| 139 | correspondence between DMX screens and backend servers. However, it |
| 140 | is also possible for a DMX screen to cover only part of the |
| 141 | available area on a back-end server, and for more than one DMX |
| 142 | screen to occupy different parts of the visible area on the same |
| 143 | back-end server. |
| 144 | |
| 145 | A DMX screen may be managed as a regular X screen in the Xdmx server |
| 146 | or may be joined with other DMX screens using Xinerama. |
| 147 | |
| 148 | |
| 149 | |
| 150 | DMXGetScreenAttributes |
| 151 | physicalScreen: CARD32 |
| 152 | ==> |
| 153 | displayName: STRING8 |
| 154 | logicalScreen: CARD32 |
| 155 | screenWindowWidth: CARD16 |
| 156 | screenWindowHeight: CARD16 |
| 157 | screenWindowXoffset: INT16 |
| 158 | screenWindowYoffset: INT16 |
| 159 | rootWindowWidth: CARD16 |
| 160 | rootWindowHeight: CARD16 |
| 161 | rootWindowXoffset: INT16 |
| 162 | rootWindowYoffset: INT16 |
| 163 | rootWindowXorigin: INT16 |
| 164 | rootWindowYorigin: INT16 |
| 165 | |
| 166 | Errors: Value |
| 167 | |
| 168 | This request is new in version 2.0 of this protocol. The old |
| 169 | DMXGetScreenInformation request is deprecated and will now return |
| 170 | BadImplementation. |
| 171 | |
| 172 | This request returns attributes about a single DMX screen. |
| 173 | |
| 174 | The physicalScreen value is between 0 and screenCount-1, inclusive |
| 175 | (values outside this range will result in a Value error). |
| 176 | |
| 177 | The displayname is the name used to open the display, either from |
| 178 | the Xdmx command-line or from the configuration file. |
| 179 | |
| 180 | The logicalScreen value is the value of the screen that that Xdmx |
| 181 | server exports to clients. When Xinerama is in use, this value is |
| 182 | typically 0 for all values of physicalScreen. If Xinerama is in |
| 183 | use, the rootWindowXOrigin and rootWindowYOrigin values specify |
| 184 | where the physical screen is positioned in the global Xinerama |
| 185 | coordinate system. Otherwise, these values are set to 0. |
| 186 | |
| 187 | The screenWindow values comprise a geometry specification (see |
| 188 | X(7x)) for the location of the DMX screen on the back-end screen. |
| 189 | The coordinant system of the back-end display is used. |
| 190 | |
| 191 | The first four rootWindow values comprise a geometry specification |
| 192 | (see X(7x)) for the location of the root window on the screen |
| 193 | window. The coordinant system of the screen window is used. In |
| 194 | most cases, the root window will have the same geometry as the DMX |
| 195 | screen window, and will occupy the same area of the back-end |
| 196 | display. (This would not be the case, for example, if automatic |
| 197 | projector alignment is used.) |
| 198 | |
| 199 | |
| 200 | |
| 201 | DMXChangeScreensAttributes |
| 202 | screenCount: CARD32 |
| 203 | maskCount: CARD32 |
| 204 | screens: LISTofCARD32 |
| 205 | valueMasks: LISTofCARD32 |
| 206 | valueList: LISTofVALUES |
| 207 | ==> |
| 208 | status: CARD32 |
| 209 | errorScreen: CARD32 |
| 210 | |
| 211 | Errors: Length, Alloc |
| 212 | |
| 213 | This request was first supported in version 2.0 of this protocol. |
| 214 | (A singular version of this request with the ability to change some |
| 215 | RootWindow attributes was supported in version 1.3 of this protocol, |
| 216 | has been deprecated, and will return BadImplementation.) |
| 217 | |
| 218 | This request changes the geometries and positions of the DMX screen |
| 219 | and DMX root windows on the back-end X servers. |
| 220 | |
| 221 | The valueMask and valueList specify which attributes are to be |
| 222 | changed. The possible values are: |
| 223 | |
| 224 | Attribute Type |
| 225 | |
| 226 | ScreenWindowWidth CARD16 |
| 227 | ScreenWindowHeight CARD16 |
| 228 | ScreenWindowXoffset INT16 |
| 229 | ScreenWindowYoffset INT16 |
| 230 | RootWindowWidth CARD16 |
| 231 | RootWindowHeight CARD16 |
| 232 | RootWindowXoffset INT16 |
| 233 | RootWindowYoffset INT16 |
| 234 | RootWindowXorigin INT16 |
| 235 | RootWindowYorigin INT16 |
| 236 | |
| 237 | The attribute values have the same meaning as do the corresponding |
| 238 | values for DMXGetScreenAttributes. |
| 239 | |
| 240 | Non-fatal errors will be returned in status (0 otherwise): |
| 241 | DmxBadXinerama: Xinerama is not active |
| 242 | DmxBadValue: The resulting position is not allowed |
| 243 | (e.g., one corner is outside the bounding box) |
| 244 | On error, errorScreen will contain the number of the screen that |
| 245 | caused the first error. |
| 246 | |
| 247 | |
| 248 | |
| 249 | DMXAddScreen |
| 250 | displayName: STRING8 |
| 251 | physicalScreen: CARD32 |
| 252 | valueMask: CARD32 |
| 253 | valueList: LISTofVALUES |
| 254 | ==> |
| 255 | status: CARD32 |
| 256 | physicalScreen: CARD32 |
| 257 | |
| 258 | Errors: Length, Alloc, Value |
| 259 | |
| 260 | This request was first supported in version 2.2 of this protocol. |
| 261 | |
| 262 | This request re-attaches the back-end physicalScreen to the Xdmx |
| 263 | server. Only back-end screens that have been previously detached |
| 264 | with DMXRemoveScreen may be added. The name of the back-end display |
| 265 | is given in displayName, and this will replace the name of the |
| 266 | back-end screen that was detached. Both the displayName and |
| 267 | physicalScreen must be correct for this request to work. |
| 268 | |
| 269 | The valueMask and valueList specify the attributes to be used. The |
| 270 | possible values are: |
| 271 | |
| 272 | Attribute Type |
| 273 | |
| 274 | ScreenWindowWidth CARD16 |
| 275 | ScreenWindowHeight CARD16 |
| 276 | ScreenWindowXoffset INT16 |
| 277 | ScreenWindowYoffset INT16 |
| 278 | RootWindowWidth CARD16 |
| 279 | RootWindowHeight CARD16 |
| 280 | RootWindowXoffset INT16 |
| 281 | RootWindowYoffset INT16 |
| 282 | RootWindowXorigin INT16 |
| 283 | RootWindowYorigin INT16 |
| 284 | |
| 285 | The attribute values have the same meaning as do the corresponding |
| 286 | values for DMXGetScreenAttributes. |
| 287 | |
| 288 | On success, status will be 0 and physicalScreen will contain the new |
| 289 | screen number. On failure, status will be non-zero. The status |
| 290 | will be 1 if any of the following occured: |
| 291 | * the -addremovescreens command-line option was not specified on |
| 292 | the Xdmx command line |
| 293 | * the value of physicalScreen is out of range |
| 294 | * physicalScreen has not been detached (with DMXRemoveScreen) |
| 295 | * displayName cannot be opened |
| 296 | * the visuals of displayname do not match the visuals that Xdmx |
| 297 | is using |
| 298 | * the screen data for displayName does not match the data for the |
| 299 | previously removed display |
| 300 | The status will be DmxBadValue if the attribute values are out of |
| 301 | range. |
| 302 | |
| 303 | |
| 304 | |
| 305 | DMXRemoveScreen |
| 306 | physicalScreen: CARD32 |
| 307 | ==> |
| 308 | status: CARD32 |
| 309 | |
| 310 | Errors: None |
| 311 | |
| 312 | This request was first supported in version 2.2 of this protocol. |
| 313 | |
| 314 | This request detaches the physicalScreen screen. |
| 315 | |
| 316 | On success, status will be 0. On failure, the status will 1 if any |
| 317 | of the following occur: |
| 318 | * the -addremovescreens command-line option was not specified on |
| 319 | the Xdmx command line |
| 320 | * the value of physicalScreen is out of range |
| 321 | * the back-end screen has already been detached. |
| 322 | |
| 323 | |
| 324 | |
| 325 | DMXGetWindowAttributes |
| 326 | window: CARD32 |
| 327 | ==> |
| 328 | screenCount: CARD32 |
| 329 | screens: LISTofCARD32 |
| 330 | windows: LISTofCARD32 |
| 331 | pos: LISTofRECTANGLE |
| 332 | vis: LISTofRECTANGLE |
| 333 | |
| 334 | Errors: Window, Alloc |
| 335 | |
| 336 | This request computes the return values incorrectly for version 1.0 |
| 337 | of this protocol. Version 1.1 of this protocol conforms to this |
| 338 | description. In version 2.0, the name of this request was changed |
| 339 | from DMXGetWindowInformation. However, since the request itself did |
| 340 | not change, no changes to the underlying protocol were made. |
| 341 | |
| 342 | Given a window ID on the Xdmx server, this request returns data |
| 343 | about how the window is represented on the back-end X servers. For |
| 344 | each back-end X server that displays a portion of the window, the |
| 345 | following information is returned: |
| 346 | 1) the number of the physical screen containing that portion |
| 347 | (which can be used with the DMXGetScreenAttributes request |
| 348 | to obtain more information about the screen), |
| 349 | 2) the window ID on the back-end X server of the window |
| 350 | containing that portion, |
| 351 | 3) the position and dimensions of the window on the back-end, in |
| 352 | screen coordinates, and |
| 353 | 4) the visible area of the window on the back-end, in |
| 354 | window-relative coordinates (all zeros for windows that are |
| 355 | not visible). |
| 356 | Note that DMX allows multiple back-end windows to overlap in their |
| 357 | view of the DMX logical window. Further, a logical window does not |
| 358 | have to be completely covered by back-end windows -- there may be |
| 359 | gaps. |
| 360 | |
| 361 | As an example, consider a 500x500 window that spans the top two |
| 362 | 1024x768 back-end displays (A and B) of a 2048x1536 DMX display |
| 363 | composed of 4 1024x768 back-end displays arranged in a cube: |
| 364 | A B |
| 365 | C D |
| 366 | |
| 367 | In this case, the DMXGetWindowAttributes call would return the |
| 368 | following information for the 500x500 window: |
| 369 | |
| 370 | display A: 500x500 window at 1024-250,0 (relative to back end) |
| 371 | with 250x500 visible at 0,0 (relative to window origin) |
| 372 | |
| 373 | display B: 500x500 window at -250,0 (relative to back end) |
| 374 | with 250x500 visible at 250,0 (relative to window origin) |
| 375 | |
| 376 | display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0 |
| 377 | |
| 378 | display D: 500x500 window at -250,-768 with 0x0 visible at 0,0 |
| 379 | |
| 380 | Note that if the specified window has not yet been mapped when |
| 381 | DMXGetWindowAttributes is called, then a subsequent XMapWindow call |
| 382 | might be buffered in xlib while requests directly to the back-end X |
| 383 | servers are processed. This race condition can be solved by calling |
| 384 | DMXSync before talking directly to the back-end X servers. |
| 385 | |
| 386 | |
| 387 | |
| 388 | DMXGetDesktopAttributes |
| 389 | ==> |
| 390 | width: INT16 |
| 391 | height: INT16 |
| 392 | shiftX: INT16 |
| 393 | shiftY: INT16 |
| 394 | |
| 395 | Errors: None |
| 396 | |
| 397 | This request was first supported in version 2.0 of this protocol. |
| 398 | |
| 399 | This request returns the size of the bounding box of the whole |
| 400 | screen in width and height. The shiftX and shiftY values will |
| 401 | always be 0. The global bounding box is computed whether or not |
| 402 | Xinerama is active, and may be larger than the Xinerama screen size |
| 403 | because of information in the configuration file. |
| 404 | |
| 405 | |
| 406 | |
| 407 | DMXChangeDesktopAttributes |
| 408 | valueMask: BITMASK |
| 409 | valueList: LISTofVALUE |
| 410 | ==> |
| 411 | status: CARD32 |
| 412 | |
| 413 | Errors: Length, Value |
| 414 | |
| 415 | This request was first supported in version 2.0 of this protocol. |
| 416 | |
| 417 | This request resizes the bounding box of the whole screen when using |
| 418 | the Xinerama extension. Otherwise, it has no effect on the screen |
| 419 | layout. The valueMask and valueList specify which attributes are to |
| 420 | be changed. The possible values are: |
| 421 | |
| 422 | Attriubute Type |
| 423 | |
| 424 | Width INT16 |
| 425 | Height INT16 |
| 426 | ShiftX INT16 |
| 427 | ShiftY INT16 |
| 428 | |
| 429 | Width and Height specify the new width and height for the bounding |
| 430 | box. ShiftX and ShiftY specify where the Xinerama origin will be |
| 431 | placed with respect to the origin of the new bounding box. This |
| 432 | allows the left and upper edges of the bounding box to be changed |
| 433 | without changing the visual position of the windows on the desktop. |
| 434 | If Width or Height is not specified, the current values will be |
| 435 | used. If ShiftX or ShiftY is not specified, 0 will be used. |
| 436 | |
| 437 | All coordinants are in the global DMX coordinant system. If |
| 438 | Xinerama is not active, this request is not useful. |
| 439 | |
| 440 | Non-fatal errors will be returned in status (0 otherwise): |
| 441 | DmxBadXinerama: Xinerama is not active |
| 442 | DmxBadValue: The size of the bounding box is too large |
| 443 | |
| 444 | |
| 445 | |
| 446 | DMXGetInputCount |
| 447 | ==> |
| 448 | inputCount: CARD32 |
| 449 | |
| 450 | This request was first supported in version 1.1 of this protocol. |
| 451 | |
| 452 | This request returns the number of input devices connected to the |
| 453 | Xdmx server. This number is the same as that returned by |
| 454 | XListInputDevices, but is available even when the XInput extension |
| 455 | is not supported. |
| 456 | |
| 457 | |
| 458 | |
| 459 | DMXGetInputAttributes |
| 460 | deviceId: CARD32 |
| 461 | ==> |
| 462 | inputType: CARD32 |
| 463 | physicalScreen: CARD32 |
| 464 | physicalId: CARD32 |
| 465 | isCore: BOOL |
| 466 | sendsCore: BOOL |
| 467 | detached: BOOL |
| 468 | name: STRING8 |
| 469 | |
| 470 | Errors: Value |
| 471 | |
| 472 | This request was first supported in version 1.1 of this protocol. |
| 473 | In version 2.0, the name of this request was changed from |
| 474 | DMXGetInputInformation. However, since the request itself did not |
| 475 | change, no changes to the underlying protocol were made. In version |
| 476 | 2.2, the name of detached was changed from reservation. There was |
| 477 | no change in underlying protocol. |
| 478 | |
| 479 | This request returns information about the specified input device |
| 480 | that cannot be obtained from the XListInputDeivices call. The |
| 481 | deviceId is the same as that used by the XListInputDevices call, and |
| 482 | must be in the range 0 to inputCount-1, inclusive (values outside |
| 483 | this range will result in a Value error). |
| 484 | |
| 485 | The value of inputType will always be valid, and will be one of the |
| 486 | following values: |
| 487 | 0 for local (and dummy) devices, |
| 488 | 1 for console devices, and |
| 489 | 2 for back-end devices. |
| 490 | |
| 491 | For local devices, all other fields returned, except isCore and |
| 492 | sendsCore, are invalid. |
| 493 | |
| 494 | For console devices, the physicalScreen and physicalID will be |
| 495 | invalid, and the name will return the name of the X server on which |
| 496 | the console window is displayed. |
| 497 | |
| 498 | For back-end devices, the physicalScreen will identify the back-end |
| 499 | display and can be used as an argument to DMXGetScreenAttributes to |
| 500 | obtain more information; the physicalId will be the XInput device id |
| 501 | on the back-end X server; and the name will be invalid (since it |
| 502 | does not provide any additional information that cannot be obtained |
| 503 | with DMXGetScreenAttributes). |
| 504 | |
| 505 | If isCore is True, then this device is active as a true core input |
| 506 | device and will send core events. If sendsCore is True, then this |
| 507 | device is an XInput extension device, but sends core events instead |
| 508 | of extension events. Note that this behavior is different from that |
| 509 | of XFree86 or Xorg, where XInput extension devices may send both |
| 510 | extension events and core events. |
| 511 | |
| 512 | If detached is True, then this device has been detached and is no |
| 513 | longer producing input events. The device may be reattached using |
| 514 | DMXAddInput. |
| 515 | |
| 516 | |
| 517 | |
| 518 | DMXAddInput |
| 519 | displayName: STRING8 |
| 520 | valueMask: CARD32 |
| 521 | valueList: LISTofVALUES |
| 522 | ==> |
| 523 | status: CARD32 |
| 524 | physicalId: CARD32 |
| 525 | |
| 526 | Errors: Value, Access |
| 527 | |
| 528 | This request was first supported in version 2.2 of this protocol. |
| 529 | |
| 530 | The valueMask and valueList specify the attributes to be used. The |
| 531 | possible values are: |
| 532 | |
| 533 | Attribute Type |
| 534 | |
| 535 | InputType CARD32 |
| 536 | InputPhysicalScreen CARD32 |
| 537 | InputSendsCore BOOL |
| 538 | |
| 539 | This request attaches an input device to the Xdmx server. The value |
| 540 | of inputType will be one: |
| 541 | 1 for console devices, and |
| 542 | 2 for back-end devices. |
| 543 | Other values of InputType will return a BadValue error. Local |
| 544 | devices (inputType=0 in DMXGetInputAttributes) cannot be attached or |
| 545 | removed. For console devices, displayName will store the name of |
| 546 | the display to be used. |
| 547 | |
| 548 | For back-end devices, InputPhysicalScreen will specify the screen |
| 549 | number. BadValue will be returned if the screen number is out of |
| 550 | range. BadAccess will be returned if the input has already been |
| 551 | attached or if the backend screen is currently detached. |
| 552 | |
| 553 | If InputSendsCore is True, the new device will be added as a true |
| 554 | core device. |
| 555 | |
| 556 | If a device was removed with DMXRemoveInput an attempt will be made |
| 557 | to reconnect the previous devices (InputSendsCore is ignored in this |
| 558 | case). |
| 559 | |
| 560 | |
| 561 | |
| 562 | DMXRemoveInput |
| 563 | physicalId: CARD32 |
| 564 | ==> |
| 565 | status: CARD32 |
| 566 | |
| 567 | Errors: Value, Access |
| 568 | |
| 569 | This request was first supported in version 2.2 of this protocol. |
| 570 | |
| 571 | This request detaches the input device with physicalId, and all |
| 572 | associated inputs (e.g., if the physicalId is a backend mouse, and a |
| 573 | keyboard is also attached to the backend, then both devices will be |
| 574 | detached). If the physicalId is outside the valid range (0 to one |
| 575 | less than the value returned by DMXInputCount), BadValue is |
| 576 | returned. If the physicalId has already been detached, BadAccess is |
| 577 | returned. The status is always 0. |
| 578 | |
| 579 | |
| 580 | |
| 581 | 5. Events |
| 582 | |
| 583 | No new events are defined by this extension. |
| 584 | |
| 585 | |
| 586 | |
| 587 | 6. Errors |
| 588 | |
| 589 | No new events are defined by this extension. |
| 590 | |
| 591 | |
| 592 | |
| 593 | 7. Encoding |
| 594 | |
| 595 | Deprecated DMX opcodes: |
| 596 | DMXGetScreenInformation 2 |
| 597 | DMXForceWindowCreation 6 |
| 598 | DMXReconfigureScreen 7 |
| 599 | |
| 600 | Valid DMX opcodes: |
| 601 | DMXQueryVersion 0 |
| 602 | DMXSync 8 |
| 603 | DMXForceWindowCreation 9 |
| 604 | |
| 605 | DMXGetScreenCount 1 |
| 606 | DMXGetScreenAttributes 10 |
| 607 | DMXChangeScreensAttributes 11 |
| 608 | DMXAddScreen 12 |
| 609 | DMXRemoveScreen 13 |
| 610 | |
| 611 | DMXGetWindowAttributes 3 |
| 612 | |
| 613 | DMXGetDesktopAttributes 14 |
| 614 | DMXChangeDesktopAttributes 15 |
| 615 | |
| 616 | DMXGetInputCount 4 |
| 617 | DMXGetInputAttributes 5 |
| 618 | DMXAddInput 16 |
| 619 | DMXRemoveInput 17 |
| 620 | |
| 621 | DMXQueryVersion |
| 622 | 1 CARD8 opcode (X assigned) |
| 623 | 1 0 DMX opcode (X_DMXQueryVersion) |
| 624 | 2 1 request length |
| 625 | ==> |
| 626 | 1 1 Reply |
| 627 | 1 unused |
| 628 | 2 CARD16 sequence number |
| 629 | 4 0 reply length |
| 630 | 4 CARD32 majorVersion |
| 631 | 4 CARD32 minorVersion |
| 632 | 4 CARD32 patchVersion |
| 633 | 12 unused |
| 634 | |
| 635 | DMXSync |
| 636 | 1 CARD8 opcode (X assigned) |
| 637 | 1 8 DMX opcode (X_DMXSync) |
| 638 | 2 1 request length |
| 639 | ==> |
| 640 | 1 1 Reply |
| 641 | 1 unused |
| 642 | 2 CARD16 sequence number |
| 643 | 4 0 reply length |
| 644 | 4 CARD32 status |
| 645 | 20 unused |
| 646 | |
| 647 | DMXForceWindowCreation |
| 648 | 1 CARD8 opcode (X assigned) |
| 649 | 1 9 DMX opcode (X_DMXForceWindowCreation) |
| 650 | 2 2 request length |
| 651 | 4 CARD32 window |
| 652 | ==> |
| 653 | 1 1 Reply |
| 654 | 1 unused |
| 655 | 2 CARD16 sequence number |
| 656 | 4 0 reply length |
| 657 | 4 CARD32 status |
| 658 | 20 unused |
| 659 | |
| 660 | |
| 661 | DMXGetScreenCount |
| 662 | 1 CARD8 opcode (X assigned) |
| 663 | 1 1 DMX opcode (X_DMXGetScreenCount) |
| 664 | 2 1 request length |
| 665 | ==> |
| 666 | 1 1 Reply |
| 667 | 1 unused |
| 668 | 2 CARD16 sequence number |
| 669 | 4 0 reply length |
| 670 | 4 CARD32 screenCount |
| 671 | 20 unused |
| 672 | |
| 673 | DMXGetScreenAttributes |
| 674 | 1 CARD8 opcode (X assigned) |
| 675 | 1 10 DMX opcode (X_DMXGetScreenAttributes) |
| 676 | 2 2 request length |
| 677 | 4 CARD32 physicalScreen |
| 678 | ==> |
| 679 | 1 1 Reply |
| 680 | 1 unused |
| 681 | 2 CARD16 sequence number |
| 682 | 4 1+(n+p)/4 reply length |
| 683 | 4 n displayNameLength |
| 684 | 4 CARD32 logicalScreen |
| 685 | 2 CARD16 screenWindowWidth |
| 686 | 2 CARD16 screenWindowHeight |
| 687 | 2 INT16 screenWindowXoffset |
| 688 | 2 INT16 screenWindowYoffset |
| 689 | 2 CARD16 rootWindowWidth |
| 690 | 2 CARD16 rootWindowHeight |
| 691 | 2 INT16 rootWindowXoffset |
| 692 | 2 INT16 rootWindowYoffset |
| 693 | 2 INT16 rootWindowXorigin |
| 694 | 2 INT16 rootWindowYorigin |
| 695 | n displayName |
| 696 | p pad(n) |
| 697 | |
| 698 | DMXChangeScreensAttributes |
| 699 | 1 CARD8 opcode (X assigned) |
| 700 | 1 11 DMX opcode (X_DMXChangeScreenAttributes) |
| 701 | 2 3+s+m+n request length |
| 702 | 4 s screenCount |
| 703 | 4 m maskCount |
| 704 | 4s LISTofCARD32 screens |
| 705 | 4m LISTofCARD32 valueMasks |
| 706 | 4n LISTofVALUES valueList |
| 707 | ==> |
| 708 | 1 1 Reply |
| 709 | 1 unused |
| 710 | 2 CARD16 sequence number |
| 711 | 4 0 reply length |
| 712 | 4 CARD32 status |
| 713 | 4 CARD32 errorScreen |
| 714 | 16 unused |
| 715 | |
| 716 | |
| 717 | DMXAddScreen |
| 718 | 1 CARD8 opcode (X assigned) |
| 719 | 1 12 DMX opcode (X_DMXAddScreen) |
| 720 | 2 3+m+(n+p)/4 request length |
| 721 | 4 n displayNameLength |
| 722 | 4 CARD32 physicalScreen |
| 723 | 4 CARD32 valueMask |
| 724 | 4m LISTofVALUES valueList |
| 725 | n displayName |
| 726 | p pad(n) |
| 727 | ==> |
| 728 | 1 1 Reply |
| 729 | 1 unused |
| 730 | 2 CARD16 sequence number |
| 731 | 4 0 reply length |
| 732 | 4 CARD32 status |
| 733 | 4 CARD32 physicalScreen |
| 734 | 16 unused |
| 735 | |
| 736 | DMXRemoveScreen |
| 737 | 1 CARD8 opcode (X assigned) |
| 738 | 1 13 DMX opcode (X_DMXRemoveScreen) |
| 739 | 2 2 request length |
| 740 | 4 CARD32 physicalScreen |
| 741 | ==> |
| 742 | 1 1 Reply |
| 743 | 1 unused |
| 744 | 2 CARD16 sequence number |
| 745 | 4 0 reply length |
| 746 | 4 CARD32 status |
| 747 | 20 unused |
| 748 | |
| 749 | DMXGetWindowAttributes |
| 750 | 1 CARD8 opcode (X assigned) |
| 751 | 1 3 DMX opcode (X_DMXGetWindowAttributes) |
| 752 | 2 2 request length |
| 753 | 4 CARD32 window |
| 754 | ==> |
| 755 | 1 1 Reply |
| 756 | 1 unused |
| 757 | 2 CARD16 sequence number |
| 758 | 4 n*6 reply length |
| 759 | 4 n screenCount |
| 760 | 20 unused |
| 761 | n*4 LISTofCARD32 screens |
| 762 | n*4 LISTofCARD32 windows |
| 763 | n*8 LISTofRECTANGLE pos |
| 764 | n*8 LISTofRECTANGLE vis |
| 765 | |
| 766 | DMXGetDesktopAttributes |
| 767 | 1 CARD8 opcode (X assigned) |
| 768 | 1 14 DMX opcode (X_DMXGetDesktopAttributes) |
| 769 | 2 1 request length |
| 770 | ==> |
| 771 | 1 1 Reply |
| 772 | 1 unused |
| 773 | 2 CARD16 sequence number |
| 774 | 4 0 reply length |
| 775 | 2 INT16 width |
| 776 | 2 INT16 height |
| 777 | 2 INT16 shiftX |
| 778 | 2 INT16 shiftY |
| 779 | 16 unused |
| 780 | |
| 781 | DMXChangeDesktopAttributes |
| 782 | 1 CARD8 opcode (X assigned) |
| 783 | 1 15 DMX opcode (X_DMXChangeDesktopAttributes) |
| 784 | 2 2+n request length |
| 785 | 4 BITMASK valueMask |
| 786 | 4n LISTofVALUES valueList |
| 787 | ==> |
| 788 | 1 1 Reply |
| 789 | 1 unused |
| 790 | 2 CARD16 sequence number |
| 791 | 4 0 reply length |
| 792 | 4 CARD32 status |
| 793 | 20 unused |
| 794 | |
| 795 | DMXGetInputCount |
| 796 | 1 CARD8 opcode (X assigned) |
| 797 | 1 4 DMX opcode (X_DMXGetInputCount) |
| 798 | 2 1 request length |
| 799 | ==> |
| 800 | 1 1 Reply |
| 801 | 1 unused |
| 802 | 2 CARD16 sequence number |
| 803 | 4 0 reply length |
| 804 | 4 CARD32 inputCount |
| 805 | 20 unused |
| 806 | |
| 807 | DMXGetInputAttributes |
| 808 | 1 CARD8 opcode (X assigned) |
| 809 | 1 5 DMX opcode (X_DMXGetInputAttributes) |
| 810 | 2 2 request length |
| 811 | 4 CARD32 deviceId |
| 812 | ==> |
| 813 | 1 1 Reply |
| 814 | 1 unused |
| 815 | 2 CARD16 sequence number |
| 816 | 4 (n+p)/4 reply length |
| 817 | 4 CARD32 inputType |
| 818 | 4 CARD32 physicalScreen |
| 819 | 4 CARD32 physicalId |
| 820 | 4 n nameLength |
| 821 | 1 BOOL isCore |
| 822 | 1 BOOL sendsCore |
| 823 | 1 BOOL detached |
| 824 | 5 unused |
| 825 | n name |
| 826 | p pad(n) |
| 827 | |
| 828 | DMXAddInput |
| 829 | 1 CARD8 opcode (X assigned) |
| 830 | 1 16 DMX opcode (X_DMXAddInput) |
| 831 | 2 3+m+(n+p)/4 request length |
| 832 | 4 n displayNameLength |
| 833 | 4 CARD32 valueMask |
| 834 | 4m LISTofVALUES valueList |
| 835 | n displayName |
| 836 | p pad(n) |
| 837 | ==> |
| 838 | 1 1 Reply |
| 839 | 1 unused |
| 840 | 2 CARD16 sequence number |
| 841 | 4 0 reply length |
| 842 | 4 CARD32 status |
| 843 | 4 CARD32 physicalId |
| 844 | 16 unused |
| 845 | |
| 846 | DMXRemoveInput |
| 847 | 1 CARD8 opcode (X assigned) |
| 848 | 1 17 DMX opcode (X_DMXRemoveInput) |
| 849 | 2 3 request length |
| 850 | 4 CARD32 physicalId |
| 851 | ==> |
| 852 | 1 1 Reply |
| 853 | 1 unused |
| 854 | 2 CARD16 sequence number |
| 855 | 4 0 reply length |
| 856 | 4 CARD32 status |
| 857 | 20 unused |
| 858 | |
| 859 | |
| 860 | 8. Changes to existing requests/replies/events |
| 861 | |
| 862 | No changes to existing requests, replies, or events are necessitated |
| 863 | by this extension. |
| 864 | |
| 865 | |
| 866 | |
| 867 | 9. Acknowledgments |
| 868 | |
| 869 | |
| 870 | |
| 871 | 10. References |
| 872 | |
| 873 | [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium |
| 874 | Standard, X Version 11, Release 6.4. Available from |
| 875 | xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol. |