xenocara/proto/x11proto/specs/encoding.xml
matthieu 16a3a6d232 Update to xproto 7.0.19. No functional change.
This mostly adds the new docbook xml docs to the source tree.
Formatting it will be handled later.
2010-11-11 10:06:11 +00:00

3261 lines
123 KiB
XML

<appendix id="protocol_encoding">
<title>Protocol Encoding</title>
<!--
The sections in this appendix correspond to their
number counterparts in the protocol document.
-->
<sect1 id="syntactic_conventions_b">
<title>Syntactic Conventions</title>
<para>
All numbers are in decimal,
unless prefixed with #x, in which case they are in hexadecimal (base 16).
</para>
<para>
The general syntax used to describe requests, replies, errors, events, and
compound types is:
</para>
<literallayout class="monospaced">
<emphasis role='bold'>NameofThing</emphasis>
encode-form
...
encode-form
</literallayout>
<para>
Each encode-form describes a single component.
</para>
<para>
For components described in the protocol as:
</para>
<literallayout class="monospaced">
name: TYPE
</literallayout>
<para>
the encode-form is:
</para>
<literallayout class="monospaced">
N TYPE name
</literallayout>
<para>
N is the number of bytes occupied in the data stream,
and TYPE is the interpretation of those bytes.
For example,
</para>
<literallayout class="monospaced">
depth: CARD8
</literallayout>
<para>
becomes:
</para>
<literallayout class="monospaced">
1 CARD8 depth
</literallayout>
<para>
For components with a static numeric value the encode-form is:
</para>
<literallayout class="monospaced">
N value name
</literallayout>
<para>
The value is always interpreted as an N-byte unsigned integer.
For example,
the first two bytes of a
<emphasis role='bold'>Window </emphasis>
error are always zero (indicating an
error in general) and three (indicating the
<emphasis role='bold'>Window </emphasis>
error in particular):
</para>
<literallayout class="monospaced">
1 0 Error
1 3 code
</literallayout>
<para>
For components described in the protocol as:
</para>
<para>
name:
<emphasis role='bold'>{ Name1 ,..., </emphasis>
<emphasis role='bold'>NameI }</emphasis>
</para>
<para>
the encode-form is:
</para>
<literallayout class="monospaced">
N name
value1 Name1
...
valueI NameI
</literallayout>
<para>
The value is always interpreted as an N-byte unsigned integer.
Note that the size of N is sometimes larger than that strictly required
to encode the values.
For example:
</para>
<para>
class:
{ <emphasis role='bold'>InputOutput</emphasis>,
<emphasis role='bold'>InputOnly</emphasis>,
<emphasis role='bold'>CopyFromParent</emphasis> }
</para>
<para>
becomes:
</para>
<literallayout class="monospaced">
2 class
0 CopyFromParent
1 InputOutput
2 InputOnly
</literallayout>
<para>
For components described in the protocol as:
</para>
<para>
NAME: TYPE or
<emphasis role='bold'>Alternative1 ...or</emphasis>
<emphasis role='bold'>AlternativeI</emphasis>
</para>
<para>
the encode-form is:
</para>
<literallayout class="monospaced">
N TYPE NAME
value1 Alternative1
...
valueI AlternativeI
</literallayout>
<para>
The alternative values are guaranteed not to conflict with the encoding
of TYPE.
For example:
</para>
<para>
destination: WINDOW or
<emphasis role='bold'>PointerWindow </emphasis>
or
<emphasis role='bold'>InputFocus</emphasis>
</para>
<para>
becomes:
</para>
<literallayout class="monospaced">
4 WINDOW destination
0 PointerWindow
1 InputFocus
</literallayout>
<para>
For components described in the protocol as:
</para>
<literallayout class="monospaced">
value-mask: BITMASK
</literallayout>
<para>
the encode-form is:
</para>
<literallayout class="monospaced">
N BITMASK value-mask
mask1 mask-name1
...
maskI mask-nameI
</literallayout>
<para>
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-significant 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.
</para>
<para>
For LISTofVALUE encodings, the request is followed by a section of the form:
</para>
<literallayout class="monospaced">
VALUEs
encode-form
...
encode-form
</literallayout>
<para>
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 number of bytes specified in the encoding-form indicates how
many of the least-significant bytes are actually used;
the remaining bytes are unused and their values do not matter.
</para>
<para>
In various cases, the number of bytes occupied by a component 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:
</para>
<literallayout class="monospaced">
2 3+n request length
4n LISTofPOINT points
</literallayout>
<para>
For unused bytes (the values of the bytes are undefined and do no matter),
the encode-form is:
</para>
<literallayout class="monospaced">
N unused
</literallayout>
<para>
<!-- .LP -->
If the number of unused bytes is variable, the encode-form typically is:
</para>
<literallayout class="monospaced">
p unused, p=pad(E)
</literallayout>
<para>
where E is some expression,
and pad(E) is the number of bytes needed to round E up to a multiple of four.
</para>
<literallayout class="monospaced">
pad(E) = (4 - (E mod 4)) mod 4
</literallayout>
</sect1>
<sect1 id="common_types_2">
<title>Common Types</title>
<variablelist>
<varlistentry>
<term>LISTofFOO</term>
<listitem>
<para>
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.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SETofFOO</term>
<listitem>
<para>
A set is always represented by a bitmask, with a 1-bit indicating presence in
the set.
</para>
</listitem>
</varlistentry>
</variablelist>
<informaltable frame='none'>
<tgroup cols='1' align='left'>
<colspec colname='c1' colsep="0"/>
<tbody>
<row rowsep='0'>
<entry>
BITMASK: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
WINDOW: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
PIXMAP: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
CURSOR: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
FONT: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
GCONTEXT: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
COLORMAP: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
DRAWABLE: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
FONTABLE: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
ATOM: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
VISUALID: CARD32
</entry>
</row>
<row rowsep='0'>
<entry>
BYTE: 8-bit value
</entry>
</row>
<row rowsep='0'>
<entry>
INT8: 8-bit signed integer
</entry>
</row>
<row rowsep='0'>
<entry>
INT16: 16-bit signed integer
</entry>
</row>
<row rowsep='0'>
<entry>
INT32: 32-bit signed integer
</entry>
</row>
<row rowsep='0'>
<entry>
CARD8: 8-bit unsigned integer
</entry>
</row>
<row rowsep='0'>
<entry>
CARD16: 16-bit unsigned integer
</entry>
</row>
<row rowsep='0'>
<entry>
CARD32: 32-bit unsigned integer
</entry>
</row>
<row rowsep='0'>
<entry>
TIMESTAMP: CARD32
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<literallayout class="monospaced">
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
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
#x00000001 KeyPress
#x00000002 KeyRelease
#x00000004 ButtonPress
#x00000008 ButtonRelease
#x00000010 EnterWindow
#x00000020 LeaveWindow
#x00000040 PointerMotion
#x00000080 PointerMotionHint
#x00000100 Button1Motion
#x00000200 Button2Motion
#x00000400 Button3Motion
#x00000800 Button4Motion
#x00001000 Button5Motion
#x00002000 ButtonMotion
#x00004000 KeymapState
#x00008000 Exposure
#x00010000 VisibilityChange
#x00020000 StructureNotify
#x00040000 ResizeRedirect
#x00080000 SubstructureNotify
#x00100000 SubstructureRedirect
#x00200000 FocusChange
#x00400000 PropertyChange
#x00800000 ColormapChange
#x01000000 OwnerGrabButton
#xFE000000 unused but must be zero
SETofPOINTEREVENT
encodings are the same as for SETofEVENT, except with
#xFFFF8003 unused but must be zero
SETofDEVICEEVENT
encodings are the same as for SETofEVENT, except with
#xFFFFC0B0 unused 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
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
5 ServerInterpreted
6 InternetV6
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
</literallayout>
</sect1>
<sect1 id="errors_2">
<title>Errors</title>
<literallayout class="monospaced">
<emphasis role='bold'>Request</emphasis>
1 0 Error
1 1 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Value</emphasis>
1 0 Error
1 2 code
2 CARD16 sequence number
4 &lt;32-bits&gt; bad value
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Window</emphasis>
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
<emphasis role='bold'>Pixmap</emphasis>
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
<emphasis role='bold'>Atom</emphasis>
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
<emphasis role='bold'>Cursor</emphasis>
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
<emphasis role='bold'>Font</emphasis>
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
<emphasis role='bold'>Match</emphasis>
1 0 Error
1 8 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Drawable</emphasis>
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
<emphasis role='bold'>Access</emphasis>
1 0 Error
1 10 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Alloc</emphasis>
1 0 Error
1 11 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Colormap</emphasis>
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
<emphasis role='bold'>GContext</emphasis>
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
<emphasis role='bold'>IDChoice</emphasis>
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
<emphasis role='bold'>Name</emphasis>
1 0 Error
1 15 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Length</emphasis>
1 0 Error
1 16 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
<emphasis role='bold'>Implementation</emphasis>
1 0 Error
1 17 code
2 CARD16 sequence number
4 unused
2 CARD16 minor opcode
1 CARD8 major opcode
21 unused
</literallayout>
</sect1>
<sect1 id="keyboards_2">
<title>Keyboards</title>
<para>
KEYCODE values are always greater than 7 (and less than 256).
</para>
<para>
KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
</para>
<para>
The names and encodings of the standard KEYSYM values are contained in
Appendix A, Keysym Encoding. <!-- xref -->
</para>
</sect1>
<sect1 id="pointers_2">
<title>Pointers</title>
<para>
BUTTON values are numbered starting with one.
</para>
</sect1>
<sect1 id="predefined">
<title>Predefined Atoms</title>
<literallayout class="monospaced">
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_POSITION 51
CUT_BUFFER4 13 UNDERLINE_THICKNESS 52
CUT_BUFFER5 14 STRIKEOUT_ASCENT 53
CUT_BUFFER6 15 STRIKEOUT_DESCENT 54
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
WM_ICON_NAME 37
WM_ICON_SIZE 38
WM_NAME 39
</literallayout>
</sect1>
<sect1 id="connection_setup_2">
<title>Connection Setup</title>
<para>
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 connections,
displays on a given host are numbered starting from 0,
and the server for display N listens and accepts connections on the object
name obtained by concatenating "X$X" with the decimal representation of N,
for example, X$X0 and X$X1.
</para>
<para>
Information sent by the client at connection setup:
</para>
<literallayout class="monospaced">
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)
</literallayout>
<para>
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.
</para>
<para>
Information received by the client if the connection is refused:
</para>
<literallayout class="monospaced">
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)
</literallayout>
<para>
Information received by the client if further authentication is required:
</para>
<literallayout class="monospaced">
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)
</literallayout>
<para>
Information received by the client if the connection is accepted:
</para>
<literallayout class="monospaced">
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)
</literallayout>
<literallayout class="monospaced">
FORMAT
1 CARD8 depth
1 CARD8 bits-per-pixel
1 CARD8 scanline-pad
5 unused
</literallayout>
<literallayout class="monospaced">
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)
</literallayout>
<literallayout class="monospaced">
DEPTH
1 CARD8 depth
1 unused
2 n number of VISUALTYPES in visuals
4 unused
24n LISTofVISUALTYPE visuals
</literallayout>
<literallayout class="monospaced">
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
</literallayout>
</sect1>
<sect1 id="requests_2">
<title>Requests</title>
<literallayout class="monospaced">
<emphasis role='bold'>CreateWindow</emphasis>
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
4 SETofDEVICEEVENT do-not-propagate-mask
4 COLORMAP colormap
0 CopyFromParent
4 CURSOR cursor
0 None
<emphasis role='bold'>ChangeWindowAttributes</emphasis>
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
<emphasis role='bold'>GetWindowAttributes</emphasis>
1 3 opcode
1 unused
2 2 request length
4 WINDOW window
-&gt;
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
2 SETofDEVICEEVENT do-not-propagate-mask
2 unused
<emphasis role='bold'>DestroyWindow</emphasis>
1 4 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>DestroySubwindows</emphasis>
1 5 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>ChangeSaveSet</emphasis>
1 6 opcode
1 mode
0 Insert
1 Delete
2 2 request length
4 WINDOW window
<emphasis role='bold'>ReparentWindow</emphasis>
1 7 opcode
1 unused
2 4 request length
4 WINDOW window
4 WINDOW parent
2 INT16 x
2 INT16 y
<emphasis role='bold'>MapWindow</emphasis>
1 8 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>MapSubwindows</emphasis>
1 9 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>UnmapWindow</emphasis>
1 10 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>UnmapSubwindows</emphasis>
1 11 opcode
1 unused
2 2 request length
4 WINDOW window
<emphasis role='bold'>ConfigureWindow</emphasis>
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
<emphasis role='bold'>CirculateWindow</emphasis>
1 13 opcode
1 direction
0 RaiseLowest
1 LowerHighest
2 2 request length
4 WINDOW window
<emphasis role='bold'>GetGeometry</emphasis>
1 14 opcode
1 unused
2 2 request length
4 DRAWABLE drawable
-&gt;
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
<emphasis role='bold'>QueryTree</emphasis>
1 15 opcode
1 unused
2 2 request length
4 WINDOW window
-&gt;
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
<emphasis role='bold'>InternAtom</emphasis>
1 16 opcode
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)
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
4 0 reply length
4 ATOM atom
0 None
20 unused
<emphasis role='bold'>GetAtomName</emphasis>
1 17 opcode
1 unused
2 2 request length
4 ATOM atom
-&gt;
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)
<emphasis role='bold'>ChangeProperty</emphasis>
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)
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)
<emphasis role='bold'>DeleteProperty</emphasis>
1 19 opcode
1 unused
2 3 request length
4 WINDOW window
4 ATOM property
<emphasis role='bold'>GetProperty</emphasis>
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
-&gt;
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)
<emphasis role='bold'>ListProperties</emphasis>
1 21 opcode
1 unused
2 2 request length
4 WINDOW window
-&gt;
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
<emphasis role='bold'>SetSelectionOwner</emphasis>
1 22 opcode
1 unused
2 4 request length
4 WINDOW owner
0 None
4 ATOM selection
4 TIMESTAMP time
0 CurrentTime
<emphasis role='bold'>GetSelectionOwner</emphasis>
1 23 opcode
1 unused
2 2 request length
4 ATOM selection
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
4 0 reply length
4 WINDOW owner
0 None
20 unused
<emphasis role='bold'>ConvertSelection</emphasis>
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
0 CurrentTime
<emphasis role='bold'>SendEvent</emphasis>
1 25 opcode
1 BOOL propagate
2 11 requestlength
4 WINDOW destination
0 PointerWindow
1 InputFocus
4 SETofEVENT event-mask
32 event
standard event format (see the Events section)
<emphasis role='bold'>GrabPointer</emphasis>
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
-&gt;
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
<emphasis role='bold'>UngrabPointer</emphasis>
1 27 opcode
1 unused
2 2 request length
4 TIMESTAMP time
0 CurrentTime
<emphasis role='bold'>GrabButton</emphasis>
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
<emphasis role='bold'>UngrabButton</emphasis>
1 29 opcode
1 BUTTON button
0 AnyButton
2 3 request length
4 WINDOW grab-window
2 SETofKEYMASK modifiers
#x8000 AnyModifier
2 unused
<emphasis role='bold'>ChangeActivePointerGrab</emphasis>
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
<emphasis role='bold'>GrabKeyboard</emphasis>
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
-&gt;
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
<emphasis role='bold'>UngrabKeyboard</emphasis>
1 32 opcode
1 unused
2 2 request length
4 TIMESTAMP time
0 CurrentTime
<emphasis role='bold'>GrabKey</emphasis>
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
3 unused
<emphasis role='bold'>UngrabKey</emphasis>
1 34 opcode
1 KEYCODE key
0 AnyKey
2 3 request length
4 WINDOW grab-window
2 SETofKEYMASK modifiers
#x8000 AnyModifier
2 unused
<emphasis role='bold'>AllowEvents</emphasis>
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
<emphasis role='bold'>GrabServer</emphasis>
1 36 opcode
1 unused
2 1 request length
<emphasis role='bold'>UngrabServer</emphasis>
1 37 opcode
1 unused
2 1 request length
<emphasis role='bold'>QueryPointer</emphasis>
1 38 opcode
1 unused
2 2 request length
4 WINDOW window
-&gt;
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
<emphasis role='bold'>GetMotionEvents</emphasis>
1 39 opcode
1 unused
2 4 request length
4 WINDOW window
4 TIMESTAMP start
0 CurrentTime
4 TIMESTAMP stop
0 CurrentTime
-&gt;
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
<emphasis role='bold'>TranslateCoordinates</emphasis>
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
-&gt;
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
<emphasis role='bold'>WarpPointer</emphasis>
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
<emphasis role='bold'>SetInputFocus</emphasis>
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
<emphasis role='bold'>GetInputFocus</emphasis>
1 43 opcode
1 unused
2 1 request length
-&gt;
1 1 Reply
1 revert-to
0 None
1 PointerRoot
2 Parent
2 CARD16 sequence number
4 0 reply length
4 WINDOW focus
0 None
1 PointerRoot
20 unused
<emphasis role='bold'>QueryKeymap</emphasis>
1 44 opcode
1 unused
2 1 request length
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
4 2 reply length
32 LISTofCARD8 keys
<emphasis role='bold'>OpenFont</emphasis>
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)
<emphasis role='bold'>CloseFont</emphasis>
1 46 opcode
1 unused
2 2 request length
4 FONT font
<emphasis role='bold'>QueryFont</emphasis>
1 47 opcode
1 unused
2 2 request length
4 FONTABLE font
-&gt;
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 LISTofCHARINFO char-infos
FONTPROP
4 ATOM name
4 &lt;32-bits&gt; 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
<emphasis role='bold'>QueryTextExtents</emphasis>
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)
-&gt;
1 1 Reply
1 draw-direction
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
<emphasis role='bold'>ListFonts</emphasis>
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)
-&gt;
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)
<emphasis role='bold'>ListFontsWithInfo</emphasis>
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)
-&gt; (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
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
-&gt; (last in series)
1 1 Reply
1 0 last-reply indicator
2 CARD16 sequence number
4 7 reply length
52 unused
<emphasis role='bold'>SetFontPath</emphasis>
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)
<emphasis role='bold'>GetFontPath</emphasis>
1 52 opcode
1 unused
2 1 request list
-&gt;
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)
<emphasis role='bold'>CreatePixmap</emphasis>
1 53 opcode
1 CARD8 depth
2 4 request length
4 PIXMAP pid
4 DRAWABLE drawable
2 CARD16 width
2 CARD16 height
<emphasis role='bold'>FreePixmap</emphasis>
1 54 opcode
1 unused
2 2 request length
4 PIXMAP pixmap
<emphasis role='bold'>CreateGC</emphasis>
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
#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
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
<emphasis role='bold'>ChangeGC</emphasis>
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
<emphasis role='bold'>CopyGC</emphasis>
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
<emphasis role='bold'>SetDashes</emphasis>
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)
<emphasis role='bold'>SetClipRectangles</emphasis>
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
<emphasis role='bold'>FreeGC</emphasis>
1 60 opcode
1 unused
2 2 request length
4 GCONTEXT gc
<emphasis role='bold'>ClearArea</emphasis>
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
<emphasis role='bold'>CopyArea</emphasis>
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
<emphasis role='bold'>CopyPlane</emphasis>
1 63 opcode
1 unused
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
<emphasis role='bold'>PolyPoint</emphasis>
1 64 opcode
1 coordinate-mode
0 Origin
1 Previous
2 3+n request length
4 DRAWABLE drawable
4 GCONTEXT gc
4n LISTofPOINT points
<emphasis role='bold'>PolyLine</emphasis>
1 65 opcode
1 coordinate-mode
0 Origin
1 Previous
2 3+n request length
4 DRAWABLE drawable
4 GCONTEXT gc
4n LISTofPOINT points
<emphasis role='bold'>PolySegment</emphasis>
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
<emphasis role='bold'>PolyRectangle</emphasis>
1 67 opcode
1 unused
2 3+2n request length
4 DRAWABLE drawable
4 GCONTEXT gc
8n LISTofRECTANGLE rectangles
<emphasis role='bold'>PolyArc</emphasis>
1 68 opcode
1 unused
2 3+3n request length
4 DRAWABLE drawable
4 GCONTEXT gc
12n LISTofARC arcs
<emphasis role='bold'>FillPoly</emphasis>
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
<emphasis role='bold'>PolyFillRectangle</emphasis>
1 70 opcode
1 unused
2 3+2n request length
4 DRAWABLE drawable
4 GCONTEXT gc
8n LISTofRECTANGLE rectangles
<emphasis role='bold'>PolyFillArc</emphasis>
1 71 opcode
1 unused
2 3+3n request length
4 DRAWABLE drawable
4 GCONTEXT gc
12n LISTofARC arcs
<emphasis role='bold'>PutImage</emphasis>
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)
<emphasis role='bold'>GetImage</emphasis>
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
-&gt;
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)
<emphasis role='bold'>PolyText8</emphasis>
1 74 opcode
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)
<emphasis role='bold'>PolyText16</emphasis>
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)
<emphasis role='bold'>ImageText8</emphasis>
1 76 opcode
1 n length of string
2 4+(n+p)/4 request length
4 DRAWABLE drawable
4 GCONTEXT gc
2 INT16 x
2 INT16 y
n STRING8 string
p unused, p=pad(n)
<emphasis role='bold'>ImageText16</emphasis>
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)
<emphasis role='bold'>CreateColormap</emphasis>
1 78 opcode
1 alloc
0 None
1 All
2 4 request length
4 COLORMAP mid
4 WINDOW window
4 VISUALID visual
<emphasis role='bold'>FreeColormap</emphasis>
1 79 opcode
1 unused
2 2 request length
4 COLORMAP cmap
<emphasis role='bold'>CopyColormapAndFree</emphasis>
1 80 opcode
1 unused
2 3 request length
4 COLORMAP mid
4 COLORMAP src-cmap
<emphasis role='bold'>InstallColormap</emphasis>
1 81 opcode
1 unused
2 2 request length
4 COLORMAP cmap
<emphasis role='bold'>UninstallColormap</emphasis>
1 82 opcode
1 unused
2 2 request length
4 COLORMAP cmap
<emphasis role='bold'>ListInstalledColormaps</emphasis>
1 83 opcode
1 unused
2 2 request length
4 WINDOW window
-&gt;
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
<emphasis role='bold'>AllocColor</emphasis>
1 84 opcode
1 unused
2 4 request length
4 COLORMAP cmap
2 CARD16 red
2 CARD16 green
2 CARD16 blue
2 unused
-&gt;
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
<emphasis role='bold'>AllocNamedColor</emphasis>
1 85 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)
-&gt;
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
<emphasis role='bold'>AllocColorCells</emphasis>
1 86 opcode
1 BOOL contiguous
2 3 request length
4 COLORMAP cmap
2 CARD16 colors
2 CARD16 planes
-&gt;
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
<emphasis role='bold'>AllocColorPlanes</emphasis>
1 87 opcode
1 BOOL contiguous
2 4 request length
4 COLORMAP cmap
2 CARD16 colors
2 CARD16 reds
2 CARD16 greens
2 CARD16 blues
-&gt;
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
<emphasis role='bold'>FreeColors</emphasis>
1 88 opcode
1 unused
2 3+n request length
4 COLORMAP cmap
4 CARD32 plane-mask
4n LISTofCARD32 pixels
<emphasis role='bold'>StoreColors</emphasis>
1 89 opcode
1 unused
2 2+3n request length
4 COLORMAP cmap
12n LISTofCOLORITEM items
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
<emphasis role='bold'>StoreNamedColor</emphasis>
1 90 opcode
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
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)
<emphasis role='bold'>QueryColors</emphasis>
1 91 opcode
1 unused
2 2+n request length
4 COLORMAP cmap
4n LISTofCARD32 pixels
-&gt;
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
<emphasis role='bold'>LookupColor</emphasis>
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)
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
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
<emphasis role='bold'>CreateCursor</emphasis>
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
<emphasis role='bold'>CreateGlyphCursor</emphasis>
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
<emphasis role='bold'>FreeCursor</emphasis>
1 95 opcode
1 unused
2 2 request length
4 CURSOR cursor
<emphasis role='bold'>RecolorCursor</emphasis>
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
<emphasis role='bold'>QueryBestSize</emphasis>
1 97 opcode
1 class
0 Cursor
1 Tile
2 Stipple
2 3 request length
4 DRAWABLE drawable
2 CARD16 width
2 CARD16 height
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
4 0 reply length
2 CARD16 width
2 CARD16 height
20 unused
<emphasis role='bold'>QueryExtension</emphasis>
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)
-&gt;
1 1 Reply
1 unused
2 CARD16 sequence number
4 0 reply length
1 BOOL present
1 CARD8 major-opcode
1 CARD8 first-event
1 CARD8 first-error
20 unused
<emphasis role='bold'>ListExtensions</emphasis>
1 99 opcode
1 unused
2 1 request length
-&gt;
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)
<emphasis role='bold'>ChangeKeyboardMapping</emphasis>
1 100 opcode
1 n keycode-count
2 2+nm request length
1 KEYCODE first-keycode
1 m keysyms-per-keycode
2 unused
4nm LISTofKEYSYM keysyms
<emphasis role='bold'>GetKeyboardMapping</emphasis>
1 101 opcode
1 unused
2 2 request length
1 KEYCODE first-keycode
1 m count
2 unused
-&gt;
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 LISTofKEYSYM keysyms
<emphasis role='bold'>ChangeKeyboardControl</emphasis>
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
<emphasis role='bold'>GetKeyboardControl</emphasis>
1 103 opcode
1 unused
2 1 request length
-&gt;
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
<emphasis role='bold'>Bell</emphasis>
1 104 opcode
1 INT8 percent
2 1 request length
<emphasis role='bold'>ChangePointerControl</emphasis>
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
<emphasis role='bold'>GetPointerControl</emphasis>
1 106 opcode
1 unused
2 1 request length
-&gt;
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
<emphasis role='bold'>SetScreenSaver</emphasis>
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
<emphasis role='bold'>GetScreenSaver</emphasis>
1 108 opcode
1 unused
2 1 request length
-&gt;
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
<emphasis role='bold'>ChangeHosts</emphasis>
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)
<emphasis role='bold'>ListHosts</emphasis>
1 110 opcode
1 unused
2 1 request length
-&gt;
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
22 unused
n LISTofHOST hosts (n always a multiple of 4)
<emphasis role='bold'>SetAccessControl</emphasis>
1 111 opcode
1 mode
0 Disable
1 Enable
2 1 request length
<emphasis role='bold'>SetCloseDownMode</emphasis>
1 112 opcode
1 mode
0 Destroy
1 RetainPermanent
2 RetainTemporary
2 1 request length
<emphasis role='bold'>KillClient</emphasis>
1 113 opcode
1 unused
2 2 request length
4 CARD32 resource
0 AllTemporary
<emphasis role='bold'>RotateProperties</emphasis>
1 114 opcode
1 unused
2 3+n request length
4 WINDOW window
2 n number of properties
2 INT16 delta
4n LISTofATOM properties
<emphasis role='bold'>ForceScreenSaver</emphasis>
1 115 opcode
1 mode
0 Reset
1 Activate
2 1 request length
<emphasis role='bold'>SetPointerMapping</emphasis>
1 116 opcode
1 n length of map
2 1+(n+p)/4 request length
n LISTofCARD8 map
p unused, p=pad(n)
-&gt;
1 1 Reply
1 status
0 Success
1 Busy
2 CARD16 sequence number
4 0 reply length
24 unused
<emphasis role='bold'>GetPointerMapping</emphasis>
1 117 opcode
1 unused
2 1 request length
-&gt;
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)
<emphasis role='bold'>SetModifierMapping</emphasis>
1 118 opcode
1 n keycodes-per-modifier
2 1+2n request length
8n LISTofKEYCODE keycodes
-&gt;
1 1 Reply
1 status
0 Success
1 Busy
2 Failed
2 CARD16 sequence number
4 0 reply length
24 unused
<emphasis role='bold'>GetModifierMapping</emphasis>
1 119 opcode
1 unused
2 1 request length
-&gt;
1 1 Reply
1 n keycodes-per-modifier
2 CARD16 sequence number
4 2n reply length
24 unused
8n LISTofKEYCODE keycodes
<emphasis role='bold'>NoOperation</emphasis>
1 127 opcode
1 unused
2 1+n request length
4n unused
</literallayout>
</sect1>
<sect1 id="events_2">
<title>Events</title>
<literallayout class="monospaced">
<emphasis role='bold'>KeyPress</emphasis>
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
<emphasis role='bold'>KeyRelease</emphasis>
1 3 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
<emphasis role='bold'>ButtonPress</emphasis>
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
<emphasis role='bold'>ButtonRelease</emphasis>
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
<emphasis role='bold'>MotionNotify</emphasis>
1 6 code
1 detail
0 Normal
1 Hint
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
<emphasis role='bold'>EnterNotify</emphasis>
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
<emphasis role='bold'>LeaveNotify</emphasis>
1 8 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
<emphasis role='bold'>FocusIn</emphasis>
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
<emphasis role='bold'>FocusOut</emphasis>
1 10 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
<emphasis role='bold'>KeymapNotify</emphasis>
1 11 code
31 LISTofCARD8 keys (byte for keycodes 0-7 is
omitted)
<emphasis role='bold'>Expose</emphasis>
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
<emphasis role='bold'>GraphicsExposure</emphasis>
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
<emphasis role='bold'>NoExposure</emphasis>
1 14 code
1 unused
2 CARD16 sequence number
4 DRAWABLE drawable
2 CARD16 minor-opcode
1 CARD8 major-opcode
21 unused
<emphasis role='bold'>VisibilityNotify</emphasis>
1 15 code
1 unused
2 CARD16 sequence number
4 WINDOW window
1 state
0 Unobscured
1 PartiallyObscured
2 FullyObscured
23 unused
<emphasis role='bold'>CreateNotify</emphasis>
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
<emphasis role='bold'>DestroyNotify</emphasis>
1 17 code
1 unused
2 CARD16 sequence number
4 WINDOW event
4 WINDOW window
20 unused
<emphasis role='bold'>UnmapNotify</emphasis>
1 18 code
1 unused
2 CARD16 sequence number
4 WINDOW event
4 WINDOW window
1 BOOL from-configure
19 unused
<emphasis role='bold'>MapNotify</emphasis>
1 19 code
1 unused
2 CARD16 sequence number
4 WINDOW event
4 WINDOW window
1 BOOL override-redirect
19 unused
<emphasis role='bold'>MapRequest</emphasis>
1 20 code
1 unused
2 CARD16 sequence number
4 WINDOW parent
4 WINDOW window
20 unused
<emphasis role='bold'>ReparentNotify</emphasis>
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
<emphasis role='bold'>ConfigureNotify</emphasis>
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
<emphasis role='bold'>ConfigureRequest</emphasis>
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
<emphasis role='bold'>GravityNotify</emphasis>
1 24 code
1 unused
2 CARD16 sequence number
4 WINDOW event
4 WINDOW window
2 INT16 x
2 INT16 y
16 unused
<emphasis role='bold'>ResizeRequest</emphasis>
1 25 code
1 unused
2 CARD16 sequence number
4 WINDOW window
2 CARD16 width
2 CARD16 height
20 unused
<emphasis role='bold'>CirculateNotify</emphasis>
1 26 code
1 unused
2 CARD16 sequence number
4 WINDOW event
4 WINDOW window
4 WINDOW unused
1 place
0 Top
1 Bottom
15 unused
<emphasis role='bold'>CirculateRequest</emphasis>
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
<emphasis role='bold'>PropertyNotify</emphasis>
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
<emphasis role='bold'>SelectionClear</emphasis>
1 29 code
1 unused
2 CARD16 sequence number
4 TIMESTAMP time
4 WINDOW owner
4 ATOM selection
16 unused
<emphasis role='bold'>SelectionRequest</emphasis>
1 30 code
1 unused
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
<emphasis role='bold'>SelectionNotify</emphasis>
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
<emphasis role='bold'>ColormapNotify</emphasis>
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
<emphasis role='bold'>ClientMessage</emphasis>
1 33 code
1 CARD8 format
2 CARD16 sequence number
4 WINDOW window
4 ATOM type
20 data
<emphasis role='bold'>MappingNotify</emphasis>
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
</literallayout>
</sect1>
</appendix>