







                         Appendix B

                     Protocol Encoding




Syntactic Conventions

All numbers are in decimal, unless prefixed with #x, in
which case they are in hexadecimal (base 16).

The general syntax used to describe requests, replies,
errors, events, and compound types is:


     NameofThing
       encode-form
       ...
       encode-form


Each encode-form describes a single component.

For components described in the protocol as:


     name: TYPE


the encode-form is:


     N         TYPE name


N is the number of bytes occupied in the data stream, and
TYPE is the interpretation of those bytes.  For example,


     depth: CARD8


becomes:


     1         CARD8          depth


For components with a static numeric value the encode-form
is:










                             -2-


     N         value          name


The value is always interpreted as an N-byte unsigned inte­
ger.  For example, the first two bytes of a Window error are
always zero (indicating an error in general) and three
(indicating the Window error in particular):


     1         0    Error
     1         3    code


For components described in the protocol as:

     name: {Name1,..., NameI}

the encode-form is:


     N              name
               value1 Name1
               ...
               valueI NameI


The value is always interpreted as an N-byte unsigned inte­
ger.  Note that the size of N is sometimes larger than that
strictly required to encode the values.  For example:

     class: {InputOutput, InputOnly, CopyFromParent}

becomes:


     2                        class
               0    CopyFromParent
               1    InputOutput
               2    InputOnly


For components described in the protocol as:

     NAME: TYPE or Alternative1...or AlternativeI

the encode-form is:


     N         TYPE           NAME
               value1    Alternative1
               ...
               valueI    AlternativeI











                             -3-


The alternative values are guaranteed not to conflict with
the encoding of TYPE.  For example:

     destination: WINDOW or PointerWindow or InputFocus

becomes:


     4         WINDOW         destination
               0    PointerWindow
               1    InputFocus


For components described in the protocol as:


     value-mask: BITMASK


the encode-form is:


     N         BITMASK        value-mask
               mask1     mask-name1
               ...
               maskI     mask-nameI


The individual bits in the mask are specified and named, and
N is 2 or 4.  The most-significant bit in a BITMASK is
reserved for use in defining chained (multiword) bitmasks,
as extensions augment existing core requests.  The precise
interpretation of this bit is not yet defined here, although
a probable mechanism is that a 1-bit indicates that another
N bytes of bitmask follows, with bits within the overall
mask still interpreted from least-significant to most-sig­
nificant with an N-byte unit, with N-byte units interpreted
in stream order, and with the overall mask being byte-
swapped in individual N-byte units.

For LISTofVALUE encodings, the request is followed by a sec­
tion of the form:


     VALUEs
      encode-form
      ...
      encode-form


listing an encode-form for each VALUE.  The NAME in each
encode-form keys to the corresponding BITMASK bit.  The
encoding of a VALUE always occupies four bytes, but the num­
ber of bytes specified in the encoding-form indicates how









                             -4-


many of the least-significant bytes are actually used; the
remaining bytes are unused and their values do not matter.

In various cases, the number of bytes occupied by a compo­
nent will be specified by a lowercase single-letter variable
name instead of a specific numeric value, and often some
other component will have its value specified as a simple
numeric expression involving these variables.  Components
specified with such expressions are always interpreted as
unsigned integers.  The scope of such variables is always
just the enclosing request, reply, error, event, or compound
type structure.  For example:


     2         3+n            request length
     4n        LISTofPOINT    points


For unused bytes (the values of the bytes are undefined and
do no matter), the encode-form is:


     N                   unused


If the number of unused bytes is variable, the encode-form
typically is:


     p                   unused, p=pad(E)


where E is some expression, and pad(E) is the number of
bytes needed to round E up to a multiple of four.


     pad(E) = (4 - (E mod 4)) mod 4


Common Types

LISTofFOO

     In this document the LISTof notation strictly means
     some number of repetitions of the FOO encoding; the
     actual length of the list is encoded elsewhere.

SETofFOO

     A set is always represented by a bitmask, with a 1-bit
     indicating presence in the set.

BITMASK: CARD32










                             -5-


WINDOW: CARD32

PIXMAP: CARD32

CURSOR: CARD32

FONT: CARD32

GCONTEXT: CARD32

COLORMAP: CARD32

DRAWABLE: CARD32

FONTABLE: CARD32

ATOM: CARD32

VISUALID: CARD32

BYTE: 8-bit value

INT8: 8-bit signed integer

INT16: 16-bit signed integer

INT32: 32-bit signed integer

CARD8: 8-bit unsigned integer

CARD16: 16-bit unsigned integer

CARD32: 32-bit unsigned integer

TIMESTAMP: CARD32


BITGRAVITY
       0         Forget
       1         NorthWest
       2         North
       3         NorthEast
       4         West
       5         Center
       6         East
       7         SouthWest
       8         South
       9         SouthEast
       10        Static



WINGRAVITY
       0         Unmap









                             -6-


       1         NorthWest
       2         North
       3         NorthEast
       4         West
       5         Center
       6         East
       7         SouthWest
       8         South
       9         SouthEast
       10        Static



BOOL
       0         False
       1         True



SETofEVENT
       #x00000001KeyPress
       #x00000002KeyRelease
       #x00000004ButtonPress
       #x00000008ButtonRelease
       #x00000010EnterWindow
       #x00000020LeaveWindow
       #x00000040PointerMotion
       #x00000080PointerMotionHint
       #x00000100Button1Motion
       #x00000200Button2Motion
       #x00000400Button3Motion
       #x00000800Button4Motion
       #x00001000Button5Motion
       #x00002000ButtonMotion
       #x00004000KeymapState
       #x00008000Exposure
       #x00010000VisibilityChange
       #x00020000StructureNotify
       #x00040000ResizeRedirect
       #x00080000SubstructureNotify
       #x00100000SubstructureRedirect
       #x00200000FocusChange
       #x00400000PropertyChange
       #x00800000ColormapChange
       #x01000000OwnerGrabButton
       #xFE000000unused but must be zero



SETofPOINTEREVENT
       encodings are the same as for SETofEVENT, except with
       #xFFFF8003unused but must be zero











                             -7-


SETofDEVICEEVENT
       encodings are the same as for SETofEVENT, except with
       #xFFFFC0B0unused but must be zero

KEYSYM: CARD32

KEYCODE: CARD8

BUTTON: CARD8


SETofKEYBUTMASK
       #x0001    Shift
       #x0002    Lock
       #x0004    Control
       #x0008    Mod1
       #x0010    Mod2
       #x0020    Mod3
       #x0040    Mod4
       #x0080    Mod5
       #x0100    Button1
       #x0200    Button2
       #x0400    Button3
       #x0800    Button4
       #x1000    Button5
       #xE000    unused but must be zero



SETofKEYMASK
       encodings are the same as for SETofKEYBUTMASK, except with
       #xFF00    unused but must be zero


STRING8: LISTofCARD8

STRING16: LISTofCHAR2B


CHAR2B
  1  CARD8     byte1
  1  CARD8     byte2



POINT
  2  INT16     x
  2  INT16     y



RECTANGLE
  2  INT16     x
  2  INT16     y









                             -8-


  2  CARD16    width
  2  CARD16    height



ARC
  2  INT16     x
  2  INT16     y
  2  CARD16    width
  2  CARD16    height
  2  INT16     angle1
  2  INT16     angle2



HOST
  1                      family
     0         Internet
     1         DECnet
     2         Chaos
  1                      unused
  2  n                   length of address
  n  LISTofBYTE          address
  p                      unused, p=pad(n)



STR
  1  n                   length of name in bytes
  n  STRING8             name


Errors


Request
  1  0                   Error
  1  1                   code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Value
  1  0                   Error
  1  2                   code
  2  CARD16              sequence number
  4  <32-bits>           bad value
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused









                             -9-


Window
  1  0                   Error
  1  3                   code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Pixmap
  1  0                   Error
  1  4                   code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Atom
  1  0                   Error
  1  5                   code
  2  CARD16              sequence number
  4  CARD32              bad atom id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Cursor
  1  0                   Error
  1  6                   code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Font
  1  0                   Error
  1  7                   code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused











                            -10-


Match
  1  0                   Error
  1  8                   code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Drawable
  1  0                   Error
  1  9                   code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Access
  1  0                   Error
  1  10                  code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Alloc
  1  0                   Error
  1  11                  code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Colormap
  1  0                   Error
  1  12                  code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused











                            -11-


GContext
  1  0                   Error
  1  13                  code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



IDChoice
  1  0                   Error
  1  14                  code
  2  CARD16              sequence number
  4  CARD32              bad resource id
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Name
  1  0                   Error
  1  15                  code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Length
  1  0                   Error
  1  16                  code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused



Implementation
  1  0                   Error
  1  17                  code
  2  CARD16              sequence number
  4                      unused
  2  CARD16              minor opcode
  1  CARD8               major opcode
  21                     unused











                            -12-


Keyboards

KEYCODE values are always greater than 7 (and less than
256).

KEYSYM values with the bit #x10000000 set are reserved as
vendor-specific.

The names and encodings of the standard KEYSYM values are
contained in Appendix A, Keysym Encoding.

Pointers

BUTTON values are numbered starting with one.

Predefined Atoms


PRIMARY          1            WM_NORMAL_HINTS  40
SECONDARY        2            WM_SIZE_HINTS    41
ARC              3            WM_ZOOM_HINTS    42
ATOM             4            MIN_SPACE        43
BITMAP           5            NORM_SPACE       44
CARDINAL         6            MAX_SPACE        45
COLORMAP         7            END_SPACE        46
CURSOR           8            SUPERSCRIPT_X    47
CUT_BUFFER0      9            SUPERSCRIPT_Y    48
CUT_BUFFER1      10           SUBSCRIPT_X      49
CUT_BUFFER2      11           SUBSCRIPT_Y      50
CUT_BUFFER3      12           UNDERLINE_POSITION51
CUT_BUFFER4      13           UNDERLINE_THICKNESS52
CUT_BUFFER5      14           STRIKEOUT_ASCENT 53
CUT_BUFFER6      15           STRIKEOUT_DESCENT54
CUT_BUFFER7      16           ITALIC_ANGLE     55
DRAWABLE         17           X_HEIGHT         56
FONT             18           QUAD_WIDTH       57
INTEGER          19           WEIGHT           58
PIXMAP           20           POINT_SIZE       59
POINT            21           RESOLUTION       60
RECTANGLE        22           COPYRIGHT        61
RESOURCE_MANAGER 23           NOTICE           62
RGB_COLOR_MAP    24           FONT_NAME        63
RGB_BEST_MAP     25           FAMILY_NAME      64
RGB_BLUE_MAP     26           FULL_NAME        65
RGB_DEFAULT_MAP  27           CAP_HEIGHT       66
RGB_GRAY_MAP     28           WM_CLASS         67
RGB_GREEN_MAP    29           WM_TRANSIENT_FOR 68
RGB_RED_MAP      30
STRING           31
VISUALID         32
WINDOW           33
WM_COMMAND       34
WM_HINTS         35
WM_CLIENT_MACHINE             36









                            -13-


WM_ICON_NAME     37
WM_ICON_SIZE     38
WM_NAME          39


Connection Setup

For TCP connections, displays on a given host are numbered
starting from 0, and the server for display N listens and
accepts connections on port 6000 + N.  For DECnet connec­
tions, displays on a given host are numbered starting from
0, and the server for display N listens and accepts connec­
tions on the object name obtained by concatenating ``X$X''
with the decimal representation of N, for example, X$X0 and
X$X1.

Information sent by the client at connection setup:


  1                      byte-order
     #x42      MSB first
     #x6C      LSB first
  1                      unused
  2  CARD16              protocol-major-version
  2  CARD16              protocol-minor-version
  2  n                   length of authorization-protocol-name
  2  d                   length of authorization-protocol-data
  2                      unused
  n  STRING8             authorization-protocol-name
  p                      unused, p=pad(n)
  d  STRING8             authorization-protocol-data
  q                      unused, q=pad(d)


Except where explicitly noted in the protocol, all 16-bit
and 32-bit quantities sent by the client must be transmitted
with the specified byte order, and all 16-bit and 32-bit
quantities returned by the server will be transmitted with
this byte order.

Information received by the client if the connection is
refused:


  1  0                   Failed
  1  n                   length of reason in bytes
  2  CARD16              protocol-major-version
  2  CARD16              protocol-minor-version
  2  (n+p)/4             length in 4-byte units of ``additional data''
  n  STRING8             reason
  p                      unused, p=pad(n)












                            -14-


Information received by the client if further authentication
is required:


  1  2                   Authenticate
  5                      unused
  2  (n+p)/4             length in 4-byte units of ``additional data''
  n  STRING8             reason
  p                      unused, p=pad(n)


Information received by the client if the connection is
accepted:


  1  1                   Success
  1                      unused
  2  CARD16              protocol-major-version
  2  CARD16              protocol-minor-version
  2  8+2n+(v+p+m)/4      length in 4-byte units of ``additional data''
  4  CARD32              release-number
  4  CARD32              resource-id-base
  4  CARD32              resource-id-mask
  4  CARD32              motion-buffer-size
  2  v                   length of vendor
  2  CARD16              maximum-request-length
  1  CARD8               number of SCREENs in roots
  1  n                   number for FORMATs in pixmap-formats
  1                      image-byte-order
     0         LSBFirst
     1         MSBFirst
  1                      bitmap-format-bit-order
     0         LeastSignificant
     1         MostSignificant
  1  CARD8               bitmap-format-scanline-unit
  1  CARD8               bitmap-format-scanline-pad
  1  KEYCODE             min-keycode
  1  KEYCODE             max-keycode
  4                      unused
  v  STRING8             vendor
  p                      unused, p=pad(v)
  8n LISTofFORMAT        pixmap-formats
  m  LISTofSCREEN        roots (m is always a multiple of 4)



FORMAT
  1  CARD8               depth
  1  CARD8               bits-per-pixel
  1  CARD8               scanline-pad
  5                      unused












                            -15-


SCREEN
  4  WINDOW              root
  4  COLORMAP            default-colormap
  4  CARD32              white-pixel
  4  CARD32              black-pixel
  4  SETofEVENT          current-input-masks
  2  CARD16              width-in-pixels
  2  CARD16              height-in-pixels
  2  CARD16              width-in-millimeters
  2  CARD16              height-in-millimeters
  2  CARD16              min-installed-maps
  2  CARD16              max-installed-maps
  4  VISUALID            root-visual
  1                      backing-stores
     0         Never
     1         WhenMapped
     2         Always
  1  BOOL                save-unders
  1  CARD8               root-depth
  1  CARD8               number of DEPTHs in allowed-depths
  n  LISTofDEPTH         allowed-depths (n is always a multiple of 4)



DEPTH
  1  CARD8               depth
  1                      unused
  2  n                   number of VISUALTYPES in visuals
  4                      unused
  24n          LISTofVISUALTYPEvisuals



VISUALTYPE
  4  VISUALID            visual-id
  1                      class
     0         StaticGray
     1         GrayScale
     2         StaticColor
     3         PseudoColor
     4         TrueColor
     5         DirectColor
  1  CARD8               bits-per-rgb-value
  2  CARD16              colormap-entries
  4  CARD32              red-mask
  4  CARD32              green-mask
  4  CARD32              blue-mask
  4                      unused


Requests


CreateWindow









                            -16-


  1  1                   opcode
  1  CARD8               depth
  2  8+n                 request length
  4  WINDOW              wid
  4  WINDOW              parent
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  2                      class
     0         CopyFromParent
     1         InputOutput
     2         InputOnly
  4  VISUALID            visual
     0         CopyFromParent
  4  BITMASK             value-mask (has n bits set to 1)
     #x00000001          background-pixmap
     #x00000002          background-pixel
     #x00000004          border-pixmap
     #x00000008          border-pixel
     #x00000010          bit-gravity
     #x00000020          win-gravity
     #x00000040          backing-store
     #x00000080          backing-planes
     #x00000100          backing-pixel
     #x00000200          override-redirect
     #x00000400          save-under
     #x00000800          event-mask
     #x00001000          do-not-propagate-mask
     #x00002000          colormap
     #x00004000          cursor
  4n LISTofVALUE         value-list


  VALUEs
  4  PIXMAP              background-pixmap
     0         None
     1         ParentRelative
  4  CARD32              background-pixel
  4  PIXMAP              border-pixmap
     0         CopyFromParent
  4  CARD32              border-pixel
  1  BITGRAVITY          bit-gravity
  1  WINGRAVITY          win-gravity
  1                      backing-store
     0         NotUseful
     1         WhenMapped
     2         Always
  4  CARD32              backing-planes
  4  CARD32              backing-pixel
  1  BOOL                override-redirect
  1  BOOL                save-under
  4  SETofEVENT          event-mask









                            -17-


  4  SETofDEVICEEVENT    do-not-propagate-mask
  4  COLORMAP            colormap
     0         CopyFromParent
  4  CURSOR              cursor
     0         None



ChangeWindowAttributes
  1  2                   opcode
  1                      unused
  2  3+n                 request length
  4  WINDOW              window
  4  BITMASK             value-mask (has n bits set to 1)
     encodings are the same as for CreateWindow
  4n LISTofVALUE         value-list
     encodings are the same as for CreateWindow



GetWindowAttributes
  1  3                   opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window


 =>
  1  1                   Reply
  1                      backing-store
     0         NotUseful
     1         WhenMapped
     2         Always
  2  CARD16              sequence number
  4  3                   reply length
  4  VISUALID            visual
  2                      class
     1         InputOutput
     2         InputOnly
  1  BITGRAVITY          bit-gravity
  1  WINGRAVITY          win-gravity
  4  CARD32              backing-planes
  4  CARD32              backing-pixel
  1  BOOL                save-under
  1  BOOL                map-is-installed
  1                      map-state
     0         Unmapped
     1         Unviewable
     2         Viewable
  1  BOOL                override-redirect
  4  COLORMAP            colormap
     0         None
  4  SETofEVENT          all-event-masks
  4  SETofEVENT          your-event-mask









                            -18-


  2  SETofDEVICEEVENT    do-not-propagate-mask
  2                      unused



DestroyWindow
  1  4                   opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window



DestroySubwindows
  1  5                   opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window



ChangeSaveSet
  1  6                   opcode
  1                      mode
     0         Insert
     1         Delete
  2  2                   request length
  4  WINDOW              window



ReparentWindow
  1  7                   opcode
  1                      unused
  2  4                   request length
  4  WINDOW              window
  4  WINDOW              parent
  2  INT16               x
  2  INT16               y



MapWindow
  1  8                   opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window



MapSubwindows
  1  9                   opcode
  1                      unused
  2  2                   request length









                            -19-


  4  WINDOW              window



UnmapWindow
  1  10                  opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window



UnmapSubwindows
  1  11                  opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window



ConfigureWindow
  1  12                  opcode
  1                      unused
  2  3+n                 request length
  4  WINDOW              window
  2  BITMASK             value-mask (has n bits set to 1)
     #x0001    x
     #x0002    y
     #x0004    width
     #x0008    height
     #x0010    border-width
     #x0020    sibling
     #x0040    stack-mode
  2                      unused
  4n LISTofVALUE         value-list


  VALUEs
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  4  WINDOW              sibling
  1                      stack-mode
     0         Above
     1         Below
     2         TopIf
     3         BottomIf
     4         Opposite



CirculateWindow









                            -20-


  1  13                  opcode
  1                      direction
     0         RaiseLowest
     1         LowerHighest
  2  2                   request length
  4  WINDOW              window



GetGeometry
  1  14                  opcode
  1                      unused
  2  2                   request length
  4  DRAWABLE            drawable


 =>
  1  1                   Reply
  1  CARD8               depth
  2  CARD16              sequence number
  4  0                   reply length
  4  WINDOW              root
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  10                     unused



QueryTree
  1  15                  opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  n                   reply length
  4  WINDOW              root
  4  WINDOW              parent
     0         None
  2  n                   number of WINDOWs in children
  14                     unused
  4n LISTofWINDOW        children



InternAtom
  1  16                  opcode









                            -21-


  1  BOOL                only-if-exists
  2  2+(n+p)/4           request length
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  4  ATOM                atom
     0         None
  20                     unused



GetAtomName
  1  17                  opcode
  1                      unused
  2  2                   request length
  4  ATOM                atom


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  2  n                   length of name
  22                     unused
  n  STRING8             name
  p                      unused, p=pad(n)



ChangeProperty
  1  18                  opcode
  1                      mode
     0         Replace
     1         Prepend
     2         Append
  2  6+(n+p)/4           request length
  4  WINDOW              window
  4  ATOM                property
  4  ATOM                type
  1  CARD8               format
  3                      unused
  4  CARD32              length of data in format units
                         (= n for format = 8)
                         (= n/2 for format = 16)
                         (= n/4 for format = 32)









                            -22-


  n  LISTofBYTE          data
                         (n is a multiple of 2 for format = 16)
                         (n is a multiple of 4 for format = 32)
  p                      unused, p=pad(n)



DeleteProperty
  1  19                  opcode
  1                      unused
  2  3                   request length
  4  WINDOW              window
  4  ATOM                property



GetProperty
  1  20                  opcode
  1  BOOL                delete
  2  6                   request length
  4  WINDOW              window
  4  ATOM                property
  4  ATOM                type
     0         AnyPropertyType
  4  CARD32              long-offset
  4  CARD32              long-length


 =>
  1  1                   Reply
  1  CARD8               format
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  4  ATOM                type
     0         None
  4  CARD32              bytes-after
  4  CARD32              length of value in format units
                         (= 0 for format = 0)
                         (= n for format = 8)
                         (= n/2 for format = 16)
                         (= n/4 for format = 32)
  12                     unused
  n  LISTofBYTE          value
                         (n is zero for format = 0)
                         (n is a multiple of 2 for format = 16)
                         (n is a multiple of 4 for format = 32)
  p                      unused, p=pad(n)



ListProperties
  1  21                  opcode
  1                      unused
  2  2                   request length









                            -23-


  4  WINDOW              window


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  n                   reply length
  2  n                   number of ATOMs in atoms
  22                     unused
  4n LISTofATOM          atoms



SetSelectionOwner
  1  22                  opcode
  1                      unused
  2  4                   request length
  4  WINDOW              owner
     0         None
  4  ATOM                selection
  4  TIMESTAMP           time
     0         CurrentTime



GetSelectionOwner
  1  23                  opcode
  1                      unused
  2  2                   request length
  4  ATOM                selection


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  4  WINDOW              owner
     0         None
  20                     unused



ConvertSelection
  1  24                  opcode
  1                      unused
  2  6                   request length
  4  WINDOW              requestor
  4  ATOM                selection
  4  ATOM                target
  4  ATOM                property
     0         None
  4  TIMESTAMP           time









                            -24-


     0         CurrentTime



SendEvent
  1  25                  opcode
  1  BOOL                propagate
  2  11                  request length
  4  WINDOW              destination
     0         PointerWindow
     1         InputFocus
  4  SETofEVENT          event-mask
  32                     event
     standard event format (see the Events section)



GrabPointer
  1  26                  opcode
  1  BOOL                owner-events
  2  6                   request length
  4  WINDOW              grab-window
  2  SETofPOINTEREVENT   event-mask
  1                      pointer-mode
     0         Synchronous
     1         Asynchronous
  1                      keyboard-mode
     0         Synchronous
     1         Asynchronous
  4  WINDOW              confine-to
     0         None
  4  CURSOR              cursor
     0         None
  4  TIMESTAMP           time
     0         CurrentTime


 =>
  1  1                   Reply
  1                      status
     0         Success
     1         AlreadyGrabbed
     2         InvalidTime
     3         NotViewable
     4         Frozen
  2  CARD16              sequence number
  4  0                   reply length
  24                     unused



UngrabPointer
  1  27                  opcode
  1                      unused









                            -25-


  2  2                   request length
  4  TIMESTAMP           time
     0         CurrentTime



GrabButton
  1  28                  opcode
  1  BOOL                owner-events
  2  6                   request length
  4  WINDOW              grab-window
  2  SETofPOINTEREVENT   event-mask
  1                      pointer-mode
     0         Synchronous
     1         Asynchronous
  1                      keyboard-mode
     0         Synchronous
     1         Asynchronous
  4  WINDOW              confine-to
     0         None
  4  CURSOR              cursor
     0         None
  1  BUTTON              button
     0         AnyButton
  1                      unused
  2  SETofKEYMASK        modifiers
     #x8000    AnyModifier



UngrabButton
  1  29                  opcode
  1  BUTTON              button
     0         AnyButton
  2  3                   request length
  4  WINDOW              grab-window
  2  SETofKEYMASK        modifiers
     #x8000    AnyModifier
  2                      unused



ChangeActivePointerGrab
  1  30                  opcode
  1                      unused
  2  4                   request length
  4  CURSOR              cursor
     0         None
  4  TIMESTAMP           time
     0         CurrentTime
  2  SETofPOINTEREVENT   event-mask
  2                      unused











                            -26-


GrabKeyboard
  1  31                  opcode
  1  BOOL                owner-events
  2  4                   request length
  4  WINDOW              grab-window
  4  TIMESTAMP           time
     0         CurrentTime
  1                      pointer-mode
     0         Synchronous
     1         Asynchronous
  1                      keyboard-mode
     0         Synchronous
     1         Asynchronous
  2                      unused


 =>
  1  1                   Reply
  1                      status
     0         Success
     1         AlreadyGrabbed
     2         InvalidTime
     3         NotViewable
     4         Frozen
  2  CARD16              sequence number
  4  0                   reply length
  24                     unused



UngrabKeyboard
  1  32                  opcode
  1                      unused
  2  2                   request length
  4  TIMESTAMP           time
     0         CurrentTime



GrabKey
  1  33                  opcode
  1  BOOL                owner-events
  2  4                   request length
  4  WINDOW              grab-window
  2  SETofKEYMASK        modifiers
     #x8000    AnyModifier
  1  KEYCODE             key
     0         AnyKey
  1                      pointer-mode
     0         Synchronous
     1         Asynchronous
  1                      keyboard-mode
     0         Synchronous
     1         Asynchronous









                            -27-


  3                      unused



UngrabKey
  1  34                  opcode
  1  KEYCODE             key
     0         AnyKey
  2  3                   request length
  4  WINDOW              grab-window
  2  SETofKEYMASK        modifiers
     #x8000    AnyModifier
  2                      unused



AllowEvents
  1  35                  opcode
  1                      mode
     0         AsyncPointer
     1         SyncPointer
     2         ReplayPointer
     3         AsyncKeyboard
     4         SyncKeyboard
     5         ReplayKeyboard
     6         AsyncBoth
     7         SyncBoth
  2  2                   request length
  4  TIMESTAMP           time
     0         CurrentTime



GrabServer
  1  36                  opcode
  1                      unused
  2  1                   request length



UngrabServer
  1  37                  opcode
  1                      unused
  2  1                   request length



QueryPointer
  1  38                  opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window











                            -28-


 =>
  1  1                   Reply
  1  BOOL                same-screen
  2  CARD16              sequence number
  4  0                   reply length
  4  WINDOW              root
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               win-x
  2  INT16               win-y
  2  SETofKEYBUTMASK     mask
  6                      unused



GetMotionEvents
  1  39                  opcode
  1                      unused
  2  4                   request length
  4  WINDOW              window
  4  TIMESTAMP           start
     0         CurrentTime
  4  TIMESTAMP           stop
     0         CurrentTime


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  2n                  reply length
  4  n                   number of TIMECOORDs in events
  20                     unused
  8n LISTofTIMECOORD     events



  TIMECOORD
  4  TIMESTAMP           time
  2  INT16               x
  2  INT16               y



TranslateCoordinates
  1  40                  opcode
  1                      unused
  2  4                   request length
  4  WINDOW              src-window
  4  WINDOW              dst-window
  2  INT16               src-x
  2  INT16               src-y









                            -29-


 =>
  1  1                   Reply
  1  BOOL                same-screen
  2  CARD16              sequence number
  4  0                   reply length
  4  WINDOW              child
     0         None
  2  INT16               dst-x
  2  INT16               dst-y
  16                     unused



WarpPointer
  1  41                  opcode
  1                      unused
  2  6                   request length
  4  WINDOW              src-window
     0         None
  4  WINDOW              dst-window
     0         None
  2  INT16               src-x
  2  INT16               src-y
  2  CARD16              src-width
  2  CARD16              src-height
  2  INT16               dst-x
  2  INT16               dst-y



SetInputFocus
  1  42                  opcode
  1                      revert-to
     0         None
     1         PointerRoot
     2         Parent
  2  3                   request length
  4  WINDOW              focus
     0         None
     1         PointerRoot
  4  TIMESTAMP           time
     0         CurrentTime



GetInputFocus
  1  43                  opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      revert-to









                            -30-


     0         None
     1         PointerRoot
     2         Parent
  2  CARD16              sequence number
  4  0                   reply length
  4  WINDOW              focus
     0         None
     1         PointerRoot
  20                     unused



QueryKeymap
  1  44                  opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  2                   reply length
  32 LISTofCARD8         keys



OpenFont
  1  45                  opcode
  1                      unused
  2  3+(n+p)/4           request length
  4  FONT                fid
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)



CloseFont
  1  46                  opcode
  1                      unused
  2  2                   request length
  4  FONT                font



QueryFont
  1  47                  opcode
  1                      unused
  2  2                   request length
  4  FONTABLE            font











                            -31-


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  7+2n+3m             reply length
  12 CHARINFO            min-bounds
  4                      unused
  12 CHARINFO            max-bounds
  4                      unused
  2  CARD16              min-char-or-byte2
  2  CARD16              max-char-or-byte2
  2  CARD16              default-char
  2  n                   number of FONTPROPs in properties
  1                      draw-direction
     0         LeftToRight
     1         RightToLeft
  1  CARD8               min-byte1
  1  CARD8               max-byte1
  1  BOOL                all-chars-exist
  2  INT16               font-ascent
  2  INT16               font-descent
  4  m                   number of CHARINFOs in char-infos
  8n LISTofFONTPROP      properties
  12m          LISTofCHARINFOchar-infos


  FONTPROP
  4  ATOM                name
  4  <32-bits>           value



  CHARINFO
  2  INT16               left-side-bearing
  2  INT16               right-side-bearing
  2  INT16               character-width
  2  INT16               ascent
  2  INT16               descent
  2  CARD16              attributes



QueryTextExtents
  1  48                  opcode
  1  BOOL                odd length, True if p = 2
  2  2+(2n+p)/4          request length
  4  FONTABLE            font
  2n STRING16            string
  p                      unused, p=pad(2n)


 =>
  1  1                   Reply
  1                      draw-direction









                            -32-


     0         LeftToRight
     1         RightToLeft
  2  CARD16              sequence number
  4  0                   reply length
  2  INT16               font-ascent
  2  INT16               font-descent
  2  INT16               overall-ascent
  2  INT16               overall-descent
  4  INT32               overall-width
  4  INT32               overall-left
  4  INT32               overall-right
  4                      unused



ListFonts
  1  49                  opcode
  1                      unused
  2  2+(n+p)/4           request length
  2  CARD16              max-names
  2  n                   length of pattern
  n  STRING8             pattern
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  2  CARD16              number of STRs in names
  22                     unused
  n  LISTofSTR           names
  p                      unused, p=pad(n)



ListFontsWithInfo
  1  50                  opcode
  1                      unused
  2  2+(n+p)/4           request length
  2  CARD16              max-names
  2  n                   length of pattern
  n  STRING8             pattern
  p                      unused, p=pad(n)


 => (except for last in series)
  1  1                   Reply
  1  n                   length of name in bytes
  2  CARD16              sequence number
  4  7+2m+(n+p)/4        reply length
  12 CHARINFO            min-bounds
  4                      unused









                            -33-


  12 CHARINFO            max-bounds
  4                      unused
  2  CARD16              min-char-or-byte2
  2  CARD16              max-char-or-byte2
  2  CARD16              default-char
  2  m                   number of FONTPROPs in properties
  1                      draw-direction
     0         LeftToRight
     1         RightToLeft
  1  CARD8               min-byte1
  1  CARD8               max-byte1
  1  BOOL                all-chars-exist
  2  INT16               font-ascent
  2  INT16               font-descent
  4  CARD32              replies-hint
  8m LISTofFONTPROP      properties
  n  STRING8             name
  p                      unused, p=pad(n)


  FONTPROP
  encodings are the same as for QueryFont

  CHARINFO
  encodings are the same as for QueryFont


 => (last in series)
  1  1                   Reply
  1  0                   last-reply indicator
  2  CARD16              sequence number
  4  7                   reply length
  52                     unused



SetFontPath
  1  51                  opcode
  1                      unused
  2  2+(n+p)/4           request length
  2  CARD16              number of STRs in path
  2                      unused
  n  LISTofSTR           path
  p                      unused, p=pad(n)



GetFontPath
  1  52                  opcode
  1                      unused
  2  1                   request list


 =>









                            -34-


  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  2  CARD16              number of STRs in path
  22                     unused
  n  LISTofSTR           path
  p                      unused, p=pad(n)



CreatePixmap
  1  53                  opcode
  1  CARD8               depth
  2  4                   request length
  4  PIXMAP              pid
  4  DRAWABLE            drawable
  2  CARD16              width
  2  CARD16              height



FreePixmap
  1  54                  opcode
  1                      unused
  2  2                   request length
  4  PIXMAP              pixmap



CreateGC
  1  55                  opcode
  1                      unused
  2  4+n                 request length
  4  GCONTEXT            cid
  4  DRAWABLE            drawable
  4  BITMASK             value-mask (has n bits set to 1)
     #x00000001          function
     #x00000002          plane-mask
     #x00000004          foreground
     #x00000008          background
     #x00000010          line-width
     #x00000020          line-style
     #x00000040          cap-style
     #x00000080          join-style
     #x00000100          fill-style
     #x00000200          fill-rule
     #x00000400          tile
     #x00000800          stipple
     #x00001000          tile-stipple-x-origin
     #x00002000          tile-stipple-y-origin
     #x00004000          font
     #x00008000          subwindow-mode
     #x00010000          graphics-exposures









                            -35-


     #x00020000          clip-x-origin
     #x00040000          clip-y-origin
     #x00080000          clip-mask
     #x00100000          dash-offset
     #x00200000          dashes
     #x00400000          arc-mode
  4n LISTofVALUE         value-list


  VALUEs
  1                      function
     0         Clear
     1         And
     2         AndReverse
     3         Copy
     4         AndInverted
     5         NoOp
     6         Xor
     7         Or
     8         Nor
     9         Equiv
     10        Invert
     11        OrReverse
     12        CopyInverted
     13        OrInverted
     14        Nand
     15        Set
  4  CARD32              plane-mask
  4  CARD32              foreground
  4  CARD32              background
  2  CARD16              line-width
  1                      line-style
     0         Solid
     1         OnOffDash
     2         DoubleDash
  1                      cap-style
     0         NotLast
     1         Butt
     2         Round
     3         Projecting
  1                      join-style
     0         Miter
     1         Round
     2         Bevel
  1                      fill-style
     0         Solid
     1         Tiled
     2         Stippled
     3         OpaqueStippled
  1                      fill-rule
     0         EvenOdd
     1         Winding
  4  PIXMAP              tile
  4  PIXMAP              stipple









                            -36-


  2  INT16               tile-stipple-x-origin
  2  INT16               tile-stipple-y-origin
  4  FONT                font
  1                      subwindow-mode
     0         ClipByChildren
     1         IncludeInferiors
  1  BOOL                graphics-exposures
  2  INT16               clip-x-origin
  2  INT16               clip-y-origin
  4  PIXMAP              clip-mask
     0         None
  2  CARD16              dash-offset
  1  CARD8               dashes
  1                      arc-mode
     0         Chord
     1         PieSlice



ChangeGC
  1  56                  opcode
  1                      unused
  2  3+n                 request length
  4  GCONTEXT            gc
  4  BITMASK             value-mask (has n bits set to 1)
     encodings are the same as for CreateGC
  4n LISTofVALUE         value-list
     encodings are the same as for CreateGC



CopyGC
  1  57                  opcode
  1                      unused
  2  4                   request length
  4  GCONTEXT            src-gc
  4  GCONTEXT            dst-gc
  4  BITMASK             value-mask
     encodings are the same as for CreateGC



SetDashes
  1  58                  opcode
  1                      unused
  2  3+(n+p)/4           request length
  4  GCONTEXT            gc
  2  CARD16              dash-offset
  2  n                   length of dashes
  n  LISTofCARD8         dashes
  p                      unused, p=pad(n)












                            -37-


SetClipRectangles
  1  59                  opcode
  1                      ordering
     0         UnSorted
     1         YSorted
     2         YXSorted
     3         YXBanded
  2  3+2n                request length
  4  GCONTEXT            gc
  2  INT16               clip-x-origin
  2  INT16               clip-y-origin
  8n LISTofRECTANGLE     rectangles



FreeGC
  1  60                  opcode
  1                      unused
  2  2                   request length
  4  GCONTEXT            gc



ClearArea
  1  61                  opcode
  1  BOOL                exposures
  2  4                   request length
  4  WINDOW              window
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height



CopyArea
  1  62                  opcode
  1                      unused
  2  7                   request length
  4  DRAWABLE            src-drawable
  4  DRAWABLE            dst-drawable
  4  GCONTEXT            gc
  2  INT16               src-x
  2  INT16               src-y
  2  INT16               dst-x
  2  INT16               dst-y
  2  CARD16              width
  2  CARD16              height



CopyPlane
  1  63                  opcode
  1                      unused









                            -38-


  2  8                   request length
  4  DRAWABLE            src-drawable
  4  DRAWABLE            dst-drawable
  4  GCONTEXT            gc
  2  INT16               src-x
  2  INT16               src-y
  2  INT16               dst-x
  2  INT16               dst-y
  2  CARD16              width
  2  CARD16              height
  4  CARD32              bit-plane



PolyPoint
  1  64                  opcode
  1                      coordinate-mode
     0         Origin
     1         Previous
  2  3+n                 request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  4n LISTofPOINT         points



PolyLine
  1  65                  opcode
  1                      coordinate-mode
     0         Origin
     1         Previous
  2  3+n                 request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  4n LISTofPOINT         points



PolySegment
  1  66                  opcode
  1                      unused
  2  3+2n                request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  8n LISTofSEGMENT       segments


  SEGMENT
  2  INT16               x1
  2  INT16               y1
  2  INT16               x2
  2  INT16               y2











                            -39-


PolyRectangle
  1  67                  opcode
  1                      unused
  2  3+2n                request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  8n LISTofRECTANGLE     rectangles



PolyArc
  1  68                  opcode
  1                      unused
  2  3+3n                request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  12n          LISTofARC arcs



FillPoly
  1  69                  opcode
  1                      unused
  2  4+n                 request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  1                      shape
     0         Complex
     1         Nonconvex
     2         Convex
  1                      coordinate-mode
     0         Origin
     1         Previous
  2                      unused
  4n LISTofPOINT         points



PolyFillRectangle
  1  70                  opcode
  1                      unused
  2  3+2n                request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  8n LISTofRECTANGLE     rectangles



PolyFillArc
  1  71                  opcode
  1                      unused
  2  3+3n                request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc









                            -40-


  12n          LISTofARC arcs



PutImage
  1  72                  opcode
  1                      format
     0         Bitmap
     1         XYPixmap
     2         ZPixmap
  2  6+(n+p)/4           request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  2  CARD16              width
  2  CARD16              height
  2  INT16               dst-x
  2  INT16               dst-y
  1  CARD8               left-pad
  1  CARD8               depth
  2                      unused
  n  LISTofBYTE          data
  p                      unused, p=pad(n)



GetImage
  1  73                  opcode
  1                      format
     1         XYPixmap
     2         ZPixmap
  2  5                   request length
  4  DRAWABLE            drawable
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  4  CARD32              plane-mask


 =>
  1  1                   Reply
  1  CARD8               depth
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  4  VISUALID            visual
     0         None
  20                     unused
  n  LISTofBYTE          data
  p                      unused, p=pad(n)



PolyText8
  1  74                  opcode









                            -41-


  1                      unused
  2  4+(n+p)/4           request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  2  INT16               x
  2  INT16               y
  n  LISTofTEXTITEM8     items
  p                      unused, p=pad(n)  (p is always 0 or 1)


  TEXTITEM8
  1  m                   length of string (cannot be 255)
  1  INT8                delta
  m  STRING8             string
  or
  1  255                 font-shift indicator
  1                      font byte 3 (most-significant)
  1                      font byte 2
  1                      font byte 1
  1                      font byte 0 (least-significant)



PolyText16
  1  75                  opcode
  1                      unused
  2  4+(n+p)/4           request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  2  INT16               x
  2  INT16               y
  n  LISTofTEXTITEM16    items
  p                      unused, p=pad(n)  (p must be 0 or 1)


  TEXTITEM16
  1  m                   number of CHAR2Bs in string (cannot be 255)
  1  INT8                delta
  2m STRING16            string
  or
  1  255                 font-shift indicator
  1                      font byte 3 (most-significant)
  1                      font byte 2
  1                      font byte 1
  1                      font byte 0 (least-significant)



ImageText8
  1  76                  opcode
  1  n                   length of string
  2  4+(n+p)/4           request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc









                            -42-


  2  INT16               x
  2  INT16               y
  n  STRING8             string
  p                      unused, p=pad(n)



ImageText16
  1  77                  opcode
  1  n                   number of CHAR2Bs in string
  2  4+(2n+p)/4          request length
  4  DRAWABLE            drawable
  4  GCONTEXT            gc
  2  INT16               x
  2  INT16               y
  2n STRING16            string
  p                      unused, p=pad(2n)



CreateColormap
  1  78                  opcode
  1                      alloc
     0         None
     1         All
  2  4                   request length
  4  COLORMAP            mid
  4  WINDOW              window
  4  VISUALID            visual



FreeColormap
  1  79                  opcode
  1                      unused
  2  2                   request length
  4  COLORMAP            cmap



CopyColormapAndFree
  1  80                  opcode
  1                      unused
  2  3                   request length
  4  COLORMAP            mid
  4  COLORMAP            src-cmap



InstallColormap
  1  81                  opcode
  1                      unused
  2  2                   request length
  4  COLORMAP            cmap









                            -43-


UninstallColormap
  1  82                  opcode
  1                      unused
  2  2                   request length
  4  COLORMAP            cmap



ListInstalledColormaps
  1  83                  opcode
  1                      unused
  2  2                   request length
  4  WINDOW              window


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  n                   reply length
  2  n                   number of COLORMAPs in cmaps
  22                     unused
  4n LISTofCOLORMAP      cmaps



AllocColor
  1  84                  opcode
  1                      unused
  2  4                   request length
  4  COLORMAP            cmap
  2  CARD16              red
  2  CARD16              green
  2  CARD16              blue
  2                      unused


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  2  CARD16              red
  2  CARD16              green
  2  CARD16              blue
  2                      unused
  4  CARD32              pixel
  12                     unused



AllocNamedColor
  1  85                  opcode
  1                      unused









                            -44-


  2  3+(n+p)/4           request length
  4  COLORMAP            cmap
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  4  CARD32              pixel
  2  CARD16              exact-red
  2  CARD16              exact-green
  2  CARD16              exact-blue
  2  CARD16              visual-red
  2  CARD16              visual-green
  2  CARD16              visual-blue
  8                      unused



AllocColorCells
  1  86                  opcode
  1  BOOL                contiguous
  2  3                   request length
  4  COLORMAP            cmap
  2  CARD16              colors
  2  CARD16              planes


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  n+m                 reply length
  2  n                   number of CARD32s in pixels
  2  m                   number of CARD32s in masks
  20                     unused
  4n LISTofCARD32        pixels
  4m LISTofCARD32        masks



AllocColorPlanes
  1  87                  opcode
  1  BOOL                contiguous
  2  4                   request length
  4  COLORMAP            cmap
  2  CARD16              colors
  2  CARD16              reds
  2  CARD16              greens









                            -45-


  2  CARD16              blues


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  n                   reply length
  2  n                   number of CARD32s in pixels
  2                      unused
  4  CARD32              red-mask
  4  CARD32              green-mask
  4  CARD32              blue-mask
  8                      unused
  4n LISTofCARD32        pixels



FreeColors
  1  88                  opcode
  1                      unused
  2  3+n                 request length
  4  COLORMAP            cmap
  4  CARD32              plane-mask
  4n LISTofCARD32        pixels



StoreColors
  1  89                  opcode
  1                      unused
  2  2+3n                request length
  4  COLORMAP            cmap
  12n          LISTofCOLORITEMitems


  COLORITEM
  4  CARD32              pixel
  2  CARD16              red
  2  CARD16              green
  2  CARD16              blue
  1                      do-red, do-green, do-blue
     #x01      do-red (1 is True, 0 is False)
     #x02      do-green (1 is True, 0 is False)
     #x04      do-blue (1 is True, 0 is False)
     #xF8      unused
  1                      unused



StoreNamedColor
  1  90                  opcode
  1                      do-red, do-green, do-blue
     #x01      do-red (1 is True, 0 is False)









                            -46-


     #x02      do-green (1 is True, 0 is False)
     #x04      do-blue (1 is True, 0 is False)
     #xF8      unused
  2  4+(n+p)/4           request length
  4  COLORMAP            cmap
  4  CARD32              pixel
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)



QueryColors
  1  91                  opcode
  1                      unused
  2  2+n                 request length
  4  COLORMAP            cmap
  4n LISTofCARD32        pixels


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  2n                  reply length
  2  n                   number of RGBs in colors
  22                     unused
  8n LISTofRGB           colors


  RGB
  2  CARD16              red
  2  CARD16              green
  2  CARD16              blue
  2                      unused



LookupColor
  1  92                  opcode
  1                      unused
  2  3+(n+p)/4           request length
  4  COLORMAP            cmap
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number









                            -47-


  4  0                   reply length
  2  CARD16              exact-red
  2  CARD16              exact-green
  2  CARD16              exact-blue
  2  CARD16              visual-red
  2  CARD16              visual-green
  2  CARD16              visual-blue
  12                     unused



CreateCursor
  1  93                  opcode
  1                      unused
  2  8                   request length
  4  CURSOR              cid
  4  PIXMAP              source
  4  PIXMAP              mask
     0         None
  2  CARD16              fore-red
  2  CARD16              fore-green
  2  CARD16              fore-blue
  2  CARD16              back-red
  2  CARD16              back-green
  2  CARD16              back-blue
  2  CARD16              x
  2  CARD16              y



CreateGlyphCursor
  1  94                  opcode
  1                      unused
  2  8                   request length
  4  CURSOR              cid
  4  FONT                source-font
  4  FONT                mask-font
     0         None
  2  CARD16              source-char
  2  CARD16              mask-char
  2  CARD16              fore-red
  2  CARD16              fore-green
  2  CARD16              fore-blue
  2  CARD16              back-red
  2  CARD16              back-green
  2  CARD16              back-blue



FreeCursor
  1  95                  opcode
  1                      unused
  2  2                   request length
  4  CURSOR              cursor









                            -48-


RecolorCursor
  1  96                  opcode
  1                      unused
  2  5                   request length
  4  CURSOR              cursor
  2  CARD16              fore-red
  2  CARD16              fore-green
  2  CARD16              fore-blue
  2  CARD16              back-red
  2  CARD16              back-green
  2  CARD16              back-blue



QueryBestSize
  1  97                  opcode
  1                      class
     0         Cursor
     1         Tile
     2         Stipple
  2  3                   request length
  4  DRAWABLE            drawable
  2  CARD16              width
  2  CARD16              height


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  2  CARD16              width
  2  CARD16              height
  20                     unused



QueryExtension
  1  98                  opcode
  1                      unused
  2  2+(n+p)/4           request length
  2  n                   length of name
  2                      unused
  n  STRING8             name
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  1  BOOL                present
  1  CARD8               major-opcode









                            -49-


  1  CARD8               first-event
  1  CARD8               first-error
  20                     unused



ListExtensions
  1  99                  opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1  CARD8               number of STRs in names
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  24                     unused
  n  LISTofSTR           names
  p                      unused, p=pad(n)



ChangeKeyboardMapping
  1  100                 opcode
  1  n                   keycode-count
  2  2+nm                request length
  1  KEYCODE             first-keycode
  1  m                   keysyms-per-keycode
  2                      unused
  4nm          LISTofKEYSYMkeysyms



GetKeyboardMapping
  1  101                 opcode
  1                      unused
  2  2                   request length
  1  KEYCODE             first-keycode
  1  m                   count
  2                      unused


 =>
  1  1                   Reply
  1  n                   keysyms-per-keycode
  2  CARD16              sequence number
  4  nm                  reply length (m = count field from the request)
  24                     unused
  4nm          LISTofKEYSYMkeysyms



ChangeKeyboardControl









                            -50-


  1  102                 opcode
  1                      unused
  2  2+n                 request length
  4  BITMASK             value-mask (has n bits set to 1)
     #x0001    key-click-percent
     #x0002    bell-percent
     #x0004    bell-pitch
     #x0008    bell-duration
     #x0010    led
     #x0020    led-mode
     #x0040    key
     #x0080    auto-repeat-mode
  4n LISTofVALUE         value-list


  VALUEs
  1  INT8                key-click-percent
  1  INT8                bell-percent
  2  INT16               bell-pitch
  2  INT16               bell-duration
  1  CARD8               led
  1                      led-mode
     0         Off
     1         On
  1  KEYCODE             key
  1                      auto-repeat-mode
     0         Off
     1         On
     2         Default



GetKeyboardControl
  1  103                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      global-auto-repeat
     0         Off
     1         On
  2  CARD16              sequence number
  4  5                   reply length
  4  CARD32              led-mask
  1  CARD8               key-click-percent
  1  CARD8               bell-percent
  2  CARD16              bell-pitch
  2  CARD16              bell-duration
  2                      unused
  32 LISTofCARD8         auto-repeats











                            -51-


Bell
  1  104                 opcode
  1  INT8                percent
  2  1                   request length



ChangePointerControl
  1  105                 opcode
  1                      unused
  2  3                   request length
  2  INT16               acceleration-numerator
  2  INT16               acceleration-denominator
  2  INT16               threshold
  1  BOOL                do-acceleration
  1  BOOL                do-threshold



GetPointerControl
  1  106                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  2  CARD16              acceleration-numerator
  2  CARD16              acceleration-denominator
  2  CARD16              threshold
  18                     unused



SetScreenSaver
  1  107                 opcode
  1                      unused
  2  3                   request length
  2  INT16               timeout
  2  INT16               interval
  1                      prefer-blanking
     0         No
     1         Yes
     2         Default
  1                      allow-exposures
     0         No
     1         Yes
     2         Default
  2                      unused











                            -52-


GetScreenSaver
  1  108                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      unused
  2  CARD16              sequence number
  4  0                   reply length
  2  CARD16              timeout
  2  CARD16              interval
  1                      prefer-blanking
     0         No
     1         Yes
  1                      allow-exposures
     0         No
     1         Yes
  18                     unused



ChangeHosts
  1  109                 opcode
  1                      mode
     0         Insert
     1         Delete
  2  2+(n+p)/4           request length
  1                      family
     0         Internet
     1         DECnet
     2         Chaos
  1                      unused
  2  n                   length of address
  n  LISTofCARD8         address
  p                      unused, p=pad(n)



ListHosts
  1  110                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1                      mode
     0         Disabled
     1         Enabled
  2  CARD16              sequence number
  4  n/4                 reply length
  2  CARD16              number of HOSTs in hosts









                            -53-


  22                     unused
  n  LISTofHOST          hosts (n always a multiple of 4)



SetAccessControl
  1  111                 opcode
  1                      mode
     0         Disable
     1         Enable
  2  1                   request length



SetCloseDownMode
  1  112                 opcode
  1                      mode
     0         Destroy
     1         RetainPermanent
     2         RetainTemporary
  2  1                   request length



KillClient
  1  113                 opcode
  1                      unused
  2  2                   request length
  4  CARD32              resource
     0         AllTemporary



RotateProperties
  1  114                 opcode
  1                      unused
  2  3+n                 request length
  4  WINDOW              window
  2  n                   number of properties
  2  INT16               delta
  4n LISTofATOM          properties



ForceScreenSaver
  1  115                 opcode
  1                      mode
     0         Reset
     1         Activate
  2  1                   request length



SetPointerMapping









                            -54-


  1  116                 opcode
  1  n                   length of map
  2  1+(n+p)/4           request length
  n  LISTofCARD8         map
  p                      unused, p=pad(n)


 =>
  1  1                   Reply
  1                      status
     0         Success
     1         Busy
  2  CARD16              sequence number
  4  0                   reply length
  24                     unused



GetPointerMapping
  1  117                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1  n                   length of map
  2  CARD16              sequence number
  4  (n+p)/4             reply length
  24                     unused
  n  LISTofCARD8         map
  p                      unused, p=pad(n)



SetModifierMapping
  1  118                 opcode
  1  n                   keycodes-per-modifier
  2  1+2n                request length
  8n LISTofKEYCODE       keycodes


 =>
  1  1                   Reply
  1                      status
     0         Success
     1         Busy
     2         Failed
  2  CARD16              sequence number
  4  0                   reply length
  24                     unused












                            -55-


GetModifierMapping
  1  119                 opcode
  1                      unused
  2  1                   request length


 =>
  1  1                   Reply
  1  n                   keycodes-per-modifier
  2  CARD16              sequence number
  4  2n                  reply length
  24                     unused
  8n LISTofKEYCODE       keycodes



NoOperation
  1  127                 opcode
  1                      unused
  2  1+n                 request length
  4n                     unused


Events


KeyPress
  1  2                   code
  1  KEYCODE             detail
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1  BOOL                same-screen
  1                      unused



KeyRelease
  1  3                   code
  1  KEYCODE             detail
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None









                            -56-


  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1  BOOL                same-screen
  1                      unused



ButtonPress
  1  4                   code
  1  BUTTON              detail
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1  BOOL                same-screen
  1                      unused



ButtonRelease
  1  5                   code
  1  BUTTON              detail
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1  BOOL                same-screen
  1                      unused



MotionNotify
  1  6                   code
  1                      detail
     0         Normal
     1         Hint
  2  CARD16              sequence number









                            -57-


  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1  BOOL                same-screen
  1                      unused



EnterNotify
  1  7                   code
  1                      detail
     0         Ancestor
     1         Virtual
     2         Inferior
     3         Nonlinear
     4         NonlinearVirtual
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1                      mode
     0         Normal
     1         Grab
     2         Ungrab
  1                      same-screen, focus
     #x01      focus (1 is True, 0 is False)
     #x02      same-screen (1 is True, 0 is False)
     #xFC      unused



LeaveNotify
  1  8                   code
  1                      detail
     0         Ancestor
     1         Virtual
     2         Inferior
     3         Nonlinear
     4         NonlinearVirtual
  2  CARD16              sequence number









                            -58-


  4  TIMESTAMP           time
  4  WINDOW              root
  4  WINDOW              event
  4  WINDOW              child
     0         None
  2  INT16               root-x
  2  INT16               root-y
  2  INT16               event-x
  2  INT16               event-y
  2  SETofKEYBUTMASK     state
  1                      mode
     0         Normal
     1         Grab
     2         Ungrab
  1                      same-screen, focus
     #x01      focus (1 is True, 0 is False)
     #x02      same-screen (1 is True, 0 is False)
     #xFC      unused



FocusIn
  1  9                   code
  1                      detail
     0         Ancestor
     1         Virtual
     2         Inferior
     3         Nonlinear
     4         NonlinearVirtual
     5         Pointer
     6         PointerRoot
     7         None
  2  CARD16              sequence number
  4  WINDOW              event
  1                      mode
     0         Normal
     1         Grab
     2         Ungrab
     3         WhileGrabbed
  23                     unused



FocusOut
  1  10                  code
  1                      detail
     0         Ancestor
     1         Virtual
     2         Inferior
     3         Nonlinear
     4         NonlinearVirtual
     5         Pointer
     6         PointerRoot
     7         None









                            -59-


  2  CARD16              sequence number
  4  WINDOW              event
  1                      mode
     0         Normal
     1         Grab
     2         Ungrab
     3         WhileGrabbed
  23                     unused



KeymapNotify
  1  11                  code
  31 LISTofCARD8         keys (byte for keycodes 0-7 is omitted)



Expose
  1  12                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              window
  2  CARD16              x
  2  CARD16              y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              count
  14                     unused



GraphicsExposure
  1  13                  code
  1                      unused
  2  CARD16              sequence number
  4  DRAWABLE            drawable
  2  CARD16              x
  2  CARD16              y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              minor-opcode
  2  CARD16              count
  1  CARD8               major-opcode
  11                     unused



NoExposure
  1  14                  code
  1                      unused
  2  CARD16              sequence number
  4  DRAWABLE            drawable
  2  CARD16              minor-opcode
  1  CARD8               major-opcode









                            -60-


  21                     unused



VisibilityNotify
  1  15                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              window
  1                      state
     0         Unobscured
     1         PartiallyObscured
     2         FullyObscured
  23                     unused



CreateNotify
  1  16                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              parent
  4  WINDOW              window
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  1  BOOL                override-redirect
  9                      unused



DestroyNotify
  1  17                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  20                     unused



UnmapNotify
  1  18                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  1  BOOL                from-configure
  19                     unused












                            -61-


MapNotify
  1  19                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  1  BOOL                override-redirect
  19                     unused



MapRequest
  1  20                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              parent
  4  WINDOW              window
  20                     unused



ReparentNotify
  1  21                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  4  WINDOW              parent
  2  INT16               x
  2  INT16               y
  1  BOOL                override-redirect
  11                     unused



ConfigureNotify
  1  22                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  4  WINDOW              above-sibling
     0         None
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  1  BOOL                override-redirect
  5                      unused



ConfigureRequest









                            -62-


  1  23                  code
  1                      stack-mode
     0         Above
     1         Below
     2         TopIf
     3         BottomIf
     4         Opposite
  2  CARD16              sequence number
  4  WINDOW              parent
  4  WINDOW              window
  4  WINDOW              sibling
     0         None
  2  INT16               x
  2  INT16               y
  2  CARD16              width
  2  CARD16              height
  2  CARD16              border-width
  2  BITMASK             value-mask
     #x0001    x
     #x0002    y
     #x0004    width
     #x0008    height
     #x0010    border-width
     #x0020    sibling
     #x0040    stack-mode
  4                      unused



GravityNotify
  1  24                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  2  INT16               x
  2  INT16               y
  16                     unused



ResizeRequest
  1  25                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              window
  2  CARD16              width
  2  CARD16              height
  20                     unused



CirculateNotify
  1  26                  code









                            -63-


  1                      unused
  2  CARD16              sequence number
  4  WINDOW              event
  4  WINDOW              window
  4  WINDOW              unused
  1                      place
     0         Top
     1         Bottom
  15                     unused



CirculateRequest
  1  27                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              parent
  4  WINDOW              window
  4                      unused
  1                      place
     0         Top
     1         Bottom
  15                     unused



PropertyNotify
  1  28                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              window
  4  ATOM                atom
  4  TIMESTAMP           time
  1                      state
     0         NewValue
     1         Deleted
  15                     unused



SelectionClear
  1  29                  code
  1                      unused
  2  CARD16              sequence number
  4  TIMESTAMP           time
  4  WINDOW              owner
  4  ATOM                selection
  16                     unused



SelectionRequest
  1  30                  code
  1                      unused









                            -64-


  2  CARD16              sequence number
  4  TIMESTAMP           time
     0         CurrentTime
  4  WINDOW              owner
  4  WINDOW              requestor
  4  ATOM                selection
  4  ATOM                target
  4  ATOM                property
     0         None
  4                      unused



SelectionNotify
  1  31                  code
  1                      unused
  2  CARD16              sequence number
  4  TIMESTAMP           time
     0         CurrentTime
  4  WINDOW              requestor
  4  ATOM                selection
  4  ATOM                target
  4  ATOM                property
     0         None
  8                      unused



ColormapNotify
  1  32                  code
  1                      unused
  2  CARD16              sequence number
  4  WINDOW              window
  4  COLORMAP            colormap
     0         None
  1  BOOL                new
  1                      state
     0         Uninstalled
     1         Installed
  18                     unused



ClientMessage
  1  33                  code
  1  CARD8               format
  2  CARD16              sequence number
  4  WINDOW              window
  4  ATOM                type
  20                     data



MappingNotify









                            -65-


  1  34                  code
  1                      unused
  2  CARD16              sequence number
  1                      request
     0         Modifier
     1         Keyboard
     2         Pointer
  1  KEYCODE             first-keycode
  1  CARD8               count
  25                     unused





















































                            -66-






























































