xref: /OK3568_Linux_fs/external/xserver/hw/dmx/doc/DMXSpec-v1.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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