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