876 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			876 lines
		
	
	
		
			31 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
 | |
| 
 | |
|             Client-to-Server DMX Extension to the X Protocol
 | |
| 
 | |
|            $Date$, $Revision$
 | |
| 
 | |
|                Rickard E. (Rik) Faith (faith@redhat.com)
 | |
|                     Kevin E. Martin (kem@redhat.com)
 | |
| 
 | |
|     Copyright 2002-2004 Red Hat Inc., Raleigh, North Carolina.
 | |
| 
 | |
|     Permission is hereby granted, free of charge, to any person
 | |
|     obtaining a copy of this software and associated documentation files
 | |
|     (the "Software"), to deal in the Software without restriction,
 | |
|     including without limitation on the rights to use, copy, modify,
 | |
|     merge, publish, distribute, sublicense, and/or sell copies of the
 | |
|     Software, and to permit persons to whom the Software is furnished to
 | |
|     do so, subject to the following conditions:
 | |
| 
 | |
|     The above copyright notice and this permission notice (including the
 | |
|     next paragraph) shall be included in all copies or substantial
 | |
|     portions of the Software.
 | |
| 
 | |
|     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | |
|     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | |
|     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | |
|     NON-INFRINGEMENT. IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
 | |
|     BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | |
|     ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | |
|     CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | |
|     SOFTWARE.
 | |
| 
 | |
| 
 | |
| 
 | |
| 1. Overview
 | |
| 
 | |
|     The client-to-server DMX extension to the X protocol (DMX) provides
 | |
|     normal client applications with the ability to determine information
 | |
|     about the characteristics of the Xdmx server and the back-end X
 | |
|     servers that DMX is using.
 | |
| 
 | |
|     The name for this extension is "DMX".
 | |
| 
 | |
| 
 | |
| 
 | |
| 2. Syntactic conventions
 | |
| 
 | |
|     This document uses the same syntactic conventions requests and data
 | |
|     types as [X11R6.4].
 | |
| 
 | |
| 
 | |
| 
 | |
| 3. Data types
 | |
| 
 | |
|     No new data types are defined by this extension.  All data types
 | |
|     referenced in this document are defined in [X11R6.4].
 | |
| 
 | |
| 
 | |
| 
 | |
| 4. Requests
 | |
| 
 | |
|     DMXQueryVersion
 | |
|         ==>
 | |
|         majorVersion: CARD32
 | |
|         minorVersion: CARD32
 | |
|         patchVersion: CARD32
 | |
| 
 | |
|         Errors: None
 | |
| 
 | |
|     The protocol this extension actually supports is indicated by
 | |
|     majorVersion and minorVersion (patchVersion indicates the
 | |
|     patchlevel and is for informational purposes only).
 | |
| 
 | |
|     Any incompatible changes to the protocol should be indicated by
 | |
|     incrementing majorVersion.
 | |
| 
 | |
|     Small, upward-compatible changes should be indicated by incrementing
 | |
|     minorVersion.
 | |
| 
 | |
|     Servers that support the protocol defined in this document will
 | |
|     return a majorVersion of 2 and a minorVersion of 2.
 | |
| 
 | |
|     (Version 1.5 was the last version in the 1.x series; version 2.0 was
 | |
|     a testing version that was poorly defined.)
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXSync
 | |
|         ==>
 | |
|         status: CARD32
 | |
| 
 | |
|         Errors: None
 | |
| 
 | |
|     This request was first supported in version 1.5 of this protocol.
 | |
|     The status field in the reply was introduced in version 2.0 of this
 | |
|     protocol.  Since the status field is ignored, no changes to the
 | |
|     underlying protocol were required.
 | |
| 
 | |
|     This request flushes all pending protocol requests between the Xdmx
 | |
|     server and each back-end X server.  It is used by clients that
 | |
|     talk directly to back-end X servers to ensure that all pending Xdmx
 | |
|     requests have reached all back-end servers and have been processed
 | |
|     by those servers.
 | |
| 
 | |
|     The value of status is always 0.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXForceWindowCreation
 | |
|         window: CARD32
 | |
|         ==>
 | |
|         status: CARD32
 | |
| 
 | |
|         Errors: Window
 | |
| 
 | |
|     This request was first supported in version 1.2 of this protocol.
 | |
|     This request was changed to have a reply in version 2.0 of this
 | |
|     protocol.  The old version of this request was deprecated and will
 | |
|     return BadImplementation.
 | |
| 
 | |
|     When using the lazy window creation optimization, windows are not
 | |
|     created on the back-end X servers until they are required.  This
 | |
|     request forces the immediate creation of the window requested.
 | |
| 
 | |
|     The value of status is always 0.
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXGetScreenCount
 | |
|         ==>
 | |
|         screenCount: CARD32
 | |
| 
 | |
|         Errors: None
 | |
| 
 | |
|     This request returns the number of screens that the Xdmx server
 | |
|     controls.  Since a DMX screen usually fills all of the available
 | |
|     area on a back-end server, there is usually a one-to-one
 | |
|     correspondence between DMX screens and backend servers.  However, it
 | |
|     is also possible for a DMX screen to cover only part of the
 | |
|     available area on a back-end server, and for more than one DMX
 | |
|     screen to occupy different parts of the visible area on the same
 | |
|     back-end server.
 | |
| 
 | |
|     A DMX screen may be managed as a regular X screen in the Xdmx server
 | |
|     or may be joined with other DMX screens using Xinerama.
 | |
|     
 | |
| 
 | |
| 
 | |
|     DMXGetScreenAttributes
 | |
|         physicalScreen: CARD32
 | |
|         ==>
 | |
|         displayName: STRING8
 | |
|         logicalScreen: CARD32
 | |
|         screenWindowWidth: CARD16
 | |
|         screenWindowHeight: CARD16
 | |
|         screenWindowXoffset: INT16
 | |
|         screenWindowYoffset: INT16
 | |
|         rootWindowWidth: CARD16
 | |
|         rootWindowHeight: CARD16
 | |
|         rootWindowXoffset: INT16
 | |
|         rootWindowYoffset: INT16
 | |
|         rootWindowXorigin: INT16
 | |
|         rootWindowYorigin: INT16
 | |
| 
 | |
|         Errors: Value
 | |
| 
 | |
|     This request is new in version 2.0 of this protocol.  The old
 | |
|     DMXGetScreenInformation request is deprecated and will now return
 | |
|     BadImplementation.
 | |
| 
 | |
|     This request returns attributes about a single DMX screen.
 | |
| 
 | |
|     The physicalScreen value is between 0 and screenCount-1, inclusive
 | |
|     (values outside this range will result in a Value error).
 | |
| 
 | |
|     The displayname is the name used to open the display, either from
 | |
|     the Xdmx command-line or from the configuration file.
 | |
| 
 | |
|     The logicalScreen value is the value of the screen that that Xdmx
 | |
|     server exports to clients.  When Xinerama is in use, this value is
 | |
|     typically 0 for all values of physicalScreen.  If Xinerama is in
 | |
|     use, the rootWindowXOrigin and rootWindowYOrigin values specify
 | |
|     where the physical screen is positioned in the global Xinerama
 | |
|     coordinate system.  Otherwise, these values are set to 0.
 | |
| 
 | |
|     The screenWindow values comprise a geometry specification (see
 | |
|     X(7x)) for the location of the DMX screen on the back-end screen.
 | |
|     The coordinant system of the back-end display is used.
 | |
| 
 | |
|     The first four rootWindow values comprise a geometry specification
 | |
|     (see X(7x)) for the location of the root window on the screen
 | |
|     window.  The coordinant system of the screen window is used.  In
 | |
|     most cases, the root window will have the same geometry as the DMX
 | |
|     screen window, and will occupy the same area of the back-end
 | |
|     display.  (This would not be the case, for example, if automatic
 | |
|     projector alignment is used.)
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXChangeScreensAttributes
 | |
|         screenCount: CARD32
 | |
|         maskCount: CARD32
 | |
|         screens: LISTofCARD32
 | |
|         valueMasks: LISTofCARD32
 | |
|         valueList: LISTofVALUES
 | |
|         ==>
 | |
|         status: CARD32
 | |
|         errorScreen: CARD32
 | |
| 
 | |
|         Errors: Length, Alloc
 | |
| 
 | |
|     This request was first supported in version 2.0 of this protocol.
 | |
|     (A singular version of this request with the ability to change some
 | |
|     RootWindow attributes was supported in version 1.3 of this protocol,
 | |
|     has been deprecated, and will return BadImplementation.)
 | |
| 
 | |
|     This request changes the geometries and positions of the DMX screen
 | |
|     and DMX root windows on the back-end X servers.
 | |
|    
 | |
|     The valueMask and valueList specify which attributes are to be
 | |
|     changed.  The possible values are:
 | |
| 
 | |
|         Attribute               Type
 | |
| 
 | |
|         ScreenWindowWidth       CARD16
 | |
|         ScreenWindowHeight      CARD16
 | |
|         ScreenWindowXoffset     INT16
 | |
|         ScreenWindowYoffset     INT16
 | |
|         RootWindowWidth         CARD16
 | |
|         RootWindowHeight        CARD16
 | |
|         RootWindowXoffset       INT16
 | |
|         RootWindowYoffset       INT16
 | |
|         RootWindowXorigin       INT16
 | |
|         RootWindowYorigin       INT16
 | |
| 
 | |
|     The attribute values have the same meaning as do the corresponding
 | |
|     values for DMXGetScreenAttributes.
 | |
| 
 | |
|     Non-fatal errors will be returned in status (0 otherwise):
 | |
|         DmxBadXinerama: Xinerama is not active
 | |
|         DmxBadValue:    The resulting position is not allowed
 | |
|                         (e.g., one corner is outside the bounding box)
 | |
|     On error, errorScreen will contain the number of the screen that
 | |
|     caused the first error.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXAddScreen
 | |
|         displayName: STRING8
 | |
|         physicalScreen: CARD32
 | |
|         valueMask: CARD32
 | |
|         valueList: LISTofVALUES
 | |
|         ==>
 | |
|         status: CARD32
 | |
|         physicalScreen: CARD32
 | |
| 
 | |
|         Errors: Length, Alloc, Value
 | |
| 
 | |
|     This request was first supported in version 2.2 of this protocol.
 | |
| 
 | |
|     This request re-attaches the back-end physicalScreen to the Xdmx
 | |
|     server.  Only back-end screens that have been previously detached
 | |
|     with DMXRemoveScreen may be added.  The name of the back-end display
 | |
|     is given in displayName, and this will replace the name of the
 | |
|     back-end screen that was detached.  Both the displayName and
 | |
|     physicalScreen must be correct for this request to work.
 | |
| 
 | |
|     The valueMask and valueList specify the attributes to be used.  The
 | |
|     possible values are:
 | |
| 
 | |
|         Attribute               Type
 | |
| 
 | |
|         ScreenWindowWidth       CARD16
 | |
|         ScreenWindowHeight      CARD16
 | |
|         ScreenWindowXoffset     INT16
 | |
|         ScreenWindowYoffset     INT16
 | |
|         RootWindowWidth         CARD16
 | |
|         RootWindowHeight        CARD16
 | |
|         RootWindowXoffset       INT16
 | |
|         RootWindowYoffset       INT16
 | |
|         RootWindowXorigin       INT16
 | |
|         RootWindowYorigin       INT16
 | |
| 
 | |
|     The attribute values have the same meaning as do the corresponding
 | |
|     values for DMXGetScreenAttributes.
 | |
| 
 | |
|     On success, status will be 0 and physicalScreen will contain the new
 | |
|     screen number.  On failure, status will be non-zero.  The status
 | |
|     will be 1 if any of the following occured:
 | |
|         * the -addremovescreens command-line option was not specified on
 | |
|           the Xdmx command line
 | |
|         * the value of physicalScreen is out of range
 | |
|         * physicalScreen has not been detached (with DMXRemoveScreen)
 | |
|         * displayName cannot be opened
 | |
|         * the visuals of displayname do not match the visuals that Xdmx
 | |
|           is using
 | |
|         * the screen data for displayName does not match the data for the
 | |
|           previously removed display
 | |
|     The status will be DmxBadValue if the attribute values are out of
 | |
|     range.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXRemoveScreen
 | |
|         physicalScreen: CARD32
 | |
|         ==>
 | |
|         status: CARD32
 | |
| 
 | |
|         Errors: None
 | |
| 
 | |
|     This request was first supported in version 2.2 of this protocol.
 | |
| 
 | |
|     This request detaches the physicalScreen screen.
 | |
| 
 | |
|     On success, status will be 0.  On failure, the status will 1 if any
 | |
|     of the following occur:
 | |
|         * the -addremovescreens command-line option was not specified on
 | |
|           the Xdmx command line
 | |
|         * the value of physicalScreen is out of range
 | |
|         * the back-end screen has already been detached.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXGetWindowAttributes
 | |
|         window: CARD32
 | |
|         ==>
 | |
|         screenCount: CARD32
 | |
|         screens: LISTofCARD32
 | |
|         windows: LISTofCARD32
 | |
|         pos: LISTofRECTANGLE
 | |
|         vis: LISTofRECTANGLE
 | |
| 
 | |
|         Errors: Window, Alloc
 | |
| 
 | |
|     This request computes the return values incorrectly for version 1.0
 | |
|     of this protocol.  Version 1.1 of this protocol conforms to this
 | |
|     description.  In version 2.0, the name of this request was changed
 | |
|     from DMXGetWindowInformation.  However, since the request itself did
 | |
|     not change, no changes to the underlying protocol were made.
 | |
| 
 | |
|     Given a window ID on the Xdmx server, this request returns data
 | |
|     about how the window is represented on the back-end X servers.  For
 | |
|     each back-end X server that displays a portion of the window, the
 | |
|     following information is returned:
 | |
|         1) the number of the physical screen containing that portion
 | |
|            (which can be used with the DMXGetScreenAttributes request
 | |
|            to obtain more information about the screen),
 | |
|         2) the window ID on the back-end X server of the window
 | |
|            containing that portion,
 | |
|         3) the position and dimensions of the window on the back-end, in
 | |
|            screen coordinates, and
 | |
|         4) the visible area of the window on the back-end, in
 | |
|            window-relative coordinates (all zeros for windows that are
 | |
|            not visible).
 | |
|     Note that DMX allows multiple back-end windows to overlap in their
 | |
|     view of the DMX logical window.  Further, a logical window does not
 | |
|     have to be completely covered by back-end windows -- there may be
 | |
|     gaps.
 | |
| 
 | |
|     As an example, consider a 500x500 window that spans the top two
 | |
|     1024x768 back-end displays (A and B) of a 2048x1536 DMX display
 | |
|     composed of 4 1024x768 back-end displays arranged in a cube:
 | |
|         A B
 | |
|         C D
 | |
| 
 | |
|     In this case, the DMXGetWindowAttributes call would return the
 | |
|     following information for the 500x500 window:
 | |
| 
 | |
|     display A: 500x500 window at 1024-250,0 (relative to back end)
 | |
|                with 250x500 visible at 0,0 (relative to window origin)
 | |
| 
 | |
|     display B: 500x500 window at -250,0 (relative to back end)
 | |
|                with 250x500 visible at 250,0 (relative to window origin)
 | |
| 
 | |
|     display C: 500x500 window at 1024-250,-768 with 0x0 visible at 0,0
 | |
| 
 | |
|     display D: 500x500 window at -250,-768 with 0x0 visible at 0,0
 | |
| 
 | |
|     Note that if the specified window has not yet been mapped when
 | |
|     DMXGetWindowAttributes is called, then a subsequent XMapWindow call
 | |
|     might be buffered in xlib while requests directly to the back-end X
 | |
|     servers are processed.  This race condition can be solved by calling
 | |
|     DMXSync before talking directly to the back-end X servers.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXGetDesktopAttributes
 | |
|         ==>
 | |
|         width: INT16
 | |
|         height: INT16
 | |
|         shiftX: INT16
 | |
|         shiftY: INT16
 | |
| 
 | |
|         Errors: None
 | |
| 
 | |
|     This request was first supported in version 2.0 of this protocol.
 | |
| 
 | |
|     This request returns the size of the bounding box of the whole
 | |
|     screen in width and height.  The shiftX and shiftY values will
 | |
|     always be 0.  The global bounding box is computed whether or not
 | |
|     Xinerama is active, and may be larger than the Xinerama screen size
 | |
|     because of information in the configuration file.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXChangeDesktopAttributes
 | |
|         valueMask: BITMASK
 | |
|         valueList: LISTofVALUE
 | |
|         ==>
 | |
|         status: CARD32
 | |
| 
 | |
|         Errors: Length, Value
 | |
| 
 | |
|     This request was first supported in version 2.0 of this protocol.
 | |
| 
 | |
|     This request resizes the bounding box of the whole screen when using
 | |
|     the Xinerama extension.  Otherwise, it has no effect on the screen
 | |
|     layout.  The valueMask and valueList specify which attributes are to
 | |
|     be changed.  The possible values are:
 | |
| 
 | |
|         Attriubute      Type
 | |
| 
 | |
|         Width           INT16
 | |
|         Height          INT16
 | |
|         ShiftX          INT16
 | |
|         ShiftY          INT16
 | |
| 
 | |
|     Width and Height specify the new width and height for the bounding
 | |
|     box.  ShiftX and ShiftY specify where the Xinerama origin will be
 | |
|     placed with respect to the origin of the new bounding box.  This
 | |
|     allows the left and upper edges of the bounding box to be changed
 | |
|     without changing the visual position of the windows on the desktop.
 | |
|     If Width or Height is not specified, the current values will be
 | |
|     used.  If ShiftX or ShiftY is not specified, 0 will be used.
 | |
| 
 | |
|     All coordinants are in the global DMX coordinant system.  If
 | |
|     Xinerama is not active, this request is not useful.
 | |
| 
 | |
|     Non-fatal errors will be returned in status (0 otherwise):
 | |
|         DmxBadXinerama: Xinerama is not active
 | |
|         DmxBadValue:    The size of the bounding box is too large
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXGetInputCount
 | |
|         ==>
 | |
|         inputCount: CARD32
 | |
| 
 | |
|     This request was first supported in version 1.1 of this protocol.
 | |
| 
 | |
|     This request returns the number of input devices connected to the
 | |
|     Xdmx server.  This number is the same as that returned by
 | |
|     XListInputDevices, but is available even when the XInput extension
 | |
|     is not supported.
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXGetInputAttributes
 | |
|         deviceId: CARD32
 | |
|         ==>
 | |
|         inputType: CARD32
 | |
|         physicalScreen: CARD32
 | |
|         physicalId: CARD32
 | |
|         isCore: BOOL
 | |
|         sendsCore: BOOL
 | |
|         detached: BOOL
 | |
|         name: STRING8
 | |
| 
 | |
|         Errors: Value
 | |
| 
 | |
|     This request was first supported in version 1.1 of this protocol.
 | |
|     In version 2.0, the name of this request was changed from
 | |
|     DMXGetInputInformation.  However, since the request itself did not
 | |
|     change, no changes to the underlying protocol were made.  In version
 | |
|     2.2, the name of detached was changed from reservation.  There was
 | |
|     no change in underlying protocol.
 | |
| 
 | |
|     This request returns information about the specified input device
 | |
|     that cannot be obtained from the XListInputDeivices call.  The
 | |
|     deviceId is the same as that used by the XListInputDevices call, and
 | |
|     must be in the range 0 to inputCount-1, inclusive (values outside
 | |
|     this range will result in a Value error).
 | |
| 
 | |
|     The value of inputType will always be valid, and will be one of the
 | |
|     following values:
 | |
|         0 for local (and dummy) devices,
 | |
|         1 for console devices, and
 | |
|         2 for back-end devices.
 | |
| 
 | |
|     For local devices, all other fields returned, except isCore and
 | |
|     sendsCore, are invalid.
 | |
| 
 | |
|     For console devices, the physicalScreen and physicalID will be
 | |
|     invalid, and the name will return the name of the X server on which
 | |
|     the console window is displayed.
 | |
| 
 | |
|     For back-end devices, the physicalScreen will identify the back-end
 | |
|     display and can be used as an argument to DMXGetScreenAttributes to
 | |
|     obtain more information; the physicalId will be the XInput device id
 | |
|     on the back-end X server; and the name will be invalid (since it
 | |
|     does not provide any additional information that cannot be obtained
 | |
|     with DMXGetScreenAttributes).
 | |
| 
 | |
|     If isCore is True, then this device is active as a true core input
 | |
|     device and will send core events.  If sendsCore is True, then this
 | |
|     device is an XInput extension device, but sends core events instead
 | |
|     of extension events.  Note that this behavior is different from that
 | |
|     of XFree86 or Xorg, where XInput extension devices may send both
 | |
|     extension events and core events.
 | |
| 
 | |
|     If detached is True, then this device has been detached and is no
 | |
|     longer producing input events.  The device may be reattached using
 | |
|     DMXAddInput.
 | |
| 
 | |
|     
 | |
| 
 | |
|     DMXAddInput
 | |
|         displayName: STRING8
 | |
|         valueMask: CARD32
 | |
|         valueList: LISTofVALUES
 | |
|         ==>
 | |
|         status: CARD32
 | |
|         physicalId: CARD32
 | |
| 
 | |
|         Errors: Value, Access
 | |
| 
 | |
|     This request was first supported in version 2.2 of this protocol.
 | |
| 
 | |
|     The valueMask and valueList specify the attributes to be used.  The
 | |
|     possible values are:
 | |
| 
 | |
|         Attribute               Type
 | |
| 
 | |
|         InputType               CARD32
 | |
|         InputPhysicalScreen     CARD32
 | |
|         InputSendsCore          BOOL
 | |
| 
 | |
|     This request attaches an input device to the Xdmx server.  The value
 | |
|     of inputType will be one:
 | |
|         1 for console devices, and
 | |
|         2 for back-end devices.
 | |
|     Other values of InputType will return a BadValue error.  Local
 | |
|     devices (inputType=0 in DMXGetInputAttributes) cannot be attached or
 | |
|     removed.  For console devices, displayName will store the name of
 | |
|     the display to be used.
 | |
| 
 | |
|     For back-end devices, InputPhysicalScreen will specify the screen
 | |
|     number.  BadValue will be returned if the screen number is out of
 | |
|     range.  BadAccess will be returned if the input has already been
 | |
|     attached or if the backend screen is currently detached.
 | |
| 
 | |
|     If InputSendsCore is True, the new device will be added as a true
 | |
|     core device.
 | |
| 
 | |
|     If a device was removed with DMXRemoveInput an attempt will be made
 | |
|     to reconnect the previous devices (InputSendsCore is ignored in this
 | |
|     case).
 | |
| 
 | |
| 
 | |
| 
 | |
|     DMXRemoveInput
 | |
|         physicalId: CARD32
 | |
|         ==>
 | |
|         status: CARD32
 | |
| 
 | |
|         Errors: Value, Access
 | |
| 
 | |
|     This request was first supported in version 2.2 of this protocol.
 | |
| 
 | |
|     This request detaches the input device with physicalId, and all
 | |
|     associated inputs (e.g., if the physicalId is a backend mouse, and a
 | |
|     keyboard is also attached to the backend, then both devices will be
 | |
|     detached).  If the physicalId is outside the valid range (0 to one
 | |
|     less than the value returned by DMXInputCount), BadValue is
 | |
|     returned.  If the physicalId has already been detached, BadAccess is
 | |
|     returned.  The status is always 0.
 | |
| 
 | |
| 
 | |
| 
 | |
| 5. Events
 | |
| 
 | |
|     No new events are defined by this extension.
 | |
| 
 | |
| 
 | |
| 
 | |
| 6. Errors
 | |
| 
 | |
|     No new events are defined by this extension.
 | |
| 
 | |
| 
 | |
| 
 | |
| 7. Encoding
 | |
| 
 | |
|     Deprecated DMX opcodes:
 | |
|         DMXGetScreenInformation           2
 | |
|         DMXForceWindowCreation            6
 | |
|         DMXReconfigureScreen              7
 | |
| 
 | |
|     Valid DMX opcodes:
 | |
|         DMXQueryVersion                   0
 | |
|         DMXSync                           8
 | |
|         DMXForceWindowCreation            9
 | |
| 
 | |
|         DMXGetScreenCount                 1
 | |
|         DMXGetScreenAttributes           10
 | |
|         DMXChangeScreensAttributes       11
 | |
|         DMXAddScreen                     12
 | |
|         DMXRemoveScreen                  13
 | |
| 
 | |
|         DMXGetWindowAttributes            3
 | |
| 
 | |
|         DMXGetDesktopAttributes          14
 | |
|         DMXChangeDesktopAttributes       15
 | |
| 
 | |
|         DMXGetInputCount                  4
 | |
|         DMXGetInputAttributes             5
 | |
|         DMXAddInput                      16
 | |
|         DMXRemoveInput                   17
 | |
| 
 | |
|     DMXQueryVersion
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           0               DMX opcode (X_DMXQueryVersion)
 | |
|         2           1               request length
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          majorVersion
 | |
|         4           CARD32          minorVersion
 | |
|         4           CARD32          patchVersion
 | |
|         12                          unused
 | |
| 
 | |
|     DMXSync
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           8               DMX opcode (X_DMXSync)
 | |
|         2           1               request length
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         20                          unused
 | |
| 
 | |
|     DMXForceWindowCreation
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           9               DMX opcode (X_DMXForceWindowCreation)
 | |
|         2           2               request length
 | |
|         4           CARD32          window
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         20                          unused
 | |
| 
 | |
| 
 | |
|     DMXGetScreenCount
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           1               DMX opcode (X_DMXGetScreenCount)
 | |
|         2           1               request length
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          screenCount
 | |
|         20                          unused
 | |
| 
 | |
|     DMXGetScreenAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           10               DMX opcode (X_DMXGetScreenAttributes)
 | |
|         2           2               request length
 | |
|         4           CARD32          physicalScreen
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           1+(n+p)/4       reply length
 | |
|         4           n               displayNameLength
 | |
|         4           CARD32          logicalScreen
 | |
|         2           CARD16          screenWindowWidth
 | |
|         2           CARD16          screenWindowHeight
 | |
|         2           INT16           screenWindowXoffset
 | |
|         2           INT16           screenWindowYoffset
 | |
|         2           CARD16          rootWindowWidth
 | |
|         2           CARD16          rootWindowHeight
 | |
|         2           INT16           rootWindowXoffset
 | |
|         2           INT16           rootWindowYoffset
 | |
|         2           INT16           rootWindowXorigin
 | |
|         2           INT16           rootWindowYorigin
 | |
|         n                           displayName
 | |
|         p                           pad(n)
 | |
| 
 | |
|     DMXChangeScreensAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           11              DMX opcode (X_DMXChangeScreenAttributes)
 | |
|         2           3+s+m+n         request length
 | |
|         4           s               screenCount
 | |
|         4           m               maskCount
 | |
|         4s          LISTofCARD32    screens
 | |
|         4m          LISTofCARD32    valueMasks
 | |
|         4n          LISTofVALUES    valueList
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         4           CARD32          errorScreen
 | |
|         16                          unused
 | |
| 
 | |
| 
 | |
|     DMXAddScreen
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           12              DMX opcode (X_DMXAddScreen)
 | |
|         2           3+m+(n+p)/4     request length
 | |
|         4           n               displayNameLength
 | |
|         4           CARD32          physicalScreen
 | |
|         4           CARD32          valueMask
 | |
|         4m          LISTofVALUES    valueList
 | |
|         n                           displayName
 | |
|         p                           pad(n)
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         4           CARD32          physicalScreen
 | |
|         16                          unused
 | |
| 
 | |
|     DMXRemoveScreen
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           13              DMX opcode (X_DMXRemoveScreen)
 | |
|         2           2               request length
 | |
|         4           CARD32          physicalScreen
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         20                          unused
 | |
| 
 | |
|     DMXGetWindowAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           3               DMX opcode (X_DMXGetWindowAttributes)
 | |
|         2           2               request length
 | |
|         4           CARD32          window
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           n*6             reply length
 | |
|         4           n               screenCount
 | |
|         20                          unused
 | |
|         n*4         LISTofCARD32    screens
 | |
|         n*4         LISTofCARD32    windows
 | |
|         n*8         LISTofRECTANGLE pos
 | |
|         n*8         LISTofRECTANGLE vis
 | |
| 
 | |
|     DMXGetDesktopAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           14              DMX opcode (X_DMXGetDesktopAttributes)
 | |
|         2           1               request length
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         2           INT16           width
 | |
|         2           INT16           height
 | |
|         2           INT16           shiftX
 | |
|         2           INT16           shiftY
 | |
|         16                          unused
 | |
| 
 | |
|     DMXChangeDesktopAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           15              DMX opcode (X_DMXChangeDesktopAttributes)
 | |
|         2           2+n             request length
 | |
|         4           BITMASK         valueMask
 | |
|         4n          LISTofVALUES    valueList
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         20                          unused
 | |
| 
 | |
|     DMXGetInputCount
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           4               DMX opcode (X_DMXGetInputCount)
 | |
|         2           1               request length
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          inputCount
 | |
|         20                          unused
 | |
| 
 | |
|     DMXGetInputAttributes
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           5               DMX opcode (X_DMXGetInputAttributes)
 | |
|         2           2               request length
 | |
|         4           CARD32          deviceId
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           (n+p)/4         reply length
 | |
|         4           CARD32          inputType
 | |
|         4           CARD32          physicalScreen
 | |
|         4           CARD32          physicalId
 | |
|         4           n               nameLength
 | |
|         1           BOOL            isCore
 | |
|         1           BOOL            sendsCore
 | |
|         1           BOOL            detached
 | |
|         5                           unused
 | |
|         n                           name
 | |
|         p                           pad(n)
 | |
| 
 | |
|     DMXAddInput
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           16              DMX opcode (X_DMXAddInput)
 | |
|         2           3+m+(n+p)/4     request length
 | |
|         4           n               displayNameLength
 | |
|         4           CARD32          valueMask
 | |
|         4m          LISTofVALUES    valueList
 | |
|         n                           displayName
 | |
|         p                           pad(n)
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         4           CARD32          physicalId
 | |
|         16                          unused
 | |
| 
 | |
|     DMXRemoveInput
 | |
|         1           CARD8           opcode (X assigned)
 | |
|         1           17              DMX opcode (X_DMXRemoveInput)
 | |
|         2           3               request length
 | |
|         4           CARD32          physicalId
 | |
|     ==>
 | |
|         1           1               Reply
 | |
|         1                           unused
 | |
|         2           CARD16          sequence number
 | |
|         4           0               reply length
 | |
|         4           CARD32          status
 | |
|         20                          unused
 | |
| 
 | |
| 
 | |
| 8. Changes to existing requests/replies/events
 | |
| 
 | |
|     No changes to existing requests, replies, or events are necessitated
 | |
|     by this extension.
 | |
| 
 | |
| 
 | |
| 
 | |
| 9. Acknowledgments
 | |
| 
 | |
| 
 | |
| 
 | |
| 10. References
 | |
| 
 | |
|     [X11R6.4] Robert W. Sheifler.  X Window System Protocol, X Consortium
 | |
|               Standard, X Version 11, Release 6.4.  Available from
 | |
|               xc/doc/specs/XProtocol and xc/doc/hardcopy/XProtocol.
 |