DMXSpec.txt 31 KB

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