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