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,2003 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 The protocol this extension actually supports is indicated by 69*4882a593Smuzhiyun majorVersion and minorVersion (patchVersion indicates the 70*4882a593Smuzhiyun patchlevel and is for informational purposes only). 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun Any incompatible changes to the protocol should be indicated by 73*4882a593Smuzhiyun incrementing majorVersion. 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun Small, upward-compatible changes should be indicated by incrementing 76*4882a593Smuzhiyun minorVersion. 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun Servers that support the protocol defined in this document will 79*4882a593Smuzhiyun return a majorVersion of 1 and a minorVersion of 1. 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun DMXGetScreenCount 84*4882a593Smuzhiyun ==> 85*4882a593Smuzhiyun screenCount: CARD32 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun This request returns the number of back-end screens that the Xdmx 88*4882a593Smuzhiyun server controls. A back-end screen may be managed as a regular X 89*4882a593Smuzhiyun screen in the Xdmx server or may be joined with other back-end 90*4882a593Smuzhiyun screens using Xinerama. (The information returned by this request 91*4882a593Smuzhiyun does not change while Xdmx is running and may be cached on the 92*4882a593Smuzhiyun client side.) 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun DMXGetScreenInformation 97*4882a593Smuzhiyun physicalScreen: CARD32 98*4882a593Smuzhiyun ==> 99*4882a593Smuzhiyun displayName: STRING8 100*4882a593Smuzhiyun width: CARD16 101*4882a593Smuzhiyun height: CARD16 102*4882a593Smuzhiyun xoffset: INT16 103*4882a593Smuzhiyun yoffset: INT16 104*4882a593Smuzhiyun logicalScreen: CARD32 105*4882a593Smuzhiyun xorigin: INT16 106*4882a593Smuzhiyun yorigin: INT16 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun Errors: Value 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun This request returns information about individual back-end screens. 111*4882a593Smuzhiyun The physicalScreen value is between 0 and screenCount-1, inclusive 112*4882a593Smuzhiyun (values outside this range will result in a Value error). The 113*4882a593Smuzhiyun displayname is the name used to open the display, either from the 114*4882a593Smuzhiyun Xdmx command-line or from the configuration file. The width, 115*4882a593Smuzhiyun height, xoffset, and yoffset values comprise a geometry 116*4882a593Smuzhiyun specification (see X(7x)) for the location of the DMX window on the 117*4882a593Smuzhiyun back-end screen. This request will always return non-negative 118*4882a593Smuzhiyun (i.e., normalized) values for xoffset and yoffset. The 119*4882a593Smuzhiyun logicalScreen value is the value of the screen that that Xdmx server 120*4882a593Smuzhiyun exports to clients. When Xinerama is in use, this value is 121*4882a593Smuzhiyun typically 0 for all values of physicalScreen. If Xinerama is in 122*4882a593Smuzhiyun use, the xorigin and yorigin values specify where the physical 123*4882a593Smuzhiyun screen is positioned in the global Xinerama coordinate system. 124*4882a593Smuzhiyun Otherwise, these values are set to 0. (The information returned by 125*4882a593Smuzhiyun this request does not change while Xdmx is running and may be cached 126*4882a593Smuzhiyun on the client side.) 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun DMXGetWindowInformation 131*4882a593Smuzhiyun window: CARD32 132*4882a593Smuzhiyun ==> 133*4882a593Smuzhiyun screenCount: CARD32 134*4882a593Smuzhiyun screens: LISTofCARD32 135*4882a593Smuzhiyun windows: LISTofCARD32 136*4882a593Smuzhiyun pos: LISTofRECTANGLE 137*4882a593Smuzhiyun vis: LISTofRECTANGLE 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun Errors: Window, Alloc 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun This request computed the return values incorrectly for version 1.0 142*4882a593Smuzhiyun of this protocol. Version 1.1 of this protocol conforms to this 143*4882a593Smuzhiyun description. 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun Given a window ID on the Xdmx server, this request returns data 146*4882a593Smuzhiyun about how the window is represented on the back-end X servers. For 147*4882a593Smuzhiyun each back-end X server that displays a portion of the window, the 148*4882a593Smuzhiyun following information is returned: 149*4882a593Smuzhiyun 1) the number of the physical screen containing that portion 150*4882a593Smuzhiyun (which can be used with the DMXGetScreenInformation request 151*4882a593Smuzhiyun to obtain more information about the screen), 152*4882a593Smuzhiyun 2) the window ID on the back-end X server of the window 153*4882a593Smuzhiyun containing that portion, 154*4882a593Smuzhiyun 3) the position and dimensions of the window on the back-end, in 155*4882a593Smuzhiyun screen coordinates, and 156*4882a593Smuzhiyun 4) the visible area of the window on the back-end, in 157*4882a593Smuzhiyun window-relative coordinates (all zeros for windows that are 158*4882a593Smuzhiyun not visible) 159*4882a593Smuzhiyun Note that DMX allows multiple back-end windows to overlap in their 160*4882a593Smuzhiyun view of the DMX logical window. Further, a logical window does not 161*4882a593Smuzhiyun have to be completely covered by back-end windows -- there may be 162*4882a593Smuzhiyun gaps. 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun As an example, consider a 500x500 window that spans the top two 165*4882a593Smuzhiyun 1024x768 back-end displays (A and B) of a 2048x1536 DMX display 166*4882a593Smuzhiyun composed of 4 1024x768 back-end displays arranged in a cube: 167*4882a593Smuzhiyun A B 168*4882a593Smuzhiyun C D 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun In this case, the DMXGetWindowInformation call would return the 171*4882a593Smuzhiyun following information for the 500x500 window: 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun display A: 500x500 window at 1024-250,0 (relative to back end) 174*4882a593Smuzhiyun with 250x500 visible at 0,0 (relative to window origin) 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun display B: 500x500 window at -250,0 (relative to back end) 177*4882a593Smuzhiyun with 250x500 visible at 250,0 (relative to window origin) 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun display D: 500x500 window at -250,-768 with 0x0 visible at 0,0 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun Note that if the specified window has not yet been mapped when 184*4882a593Smuzhiyun DMXGetWindowInformation is called, then a subsequent XMapWindow call 185*4882a593Smuzhiyun might be buffered in xlib while requests directly to the back-end X 186*4882a593Smuzhiyun servers are processed. This race condition can be solved by calling 187*4882a593Smuzhiyun DMXSync before talking directly to the back-end X servers. 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun DMXGetInputCount 191*4882a593Smuzhiyun ==> 192*4882a593Smuzhiyun inputCount: CARD32 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun This request was first supported in version 1.1 of this protocol. 195*4882a593Smuzhiyun 196*4882a593Smuzhiyun This request returns the number of input devices connected to the 197*4882a593Smuzhiyun Xdmx server. This number is the same as that returned by 198*4882a593Smuzhiyun XListInputDevices, but is available even when the XInput extension 199*4882a593Smuzhiyun is not supported. 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun DMXGetInputInformation 204*4882a593Smuzhiyun deviceId: CARD32 205*4882a593Smuzhiyun ==> 206*4882a593Smuzhiyun inputType: CARD32 207*4882a593Smuzhiyun physicalScreen: CARD32 208*4882a593Smuzhiyun physicalId: CARD32 209*4882a593Smuzhiyun isCore: BOOL 210*4882a593Smuzhiyun sendsCore: BOOL 211*4882a593Smuzhiyun name: STRING8 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun Errors: Value 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun This request was first supported in version 1.1 of this protocol. 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun This request returns information about the specified input device 218*4882a593Smuzhiyun that cannot be obtained from the XListInputDeivices call. The 219*4882a593Smuzhiyun deviceId is the same as that used by the XListInputDevices call, and 220*4882a593Smuzhiyun must be in the range 0 to inputCount-1, inclusive (values outside 221*4882a593Smuzhiyun this range will result in a Value error). 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun The value of inputType will always be value, and will be one of the 224*4882a593Smuzhiyun following values: 225*4882a593Smuzhiyun 0 for local (and dummy) devices, 226*4882a593Smuzhiyun 1 for console devices, and 227*4882a593Smuzhiyun 2 for back-end devices. 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun For local devices, all other fields returned, except isCore and 230*4882a593Smuzhiyun sendsCore, are invalid. 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun For console devices, the physicalScreen and physicalID will be 233*4882a593Smuzhiyun invalid, and the name will return the name of the X server on which 234*4882a593Smuzhiyun the console window is displayed. 235*4882a593Smuzhiyun 236*4882a593Smuzhiyun For back-end devices, the physicalScreen will identify the back-end 237*4882a593Smuzhiyun display and can be used as an argument to DMXGetScreenInformation to 238*4882a593Smuzhiyun obtain more information; the physicalId will be the XInput device id 239*4882a593Smuzhiyun on the back-end X server; and the name will be invalid (since it 240*4882a593Smuzhiyun does not provide any additional information that cannot be obtained 241*4882a593Smuzhiyun with DMXGetScreenInformation). 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun If isCore is True, then this device is active as a true core input 244*4882a593Smuzhiyun device and will send core events. If sendsCore is True, then this 245*4882a593Smuzhiyun device queried an XInput extension device, but sends core events 246*4882a593Smuzhiyun instead of extension events. Note that this behavior is different 247*4882a593Smuzhiyun from that of XFree86, where XInput extension devices may send both 248*4882a593Smuzhiyun extension events and core events. 249*4882a593Smuzhiyun 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun DMXForceWindowCreation 253*4882a593Smuzhiyun window: CARD32 254*4882a593Smuzhiyun ==> 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun Errors: Window 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun This request was first supported in version 1.2 of this protocol. 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun When using the lazy window creation optimization, windows are not 261*4882a593Smuzhiyun created on the back-end X servers until they are required. This 262*4882a593Smuzhiyun request forces the immediate creation of the window requested. 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun DMXReconfigureScreen 267*4882a593Smuzhiyun screen: CARD32 268*4882a593Smuzhiyun x: INT16 269*4882a593Smuzhiyun y: INT16 270*4882a593Smuzhiyun ==> 271*4882a593Smuzhiyun status: CARD32 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun Errors: Value 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun This request was first supported in version 1.3 of this protocol. 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun This request reconfigures the screen position to coordinates (x,y) 278*4882a593Smuzhiyun when using the Xinerama extension. Otherwise, it is a NOP. Illegal 279*4882a593Smuzhiyun values for screen will result in a BadValue error. Other non-fatal 280*4882a593Smuzhiyun errors will be returned in status. 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun DMXSync 285*4882a593Smuzhiyun ==> 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun This request was first supported in version 1.5 of this protocol. 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun This request flushes all pending protocol requests between the Xdmx 290*4882a593Smuzhiyun server and each back-end X server. It is used by a client that 291*4882a593Smuzhiyun talks directly to back-end X servers 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun To ensure proper synchronization semantics, this request has a 294*4882a593Smuzhiyun reply, but the reply does not carry any information. 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun5. Events 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun No new events are defined by this extension. 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun 304*4882a593Smuzhiyun6. Errors 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun No new events are defined by this extension. 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun7. Encoding 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun DMXQueryVersion 313*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 314*4882a593Smuzhiyun 1 0 DMX opcode (X_DMXQueryVersion) 315*4882a593Smuzhiyun 2 1 request length 316*4882a593Smuzhiyun ==> 317*4882a593Smuzhiyun 1 1 Reply 318*4882a593Smuzhiyun 1 unused 319*4882a593Smuzhiyun 2 CARD16 sequence number 320*4882a593Smuzhiyun 4 0 reply length 321*4882a593Smuzhiyun 4 CARD32 majorVersion 322*4882a593Smuzhiyun 4 CARD32 minorVersion 323*4882a593Smuzhiyun 4 CARD32 patchVersion 324*4882a593Smuzhiyun 12 unused 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun DMXGetScreenCount 327*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 328*4882a593Smuzhiyun 1 1 DMX opcode (X_DMXGetScreenCount) 329*4882a593Smuzhiyun 2 1 request length 330*4882a593Smuzhiyun ==> 331*4882a593Smuzhiyun 1 1 Reply 332*4882a593Smuzhiyun 1 unused 333*4882a593Smuzhiyun 2 CARD16 sequence number 334*4882a593Smuzhiyun 4 0 reply length 335*4882a593Smuzhiyun 4 CARD32 screenCount 336*4882a593Smuzhiyun 20 unused 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun DMXGetScreenInformation 339*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 340*4882a593Smuzhiyun 1 2 DMX opcode (X_DMXGetScreenInformation) 341*4882a593Smuzhiyun 2 2 request length 342*4882a593Smuzhiyun 4 CARD32 physicalScreen 343*4882a593Smuzhiyun ==> 344*4882a593Smuzhiyun 1 1 Reply 345*4882a593Smuzhiyun 1 unused 346*4882a593Smuzhiyun 2 CARD16 sequence number 347*4882a593Smuzhiyun 4 n/4+p reply length 348*4882a593Smuzhiyun 4 n displayNameLength 349*4882a593Smuzhiyun 2 CARD16 width 350*4882a593Smuzhiyun 2 CARD16 height 351*4882a593Smuzhiyun 2 INT16 xoffset 352*4882a593Smuzhiyun 2 INT16 yoffset 353*4882a593Smuzhiyun 4 CARD32 logicalScreen 354*4882a593Smuzhiyun 2 INT16 xorigin 355*4882a593Smuzhiyun 2 INT16 yorigin 356*4882a593Smuzhiyun 4 unused 357*4882a593Smuzhiyun n displayName 358*4882a593Smuzhiyun p pad(n) 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun DMXGetWindowInformation 361*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 362*4882a593Smuzhiyun 1 3 DMX opcode (X_DMXGetWindowInformation) 363*4882a593Smuzhiyun 2 2 request length 364*4882a593Smuzhiyun 4 CARD32 window 365*4882a593Smuzhiyun ==> 366*4882a593Smuzhiyun 1 1 Reply 367*4882a593Smuzhiyun 1 unused 368*4882a593Smuzhiyun 2 CARD16 sequence number 369*4882a593Smuzhiyun 4 n*6 reply length 370*4882a593Smuzhiyun 4 n screenCount 371*4882a593Smuzhiyun 20 unused 372*4882a593Smuzhiyun n*4 LISTofCARD32 screens 373*4882a593Smuzhiyun n*4 LISTofCARD32 windows 374*4882a593Smuzhiyun n*8 LISTofRECTANGLE pos 375*4882a593Smuzhiyun n*8 LISTofRECTANGLE vis 376*4882a593Smuzhiyun 377*4882a593Smuzhiyun DMXGetInputCount 378*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 379*4882a593Smuzhiyun 1 DMX opcode (X_DMXGetInputCount) 380*4882a593Smuzhiyun 2 1 request length 381*4882a593Smuzhiyun ==> 382*4882a593Smuzhiyun 1 1 Reply 383*4882a593Smuzhiyun 1 unused 384*4882a593Smuzhiyun 2 CARD16 sequence number 385*4882a593Smuzhiyun 4 0 reply length 386*4882a593Smuzhiyun 4 CARD32 inputCount 387*4882a593Smuzhiyun 20 unused 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun DMXGetInputInformation 390*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 391*4882a593Smuzhiyun 1 4 DMX opcode (X_DMXGetInputInformation) 392*4882a593Smuzhiyun 2 2 request length 393*4882a593Smuzhiyun 4 CARD32 deviceId 394*4882a593Smuzhiyun ==> 395*4882a593Smuzhiyun 1 1 Reply 396*4882a593Smuzhiyun 1 unused 397*4882a593Smuzhiyun 2 CARD16 sequence number 398*4882a593Smuzhiyun 4 n/4+p reply length 399*4882a593Smuzhiyun 4 CARD32 inputType 400*4882a593Smuzhiyun 4 CARD32 physicalScreen 401*4882a593Smuzhiyun 4 CARD32 physicalId 402*4882a593Smuzhiyun 4 n nameLength 403*4882a593Smuzhiyun 1 BOOL isCore 404*4882a593Smuzhiyun 1 BOOL sendsCore 405*4882a593Smuzhiyun 6 unused 406*4882a593Smuzhiyun n name 407*4882a593Smuzhiyun p pad(n) 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun DMXForceWindowCreation 410*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 411*4882a593Smuzhiyun 1 2 DMX opcode (X_DMXForceWindowCreation) 412*4882a593Smuzhiyun 2 2 request length 413*4882a593Smuzhiyun 4 CARD32 window 414*4882a593Smuzhiyun ==> 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun DMXReconfigureScreen 417*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 418*4882a593Smuzhiyun 1 2 DMX opcode (X_DMXReconfigureScreen) 419*4882a593Smuzhiyun 2 2 request length 420*4882a593Smuzhiyun 4 CARD32 screen 421*4882a593Smuzhiyun 2 INT16 x 422*4882a593Smuzhiyun 2 INT16 y 423*4882a593Smuzhiyun ==> 424*4882a593Smuzhiyun 1 1 Reply 425*4882a593Smuzhiyun 1 unused 426*4882a593Smuzhiyun 2 CARD16 sequence number 427*4882a593Smuzhiyun 4 0 reply length 428*4882a593Smuzhiyun 4 CARD32 status 429*4882a593Smuzhiyun 20 unused 430*4882a593Smuzhiyun 431*4882a593Smuzhiyun DMXSync 432*4882a593Smuzhiyun 1 CARD8 opcode (X assigned) 433*4882a593Smuzhiyun 1 0 DMX opcode (X_DMXSync) 434*4882a593Smuzhiyun 2 1 request length 435*4882a593Smuzhiyun ==> 436*4882a593Smuzhiyun 1 1 Reply 437*4882a593Smuzhiyun 1 unused 438*4882a593Smuzhiyun 2 CARD16 sequence number 439*4882a593Smuzhiyun 4 0 reply length 440*4882a593Smuzhiyun 24 unused 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun 443*4882a593Smuzhiyun8. Changes to existing requests/replies/events 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun No changes to existing requests, replies, or events are necessitated 446*4882a593Smuzhiyun by this extension. 447*4882a593Smuzhiyun 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun9. Acknowledgments 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun10. References 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun [X11R6.4] Robert W. Sheifler. X Window System Protocol, X Consortium 457*4882a593Smuzhiyun Standard, X Version 11, Release 6.4. Available from 458*4882a593Smuzhiyun xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol. 459