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 351. 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 462. Syntactic conventions 47 48 This document uses the same syntactic conventions requests and data 49 types as [X11R6.4]. 50 51 52 533. 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 604. 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 5815. Events 582 583 No new events are defined by this extension. 584 585 586 5876. Errors 588 589 No new events are defined by this extension. 590 591 592 5937. 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 8608. 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 8679. Acknowledgments 868 869 870 87110. 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. 876