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.
 |