X11.encoding   [plain text]


.\" $Xorg: X11.encoding,v 1.3 2000/08/17 19:42:23 cpqbld Exp $
\&
.sp 1
.ps 11
.nr PS 11
.XS
Appendix B \- Protocol Encoding
.XE
.ce 3
\s+1\fBAppendix B\fP\s-1

\s+1\fBProtocol Encoding\fP\s-1
.sp 2
.LP
.\"The sections in this appendix correspond to their number counterparts
.\"in the protocol document.
.SH
Syntactic Conventions
.LP
All numbers are in decimal, 
unless prefixed with #x, in which case they are in hexadecimal (base 16).
.LP
The general syntax used to describe requests, replies, errors, events, and
compound types is:
.LP
.ps 9
.nr PS 9
.Ds
.R
.PN NameofThing
  encode-form
  ...
  encode-form
.De
.ps 11
.nr PS 11
.LP
Each encode-form describes a single component.
.LP
For components described in the protocol as:
.LP
.ps 9
.nr PS 9
.Ds
.R
name: TYPE
.De
.ps 11
.nr PS 11
.LP
the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds 
.TA 1i 1.5i 2.5i
.ta 1i 1.5i 2.5i
.R
N	TYPE	name
.De
.ps 11
.nr PS 11
.LP
N is the number of bytes occupied in the data stream, 
and TYPE is the interpretation of those bytes.
For example,
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i
.ta 1i 1.5i
.R
depth: CARD8
.De
.ps 11
.nr PS 11
.LP
becomes:
.LP
.ps 9
.nr PS 9
.Ds
.R
.TA 1i 1.5i 2.5i 
.ta 1i 1.5i 2.5i
1	CARD8	depth
.De
.ps 11
.nr PS 11
.LP
For components with a static numeric value the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2.5i
.ta 1i 1.5i 2.5i
.R
N	value	name
.De
.ps 11
.nr PS 11
.LP
The value is always interpreted as an N-byte unsigned integer.
For example, 
the first two bytes of a
.PN Window 
error are always zero (indicating an
error in general) and three (indicating the
.PN Window 
error in particular):
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2.5i
.ta 1i 1.5i 2.5i
.R
1	0	Error
1	3	code
.De
.ps 11
.nr PS 11
.LP
For components described in the protocol as:
.RS
.ps 9
.nr PS 9
.LP
name: 
.Pn { Name1 ,..., 
.PN NameI }
.RE
.ps 11
.nr PS 11
.LP
the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2.5i
.ta 1i 1.5i 2.5i
.R
N		name
	value1 Name1
	...
	valueI NameI
.De
.ps 11
.nr PS 11
.LP
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:
.RS
.ps 9
.nr PS 9
.LP
class: 
.Pn { InputOutput , 
.PN InputOnly , 
.PN CopyFromParent }
.RE
.ps 11
.nr PS 11
.LP
becomes:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2.5i 3i
.ta 1i 1.5i 2.5i 3i
.R
2			class
	0	CopyFromParent
	1	InputOutput
	2	InputOnly
.De
.ps 11
.nr PS 11
.LP
For components described in the protocol as:
.RS
.ps 9
.nr PS 9
.LP
NAME: TYPE or 
.PN Alternative1 ...or
.PN AlternativeI
.RE
.ps 11
.nr PS 11
.LP
the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2i 2.5i 3i
.ta 1i 1.5i 2i 2.5i 3i
.R
N	TYPE			NAME
	value1	Alternative1
	...
	valueI	AlternativeI
.De
.ps 11
.nr PS 11
.LP
The alternative values are guaranteed not to conflict with the encoding
of TYPE.  
For example:
.RS
.ps 9
.nr PS 9
.LP
destination: WINDOW or 
.PN PointerWindow 
or 
.PN InputFocus
.RE
.ps 11
.nr PS 11
.LP
becomes:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2.5i
.ta 1i 1.5i 2.5i
.R
4	WINDOW		destination
	0	PointerWindow
	1	InputFocus
.De
.ps 11
.nr PS 11
.LP
For components described in the protocol as:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i
.ta 1i 1.5i
.R
value-mask: BITMASK
.De
.ps 11
.nr PS 11
.LP
the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2i 2.5i 
.ta 1i 1.5i 2i 2.5i
.R
N	BITMASK			value-mask
	mask1	mask-name1
	...
	maskI	mask-nameI
.De
.ps 11
.nr PS 11
.LP
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.
.LP
For LISTofVALUE encodings, the request is followed by a section of the form:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i
.ta 1i 1.5i
.R
VALUEs
 encode-form
 ...
 encode-form
.De
.ps 11
.nr PS 11
.LP
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.
.LP
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:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2i 2.5i
.ta 1i 1.5i 2i 2.5i
.R
2	3+n			request length
4n	LISTofPOINT		points
.De
.ps 11
.nr PS 11
.LP
For unused bytes (the values of the bytes are undefined and do no matter),
the encode-form is:
.LP
.ps 9
.nr PS 9
.Ds
.R
.TA 1i 1.5i 2i 2.5i
.ta 1i 1.5i 2i 2.5i
N			unused
.De
.ps 11
.nr PS 11
.LP
If the number of unused bytes is variable, the encode-form typically is:
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2i 2.5i
.ta 1i 1.5i 2i 2.5i
.R
p			unused, p=pad(E)
.De
.ps 11
.nr PS 11
.LP
where E is some expression,
and pad(E) is the number of bytes needed to round E up to a multiple of four.
.LP
.ps 9
.nr PS 9
.Ds
.TA 1i 1.5i 2i 2.5i
.ta 1i 1.5i 2i 2.5i
.R
pad(E) = (4 - (E mod 4)) mod 4
.De
.ps 11
.nr PS 11
.SH
Common Types
.ps 9
.nr PS 9
.LP
LISTofFOO
.ps 11
.nr PS 11
.IP
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.
.ps 9
.nr PS 9
.LP
SETofFOO
.ps 11
.nr PS 11
.IP
A set is always represented by a bitmask, with a 1-bit indicating presence in
the set.
.ps 9
.nr PS 9
.LP
BITMASK: CARD32
.LP
WINDOW: CARD32
.LP
PIXMAP: CARD32
.LP
CURSOR: CARD32
.LP
FONT: CARD32
.LP
GCONTEXT: CARD32
.LP
COLORMAP: CARD32
.LP
DRAWABLE: CARD32
.LP
FONTABLE: CARD32
.LP
ATOM: CARD32
.LP
VISUALID: CARD32
.LP
BYTE: 8-bit value
.LP
INT8: 8-bit signed integer
.LP
INT16: 16-bit signed integer
.LP
INT32: 32-bit signed integer
.LP
CARD8: 8-bit unsigned integer
.LP
CARD16: 16-bit unsigned integer
.LP
CARD32: 32-bit unsigned integer
.LP
TIMESTAMP: CARD32
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
BITGRAVITY
	0	Forget
	1	NorthWest
	2	North
	3	NorthEast
	4	West
	5	Center
	6	East
	7	SouthWest
	8	South
	9	SouthEast
	10	Static
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
WINGRAVITY
	0	Unmap
	1	NorthWest
	2	North
	3	NorthEast
	4	West
	5	Center
	6	East
	7	SouthWest
	8	South
	9	SouthEast
	10	Static
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
BOOL
	0	False
	1	True
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
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
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
SETofPOINTEREVENT
	encodings are the same as for SETofEVENT, except with
	#xFFFF8003	unused but must be zero
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
SETofDEVICEEVENT
	encodings are the same as for SETofEVENT, except with
	#xFFFFC0B0	unused but must be zero
.De
KEYSYM: CARD32
.LP
KEYCODE: CARD8
.LP
BUTTON: CARD8
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
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
.De
.LP
.Ds 0
.TA .75i 1.75i
.ta .75i 1.75i
.R
SETofKEYMASK
	encodings are the same as for SETofKEYBUTMASK, except with
	#xFF00		unused but must be zero
.De
.LP
STRING8: LISTofCARD8
.LP
STRING16: LISTofCHAR2B
.LP
.Ds 0
.TA .2i .5i 1.5i
.ta .2i .5i 1.5i
.R
CHAR2B
	1	CARD8	byte1
	1	CARD8	byte2
.De
.LP
.Ds 0
.TA .2i .5i 1.5i
.ta .2i .5i 1.5i
.R
POINT
	2	INT16	x
	2	INT16	y
.De
.LP
.Ds 0
.TA .2i .5i 1.5i
.ta .2i .5i 1.5i
.R
RECTANGLE
	2	INT16	x
	2	INT16	y
	2	CARD16	width
	2	CARD16	height
.De
.LP
.Ds 0
.TA .2i .5i 1.5i
.ta .2i .5i 1.5i
.R
ARC
	2	INT16	x
	2	INT16	y
	2	CARD16	width
	2	CARD16	height
	2	INT16	angle1
	2	INT16	angle2
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
HOST
	1			family
		0	Internet
		1	DECnet
		2	Chaos
	1			unused
	2	n		length of address
	n	LISTofBYTE		address
	p			unused, p=pad(n)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
STR
	1	n		length of name in bytes
	n	STRING8		name
.De
.ps 11
.nr PS 11
.SH
Errors
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Request
	1	0		Error
	1	1		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Match
	1	0		Error
	1	8		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Access
	1	0		Error
	1	10		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Alloc
	1	0		Error
	1	11		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Name
	1	0		Error
	1	15		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Length
	1	0		Error
	1	16		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Implementation
	1	0		Error
	1	17		code
	2	CARD16		sequence number
	4			unused
	2	CARD16		minor opcode
	1	CARD8		major opcode
	21			unused
.De
.ps 11
.nr PS 11
.SH
Keyboards
.LP
KEYCODE values are always greater than 7 (and less than 256).
.LP
KEYSYM values with the bit #x10000000 set are reserved as vendor-specific.
.LP
The names and encodings of the standard KEYSYM values are contained in 
Appendix A, Keysym Encoding.
.SH
Pointers
.LP
BUTTON values are numbered starting with one.
.SH
Predefined Atoms
.LP
.ps 9
.nr PS 9
.Ds 0
.TA 1.75i 3i 4.75i
.ta 1.75i 3i 4.75i
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
.De
.ps 11
.nr PS 11
.SH
Connection Setup
.LP
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.
.LP
Information sent by the client at connection setup:
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
	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)
.De
.ps 11
.nr PS 11
.LP
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.
.LP
Information received by the client if the connection is refused:
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
	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)
.De
.ps 11
.nr PS 11
.LP
Information received by the client if further authentication is required:
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
	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)
.De
.ps 11
.nr PS 11
.LP
Information received by the client if the connection is accepted:
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
FORMAT
	1	CARD8		depth
	1	CARD8		bits-per-pixel
	1	CARD8		scanline-pad
	5			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
DEPTH
	1	CARD8		depth
	1			unused
	2	n		number of VISUALTYPES in visuals
	4			unused
	24n	LISTofVISUALTYPE			visuals
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
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
.De
.ps 11
.nr PS 11
.SH
Requests
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CreateWindow
	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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetWindowAttributes
	1	3		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN DestroyWindow
	1	4		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN DestroySubwindows
	1	5		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ChangeSaveSet
	1	6		opcode
	1			mode
		0	Insert
		1	Delete
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ReparentWindow
	1	7		opcode
	1			unused
	2	4		request length
	4	WINDOW		window
	4	WINDOW		parent
	2	INT16		x
	2	INT16		y
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MapWindow
	1	8		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MapSubwindows
	1	9		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UnmapWindow
	1	10		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UnmapSubwindows
	1	11		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CirculateWindow
	1	13		opcode
	1			direction
		0	RaiseLowest
		1	LowerHighest
	2	2		request length
	4	WINDOW		window
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetGeometry
	1	14		opcode
	1			unused
	2	2		request length
	4	DRAWABLE		drawable
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN QueryTree
	1	15		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN InternAtom
	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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			unused
	2	CARD16		sequence number
	4	0		reply length
	4	ATOM		atom
		0	None
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetAtomName
	1	17		opcode
	1			unused
	2	2		request length
	4	ATOM		atom
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN DeleteProperty
	1	19		opcode
	1			unused
	2	3		request length
	4	WINDOW		window
	4	ATOM		property
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ListProperties
	1	21		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SetSelectionOwner
	1	22		opcode
	1			unused
	2	4		request length
	4	WINDOW		owner
		0	None
	4	ATOM		selection
	4	TIMESTAMP		time
		0	CurrentTime
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetSelectionOwner
	1	23		opcode
	1			unused
	2	2		request length
	4	ATOM		selection
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			unused
	2	CARD16		sequence number
	4	0		reply length
	4	WINDOW		owner
		0	None
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
		0	CurrentTime
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UngrabPointer
	1	27		opcode
	1			unused
	2	2		request length
	4	TIMESTAMP		time
		0	CurrentTime
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UngrabButton
	1	29		opcode
	1	BUTTON		button
		0	AnyButton
	2	3		request length
	4	WINDOW		grab-window
	2	SETofKEYMASK		modifiers
		#x8000	AnyModifier
	2			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UngrabKeyboard
	1	32		opcode
	1			unused
	2	2		request length
	4	TIMESTAMP		time
		0	CurrentTime
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.PN 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
	3			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UngrabKey
	1	34		opcode
	1	KEYCODE			key
		0	AnyKey
	2	3		request length
	4	WINDOW		grab-window
	2	SETofKEYMASK		modifiers
		#x8000	AnyModifier
	2			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GrabServer
	1	36		opcode
	1			unused
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UngrabServer
	1	37		opcode
	1			unused
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN QueryPointer
	1	38		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetMotionEvents
	1	39		opcode
	1			unused
	2	4		request length
	4	WINDOW		window
	4	TIMESTAMP		start
		0	CurrentTime
	4	TIMESTAMP		stop
		0	CurrentTime
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  TIMECOORD
	4	TIMESTAMP		time
	2	INT16		x
	2	INT16		y
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetInputFocus
	1	43		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN QueryKeymap
	1	44		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			unused
	2	CARD16		sequence number
	4	2		reply length
	32	LISTofCARD8		keys
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CloseFont
	1	46		opcode
	1			unused
	2	2		request length
	4	FONT		font
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN QueryFont
	1	47		opcode
	1			unused
	2	2		request length
	4	FONTABLE		font
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  FONTPROP
	4	ATOM		name
	4	<32-bits>		value
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  CHARINFO
	2	INT16		left-side-bearing
	2	INT16		right-side-bearing
	2	INT16		character-width
	2	INT16		ascent
	2	INT16		descent
	2	CARD16		attributes
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(-> (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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  FONTPROP
	encodings are the same as for QueryFont

  CHARINFO
	encodings are the same as for QueryFont
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(-> (last in series)
	1	1		Reply
	1	0		last-reply indicator
	2	CARD16		sequence number
	4	7		reply length
	52			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetFontPath
	1	52		opcode
	1			unused
	2	1		request list
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CreatePixmap
	1	53		opcode
	1	CARD8		depth
	2	4		request length
	4	PIXMAP		pid
	4	DRAWABLE		drawable
	2	CARD16		width
	2	CARD16		height
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FreePixmap
	1	54		opcode
	1			unused
	2	2		request length
	4	PIXMAP		pixmap
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
		#x00020000	clip-x-origin
		#x00040000	clip-y-origin
		#x00080000	clip-mask
		#x00100000	dash-offset
		#x00200000	dashes
		#x00400000	arc-mode
	4n	LISTofVALUE		value-list
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FreeGC
	1	60		opcode
	1			unused
	2	2		request length
	4	GCONTEXT		gc
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CopyPlane
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolySegment
	1	66		opcode
	1			unused
	2	3+2n		request length
	4	DRAWABLE		drawable
	4	GCONTEXT		gc
	8n	LISTofSEGMENT		segments
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  SEGMENT
	2	INT16		x1
	2	INT16		y1
	2	INT16		x2
	2	INT16		y2
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolyRectangle
	1	67		opcode
	1			unused
	2	3+2n		request length
	4	DRAWABLE		drawable
	4	GCONTEXT		gc
	8n	LISTofRECTANGLE		rectangles
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolyArc
	1	68		opcode
	1			unused
	2	3+3n		request length
	4	DRAWABLE		drawable
	4	GCONTEXT		gc
	12n	LISTofARC		arcs
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolyFillRectangle
	1	70		opcode
	1			unused
	2	3+2n		request length
	4	DRAWABLE		drawable
	4	GCONTEXT		gc
	8n	LISTofRECTANGLE			rectangles
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolyFillArc
	1	71		opcode
	1			unused
	2	3+3n		request length
	4	DRAWABLE		drawable
	4	GCONTEXT		gc
	12n	LISTofARC		arcs
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN PolyText8
	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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ImageText8
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CreateColormap
	1	78		opcode
	1			alloc
		0	None
		1	All
	2	4		request length
	4	COLORMAP		mid
	4	WINDOW		window
	4	VISUALID		visual
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FreeColormap
	1	79		opcode
	1			unused
	2	2		request length
	4	COLORMAP		cmap
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CopyColormapAndFree
	1	80		opcode
	1			unused
	2	3		request length
	4	COLORMAP		mid
	4	COLORMAP		src-cmap
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN InstallColormap
	1	81		opcode
	1			unused
	2	2		request length
	4	COLORMAP		cmap
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UninstallColormap
	1	82		opcode
	1			unused
	2	2		request length
	4	COLORMAP		cmap
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ListInstalledColormaps
	1	83		opcode
	1			unused
	2	2		request length
	4	WINDOW		window
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN AllocColor
	1	84		opcode
	1			unused
	2	4		request length
	4	COLORMAP		cmap
	2	CARD16		red
	2	CARD16		green
	2	CARD16		blue
	2			unused
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN AllocNamedColor
	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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN AllocColorCells
	1	86		opcode
	1	BOOL		contiguous
	2	3		request length
	4	COLORMAP		cmap
	2	CARD16		colors
	2	CARD16		planes
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN AllocColorPlanes
	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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FreeColors
	1	88		opcode
	1			unused
	2	3+n		request length
	4	COLORMAP		cmap
	4	CARD32		plane-mask
	4n	LISTofCARD32		pixels
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN StoreColors
	1	89		opcode
	1			unused
	2	2+3n		request length
	4	COLORMAP		cmap
	12n	LISTofCOLORITEM		items
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN StoreNamedColor
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN QueryColors
	1	91		opcode
	1			unused
	2	2+n		request length
	4	COLORMAP		cmap
	4n	LISTofCARD32		pixels
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  RGB
	2	CARD16		red
	2	CARD16		green
	2	CARD16		blue
	2			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FreeCursor
	1	95		opcode
	1			unused
	2	2		request length
	4	CURSOR		cursor
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			unused
	2	CARD16		sequence number
	4	0		reply length
	2	CARD16		width
	2	CARD16		height
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ListExtensions
	1	99		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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	LISTofKEYSYM		keysyms
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetKeyboardMapping
	1	101		opcode
	1			unused
	2	2		request length
	1	KEYCODE		first-keycode
	1	m		count
	2			unused
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ChangeKeyboardControl
	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
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
  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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetKeyboardControl
	1	103			opcode
	1				unused
	2	1			request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN Bell
	1	104		opcode
	1	INT8		percent
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetPointerControl
	1	106		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetScreenSaver
	1	108		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ListHosts
	1	110		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SetAccessControl
	1	111		opcode
	1			mode
		0	Disable
		1	Enable
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SetCloseDownMode
	1	112		opcode
	1			mode
		0	Destroy
		1	RetainPermanent
		2	RetainTemporary
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN KillClient
	1	113		opcode
	1			unused
	2	2		request length
	4	CARD32		resource
		0	AllTemporary
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ForceScreenSaver
	1	115		opcode
	1			mode
		0	Reset
		1	Activate
	2	1		request length
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SetPointerMapping
	1	116		opcode
	1	n		length of map
	2	1+(n+p)/4		request length
	n	LISTofCARD8		map
	p			unused, p=pad(n)
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			status
		0	Success
		1	Busy
	2	CARD16		sequence number
	4	0		reply length
	24			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetPointerMapping
	1	117		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	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)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SetModifierMapping
	1	118		opcode
	1	n		keycodes-per-modifier
	2	1+2n		request length
	8n	LISTofKEYCODE		keycodes
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1			status
		0	Success
		1	Busy
		2	Failed
	2	CARD16		sequence number
	4	0		reply length
	24			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GetModifierMapping
	1	119		opcode
	1			unused
	2	1		request length
.De
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
 \(->
	1	1		Reply
	1	n		keycodes-per-modifier
	2	CARD16		sequence number
	4	2n		reply length
	24			unused
	8n	LISTofKEYCODE		keycodes
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN NoOperation
	1	127		opcode
	1			unused
	2	1+n		request length
	4n			unused
.De
.ps 11
.nr PS 11
.SH
Events
.LP
.ps 9
.nr PS 9
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MotionNotify
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN LeaveNotify
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN FocusOut
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN KeymapNotify
	1	11		code
	31	LISTofCARD8		keys (byte for keycodes 0\-7 is omitted)
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN NoExposure
	1	14		code
	1			unused
	2	CARD16		sequence number
	4	DRAWABLE		drawable
	2	CARD16		minor-opcode
	1	CARD8		major-opcode
	21			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN VisibilityNotify
	1	15		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		window
	1			state
		0	Unobscured
		1	PartiallyObscured
		2	FullyObscured
	23			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN DestroyNotify
	1	17		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		event
	4	WINDOW		window
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN UnmapNotify
	1	18		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		event
	4	WINDOW		window
	1	BOOL		from-configure
	19			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MapNotify
	1	19		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		event
	4	WINDOW		window
	1	BOOL		override-redirect
	19			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MapRequest
	1	20		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		parent
	4	WINDOW		window
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ConfigureRequest
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN GravityNotify
	1	24		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		event
	4	WINDOW		window
	2	INT16		x
	2	INT16		y
	16			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ResizeRequest
	1	25		code
	1			unused
	2	CARD16		sequence number
	4	WINDOW		window
	2	CARD16		width
	2	CARD16		height
	20			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN CirculateNotify
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SelectionClear
	1	29		code
	1			unused
	2	CARD16		sequence number
	4	TIMESTAMP		time
	4	WINDOW		owner
	4	ATOM		selection
	16			unused
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN SelectionRequest
	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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN 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
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN ClientMessage
	1	33		code
	1	CARD8		format
	2	CARD16		sequence number
	4	WINDOW		window
	4	ATOM		type
	20			data
.De
.LP
.Ds 0
.TA .2i .5i 1.5i 2.5i
.ta .2i .5i 1.5i 2.5i
.R
.PN MappingNotify
	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
.De
.ps 11
.nr PS 11
.bp