		 X Window System Protocol Encoding, Version 11
				September 1987
	   Copyright (c) 1987 Massachusetts Institute of Technology
		   X Window System is a trademark of M.I.T.

 Permission to use, copy, modify, and distribute this document for any purpose
 and without fee is hereby granted, provided that the above copyright notice
 appear in all copies and that both that copyright notice and this permission
 notice are retained, and that the name of M.I.T. not be used in advertising or
 publicity pertaining to this document without specific, written prior
 permission.  M.I.T. makes no representations about the suitability of this
 document or the encoding defined in this document for any purpose.  It is
 provided "as is" without express or implied warranty.

 Author: Robert W. Scheifler
	 Laboratory for Computer Science
	 545 Technology Square, Room 418
	 Cambridge, MA 02139

 This is a companion to the document: "X Window System Protocol, Version 11".
 The sections are numbered to match that document.

-------------------------------------------------------------------------------


SECTION 1.  TERMINOLOGY


 This section intentionally left blank.


SECTION 2.  PROTOCOL FORMATS


 This section intentionally left blank.


SECTION 3.  SYNTAX


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

 The general syntax used to describe requests, replies, errors, events, and
 compound types is:
	NameofThing
	  encode-form
	  ...
	  encode-form
 where each encode-form describes a single component.

 For components described in the protocol document as:
	name: TYPE
 the encode-form is:
	N	TYPE			name
 where N is the number of bytes occupied in the data stream, and TYPE is the
 interpretation of those bytes.  For example,
	depth: CARD8
 becomes:
	1	CARD8			depth

 For components with a static numeric value the encode-form is:
	N	value			name
 where the value is always interpreted as an N-byte unsigned integer.  For
 example, the first two bytes of a Window error are always 0 (indicating an
 error in general) and 3 (indicating the Window error in particular):
	1	0		Error
	1	3		code

 For components described in the protocol document as:
	name: {Name1, ..., NameN}
 the encode-form is:
	N				name
		value1	Name1
		...
		valueN	NameN
 where the value is always interpreted as an N-byte unsigned integer.  Note
 that the size of N is sometimes larger that than strictly required to encode
 the values.  For example,
	class: {InputOutput, InputOnly, CopyFromParent}
 becomes:
	2				class
		0	CopyFromParent
		1	InputOutput
		2	InputOnly

 For components described in the protocol document as:
	NAME: TYPE or Alternative1 ... or AlternativeN
 the encode-form is
	N	TYPE			NAME
		value1	Alternative1
		...
		valueI	AlternativeI
 where the alternative values are guaranteed not to conflict with the encoding
 of TYPE.  For example,
	destination: WINDOW or PointerWindow or InputFocus
 becomes
	4	WINDOW			destination
		0	PointerWindow
		1	InputFocus

 For components described in the protocol document as
	value-mask: BITMASK
 the encode-form is
	N	BITMASK			value-mask
		mask1	mask-name1
		...
		maskI	mask-nameI
 where 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 (multi-word) 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 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.

 For LISTofVALUE encodings, the request is followed by a section of the form:
	VALUEs
	 encode-form
	 ...
	 encode-form
 listing an encode-form for each VALUE.  The NAME in each encode-form keys to
 the corresponding BITMASK bit.  The encoding of a VALUE always occupies 4
 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.

 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 interpret as unsigned integers.  The "scope"
 of such variables is always just the enclosing request, reply, error, event,
 or compound type structure.  For example:
	 2	3+n			request length
	4n	LISTofPOINT		points

 For unused bytes (the values of the bytes are undefined and do no matter) the
 encode-form is:
	N				unused
 If the number of unused bytes is variable, the encode-form typically is:
	p				unused, p=pad(E)
 where E is some expression.  pad(E) is the number (of bytes) needed to round E
 up to a multiple of 4:
	pad(E) = (4 - (E mod 4)) mod 4


SECTION 4.  COMMON TYPES


LISTofFOO

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

SETofFOO

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

BITMASK: CARD32
WINDOW: CARD32
PIXMAP: CARD32
CURSOR: CARD32
FONT: CARD32
GCONTEXT: CARD32
COLORMAP: CARD32
DRAWABLE: CARD32
FONTABLE: CARD32
ATOM: CARD32
VISUALID: CARD32
BYTE: 8-bit value
INT8: 8-bit signed integer
INT16: 16-bit signed integer
INT32: 32-bit signed integer
CARD8: 8-bit unsigned integer
CARD16: 16-bit unsigned integer
CARD32: 32-bit unsigned integer
TIMESTAMP: CARD32

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

WINGRAVITY
	 0	Unmap
	 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
	#xc000		unused but must be zero

SETofKEYMASK
	encodings are the same as for KEYBUTMASK, 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
   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


SECTION 5.  ERRORS


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


SECTION 6.  KEYBOARDS


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

 KEYSYMs with the bit #x10000000 set are reserved as "vendor-specific".

 The names and encodings of the standard KEYSYMs are contained in the companion
 document, "X Window System KEYSYM Encoding, Version 11".


SECTION 7.  POINTERS


 BUTTON values are numbered starting with one.


SECTION 8.  PREDEFINED ATOMS


 PRIMARY		 1
 SECONDARY		 2
 ARC			 3
 ATOM			 4
 BITMAP			 5
 CARDINAL		 6
 COLORMAP		 7
 CURSOR			 8
 CUT_BUFFER0		 9
 CUT_BUFFER1		10
 CUT_BUFFER2		11
 CUT_BUFFER3		12
 CUT_BUFFER4		13
 CUT_BUFFER5		14
 CUT_BUFFER6		15
 CUT_BUFFER7		16
 DRAWABLE		17
 FONT			18
 INTEGER		19
 PIXMAP			20
 POINT			21
 RECTANGLE		22
 RESOURCE_MANGER	23
 RGB_COLOR_MAP		24
 RGB_BEST_MAP		25
 RGB_BLUE_MAP		26
 RGB_DEFAULT_MAP	27
 RGB_GRAY_MAP		28
 RGB_GREEN_MAP		29
 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
 WM_NORMAL_HINTS	40
 WM_SIZE_HINTS		41
 WM_ZOOM_HINTS		42
 MIN_SPACE		43
 NORM_SPACE		44
 MAX_SPACE		45
 END_SPACE		46
 SUPERSCRIPT_X		47
 SUPERSCRIPT_Y		48
 SUBSCRIPT_X		49
 SUBSCRIPT_Y		50
 UNDERLINE_POSITION	51
 UNDERLINE_THICKNESS	52
 STRIKEOUT_ASCENT	53
 STRIKEOUT_DESCENT	54
 ITALIC_ANGLE		55
 X_HEIGHT		56
 QUAD_WIDTH		57
 WEIGHT			58
 POINT_SIZE		59
 RESOLUTION		60
 COPYRIGHT		61
 NOTICE			62
 FONT_NAME		63
 FAMILY_NAME		64
 FULL_NAME		65
 CAP_HEIGHT		66
 WM_CLASS		67
 WM_TRANSIENT_FOR	68


SECTION 9.  CONNECTION SETUP


 For TCP connections, displays on a given host are numbered starting from 0,
 and the server for display N listens and accepts connections on port 6000+N.

 Information sent by the client at connection setup:

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

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

 Information received by the client if authorization fails:

   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)

 Information received by the client if authorization is accepted:

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

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

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

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

 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


SECTION 10.  REQUESTS


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 1-bits)
	#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

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

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

GetWindowAttributes reply
   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

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

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

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

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

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

MapSubwindows
   1	9			opcode
   1				unused
   2	2			request length
   4	WINDOW			window

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

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

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

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

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

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

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

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

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

InternAtom
   1	16			opcode
   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)

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

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

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

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

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

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

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

ListProperties
   1	21			opcode
   1				unused
   2	2			request length
   4	WINDOW			window

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

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

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

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

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

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

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		timestamp
	0	CurrentTime

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

UngrabPointer
   1	27			opcode
   1				unused
   2	2			request length
   4	TIMESTAMP		time
	0	CurrentTime

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

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

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

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

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

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

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

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

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

GrabServer
   1	36			opcode
   1				unused
   2	1			request length

UngrabServer
   1	37			opcode
   1				unused
   2	1			request length

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

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

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

GetMotionEvents reply
   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	CARD16			x
   2	CARD16			y

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

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

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

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

GetInputFocus
   1	43			opcode
   1				unused
   2	1			request length

GetInputFocus reply
   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

QueryKeymap
   1	44			opcode
   1				unused
   2	1			request length

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

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

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

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

QueryFont reply
   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	<32-bits>		value

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

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

QueryTextExtents reply
   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

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)

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

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

ListFontsWithInfo reply (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

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

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

GetFontPath
   1	52			opcode
   1				unused
   2	1			request list

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

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

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

CreateGC
   1	55			opcode
   1				unused
   2	4+n			request length
   4	GCONTEXT		cid
   4	DRAWABLE		drawable
   4	BITMASK			value-mask (has n 1-bits)
	#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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PolyText8
   1	74			opcode
   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	n			length of string (cannot be 255)
   1	INT8			delta
   n	STRING8			string
 or
   1	255			font-shift indicator
   1				font byte 3 (most significant)
   1				font byte 2
   1				font byte 1
   1				font byte 0 (least significant)

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

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

ImageText8
   1	76			opcode
   1	n			length of string
   2	4+(n+p)/4		request length
   4	DRAWABLE		drawable
   4	GCONTEXT		gc
   2	INT16			x
   2	INT16			y
   n	STRING8			string
   p				unused, p=pad(n)

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

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

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

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

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

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

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

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

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

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

AllocNamedColor
   1	85			opcode
   1				unused
   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)

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

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

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

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

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

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

StoreColors
   1	89			opcode
   1				unused
   2	2+3n			request length
   4	COLORMAP		cmap
 12n	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

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)

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

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

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

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

LookupColor reply
   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

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

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

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

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

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

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

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

QueryExtension reply
   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

ListExtensions
   1	99			opcode
   1				unused
   2	1			request length

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

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

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

GetKeyboardMapping reply
   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				keysyms

ChangeKeyboardControl
   1	102			opcode
   1				unused
   2	2+n			request length
   4	BITMASK			value-mask (has n 1-bits)
	#x0001		key-click-percent
	#x0002		bell-percent
	#x0004		bell-pitch
	#x0008		bell-duration
	#x0010		led
	#x0020		led-mode
	#x0040		key
	#x0080		auto-repeat-mode
  4n	LISTofVALUE		value-list
	
 VALUEs
   1	INT8			key-click-percent
   1	INT8			bell-percent
   2	INT16			bell-pitch
   2	INT16			bell-duration
   1	CARD8			led
   1				led-mode
	0	Off
	1	On
   1	KEYCODE			key
   1				auto-repeat-mode
	0	Off
	1	On
	2	Default

GetKeyboardControl
   1	103			opcode
   1				unused
   2	1			request length

GetKeyboardControl reply
   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				auto-repeats

Bell
   1	104			opcode
   1	INT8			percent
   2	1			request length

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

GetPointerControl
   1	106			GetPointerControl
   1				unused
   2	1			request length

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

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

GetScreenSaver
   1	108			opcode
   1				unused
   2	1			request length

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

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

ListHosts
   1	110			opcode
   1				unused
   2	1			request length

ListHosts reply
   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)

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

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

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

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

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

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

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

GetPointerMapping
   1	117			opcode
   1				unused
   2	1			request length

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

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

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

GetModifierMapping
   1	119			opcode
   1				unused
   2	1			request length

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

NoOperation
   1	127			opcode
   1				unused
   2	1			request length


SECTION 11.  CONNECTION CLOSE


 This section intentionally left blank.


SECTION 12.  EVENTS


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

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

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

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

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

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

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

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

  23				unused

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

  23				unused

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CirculateNotify
   1	26			code
   1				unused
   2	CARD16			sequence number
   4	WINDOW			event
   4	WINDOW			window
   4	WINDOW			parent
   1				place
	0	Top
	1	Bottom
  15				unused

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

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

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

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

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

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

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

MappingNotify
   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


SECTION 13.  FLOW CONTROL AND CONCURRENCY


 This section intentionally left blank.
