1mX Window System Protocol0m

		   1mX Consortium Standard0m

	      1mX Version 11, Release 6.7 DRAFT0m






		    Robert W. Scheifler
		     X Consortium, Inc.






















































X Window System is a trademark of The Open Group.

Copyright © 1986, 1987, 1988, 1994, 2002 The Open Group

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documenta-
tion files (the ``Software''), to deal in the Software with-
out restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the fol-
lowing conditions:

The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the
Software.

THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PUR-
POSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE OPEN GROUP
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of the Open
Group shall not be used in advertising or otherwise to pro-
mote the sale, use or other dealings in this Software with-
out prior written authorization from the Open Group.




























		      1mAcknowledgments0m



The primary contributers to the X11 protocol are:


     Dave Carver (Digital HPW)
     Branko Gerovac (Digital HPW)
     Jim Gettys (MIT/Project Athena, Digital)
     Phil Karlton (Digital WSL)
     Scott McGregor (Digital SSG)
     Ram Rao (Digital UEG)
     David Rosenthal (Sun)
     Dave Winchell (Digital UEG)


The implementors of initial server who provided useful input
are:


     Susan Angebranndt (Digital)
     Raymond Drewry (Digital)
     Todd Newman (Digital)


The invited reviewers who provided useful input are:


     Andrew Cherenson (Berkeley)
     Burns Fisher (Digital)
     Dan Garfinkel (HP)
     Leo Hourvitz (Next)
     Brock Krizan (HP)
     David Laidlaw (Stellar)
     Dave Mellinger (Interleaf)
     Ron Newman (MIT)
     John Ousterhout (Berkeley)
     Andrew Palay (ITC CMU)
     Ralph Swick (MIT)
     Craig Taylor (Sun)
     Jeffery Vroom (Stellar)


Thanks go to Al Mento of Digital's UEG Documentation Group
for formatting this document.

This document does not attempt to provide the rationale or
pragmatics required to fully understand the protocol or to
place it in perspective within a complete system.














The protocol contains many management mechanisms that are
not intended for normal applications.  Not all mechanisms
are needed to build a particular user interface.  It is
important to keep in mind that the protocol is intended to
provide mechanism, not policy.


Robert W. Scheifler
X Consortium, Inc.

























































1m1.  Protocol Formats0m

1mRequest Format0m

Every request contains an 8-bit major opcode and a 16-bit
length field expressed in units of four bytes.	Every
request consists of four bytes of a header (containing the
major opcode, the length field, and a data byte) followed by
zero or more additional bytes of data.	The length field
defines the total length of the request, including the
header.	 The length field in a request must equal the mini-
mum length required to contain the request.  If the speci-
fied length is smaller or larger than the required length,
an error is generated.	Unused bytes in a request are not
required to be zero.  Major opcodes 128 through 255 are
reserved for extensions.  Extensions are intended to contain
multiple requests, so extension requests typically have an
additional minor opcode encoded in the second data byte in
the request header.  However, the placement and interpreta-
tion of this minor opcode and of all other fields in exten-
sion requests are not defined by the core protocol.  Every
request on a given connection is implicitly assigned a
sequence number, starting with one, that is used in replies,
errors, and events.

1mReply Format0m

Every reply contains a 32-bit length field expressed in
units of four bytes.  Every reply consists of 32 bytes fol-
lowed by zero or more additional bytes of data, as specified
in the length field.  Unused bytes within a reply are not
guaranteed to be zero.	Every reply also contains the least
significant 16 bits of the sequence number of the corre-
sponding request.

1mError Format0m

Error reports are 32 bytes long.  Every error includes an
8-bit error code.  Error codes 128 through 255 are reserved
for extensions.	 Every error also includes the major and
minor opcodes of the failed request and the least signifi-
cant 16 bits of the sequence number of the request.  For the
following errors (see section 4), the failing resource ID is
also returned: 4mColormap24m, 4mCursor24m, 4mDrawable24m, 4mFont24m, 4mGContext24m,
4mIDChoice24m, 4mPixmap24m, and 4mWindow24m.  For 4mAtom24m errors, the failing
atom is returned.  For 4mValue24m errors, the failing value is
returned.  Other core errors return no additional data.
Unused bytes within an error are not guaranteed to be zero.

1mEvent Format0m

Events are 32 bytes long.  Unused bytes within an event are
not guaranteed to be zero.  Every event contains an 8-bit
type code.  The most significant bit in this code is set if



			      1m10m





1mX Protocol				X11, Release 6.7 DRAFT0m


the event was generated from a 4mSendEvent24m request.	Event
codes 64 through 127 are reserved for extensions, although
the core protocol does not define a mechanism for selecting
interest in such events.  Every core event (with the excep-
tion of 4mKeymapNotify24m) also contains the least significant 16
bits of the sequence number of the last request issued by
the client that was (or is currently being) processed by the
server.

1m2.  Syntactic Conventions0m

The rest of this document uses the following syntactic con-
ventions.

·    The syntax {...} encloses a set of alternatives.

·    The syntax [...] encloses a set of structure compo-
     nents.

·    In general, TYPEs are in uppercase and 4mAlternativeVal-0m
     4mues24m are capitalized.

·    Requests in section 9 are described in the following
     format:


     4mRequestName0m
	    4marg124m: type1
	    ...
	    4margN24m: typeN
	->
	    result1: type1
	    ...
	    resultM: typeM

	    Errors: kind1, ..., kindK

	    Description.


     If no -> is present in the description, then the
     request has no reply (it is asynchronous), although
     errors may still be reported.  If ->+ is used, then one
     or more replies can be generated for a single request.

·    Events in section 11 are described in the following
     format:


     4mEventName0m
	    4mvalue124m: type1
	    ...
	    4mvalueN24m: typeN




			      1m20m





1mX Protocol				X11, Release 6.7 DRAFT0m


	    Description.


1m3.  Common Types0m


-------------------------------------------------------------------
1mName		 Value0m
-------------------------------------------------------------------
LISTofFOO      A type name of the form LISTofFOO means a counted
	       list of elements of type FOO.  The size of the
	       length field may vary (it is not necessarily the
	       same size as a FOO), and in some cases, it may be
	       implicit.  It is fully specified in Appendix B.
	       Except where explicitly noted, zero-length lists
	       are legal.
BITMASK	       The types BITMASK and LISTofVALUE are somewhat spe-
LISTofVALUE    cial.  Various requests contain arguments of the
	       form:
	       4mvalue-mask24m: BITMASK
	       4mvalue-list24m: LISTofVALUE
	       These are used to allow the client to specify a
	       subset of a heterogeneous collection of optional
	       arguments.  The value-mask specifies which argu-
	       ments are to be provided; each such argument is
	       assigned a unique bit position.	The representation
	       of the BITMASK will typically contain more bits
	       than there are defined arguments.  The unused bits
	       in the value-mask must be zero (or the server gen-
	       erates a 4mValue24m error).  The value-list contains one
	       value for each bit set to 1 in the mask, from least
	       significant to most significant bit in the mask.
	       Each value is represented with four bytes, but the
	       actual value occupies only the least significant
	       bytes as required.  The values of the unused bytes
	       do not matter.
OR	       A type of the form ``T1 or ... or Tn'' means the
	       union of the indicated types.  A single-element
	       type is given as the element without enclosing
	       braces.
WINDOW	       32-bit value (top three bits guaranteed to be zero)
PIXMAP	       32-bit value (top three bits guaranteed to be zero)
CURSOR	       32-bit value (top three bits guaranteed to be zero)
FONT	       32-bit value (top three bits guaranteed to be zero)
GCONTEXT       32-bit value (top three bits guaranteed to be zero)
COLORMAP       32-bit value (top three bits guaranteed to be zero)
DRAWABLE       WINDOW or PIXMAP
FONTABLE       FONT or GCONTEXT
ATOM	       32-bit value (top three bits guaranteed to be zero)
VISUALID       32-bit value (top three bits guaranteed to be zero)
VALUE	       32-bit quantity (used only in LISTofVALUE)
BYTE	       8-bit value
INT8	       8-bit signed integer




			      1m30m





1mX Protocol				X11, Release 6.7 DRAFT0m


-------------------------------------------------------------------
1mName		 Value0m
-------------------------------------------------------------------
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     {4mForget24m, 4mStatic24m, 4mNorthWest24m, 4mNorth24m, 4mNorthEast24m, 4mWest24m,
	       4mCenter24m,
		 4mEast24m, 4mSouthWest24m, 4mSouth24m, 4mSouthEast24m}
WINGRAVITY     {4mUnmap24m, 4mStatic24m, 4mNorthWest24m, 4mNorth24m, 4mNorthEast24m, 4mWest24m,
	       4mCenter24m,
		 4mEast24m, 4mSouthWest24m, 4mSouth24m, 4mSouthEast24m}
BOOL	       {4mTrue24m, 4mFalse24m}
EVENT	       {4mKeyPress24m, 4mKeyRelease24m, 4mOwnerGrabButton24m, 4mButton-0m
	       4mPress24m,
		 4mButtonRelease24m, 4mEnterWindow24m, 4mLeaveWindow24m, 4mPointer-0m
	       4mMotion24m,
		 4mPointerMotionHint24m, 4mButton1Motion24m, 4mButton2Motion24m,
		 4mButton3Motion24m, 4mButton4Motion24m, 4mButton5Motion24m, 4mBut-0m
	       4mtonMotion24m,
		 4mExposure24m, 4mVisibilityChange24m, 4mStructureNotify24m,
	       4mResizeRedirect24m,
		 4mSubstructureNotify24m, 4mSubstructureRedirect24m,
	       4mFocusChange24m,
		 4mPropertyChange24m, 4mColormapChange24m, 4mKeymapState24m}
POINTEREVENT   {4mButtonPress24m, 4mButtonRelease24m, 4mEnterWindow24m, 4mLeaveWin-0m
	       4mdow24m,
		 4mPointerMotion24m, 4mPointerMotionHint24m, 4mButton1Motion24m,
		 4mButton2Motion24m, 4mButton3Motion24m, 4mButton4Motion24m, 4mBut-0m
	       4mton5Motion24m,
		 4mButtonMotion24m, 4mKeymapState24m}
DEVICEEVENT    {4mKeyPress24m, 4mKeyRelease24m, 4mButtonPress24m, 4mButtonRelease24m,
		 4mPointerMotion24m, 4mButton1Motion24m, 4mButton2Motion24m, 4mBut-0m
	       4mton3Motion24m,
		 4mButton4Motion24m, 4mButton5Motion24m, 4mButtonMotion24m}
KEYSYM	       32-bit value (top three bits guaranteed to be zero)
KEYCODE	       CARD8
BUTTON	       CARD8
KEYMASK	       {4mShift24m, 4mLock24m, 4mControl24m, 4mMod124m, 4mMod224m, 4mMod324m, 4mMod424m,
	       4mMod524m}
BUTMASK	       {4mButton124m, 4mButton224m, 4mButton324m, 4mButton424m, 4mButton524m}
KEYBUTMASK     KEYMASK or BUTMASK
STRING8	       LISTofCARD8
STRING16       LISTofCHAR2B
CHAR2B	       [byte1, byte2: CARD8]
POINT	       [x, y: INT16]
RECTANGLE      [x, y: INT16,
		width, height: CARD16]






			      1m40m





1mX Protocol				X11, Release 6.7 DRAFT0m


-------------------------------------------------------------------
1mName		 Value0m
-------------------------------------------------------------------
ARC	       [x, y: INT16,
		width, height: CARD16,
		angle1, angle2: INT16]
HOST	       [family: {4mInternet24m, 4mInternetV624m, 4mDECnet24m, 4mChaos24m}
		address: LISTofBYTE]


The [x,y] coordinates of a RECTANGLE specify the upper-left
corner.

The primary interpretation of large characters in a STRING16
is that they are composed of two bytes used to index a two-
dimensional matrix, hence, the use of CHAR2B rather than
CARD16.	 This corresponds to the JIS/ISO method of indexing
2-byte characters.  It is expected that most large fonts
will be defined with 2-byte matrix indexing.  For large
fonts constructed with linear indexing, a CHAR2B can be
interpreted as a 16-bit number by treating byte1 as the most
significant byte.  This means that clients should always
transmit such 16-bit character values most significant byte
first, as the server will never byte-swap CHAR2B quantities.

The length, format, and interpretation of a HOST address are
specific to the family (see 4mChangeHosts24m request).

1m4.  Errors0m

In general, when a request terminates with an error, the
request has no side effects (that is, there is no partial
execution).  The only requests for which this is not true
are 4mChangeWindowAttributes24m, 4mChangeGC24m, 4mPolyText824m, 4mPolyText1624m,
4mFreeColors24m, 4mStoreColors24m, and 4mChangeKeyboardControl24m.

The following error codes result from various requests as
follows:

-------------------------------------------------------------
1mError		    Description0m
-------------------------------------------------------------















			      1m50m





1mX Protocol				X11, Release 6.7 DRAFT0m


-------------------------------------------------------------
1mError		    Description0m
-------------------------------------------------------------
4mAccess24m	       An attempt is made to grab a key/button
		  combination already grabbed by another
		  client.
		  An attempt is made to free a colormap
		  entry not allocated by the client or to
		  free an entry in a colormap that was cre-
		  ated with all entries writable.
		  An attempt is made to store into a read-
		  only or an unallocated colormap entry.
		  An attempt is made to modify the access
		  control list from other than the local
		  host (or otherwise authorized client).
		  An attempt is made to select an event type
		  that only one client can select at a time
		  when another client has already selected
		  it.
4mAlloc24m	       The server failed to allocate the
		  requested resource.  Note that the
		  explicit listing of 4mAlloc24m errors in
		  request only covers allocation errors at a
		  very coarse level and is not intended to
		  cover all cases of a server running out of
		  allocation space in the middle of service.
		  The semantics when a server runs out of
		  allocation space are left unspecified, but
		  a server may generate an 4mAlloc24m error on
		  any request for this reason, and clients
		  should be prepared to receive such errors
		  and handle or discard them.
4mAtom24m	       A value for an ATOM argument does not name
		  a defined ATOM.
4mColormap24m	       A value for a COLORMAP argument does not
		  name a defined COLORMAP.
4mCursor24m	       A value for a CURSOR argument does not
		  name a defined CURSOR.
4mDrawable24m	       A value for a DRAWABLE argument does not
		  name a defined WINDOW or PIXMAP.
4mFont24m	       A value for a FONT argument does not name
		  a defined FONT.
		  A value for a FONTABLE argument does not
		  name a defined FONT or a defined GCONTEXT.
4mGContext24m	       A value for a GCONTEXT argument does not
		  name a defined GCONTEXT.
4mIDChoice24m	       The value chosen for a resource identifier
		  either is not included in the range
		  assigned to the client or is already in
		  use.







			      1m60m





1mX Protocol				X11, Release 6.7 DRAFT0m


-------------------------------------------------------------
1mError		    Description0m
-------------------------------------------------------------
4mImplementation24m    The server does not implement some aspect
		  of the request.  A server that generates
		  this error for a core request is defi-
		  cient.  As such, this error is not listed
		  for any of the requests, but clients
		  should be prepared to receive such errors
		  and handle or discard them.
4mLength24m	       The length of a request is shorter or
		  longer than that required to minimally
		  contain the arguments.
		  The length of a request exceeds the maxi-
		  mum length accepted by the server.
4mMatch24m	       An 4mInputOnly24m window is used as a DRAWABLE.
		  In a graphics request, the GCONTEXT argu-
		  ment does not have the same root and depth
		  as the destination DRAWABLE argument.
		  Some argument (or pair of arguments) has
		  the correct type and range, but it fails
		  to match in some other way required by the
		  request.
4mName24m	       A font or color of the specified name does
		  not exist.
4mPixmap24m	       A value for a PIXMAP argument does not
		  name a defined PIXMAP.
4mRequest24m	       The major or minor opcode does not specify
		  a valid request.
4mValue24m	       Some numeric value falls outside the range
		  of values accepted by the request.  Unless
		  a specific range is specified for an argu-
		  ment, the full range defined by the argu-
		  ment's type is accepted.  Any argument
		  defined as a set of alternatives typically
		  can generate this error (due to the encod-
		  ing).
4mWindow24m	       A value for a WINDOW argument does not
		  name a defined WINDOW.
-------------------------------------------------------------


			    Note

     The 4mAtom24m, 4mColormap24m, 4mCursor24m, 4mDrawable24m, 4mFont24m, 4mGCon-0m
     4mtext24m, 4mPixmap24m, and 4mWindow24m errors are also used when
     the argument type is extended by union with a set
     of fixed alternatives, for example, <WINDOW or
     4mPointerRoot24m or 4mNone24m>.








			      1m70m





1mX Protocol				X11, Release 6.7 DRAFT0m


1m5.  Keyboards0m

A KEYCODE represents a physical (or logical) key.  Keycodes
lie in the inclusive range [8,255].  A keycode value carries
no intrinsic information, although server implementors may
attempt to encode geometry information (for example, matrix)
to be interpreted in a server-dependent fashion.  The map-
ping between keys and keycodes cannot be changed using the
protocol.

A KEYSYM is an encoding of a symbol on the cap of a key.
The set of defined KEYSYMs include the character sets
Latin-1, Latin-2, Latin-3, Latin-4, Kana, Arabic, Cyrillic,
Greek, Tech, Special, Publish, APL, Hebrew, Thai, and Korean
as well as a set of symbols common on keyboards (Return,
Help, Tab, and so on).	KEYSYMs with the most significant
bit (of the 29 bits) set are reserved as vendor-specific.

A list of KEYSYMs is associated with each KEYCODE.  The list
is intended to convey the set of symbols on the correspond-
ing key.  If the list (ignoring trailing 4mNoSymbol24m entries)
is a single KEYSYM ``4mK24m'', then the list is treated as if it
were the list ``4mK24m NoSymbol 4mK24m NoSymbol''.  If the list
(ignoring trailing NoSymbol entries) is a pair of KEYSYMs
``4mK124m 4mK224m'', then the list is treated as if it were the list
``4mK124m 4mK224m 4mK124m 4mK224m''.  If the list (ignoring trailing 4mNoSymbol0m
entries) is a triple of KEYSYMs ``4mK124m 4mK224m 4mK324m'', then the list
is treated as if it were the list ``4mK124m 4mK224m 4mK324m NoSymbol''.
When an explicit ``void'' element is desired in the list,
the value 4mVoidSymbol24m can be used.

The first four elements of the list are split into two
groups of KEYSYMs.  Group 1 contains the first and second
KEYSYMs, Group 2 contains the third and fourth KEYSYMs.
Within each group, if the second element of the group is
4mNoSymbol24m, then the group should be treated as if the second
element were the same as the first element, except when the
first element is an alphabetic KEYSYM ``4mK24m'' for which both
lowercase and uppercase forms are defined.  In that case,
the group should be treated as if the first element were the
lowercase form of ``4mK24m'' and the second element were the
uppercase form of ``4mK24m''.

The standard rules for obtaining a KEYSYM from a 4mKeyPress0m
event make use of only the Group 1 and Group 2 KEYSYMs; no
interpretation of other KEYSYMs in the list is defined.	 The
modifier state determines which group to use.  Switching
between groups is controlled by the KEYSYM named MODE
SWITCH, by attaching that KEYSYM to some KEYCODE and attach-
ing that KEYCODE to any one of the modifiers 4mMod124m through
4mMod524m.  This modifier is called the ``group modifier''.  For
any KEYCODE, Group 1 is used when the group modifier is off,
and Group 2 is used when the group modifier is on.




			      1m80m





1mX Protocol				X11, Release 6.7 DRAFT0m


The 4mLock24m modifier is interpreted as CapsLock when the KEYSYM
named CAPS LOCK is attached to some KEYCODE and that KEYCODE
is attached to the 4mLock24m modifier.	The 4mLock24m modifier is
interpreted as ShiftLock when the KEYSYM named SHIFT LOCK is
attached to some KEYCODE and that KEYCODE is attached to the
4mLock24m modifier.  If the 4mLock24m modifier could be interpreted as
both CapsLock and ShiftLock, the CapsLock interpretation is
used.

The operation of ``keypad'' keys is controlled by the KEYSYM
named NUM LOCK, by attaching that KEYSYM to some KEYCODE and
attaching that KEYCODE to any one of the modifiers 4mMod10m
through 4mMod524m.  This modifier is called the ``numlock modi-
fier''.	 The standard KEYSYMs with the prefix KEYPAD in
their name are called ``keypad'' KEYSYMs; these are KEYSYMS
with numeric value in the hexadecimal range #xFF80 to #xFFBD
inclusive.  In addition, vendor-specific KEYSYMS in the
hexadecimal range #x11000000 to #x1100FFFF are also keypad
KEYSYMs.

Within a group, the choice of KEYSYM is determined by apply-
ing the first rule that is satisfied from the following
list:

·    The numlock modifier is on and the second KEYSYM is a
     keypad KEYSYM.  In this case, if the 4mShift24m modifier is
     on, or if the 4mLock24m modifier is on and is interpreted as
     ShiftLock, then the first KEYSYM is used; otherwise,
     the second KEYSYM is used.

·    The 4mShift24m and 4mLock24m modifiers are both off.  In this
     case, the first KEYSYM is used.

·    The 4mShift24m modifier is off, and the 4mLock24m modifier is on
     and is interpreted as CapsLock.  In this case, the
     first KEYSYM is used, but if that KEYSYM is lowercase
     alphabetic, then the corresponding uppercase KEYSYM is
     used instead.

·    The 4mShift24m modifier is on, and the 4mLock24m modifier is on
     and is interpreted as CapsLock.  In this case, the sec-
     ond KEYSYM is used, but if that KEYSYM is lowercase
     alphabetic, then the corresponding uppercase KEYSYM is
     used instead.

·    The 4mShift24m modifier is on, or the 4mLock24m modifier is on
     and is interpreted as ShiftLock, or both.	In this
     case, the second KEYSYM is used.

The mapping between KEYCODEs and KEYSYMs is not used
directly by the server; it is merely stored for reading and
writing by clients.





			      1m90m





1mX Protocol				X11, Release 6.7 DRAFT0m


1m6.  Pointers0m

Buttons are always numbered starting with one.

1m7.  Predefined Atoms0m

Predefined atoms are not strictly necessary and may not be
useful in all environments, but they will eliminate many
4mInternAtom24m requests in most applications.	Note that they
are predefined only in the sense of having numeric values,
not in the sense of having required semantics.	The core
protocol imposes no semantics on these names, but semantics
are specified in other X.Org standards, such as the 4mInter-0m
4mClient24m 4mCommunication24m 4mConventions24m 4mManual24m and the 4mX24m 4mLogical0m
4mFont24m 4mDescription24m 4mConventions24m.

The following names have predefined atom values.  Note that
uppercase and lowercase matter.

ARC		    ITALIC_ANGLE	 STRING
ATOM		    MAX_SPACE		 SUBSCRIPT_X
BITMAP		    MIN_SPACE		 SUBSCRIPT_Y
CAP_HEIGHT	    NORM_SPACE		 SUPERSCRIPT_X
CARDINAL	    NOTICE		 SUPERSCRIPT_Y
COLORMAP	    PIXMAP		 UNDERLINE_POSITION
COPYRIGHT	    POINT		 UNDERLINE_THICKNESS
CURSOR		    POINT_SIZE		 VISUALID
CUT_BUFFER0	    PRIMARY		 WEIGHT
CUT_BUFFER1	    QUAD_WIDTH		 WINDOW
CUT_BUFFER2	    RECTANGLE		 WM_CLASS
CUT_BUFFER3	    RESOLUTION		 WM_CLIENT_MACHINE
CUT_BUFFER4	    RESOURCE_MANAGER	 WM_COMMAND
CUT_BUFFER5	    RGB_BEST_MAP	 WM_HINTS
CUT_BUFFER6	    RGB_BLUE_MAP	 WM_ICON_NAME
CUT_BUFFER7	    RGB_COLOR_MAP	 WM_ICON_SIZE
DRAWABLE	    RGB_DEFAULT_MAP	 WM_NAME
END_SPACE	    RGB_GRAY_MAP	 WM_NORMAL_HINTS
FAMILY_NAME	    RGB_GREEN_MAP	 WM_SIZE_HINTS
FONT		    RGB_RED_MAP		 WM_TRANSIENT_FOR
FONT_NAME	    SECONDARY		 WM_ZOOM_HINTS
FULL_NAME	    STRIKEOUT_ASCENT	 X_HEIGHT
INTEGER					 STRIKEOUT_DESCENT


To avoid conflicts with possible future names for which
semantics might be imposed (either at the protocol level or
in terms of higher level user interface models), names
beginning with an underscore should be used for atoms that
are private to a particular vendor or organization.  To
guarantee no conflicts between vendors and organizations,
additional prefixes need to be used.  However, the protocol
does not define the mechanism for choosing such prefixes.
For names private to a single application or end user but
stored in globally accessible locations, it is suggested



			     1m100m





1mX Protocol				X11, Release 6.7 DRAFT0m


that two leading underscores be used to avoid conflicts with
other names.

1m8.  Connection Setup0m

For remote clients, the X protocol can be built on top of
any reliable byte stream.

1mConnection Initiation0m

The client must send an initial byte of data to identify the
byte order to be employed.  The value of the byte must be
octal 102 or 154.  The value 102 (ASCII uppercase B) means
values are transmitted most significant byte first, and
value 154 (ASCII lowercase l) means values are transmitted
least significant byte first.  Except where explicitly noted
in the protocol, all 16-bit and 32-bit quantities sent by
the client must be transmitted with this byte order, and all
16-bit and 32-bit quantities returned by the server will be
transmitted with this byte order.

Following the byte-order byte, the client sends the follow-
ing information at connection setup:

     protocol-major-version: CARD16
     protocol-minor-version: CARD16
     authorization-protocol-name: STRING8
     authorization-protocol-data: STRING8

The version numbers indicate what version of the protocol
the client expects the server to implement.

The authorization name indicates what authorization (and
authentication) protocol the client expects the server to
use, and the data is specific to that protocol.	 Specifica-
tion of valid authorization mechanisms is not part of the
core X protocol.  A server that does not implement the pro-
tocol the client expects or that only implements the host-
based mechanism may simply ignore this information.  If both
name and data strings are empty, this is to be interpreted
as ``no explicit authorization.''

1mServer Response0m

The client receives the following information at connection
setup:

     success: {4mFailed24m, 4mSuccess24m, 4mAuthenticate24m}

The client receives the following additional data if the
returned success value is 4mFailed24m, and the connection is not
successfully established:





			     1m110m





1mX Protocol				X11, Release 6.7 DRAFT0m


     protocol-major-version: CARD16
     protocol-minor-version: CARD16
     reason: STRING8

The client receives the following additional data if the
returned success value is 4mAuthenticate24m, and further authen-
tication negotiation is required:

     reason: STRING8

The contents of the reason string are specific to the autho-
rization protocol in use.  The semantics of this authentica-
tion negotiation are not constrained, except that the nego-
tiation must eventually terminate with a reply from the
server containing a success value of 4mFailed24m or 4mSuccess24m.

The client receives the following additional data if the
returned success value is 4mSuccess24m, and the connection is
successfully established:

     protocol-major-version: CARD16
     protocol-minor-version: CARD16
     vendor: STRING8
     release-number: CARD32
     resource-id-base, resource-id-mask: CARD32
     image-byte-order: {4mLSBFirst24m, 4mMSBFirst24m}
     bitmap-scanline-unit: {8, 16, 32}
     bitmap-scanline-pad: {8, 16, 32}
     bitmap-bit-order: {4mLeastSignificant24m, 4mMostSignificant24m}
     pixmap-formats: LISTofFORMAT
     roots: LISTofSCREEN
     motion-buffer-size: CARD32
     maximum-request-length: CARD16
     min-keycode, max-keycode: KEYCODE

     where:

	  FORMAT:   [depth: CARD8,
		     bits-per-pixel: {1, 4, 8, 16, 24, 32}
		     scanline-pad: {8, 16, 32}]

















			     1m120m





1mX Protocol				X11, Release 6.7 DRAFT0m


	  SCREEN:   [root: WINDOW
		     width-in-pixels, height-in-pixels:
		    CARD16
		     width-in-millimeters, height-in-mil-
		    limeters: CARD16
		     allowed-depths: LISTofDEPTH
		     root-depth: CARD8
		     root-visual: VISUALID
		     default-colormap: COLORMAP
		     white-pixel, black-pixel: CARD32
		     min-installed-maps, max-installed-maps:
		    CARD16
		     backing-stores: {4mNever24m, 4mWhenMapped24m,
		    4mAlways24m}
		     save-unders: BOOL
		     current-input-masks: SETofEVENT]

	   DEPTH:   [depth: CARD8
		     visuals: LISTofVISUALTYPE]

      VISUALTYPE:   [visual-id: VISUALID
		     class: {4mStaticGray24m, 4mStaticColor24m, 4mTrue-0m
		    4mColor24m, 4mGrayScale24m,
			       4mPseudoColor24m, 4mDirectColor24m}
		     red-mask, green-mask, blue-mask: CARD32
		     bits-per-rgb-value: CARD8
		     colormap-entries: CARD16]


1mServer Information0m

The information that is global to the server is:

The protocol version numbers are an escape hatch in case
future revisions of the protocol are necessary.	 In general,
the major version would increment for incompatible changes,
and the minor version would increment for small upward com-
patible changes.  Barring changes, the major version will be
11, and the minor version will be 0.  The protocol version
numbers returned indicate the protocol the server actually
supports.  This might not equal the version sent by the
client.	 The server can (but need not) refuse connections
from clients that offer a different version than the server
supports.  A server can (but need not) support more than one
version simultaneously.

The vendor string gives some identification of the owner of
the server implementation.  The vendor controls the seman-
tics of the release number.

The resource-id-mask contains a single contiguous set of
bits (at least 18).  The client allocates resource IDs for
types WINDOW, PIXMAP, CURSOR, FONT, GCONTEXT, and COLORMAP
by choosing a value with only some subset of these bits set



			     1m130m





1mX Protocol				X11, Release 6.7 DRAFT0m


and ORing it with resource-id-base.  Only values constructed
in this way can be used to name newly created resources over
this connection.  Resource IDs never have the top three bits
set.  The client is not restricted to linear or contiguous
allocation of resource IDs.  Once an ID has been freed, it
can be reused.	An ID must be unique with respect to the IDs
of all other resources, not just other resources of the same
type.  However, note that the value spaces of resource iden-
tifiers, atoms, visualids, and keysyms are distinguished by
context, and as such, are not required to be disjoint; for
example, a given numeric value might be both a valid window
ID, a valid atom, and a valid keysym.

Although the server is in general responsible for byte-swap-
ping data to match the client, images are always transmitted
and received in formats (including byte order) specified by
the server.  The byte order for images is given by image-
byte-order and applies to each scanline unit in XY format
(bitmap format) and to each pixel value in Z format.

A bitmap is represented in scanline order.  Each scanline is
padded to a multiple of bits as given by bitmap-scanline-
pad.  The pad bits are of arbitrary value.  The scanline is
quantized in multiples of bits as given by bitmap-scanline-
unit.  The bitmap-scanline-unit is always less than or equal
to the bitmap-scanline-pad.  Within each unit, the leftmost
bit in the bitmap is either the least significant or most
significant bit in the unit, as given by bitmap-bit-order.
If a pixmap is represented in XY format, each plane is rep-
resented as a bitmap, and the planes appear from most sig-
nificant to least significant in bit order with no padding
between planes.

Pixmap-formats contains one entry for each depth value.	 The
entry describes the Z format used to represent images of
that depth.  An entry for a depth is included if any screen
supports that depth, and all screens supporting that depth
must support only that Z format for that depth.	 In Z for-
mat, the pixels are in scanline order, left to right within
a scanline.  The number of bits used to hold each pixel is
given by bits-per-pixel.  Bits-per-pixel may be larger than
strictly required by the depth, in which case the least sig-
nificant bits are used to hold the pixmap data, and the val-
ues of the unused high-order bits are undefined.  When the
bits-per-pixel is 4, the order of nibbles in the byte is the
same as the image byte-order.  When the bits-per-pixel is 1,
the format is identical for bitmap format.  Each scanline is
padded to a multiple of bits as given by scanline-pad.	When
bits-per-pixel is 1, this will be identical to bitmap-scan-
line-pad.

How a pointing device roams the screens is up to the server
implementation and is transparent to the protocol.  No geom-
etry is defined among screens.



			     1m140m





1mX Protocol				X11, Release 6.7 DRAFT0m


The server may retain the recent history of pointer motion
and do so to a finer granularity than is reported by 4mMotion-0m
4mNotify24m events.  The 4mGetMotionEvents24m request makes such his-
tory available.	 The motion-buffer-size gives the approxi-
mate maximum number of elements in the history buffer.

Maximum-request-length specifies the maximum length of a
request accepted by the server, in 4-byte units.  That is,
length is the maximum value that can appear in the length
field of a request.  Requests larger than this maximum gen-
erate a 4mLength24m error, and the server will read and simply
discard the entire request.  Maximum-request-length will
always be at least 4096 (that is, requests of length up to
and including 16384 bytes will be accepted by all servers).

Min-keycode and max-keycode specify the smallest and largest
keycode values transmitted by the server.  Min-keycode is
never less than 8, and max-keycode is never greater than
255.  Not all keycodes in this range are required to have
corresponding keys.

1mScreen Information0m

The information that applies per screen is:

The allowed-depths specifies what pixmap and window depths
are supported.	Pixmaps are supported for each depth listed,
and windows of that depth are supported if at least one
visual type is listed for the depth.  A pixmap depth of one
is always supported and listed, but windows of depth one
might not be supported.	 A depth of zero is never listed,
but zero-depth 4mInputOnly24m windows are always supported.

Root-depth and root-visual specify the depth and visual type
of the root window.  Width-in-pixels and height-in-pixels
specify the size of the root window (which cannot be
changed).  The class of the root window is always 4mInputOut-0m
4mput24m.  Width-in-millimeters and height-in-millimeters can be
used to determine the physical size and the aspect ratio.

The default-colormap is the one initially associated with
the root window.  Clients with minimal color requirements
creating windows of the same depth as the root may want to
allocate from this map by default.

Black-pixel and white-pixel can be used in implementing a
monochrome application.	 These pixel values are for perma-
nently allocated entries in the default-colormap.  The
actual RGB values may be settable on some screens and, in
any case, may not actually be black and white.	The names
are intended to convey the expected relative intensity of
the colors.





			     1m150m





1mX Protocol				X11, Release 6.7 DRAFT0m


The border of the root window is initially a pixmap filled
with the black-pixel.  The initial background of the root
window is a pixmap filled with some unspecified two-color
pattern using black-pixel and white-pixel.

Min-installed-maps specifies the number of maps that can be
guaranteed to be installed simultaneously (with 4mInstallCol-0m
4mormap24m), regardless of the number of entries allocated in
each map.  Max-installed-maps specifies the maximum number
of maps that might possibly be installed simultaneously,
depending on their allocations.	 Multiple static-visual col-
ormaps with identical contents but differing in resource ID
should be considered as a single map for the purposes of
this number.  For the typical case of a single hardware col-
ormap, both values will be 1.

Backing-stores indicates when the server supports backing
stores for this screen, although it may be storage limited
in the number of windows it can support at once.  If save-
unders is 4mTrue24m, the server can support the save-under mode
in 4mCreateWindow24m and 4mChangeWindowAttributes24m, although again
it may be storage limited.

The current-input-events is what 4mGetWindowAttributes24m would
return for the all-event-masks for the root window.

1mVisual Information0m

The information that applies per visual-type is:

A given visual type might be listed for more than one depth
or for more than one screen.

For 4mPseudoColor24m, a pixel value indexes a colormap to produce
independent RGB values; the RGB values can be changed dynam-
ically.	 4mGrayScale24m is treated in the same way as 4mPseudoColor0m
except which primary drives the screen is undefined; thus,
the client should always store the same value for red,
green, and blue in colormaps.  For 4mDirectColor24m, a pixel
value is decomposed into separate RGB subfields, and each
subfield separately indexes the colormap for the correspond-
ing value.  The RGB values can be changed dynamically.
4mTrueColor24m is treated in the same way as 4mDirectColor24m except
the colormap has predefined read-only RGB values.  These
values are server-dependent but provide linear or near-lin-
ear increasing ramps in each primary.  4mStaticColor24m is
treated in the same way as 4mPseudoColor24m except the colormap
has predefined read-only RGB values, which are server-depen-
dent.  4mStaticGray24m is treated in the same way as 4mStaticColor0m
except the red, green, and blue values are equal for any
single pixel value, resulting in shades of gray.  4mStaticGray0m
with a two-entry colormap can be thought of as monochrome.





			     1m160m





1mX Protocol				X11, Release 6.7 DRAFT0m


The red-mask, green-mask, and blue-mask are only defined for
4mDirectColor24m and 4mTrueColor24m.  Each has one contiguous set of
bits set to 1 with no intersections.  Usually each mask has
the same number of bits set to 1.

The bits-per-rgb-value specifies the log base 2 of the num-
ber of distinct color intensity values (individually) of
red, green, and blue.  This number need not bear any rela-
tion to the number of colormap entries.	 Actual RGB values
are always passed in the protocol within a 16-bit spectrum,
with 0 being minimum intensity and 65535 being the maximum
intensity.  On hardware that provides a linear zero-based
intensity ramp, the following relationship exists:


	  hw-intensity = protocol-intensity / (65536 / total-hw-intensities)


Colormap entries are indexed from 0.  The colormap-entries
defines the number of available colormap entries in a newly
created colormap.  For 4mDirectColor24m and 4mTrueColor24m, this will
usually be 2 to the power of the maximum number of bits set
to 1 in red-mask, green-mask, and blue-mask.

1m9.  Requests0m


__
|    4mCreateWindow0m

  4mwid24m, 4mparent24m: WINDOW
  4mclass24m: {4mInputOutput24m, 4mInputOnly24m, 4mCopyFromParent24m}
  4mdepth24m: CARD8
  4mvisual24m: VISUALID or 4mCopyFromParent0m
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m, 4mborder-width24m: CARD16
  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

  Errors: 4mAlloc24m, 4mColormap24m, 4mCursor24m, 4mIDChoice24m, 4mMatch24m, 4mPixmap24m,
|__    4mValue24m, 4mWindow0m


This request creates an unmapped window and assigns the
identifier wid to it.

A class of 4mCopyFromParent24m means the class is taken from the
parent.	 A depth of zero for class 4mInputOutput24m or 4mCopy-0m
4mFromParent24m means the depth is taken from the parent.  A
visual of 4mCopyFromParent24m means the visual type is taken from
the parent.  For class 4mInputOutput24m, the visual type and
depth must be a combination supported for the screen (or a
4mMatch24m error results).  The depth need not be the same as the
parent, but the parent must not be of class 4mInputOnly24m (or a



			     1m170m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mMatch24m error results).  For class 4mInputOnly24m, the depth must
be zero (or a 4mMatch24m error results), and the visual must be
one supported for the screen (or a 4mMatch24m error results).
However, the parent can have any depth and class.

The server essentially acts as if 4mInputOnly24m windows do not
exist for the purposes of graphics requests, exposure pro-
cessing, and 4mVisibilityNotify24m events.  An 4mInputOnly24m window
cannot be used as a drawable (as a source or destination for
graphics requests).  4mInputOnly24m and 4mInputOutput24m windows act
identically in other respects-properties, grabs, input con-
trol, and so on.

The coordinate system has the X axis horizontal and the Y
axis vertical with the origin [0, 0] at the upper-left cor-
ner.  Coordinates are integral, in terms of pixels, and
coincide with pixel centers.  Each window and pixmap has its
own coordinate system.	For a window, the origin is inside
the border at the inside, upper-left corner.

The x and y coordinates for the window are relative to the
parent's origin and specify the position of the upper-left
outer corner of the window (not the origin).  The width and
height specify the inside size (not including the border)
and must be nonzero (or a 4mValue24m error results).  The border-
width for an 4mInputOnly24m window must be zero (or a 4mMatch24m error
results).

The window is placed on top in the stacking order with
respect to siblings.

The value-mask and value-list specify attributes of the win-
dow that are to be explicitly initialized.  The possible
values are:

-----------------------------------------------
1mAttribute	      Type0m
-----------------------------------------------
background-pixmap   PIXMAP or 4mNone24m or 4mParen-0m
		    4mtRelative0m
background-pixel    CARD32
border-pixmap	    PIXMAP or 4mCopyFromParent0m
border-pixel	    CARD32
bit-gravity	    BITGRAVITY
win-gravity	    WINGRAVITY
backing-store	    {4mNotUseful24m, 4mWhenMapped24m,
		    4mAlways24m}
backing-planes	    CARD32
backing-pixel	    CARD32
save-under	    BOOL
event-mask	    SETofEVENT
do-not-propagate-   SETofDEVICEEVENT
mask




			     1m180m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------
1mAttribute	      Type0m
-----------------------------------------------
override-redirect   BOOL
colormap	    COLORMAP or 4mCopyFromParent0m
cursor		    CURSOR or 4mNone0m
-----------------------------------------------


The default values when attributes are not explicitly ini-
tialized are:

-----------------------------------
1mAttribute	      Default0m
-----------------------------------
background-pixmap   4mNone0m
border-pixmap	    4mCopyFromParent0m
bit-gravity	    4mForget0m
win-gravity	    4mNorthWest0m
backing-store	    4mNotUseful0m
backing-planes	    all ones
backing-pixel	    zero
save-under	    4mFalse0m
event-mask	    {} (empty set)
do-not-propagate-   {} (empty set)
mask
override-redirect   4mFalse0m
colormap	    4mCopyFromParent0m
cursor		    4mNone0m
-----------------------------------


Only the following attributes are defined for 4mInputOnly24m win-
dows:

·    win-gravity

·    event-mask

·    do-not-propagate-mask

·    override-redirect

·    cursor

It is a 4mMatch24m error to specify any other attributes for
4mInputOnly24m windows.

If background-pixmap is given, it overrides the default
background-pixmap.  The background pixmap and the window
must have the same root and the same depth (or a 4mMatch24m error
results).  Any size pixmap can be used, although some sizes
may be faster than others.  If background 4mNone24m is specified,
the window has no defined background.  If background



			     1m190m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mParentRelative24m is specified, the parent's background is
used, but the window must have the same depth as the parent
(or a 4mMatch24m error results).  If the parent has background
4mNone24m, then the window will also have background 4mNone24m.	 A
copy of the parent's background is not made.  The parent's
background is reexamined each time the window background is
required.  If background-pixel is given, it overrides the
default background-pixmap and any background-pixmap given
explicitly, and a pixmap of undefined size filled with back-
ground-pixel is used for the background.  Range checking is
not performed on the background-pixel value; it is simply
truncated to the appropriate number of bits.  For a 4mParen-0m
4mtRelative24m background, the background tile origin always
aligns with the parent's background tile origin.  Otherwise,
the background tile origin is always the window origin.

When no valid contents are available for regions of a window
and the regions are either visible or the server is main-
taining backing store, the server automatically tiles the
regions with the window's background unless the window has a
background of 4mNone24m.  If the background is 4mNone24m, the previous
screen contents from other windows of the same depth as the
window are simply left in place if the contents come from
the parent of the window or an inferior of the parent; oth-
erwise, the initial contents of the exposed regions are
undefined.  Exposure events are then generated for the
regions, even if the background is 4mNone24m.

The border tile origin is always the same as the background
tile origin.  If border-pixmap is given, it overrides the
default border-pixmap.	The border pixmap and the window
must have the same root and the same depth (or a 4mMatch24m error
results).  Any size pixmap can be used, although some sizes
may be faster than others.  If 4mCopyFromParent24m is given, the
parent's border pixmap is copied (subsequent changes to the
parent's border attribute do not affect the child), but the
window must have the same depth as the parent (or a 4mMatch0m
error results).	 The pixmap might be copied by sharing the
same pixmap object between the child and parent or by making
a complete copy of the pixmap contents.	 If border-pixel is
given, it overrides the default border-pixmap and any bor-
der-pixmap given explicitly, and a pixmap of undefined size
filled with border-pixel is used for the border.  Range
checking is not performed on the border-pixel value; it is
simply truncated to the appropriate number of bits.

Output to a window is always clipped to the inside of the
window, so that the border is never affected.

The bit-gravity defines which region of the window should be
retained if the window is resized, and win-gravity defines
how the window should be repositioned if the parent is
resized (see 4mConfigureWindow24m request).




			     1m200m





1mX Protocol				X11, Release 6.7 DRAFT0m


A backing-store of 4mWhenMapped24m advises the server that main-
taining contents of obscured regions when the window is
mapped would be beneficial.  A backing-store of 4mAlways0m
advises the server that maintaining contents even when the
window is unmapped would be beneficial.	 In this case, the
server may generate an exposure event when the window is
created.  A value of 4mNotUseful24m advises the server that main-
taining contents is unnecessary, although a server may still
choose to maintain contents while the window is mapped.
Note that if the server maintains contents, then the server
should maintain complete contents not just the region within
the parent boundaries, even if the window is larger than its
parent.	 While the server maintains contents, exposure
events will not normally be generated, but the server may
stop maintaining contents at any time.

If save-under is 4mTrue24m, the server is advised that when this
window is mapped, saving the contents of windows it obscures
would be beneficial.

When the contents of obscured regions of a window are being
maintained, regions obscured by noninferior windows are
included in the destination (and source, when the window is
the source) of graphics requests, but regions obscured by
inferior windows are not included.

The backing-planes indicates (with bits set to 1) which bit
planes of the window hold dynamic data that must be pre-
served in backing-stores and during save-unders.  The back-
ing-pixel specifies what value to use in planes not covered
by backing-planes.  The server is free to save only the
specified bit planes in the backing-store or save-under and
regenerate the remaining planes with the specified pixel
value.	Any bits beyond the specified depth of the window in
these values are simply ignored.

The event-mask defines which events the client is interested
in for this window (or for some event types, inferiors of
the window).  The do-not-propagate-mask defines which events
should not be propagated to ancestor windows when no client
has the event type selected in this window.

The override-redirect specifies whether map and configure
requests on this window should override a 4mSubstructureRedi-0m
4mrect24m on the parent, typically to inform a window manager not
to tamper with the window.

The colormap specifies the colormap that best reflects the
true colors of the window.  Servers capable of supporting
multiple hardware colormaps may use this information, and
window managers may use it for 4mInstallColormap24m requests.
The colormap must have the same visual type and root as the
window (or a 4mMatch24m error results).	 If 4mCopyFromParent24m is
specified, the parent's colormap is copied (subsequent



			     1m210m





1mX Protocol				X11, Release 6.7 DRAFT0m


changes to the parent's colormap attribute do not affect the
child).	 However, the window must have the same visual type
as the parent (or a 4mMatch24m error results), and the parent
must not have a colormap of 4mNone24m (or a 4mMatch24m error results).
For an explanation of 4mNone24m, see 4mFreeColormap24m request.	 The
colormap is copied by sharing the colormap object between
the child and the parent, not by making a complete copy of
the colormap contents.

If a cursor is specified, it will be used whenever the
pointer is in the window.  If 4mNone24m is specified, the par-
ent's cursor will be used when the pointer is in the window,
and any change in the parent's cursor will cause an immedi-
ate change in the displayed cursor.

This request generates a 4mCreateNotify24m event.

The background and border pixmaps and the cursor may be
freed immediately if no further explicit references to them
are to be made.

Subsequent drawing into the background or border pixmap has
an undefined effect on the window state.  The server might
or might not make a copy of the pixmap.


__
|    4mChangeWindowAttributes0m

  4mwindow24m: WINDOW
  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

  Errors: 4mAccess24m, 4mColormap24m, 4mCursor24m, 4mMatch24m, 4mPixmap24m, 4mValue24m,
|__    4mWindow0m


The value-mask and value-list specify which attributes are
to be changed.	The values and restrictions are the same as
for 4mCreateWindow24m.

Setting a new background, whether by background-pixmap or
background-pixel, overrides any previous background.  Set-
ting a new border, whether by border-pixel or border-pixmap,
overrides any previous border.

Changing the background does not cause the window contents
to be changed.	Setting the border or changing the back-
ground such that the border tile origin changes causes the
border to be repainted.	 Changing the background of a root
window to 4mNone24m or 4mParentRelative24m restores the default back-
ground pixmap.	Changing the border of a root window to
4mCopyFromParent24m restores the default border pixmap.




			     1m220m





1mX Protocol				X11, Release 6.7 DRAFT0m


Changing the win-gravity does not affect the current posi-
tion of the window.

Changing the backing-store of an obscured window to 4mWhen-0m
4mMapped24m or 4mAlways24m or changing the backing-planes, backing-
pixel, or save-under of a mapped window may have no immedi-
ate effect.

Multiple clients can select input on the same window; their
event-masks are disjoint.  When an event is generated, it
will be reported to all interested clients.  However, only
one client at a time can select for 4mSubstructureRedirect24m,
only one client at a time can select for 4mResizeRedirect24m, and
only one client at a time can select for 4mButtonPress24m.  An
attempt to violate these restrictions results in an 4mAccess0m
error.

There is only one do-not-propagate-mask for a window, not
one per client.

Changing the colormap of a window (by defining a new map,
not by changing the contents of the existing map) generates
a 4mColormapNotify24m event.  Changing the colormap of a visible
window might have no immediate effect on the screen (see
4mInstallColormap24m request).

Changing the cursor of a root window to 4mNone24m restores the
default cursor.

The order in which attributes are verified and altered is
server-dependent.  If an error is generated, a subset of the
attributes may have been altered.

























			     1m230m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mGetWindowAttributes0m

  4mwindow24m: WINDOW

   ->

  visual: VISUALID
  class: {4mInputOutput24m, 4mInputOnly24m}
  bit-gravity: BITGRAVITY
  win-gravity: WINGRAVITY
  backing-store: {4mNotUseful24m, 4mWhenMapped24m, 4mAlways24m}
  backing-planes: CARD32
  backing-pixel: CARD32
  save-under: BOOL
  colormap: COLORMAP or 4mNone0m
  map-is-installed: BOOL
  map-state: {4mUnmapped24m, 4mUnviewable24m, 4mViewable24m}
  all-event-masks, your-event-mask: SETofEVENT
  do-not-propagate-mask: SETofDEVICEEVENT
  override-redirect: BOOL

|__    Errors: 4mWindow0m


This request returns the current attributes of the window.
A window is 4mUnviewable24m if it is mapped but some ancestor is
unmapped.  All-event-masks is the inclusive-OR of all event
masks selected on the window by clients.  Your-event-mask is
the event mask selected by the querying client.


__
|    4mDestroyWindow0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


If the argument window is mapped, an 4mUnmapWindow24m request is
performed automatically.  The window and all inferiors are
then destroyed, and a 4mDestroyNotify24m event is generated for
each window.  The ordering of the 4mDestroyNotify24m events is
such that for any given window, 4mDestroyNotify24m is generated
on all inferiors of the window before being generated on the
window itself.	The ordering among siblings and across sub-
hierarchies is not otherwise constrained.

Normal exposure processing on formerly obscured windows is
performed.

If the window is a root window, this request has no effect.





			     1m240m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mDestroySubwindows0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


This request performs a 4mDestroyWindow24m request on all chil-
dren of the window, in bottom-to-top stacking order.


__
|    4mChangeSaveSet0m

  4mwindow24m: WINDOW
  4mmode24m: {4mInsert24m, 4mDelete24m}

Errors:
|__    4mMatch24m, 4mValue24m, 4mWindow0m


This request adds or removes the specified window from the
client's save-set.  The window must have been created by
some other client (or a 4mMatch24m error results).  For further
information about the use of the save-set, see section 10.

When windows are destroyed, the server automatically removes
them from the save-set.


__
|    4mReparentWindow0m

  4mwindow24m, 4mparent24m: WINDOW
  4mx24m, 4my24m: INT16

|__    Errors: 4mMatch24m, 4mWindow0m


If the window is mapped, an 4mUnmapWindow24m request is performed
automatically first.  The window is then removed from its
current position in the hierarchy and is inserted as a child
of the specified parent.  The x and y coordinates are rela-
tive to the parent's origin and specify the new position of
the upper-left outer corner of the window.  The window is
placed on top in the stacking order with respect to sib-
lings.	A 4mReparentNotify24m event is then generated.	The over-
ride-redirect attribute of the window is passed on in this
event; a value of 4mTrue24m indicates that a window manager
should not tamper with this window.  Finally, if the window
was originally mapped, a 4mMapWindow24m request is performed
automatically.





			     1m250m





1mX Protocol				X11, Release 6.7 DRAFT0m


Normal exposure processing on formerly obscured windows is
performed.  The server might not generate exposure events
for regions from the initial unmap that are immediately
obscured by the final map.

A 4mMatch24m error is generated if:

·    The new parent is not on the same screen as the old
     parent.

·    The new parent is the window itself or an inferior of
     the window.

·    The new parent is 4mInputOnly24m, and the window is not.

·    The window has a 4mParentRelative24m background, and the new
     parent is not the same depth as the window.


__
|    4mMapWindow0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


If the window is already mapped, this request has no effect.

If the override-redirect attribute of the window is 4mFalse0m
and some other client has selected 4mSubstructureRedirect24m on
the parent, then a 4mMapRequest24m event is generated, but the
window remains unmapped.  Otherwise, the window is mapped,
and a 4mMapNotify24m event is generated.

If the window is now viewable and its contents have been
discarded, the window is tiled with its background (if no
background is defined, the existing screen contents are not
altered), and zero or more exposure events are generated.
If a backing-store has been maintained while the window was
unmapped, no exposure events are generated.  If a backing-
store will now be maintained, a full-window exposure is
always generated.  Otherwise, only visible regions may be
reported.  Similar tiling and exposure take place for any
newly viewable inferiors.












			     1m260m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mMapSubwindows0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


This request performs a 4mMapWindow24m request on all unmapped
children of the window, in top-to-bottom stacking order.


__
|    4mUnmapWindow0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


If the window is already unmapped, this request has no
effect.	 Otherwise, the window is unmapped, and an 4mUnmapNo-0m
4mtify24m event is generated.  Normal exposure processing on for-
merly obscured windows is performed.


__
|    4mUnmapSubwindows0m

  4mwindow24m: WINDOW

|__    Errors: 4mWindow0m


This request performs an 4mUnmapWindow24m request on all mapped
children of the window, in bottom-to-top stacking order.


__
|    4mConfigureWindow0m

  4mwindow24m: WINDOW
  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

|__    Errors: 4mMatch24m, 4mValue24m, 4mWindow0m


This request changes the configuration of the window.  The
value-mask and value-list specify which values are to be
given.	The possible values are:







			     1m270m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------
1mAttribute	 Type0m
-----------------------------------------------
x	       INT16
y	       INT16
width	       CARD16
height	       CARD16
border-width   CARD16
sibling	       WINDOW
stack-mode     {4mAbove24m, 4mBelow24m, 4mTopIf24m, 4mBottomIf24m,
	       4mOpposite24m}
-----------------------------------------------


The x and y coordinates are relative to the parent's origin
and specify the position of the upper-left outer corner of
the window.  The width and height specify the inside size,
not including the border, and must be nonzero (or a 4mValue0m
error results).	 Those values not specified are taken from
the existing geometry of the window.  Note that changing
just the border-width leaves the outer-left corner of the
window in a fixed position but moves the absolute position
of the window's origin.	 It is a 4mMatch24m error to attempt to
make the border-width of an 4mInputOnly24m window nonzero.

If the override-redirect attribute of the window is 4mFalse0m
and some other client has selected 4mSubstructureRedirect24m on
the parent, a 4mConfigureRequest24m event is generated, and no
further processing is performed.  Otherwise, the following
is performed:

If some other client has selected 4mResizeRedirect24m on the win-
dow and the inside width or height of the window is being
changed, a 4mResizeRequest24m event is generated, and the current
inside width and height are used instead.  Note that the
override-redirect attribute of the window has no effect on
4mResizeRedirect24m and that 4mSubstructureRedirect24m on the parent
has precedence over 4mResizeRedirect24m on the window.

The geometry of the window is changed as specified, the win-
dow is restacked among siblings, and a 4mConfigureNotify24m event
is generated if the state of the window actually changes.
If the inside width or height of the window has actually
changed, then children of the window are affected, according
to their win-gravity.  Exposure processing is performed on
formerly obscured windows (including the window itself and
its inferiors if regions of them were obscured but now are
not).  Exposure processing is also performed on any new
regions of the window (as a result of increasing the width
or height) and on any regions where window contents are
lost.

If the inside width or height of a window is not changed but
the window is moved or its border is changed, then the



			     1m280m





1mX Protocol				X11, Release 6.7 DRAFT0m


contents of the window are not lost but move with the win-
dow.  Changing the inside width or height of the window
causes its contents to be moved or lost, depending on the
bit-gravity of the window.  It also causes children to be
reconfigured, depending on their win-gravity.  For a change
of width and height of W and H, we define the [x, y] pairs
as:

-----------------------
1mDirection   Deltas0m
-----------------------
4mNorthWest24m	 [0, 0]
4mNorth24m	 [W/2, 0]
4mNorthEast24m	 [W, 0]
4mWest24m	 [0, H/2]
4mCenter24m	 [W/2, H/2]
4mEast24m	 [W, H/2]
4mSouthWest24m	 [0, H]
4mSouth24m	 [W/2, H]
4mSouthEast24m	 [W, H]
-----------------------


When a window with one of these bit-gravities is resized,
the corresponding pair defines the change in position of
each pixel in the window.  When a window with one of these
win-gravities has its parent window resized, the correspond-
ing pair defines the change in position of the window within
the parent.  This repositioning generates a 4mGravityNotify0m
event.	4mGravityNotify24m events are generated after the 4mConfig-0m
4mureNotify24m event is generated.

A gravity of 4mStatic24m indicates that the contents or origin
should not move relative to the origin of the root window.
If the change in size of the window is coupled with a change
in position of [X, Y], then for bit-gravity the change in
position of each pixel is [-X, -Y] and for win-gravity the
change in position of a child when its parent is so resized
is [-X, -Y].  Note that 4mStatic24m gravity still only takes
effect when the width or height of the window is changed,
not when the window is simply moved.

A bit-gravity of 4mForget24m indicates that the window contents
are always discarded after a size change, even if backing-
store or save-under has been requested.	 The window is tiled
with its background (except, if no background is defined,
the existing screen contents are not altered) and zero or
more exposure events are generated.

The contents and borders of inferiors are not affected by
their parent's bit-gravity.  A server is permitted to ignore
the specified bit-gravity and use 4mForget24m instead.





			     1m290m





1mX Protocol				X11, Release 6.7 DRAFT0m


A win-gravity of 4mUnmap24m is like 4mNorthWest24m, but the child is
also unmapped when the parent is resized, and an 4mUnmapNotify0m
event is generated.  4mUnmapNotify24m events are generated after
the 4mConfigureNotify24m event is generated.

If a sibling and a stack-mode are specified, the window is
restacked as follows:

4mAbove24m	  The window is placed just above the sibling.
4mBelow24m	  The window is placed just below the sibling.
4mTopIf24m	  If the sibling occludes the window, then the
	     window is placed at the top of the stack.
4mBottomIf24m	  If the window occludes the sibling, then the
	     window is placed at the bottom of the stack.
4mOpposite24m	  If the sibling occludes the window, then the
	     window is placed at the top of the stack.	Oth-
	     erwise, if the window occludes the sibling,
	     then the window is placed at the bottom of the
	     stack.


If a stack-mode is specified but no sibling is specified,
the window is restacked as follows:

4mAbove24m	  The window is placed at the top of the stack.
4mBelow24m	  The window is placed at the bottom of the
	     stack.
4mTopIf24m	  If any sibling occludes the window, then the
	     window is placed at the top of the stack.
4mBottomIf24m	  If the window occludes any sibling, then the
	     window is placed at the bottom of the stack.
4mOpposite24m	  If any sibling occludes the window, then the
	     window is placed at the top of the stack.	Oth-
	     erwise, if the window occludes any sibling,
	     then the window is placed at the bottom of the
	     stack.


It is a 4mMatch24m error if a sibling is specified without a
stack-mode or if the window is not actually a sibling.

Note that the computations for 4mBottomIf24m, 4mTopIf24m, and 4mOpposite0m
are performed with respect to the window's final geometry
(as controlled by the other arguments to the request), not
to its initial geometry.

Attempts to configure a root window have no effect.










			     1m300m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mCirculateWindow0m

  4mwindow24m: WINDOW
  4mdirection24m: {4mRaiseLowest24m, 4mLowerHighest24m}

|__    Errors: 4mValue24m, 4mWindow0m


If some other client has selected 4mSubstructureRedirect24m on
the window, then a 4mCirculateRequest24m event is generated, and
no further processing is performed.  Otherwise, the follow-
ing is performed, and then a 4mCirculateNotify24m event is gener-
ated if the window is actually restacked.

For 4mRaiseLowest24m, 4mCirculateWindow24m raises the lowest mapped
child (if any) that is occluded by another child to the top
of the stack.  For 4mLowerHighest24m, 4mCirculateWindow24m lowers the
highest mapped child (if any) that occludes another child to
the bottom of the stack.  Exposure processing is performed
on formerly obscured windows.


__
|    4mGetGeometry0m

  4mdrawable24m: DRAWABLE

   ->

  root: WINDOW
  depth: CARD8
  x, y: INT16
  width, height, border-width: CARD16

|__    Errors: 4mDrawable0m


This request returns the root and current geometry of the
drawable.  The depth is the number of bits per pixel for the
object.	 The x, y, and border-width will always be zero for
pixmaps.  For a window, the x and y coordinates specify the
upper-left outer corner of the window relative to its par-
ent's origin, and the width and height specify the inside
size, not including the border.

It is legal to pass an 4mInputOnly24m window as a drawable to
this request.










			     1m310m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mQueryTree0m

  4mwindow24m: WINDOW

   ->

  root: WINDOW
  parent: WINDOW or 4mNone0m
  children: LISTofWINDOW

|__    Errors: 4mWindow0m


This request returns the root, the parent, and the children
of the window.	The children are listed in bottom-to-top
stacking order.


__
|    4mInternAtom0m

  4mname24m: STRING8
  4monly-if-exists24m: BOOL

   ->

  atom: ATOM or 4mNone0m

|__    Errors: 4mAlloc24m, 4mValue0m


This request returns the atom for the given name.  If only-
if-exists is 4mFalse24m, then the atom is created if it does not
exist.	The string should use the ISO Latin-1 encoding.
Uppercase and lowercase matter.

The lifetime of an atom is not tied to the interning client.
Atoms remain defined until server reset (see section 10).


__
|    4mGetAtomName0m

  4matom24m: ATOM

   ->

  name: STRING8

|__    Errors: 4mAtom0m


This request returns the name for the given atom.




			     1m320m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mChangeProperty0m

  4mwindow24m: WINDOW
  4mproperty24m, 4mtype24m: ATOM
  4mformat24m: {8, 16, 32}
  4mmode24m: {4mReplace24m, 4mPrepend24m, 4mAppend24m}
  4mdata24m: LISTofINT8 or LISTofINT16 or LISTofINT32

|__    Errors: 4mAlloc24m, 4mAtom24m, 4mMatch24m, 4mValue24m, 4mWindow0m


This request alters the property for the specified window.
The type is uninterpreted by the server.  The format speci-
fies whether the data should be viewed as a list of 8-bit,
16-bit, or 32-bit quantities so that the server can cor-
rectly byte-swap as necessary.

If the mode is 4mReplace24m, the previous property value is dis-
carded.	 If the mode is 4mPrepend24m or 4mAppend24m, then the type and
format must match the existing property value (or a 4mMatch0m
error results).	 If the property is undefined, it is treated
as defined with the correct type and format with zero-length
data.  For 4mPrepend24m, the data is tacked on to the beginning
of the existing data, and for 4mAppend24m, it is tacked on to the
end of the existing data.

This request generates a 4mPropertyNotify24m event on the window.

The lifetime of a property is not tied to the storing
client.	 Properties remain until explicitly deleted, until
the window is destroyed, or until server reset (see section
10).

The maximum size of a property is server-dependent and may
vary dynamically.


__
|    4mDeleteProperty0m

  4mwindow24m: WINDOW
  4mproperty24m: ATOM

|__    Errors: 4mAtom24m, 4mWindow0m


This request deletes the property from the specified window
if the property exists and generates a 4mPropertyNotify24m event
on the window unless the property does not exist.








			     1m330m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mGetProperty0m

  4mwindow24m: WINDOW
  4mproperty24m: ATOM
  4mtype24m: ATOM or 4mAnyPropertyType0m
  4mlong-offset24m, 4mlong-length24m: CARD32
  4mdelete24m: BOOL

   ->

  type: ATOM or 4mNone0m
  format: {0, 8, 16, 32}
  bytes-after: CARD32
  value: LISTofINT8 or LISTofINT16 or LISTofINT32

|__    Errors: 4mAtom24m, 4mValue24m, 4mWindow0m


If the specified property does not exist for the specified
window, then the return type is 4mNone24m, the format and bytes-
after are zero, and the value is empty.	 The delete argument
is ignored in this case.  If the specified property exists
but its type does not match the specified type, then the
return type is the actual type of the property, the format
is the actual format of the property (never zero), the
bytes-after is the length of the property in bytes (even if
the format is 16 or 32), and the value is empty.  The delete
argument is ignored in this case.  If the specified property
exists and either 4mAnyPropertyType24m is specified or the speci-
fied type matches the actual type of the property, then the
return type is the actual type of the property, the format
is the actual format of the property (never zero), and the
bytes-after and value are as follows, given:

     N = actual length of the stored property in bytes
	 (even if the format is 16 or 32)
     I = 4 * long-offset
     T = N - I
     L = MINIMUM(T, 4 * long-length)
     A = N - (I + L)


The returned value starts at byte index I in the property
(indexing from 0), and its length in bytes is L.  However,
it is a 4mValue24m error if long-offset is given such that L is
negative.  The value of bytes-after is A, giving the number
of trailing unread bytes in the stored property.  If delete
is 4mTrue24m and the bytes-after is zero, the property is also
deleted from the window, and a 4mPropertyNotify24m event is gen-
erated on the window.







			     1m340m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mRotateProperties0m

  4mwindow24m: WINDOW
  4mdelta24m: INT16
  4mproperties24m: LISTofATOM

|__    Errors: 4mAtom24m, 4mMatch24m, 4mWindow0m


If the property names in the list are viewed as being num-
bered starting from zero, and there are N property names in
the list, then the value associated with property name I
becomes the value associated with property name (I + delta)
mod N, for all I from zero to N - 1.  The effect is to
rotate the states by delta places around the virtual ring of
property names (right for positive delta, left for negative
delta).

If delta mod N is nonzero, a 4mPropertyNotify24m event is gener-
ated for each property in the order listed.

If an atom occurs more than once in the list or no property
with that name is defined for the window, a 4mMatch24m error is
generated.  If an 4mAtom24m or 4mMatch24m error is generated, no prop-
erties are changed.


__
|    4mListProperties0m

  4mwindow24m: WINDOW

   ->

  atoms: LISTofATOM

|__    Errors: 4mWindow0m


This request returns the atoms of properties currently
defined on the window.


__
|    4mSetSelectionOwner0m

  4mselection24m: ATOM
  4mowner24m: WINDOW or 4mNone0m
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

|__    Errors: 4mAtom24m, 4mWindow0m






			     1m350m





1mX Protocol				X11, Release 6.7 DRAFT0m


This request changes the owner, owner window, and last-
change time of the specified selection.	 This request has no
effect if the specified time is earlier than the current
last-change time of the specified selection or is later than
the current server time.  Otherwise, the last-change time is
set to the specified time with 4mCurrentTime24m replaced by the
current server time.  If the owner window is specified as
4mNone24m, then the owner of the selection becomes 4mNone24m (that is,
no owner).  Otherwise, the owner of the selection becomes
the client executing the request.  If the new owner (whether
a client or 4mNone24m) is not the same as the current owner and
the current owner is not 4mNone24m, then the current owner is
sent a 4mSelectionClear24m event.

If the client that is the owner of a selection is later ter-
minated (that is, its connection is closed) or if the owner
window it has specified in the request is later destroyed,
then the owner of the selection automatically reverts to
4mNone24m, but the last-change time is not affected.

The selection atom is uninterpreted by the server.  The
owner window is returned by the 4mGetSelectionOwner24m request
and is reported in 4mSelectionRequest24m and 4mSelectionClear0m
events.

Selections are global to the server.


__
|    4mGetSelectionOwner0m

  4mselection24m: ATOM

   ->

  owner: WINDOW or 4mNone0m

|__    Errors: 4mAtom0m


This request returns the current owner window of the speci-
fied selection, if any.	 If 4mNone24m is returned, then there is
no owner for the selection.














			     1m360m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mConvertSelection0m

  4mselection24m, 4mtarget24m: ATOM
  4mproperty24m: ATOM or 4mNone0m
  4mrequestor24m: WINDOW
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

|__    Errors: 4mAtom24m, 4mWindow0m


If the specified selection has an owner, the server sends a
4mSelectionRequest24m event to that owner.  If no owner for the
specified selection exists, the server generates a 4mSelec-0m
4mtionNotify24m event to the requestor with property 4mNone24m.	 The
arguments are passed on unchanged in either of the events.


__
|    4mSendEvent0m

  4mdestination24m: WINDOW or 4mPointerWindow24m or 4mInputFocus0m
  4mpropagate24m: BOOL
  4mevent-mask24m: SETofEVENT
  4mevent24m: <normal-event-format>

|__    Errors: 4mValue24m, 4mWindow0m


If 4mPointerWindow24m is specified, destination is replaced with
the window that the pointer is in.  If 4mInputFocus24m is speci-
fied and the focus window contains the pointer, destination
is replaced with the window that the pointer is in.  Other-
wise, destination is replaced with the focus window.

If the event-mask is the empty set, then the event is sent
to the client that created the destination window.  If that
client no longer exists, no event is sent.

If propagate is 4mFalse24m, then the event is sent to every
client selecting on destination any of the event types in
event-mask.

If propagate is 4mTrue24m and no clients have selected on desti-
nation any of the event types in event-mask, then destina-
tion is replaced with the closest ancestor of destination
for which some client has selected a type in event-mask and
no intervening window has that type in its do-not-propagate-
mask.  If no such window exists or if the window is an
ancestor of the focus window and 4mInputFocus24m was originally
specified as the destination, then the event is not sent to
any clients.  Otherwise, the event is reported to every
client selecting on the final destination any of the types
specified in event-mask.




			     1m370m





1mX Protocol				X11, Release 6.7 DRAFT0m


The event code must be one of the core events or one of the
events defined by an extension (or a 4mValue24m error results) so
that the server can correctly byte-swap the contents as nec-
essary.	 The contents of the event are otherwise unaltered
and unchecked by the server except to force on the most sig-
nificant bit of the event code and to set the sequence num-
ber in the event correctly.

Active grabs are ignored for this request.


__
|    4mGrabPointer0m

  4mgrab-window24m: WINDOW
  4mowner-events24m: BOOL
  4mevent-mask24m: SETofPOINTEREVENT
  4mpointer-mode24m, 4mkeyboard-mode24m: {4mSynchronous24m, 4mAsynchronous24m}
  4mconfine-to24m: WINDOW or 4mNone0m
  4mcursor24m: CURSOR or 4mNone0m
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

   ->

  status: {4mSuccess24m, 4mAlreadyGrabbed24m, 4mFrozen24m, 4mInvalidTime24m,
  4mNotViewable24m}

|__    Errors: 4mCursor24m, 4mValue24m, 4mWindow0m


This request actively grabs control of the pointer.  Further
pointer events are only reported to the grabbing client.
The request overrides any active pointer grab by this
client.

If owner-events is 4mFalse24m, all generated pointer events are
reported with respect to grab-window and are only reported
if selected by event-mask.  If owner-events is 4mTrue24m and a
generated pointer event would normally be reported to this
client, it is reported normally.  Otherwise, the event is
reported with respect to the grab-window and is only
reported if selected by event-mask.  For either value of
owner-events, unreported events are simply discarded.

If pointer-mode is 4mAsynchronous24m, pointer event processing
continues normally.  If the pointer is currently frozen by
this client, then processing of pointer events is resumed.
If pointer-mode is 4mSynchronous24m, the state of the pointer (as
seen by means of the protocol) appears to freeze, and no
further pointer events are generated by the server until the
grabbing client issues a releasing 4mAllowEvents24m request or
until the pointer grab is released.  Actual pointer changes
are not lost while the pointer is frozen.  They are simply
queued for later processing.



			     1m380m





1mX Protocol				X11, Release 6.7 DRAFT0m


If keyboard-mode is 4mAsynchronous24m, keyboard event processing
is unaffected by activation of the grab.  If keyboard-mode
is 4mSynchronous24m, the state of the keyboard (as seen by means
of the protocol) appears to freeze, and no further keyboard
events are generated by the server until the grabbing client
issues a releasing 4mAllowEvents24m request or until the pointer
grab is released.  Actual keyboard changes are not lost
while the keyboard is frozen.  They are simply queued for
later processing.

If a cursor is specified, then it is displayed regardless of
what window the pointer is in.	If no cursor is specified,
then when the pointer is in grab-window or one of its sub-
windows, the normal cursor for that window is displayed.
Otherwise, the cursor for grab-window is displayed.

If a confine-to window is specified, then the pointer will
be restricted to stay contained in that window.	 The con-
fine-to window need have no relationship to the grab-window.
If the pointer is not initially in the confine-to window,
then it is warped automatically to the closest edge (and
enter/leave events are generated normally) just before the
grab activates.	 If the confine-to window is subsequently
reconfigured, the pointer will be warped automatically as
necessary to keep it contained in the window.

This request generates 4mEnterNotify24m and 4mLeaveNotify24m events.

The request fails with status 4mAlreadyGrabbed24m if the pointer
is actively grabbed by some other client.  The request fails
with status 4mFrozen24m if the pointer is frozen by an active
grab of another client.	 The request fails with status
4mNotViewable24m if grab-window or confine-to window is not view-
able or if the confine-to window lies completely outside the
boundaries of the root window.	The request fails with sta-
tus 4mInvalidTime24m if the specified time is earlier than the
last-pointer-grab time or later than the current server
time.  Otherwise, the last-pointer-grab time is set to the
specified time, with 4mCurrentTime24m replaced by the current
server time.


__
|    4mUngrabPointer0m

|__    4mtime24m: TIMESTAMP or 4mCurrentTime0m


This request releases the pointer if this client has it
actively grabbed (from either 4mGrabPointer24m or 4mGrabButton24m or
from a normal button press) and releases any queued events.
The request has no effect if the specified time is earlier
than the last-pointer-grab time or is later than the current
server time.



			     1m390m





1mX Protocol				X11, Release 6.7 DRAFT0m


This request generates 4mEnterNotify24m and 4mLeaveNotify24m events.

An 4mUngrabPointer24m request is performed automatically if the
event window or confine-to window for an active pointer grab
becomes not viewable or if window reconfiguration causes the
confine-to window to lie completely outside the boundaries
of the root window.


__
|    4mGrabButton0m

  4mmodifiers24m: SETofKEYMASK or 4mAnyModifier0m
  4mbutton24m: BUTTON or 4mAnyButton0m
  4mgrab-window24m: WINDOW
  4mowner-events24m: BOOL
  4mevent-mask24m: SETofPOINTEREVENT
  4mpointer-mode24m, 4mkeyboard-mode24m: {4mSynchronous24m, 4mAsynchronous24m}
  4mconfine-to24m: WINDOW or 4mNone0m
  4mcursor24m: CURSOR or 4mNone0m

|__    Errors: 4mAccess24m, 4mCursor24m, 4mValue24m, 4mWindow0m


This request establishes a passive grab.  In the future, the
pointer is actively grabbed as described in 4mGrabPointer24m, the
last-pointer-grab time is set to the time at which the but-
ton was pressed (as transmitted in the 4mButtonPress24m event),
and the 4mButtonPress24m event is reported if all of the follow-
ing conditions are true:

·    The pointer is not grabbed and the specified button is
     logically pressed when the specified modifier keys are
     logically down, and no other buttons or modifier keys
     are logically down.

·    The grab-window contains the pointer.

·    The confine-to window (if any) is viewable.

·    A passive grab on the same button/key combination does
     not exist on any ancestor of grab-window.

The interpretation of the remaining arguments is the same as
for 4mGrabPointer24m.  The active grab is terminated automati-
cally when the logical state of the pointer has all buttons
released, independent of the logical state of modifier keys.
Note that the logical state of a device (as seen by means of
the protocol) may lag the physical state if device event
processing is frozen.

This request overrides all previous passive grabs by the
same client on the same button/key combinations on the same
window.	 A modifier of 4mAnyModifier24m is equivalent to issuing



			     1m400m





1mX Protocol				X11, Release 6.7 DRAFT0m


the request for all possible modifier combinations (includ-
ing the combination of no modifiers).  It is not required
that all specified modifiers have currently assigned key-
codes.	A button of 4mAnyButton24m is equivalent to issuing the
request for all possible buttons.  Otherwise, it is not
required that the button specified currently be assigned to
a physical button.

An 4mAccess24m error is generated if some other client has
already issued a 4mGrabButton24m request with the same button/key
combination on the same window.	 When using 4mAnyModifier24m or
4mAnyButton24m, the request fails completely (no grabs are estab-
lished), and an 4mAccess24m error is generated if there is a con-
flicting grab for any combination.  The request has no
effect on an active grab.


__
|    4mUngrabButton0m

  4mmodifiers24m: SETofKEYMASK or 4mAnyModifier0m
  4mbutton24m: BUTTON or 4mAnyButton0m
  4mgrab-window24m: WINDOW

|__    Errors: 4mValue24m, 4mWindow0m


This request releases the passive button/key combination on
the specified window if it was grabbed by this client.	A
modifiers argument of 4mAnyModifier24m is equivalent to issuing
the request for all possible modifier combinations (includ-
ing the combination of no modifiers).  A button of 4mAnyButton0m
is equivalent to issuing the request for all possible but-
tons.  The request has no effect on an active grab.


__
|    4mChangeActivePointerGrab0m

  4mevent-mask24m: SETofPOINTEREVENT
  4mcursor24m: CURSOR or 4mNone0m
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

|__    Errors: 4mCursor24m, 4mValue0m


This request changes the specified dynamic parameters if the
pointer is actively grabbed by the client and the specified
time is no earlier than the last-pointer-grab time and no
later than the current server time.  The interpretation of
event-mask and cursor are the same as in 4mGrabPointer24m.  This
request has no effect on the parameters of any passive grabs
established with 4mGrabButton24m.




			     1m410m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mGrabKeyboard0m

  4mgrab-window24m: WINDOW
  4mowner-events24m: BOOL
  4mpointer-mode24m, 4mkeyboard-mode24m: {4mSynchronous24m, 4mAsynchronous24m}
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

   ->

  status: {4mSuccess24m, 4mAlreadyGrabbed24m, 4mFrozen24m, 4mInvalidTime24m,
  4mNotViewable24m}

|__    Errors: 4mValue24m, 4mWindow0m


This request actively grabs control of the keyboard.  Fur-
ther key events are reported only to the grabbing client.
This request overrides any active keyboard grab by this
client.

If owner-events is 4mFalse24m, all generated key events are
reported with respect to grab-window.  If owner-events is
4mTrue24m and if a generated key event would normally be reported
to this client, it is reported normally.  Otherwise, the
event is reported with respect to the grab-window.  Both
4mKeyPress24m and 4mKeyRelease24m events are always reported, indepen-
dent of any event selection made by the client.

If keyboard-mode is 4mAsynchronous24m, keyboard event processing
continues normally.  If the keyboard is currently frozen by
this client, then processing of keyboard events is resumed.
If keyboard-mode is 4mSynchronous24m, the state of the keyboard
(as seen by means of the protocol) appears to freeze.  No
further keyboard events are generated by the server until
the grabbing client issues a releasing 4mAllowEvents24m request
or until the keyboard grab is released.	 Actual keyboard
changes are not lost while the keyboard is frozen.  They are
simply queued for later processing.

If pointer-mode is 4mAsynchronous24m, pointer event processing is
unaffected by activation of the grab.  If pointer-mode is
4mSynchronous24m, the state of the pointer (as seen by means of
the protocol) appears to freeze.  No further pointer events
are generated by the server until the grabbing client issues
a releasing 4mAllowEvents24m request or until the keyboard grab
is released.  Actual pointer changes are not lost while the
pointer is frozen.  They are simply queued for later pro-
cessing.

This request generates 4mFocusIn24m and 4mFocusOut24m events.

The request fails with status 4mAlreadyGrabbed24m if the keyboard
is actively grabbed by some other client.  The request fails
with status 4mFrozen24m if the keyboard is frozen by an active



			     1m420m





1mX Protocol				X11, Release 6.7 DRAFT0m


grab of another client.	 The request fails with status
4mNotViewable24m if grab-window is not viewable.  The request
fails with status 4mInvalidTime24m if the specified time is ear-
lier than the last-keyboard-grab time or later than the cur-
rent server time.  Otherwise, the last-keyboard-grab time is
set to the specified time with 4mCurrentTime24m replaced by the
current server time.


__
|    4mUngrabKeyboard0m

|__    4mtime24m: TIMESTAMP or 4mCurrentTime0m


This request releases the keyboard if this client has it
actively grabbed (as a result of either 4mGrabKeyboard24m or
4mGrabKey24m) and releases any queued events.  The request has no
effect if the specified time is earlier than the last-key-
board-grab time or is later than the current server time.

This request generates 4mFocusIn24m and 4mFocusOut24m events.

An 4mUngrabKeyboard24m is performed automatically if the event
window for an active keyboard grab becomes not viewable.


__
|    4mGrabKey0m

  4mkey24m: KEYCODE or 4mAnyKey0m
  4mmodifiers24m: SETofKEYMASK or 4mAnyModifier0m
  4mgrab-window24m: WINDOW
  4mowner-events24m: BOOL
  4mpointer-mode24m, 4mkeyboard-mode24m: {4mSynchronous24m, 4mAsynchronous24m}

|__    Errors: 4mAccess24m, 4mValue24m, 4mWindow0m


This request establishes a passive grab on the keyboard.  In
the future, the keyboard is actively grabbed as described in
4mGrabKeyboard24m, the last-keyboard-grab time is set to the time
at which the key was pressed (as transmitted in the 4mKeyPress0m
event), and the 4mKeyPress24m event is reported if all of the
following conditions are true:

·    The keyboard is not grabbed and the specified key
     (which can itself be a modifier key) is logically
     pressed when the specified modifier keys are logically
     down, and no other modifier keys are logically down.

·    Either the grab-window is an ancestor of (or is) the
     focus window, or the grab-window is a descendent of the
     focus window and contains the pointer.



			     1m430m





1mX Protocol				X11, Release 6.7 DRAFT0m


·    A passive grab on the same key combination does not
     exist on any ancestor of grab-window.

The interpretation of the remaining arguments is the same as
for 4mGrabKeyboard24m.	The active grab is terminated automati-
cally when the logical state of the keyboard has the speci-
fied key released, independent of the logical state of modi-
fier keys.  Note that the logical state of a device (as seen
by means of the protocol) may lag the physical state if
device event processing is frozen.

This request overrides all previous passive grabs by the
same client on the same key combinations on the same window.
A modifier of 4mAnyModifier24m is equivalent to issuing the
request for all possible modifier combinations (including
the combination of no modifiers).  It is not required that
all modifiers specified have currently assigned keycodes.  A
key of 4mAnyKey24m is equivalent to issuing the request for all
possible keycodes.  Otherwise, the key must be in the range
specified by min-keycode and max-keycode in the connection
setup (or a 4mValue24m error results).

An 4mAccess24m error is generated if some other client has issued
a 4mGrabKey24m with the same key combination on the same window.
When using 4mAnyModifier24m or 4mAnyKey24m, the request fails com-
pletely (no grabs are established), and an 4mAccess24m error is
generated if there is a conflicting grab for any combina-
tion.


__
|    4mUngrabKey0m

  4mkey24m: KEYCODE or 4mAnyKey0m
  4mmodifiers24m: SETofKEYMASK or 4mAnyModifier0m
  4mgrab-window24m: WINDOW

|__    Errors: 4mValue24m, 4mWindow0m


This request releases the key combination on the specified
window if it was grabbed by this client.  A modifiers argu-
ment of 4mAnyModifier24m is equivalent to issuing the request for
all possible modifier combinations (including the combina-
tion of no modifiers).	A key of 4mAnyKey24m is equivalent to
issuing the request for all possible keycodes.	This request
has no effect on an active grab.










			     1m440m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mAllowEvents0m

  4mmode24m: {4mAsyncPointer24m, 4mSyncPointer24m, 4mReplayPointer24m, 4mAsyncKey-0m
  4mboard24m,
	     4mSyncKeyboard24m, 4mReplayKeyboard24m, 4mAsyncBoth24m,
  4mSyncBoth24m}
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

|__    Errors: 4mValue0m


This request releases some queued events if the client has
caused a device to freeze.  The request has no effect if the
specified time is earlier than the last-grab time of the
most recent active grab for the client or if the specified
time is later than the current server time.

For 4mAsyncPointer24m, if the pointer is frozen by the client,
pointer event processing continues normally.  If the pointer
is frozen twice by the client on behalf of two separate
grabs, 4mAsyncPointer24m thaws for both.  4mAsyncPointer24m has no
effect if the pointer is not frozen by the client, but the
pointer need not be grabbed by the client.

For 4mSyncPointer24m, if the pointer is frozen and actively
grabbed by the client, pointer event processing continues
normally until the next 4mButtonPress24m or 4mButtonRelease24m event
is reported to the client, at which time the pointer again
appears to freeze.  However, if the reported event causes
the pointer grab to be released, then the pointer does not
freeze.	 4mSyncPointer24m has no effect if the pointer is not
frozen by the client or if the pointer is not grabbed by the
client.

For 4mReplayPointer24m, if the pointer is actively grabbed by the
client and is frozen as the result of an event having been
sent to the client (either from the activation of a 4mGrabBut-0m
4mton24m or from a previous 4mAllowEvents24m with mode 4mSyncPointer24m but
not from a 4mGrabPointer24m), then the pointer grab is released
and that event is completely reprocessed, this time ignoring
any passive grabs at or above (towards the root) the grab-
window of the grab just released.  The request has no effect
if the pointer is not grabbed by the client or if the
pointer is not frozen as the result of an event.

For 4mAsyncKeyboard24m, if the keyboard is frozen by the client,
keyboard event processing continues normally.  If the key-
board is frozen twice by the client on behalf of two sepa-
rate grabs, 4mAsyncKeyboard24m thaws for both.	4mAsyncKeyboard24m has
no effect if the keyboard is not frozen by the client, but
the keyboard need not be grabbed by the client.

For 4mSyncKeyboard24m, if the keyboard is frozen and actively
grabbed by the client, keyboard event processing continues



			     1m450m





1mX Protocol				X11, Release 6.7 DRAFT0m


normally until the next 4mKeyPress24m or 4mKeyRelease24m event is
reported to the client, at which time the keyboard again
appears to freeze.  However, if the reported event causes
the keyboard grab to be released, then the keyboard does not
freeze.	 4mSyncKeyboard24m has no effect if the keyboard is not
frozen by the client or if the keyboard is not grabbed by
the client.

For 4mReplayKeyboard24m, if the keyboard is actively grabbed by
the client and is frozen as the result of an event having
been sent to the client (either from the activation of a
4mGrabKey24m or from a previous 4mAllowEvents24m with mode 4mSyncKey-0m
4mboard24m but not from a 4mGrabKeyboard24m), then the keyboard grab
is released and that event is completely reprocessed, this
time ignoring any passive grabs at or above (towards the
root) the grab-window of the grab just released.  The
request has no effect if the keyboard is not grabbed by the
client or if the keyboard is not frozen as the result of an
event.

For 4mSyncBoth24m, if both pointer and keyboard are frozen by the
client, event processing (for both devices) continues nor-
mally until the next 4mButtonPress24m, 4mButtonRelease24m, 4mKeyPress24m,
or 4mKeyRelease24m event is reported to the client for a grabbed
device (button event for the pointer, key event for the key-
board), at which time the devices again appear to freeze.
However, if the reported event causes the grab to be
released, then the devices do not freeze (but if the other
device is still grabbed, then a subsequent event for it will
still cause both devices to freeze).  4mSyncBoth24m has no effect
unless both pointer and keyboard are frozen by the client.
If the pointer or keyboard is frozen twice by the client on
behalf of two separate grabs, 4mSyncBoth24m thaws for both (but a
subsequent freeze for 4mSyncBoth24m will only freeze each device
once).

For 4mAsyncBoth24m, if the pointer and the keyboard are frozen by
the client, event processing for both devices continues nor-
mally.	If a device is frozen twice by the client on behalf
of two separate grabs, 4mAsyncBoth24m thaws for both.  4mAsyncBoth0m
has no effect unless both pointer and keyboard are frozen by
the client.

4mAsyncPointer24m, 4mSyncPointer24m, and 4mReplayPointer24m have no effect
on processing of keyboard events.  4mAsyncKeyboard24m, 4mSyncKey-0m
4mboard24m, and 4mReplayKeyboard24m have no effect on processing of
pointer events.

It is possible for both a pointer grab and a keyboard grab
to be active simultaneously (by the same or different
clients).  When a device is frozen on behalf of either grab,
no event processing is performed for the device.  It is pos-
sible for a single device to be frozen because of both
grabs.	In this case, the freeze must be released on behalf



			     1m460m





1mX Protocol				X11, Release 6.7 DRAFT0m


of both grabs before events can again be processed.  If a
device is frozen twice by a single client, then a single
4mAllowEvents24m releases both.


__
|__  4mGrabServer0m


This request disables processing of requests and close-downs
on all connections other than the one this request arrived
on.


__
|__  4mUngrabServer0m


This request restarts processing of requests and close-downs
on other connections.


__
|    4mQueryPointer0m

  4mwindow24m: WINDOW

   ->

  root: WINDOW
  child: WINDOW or 4mNone0m
  same-screen: BOOL
  root-x, root-y, win-x, win-y: INT16
  mask: SETofKEYBUTMASK

|__    Errors: 4mWindow0m


The root window the pointer is logically on and the pointer
coordinates relative to the root's origin are returned.	 If
same-screen is 4mFalse24m, then the pointer is not on the same
screen as the argument window, child is 4mNone24m, and win-x and
win-y are zero.	 If same-screen is 4mTrue24m, then win-x and win-
y are the pointer coordinates relative to the argument win-
dow's origin, and child is the child containing the pointer,
if any.	 The current logical state of the modifier keys and
the buttons are also returned.	Note that the logical state
of a device (as seen by means of the protocol) may lag the
physical state if device event processing is frozen.








			     1m470m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mGetMotionEvents0m

  4mstart24m, 4mstop24m: TIMESTAMP or 4mCurrentTime0m
  4mwindow24m: WINDOW

   ->

  events: LISTofTIMECOORD

  where:

  TIMECOORD:   [x, y: INT16
		time: TIMESTAMP]


|__    Errors: 4mWindow0m


This request returns all events in the motion history buffer
that fall between the specified start and stop times (inclu-
sive) and that have coordinates that lie within (including
borders) the specified window at its present placement.	 The
x and y coordinates are reported relative to the origin of
the window.

If the start time is later than the stop time or if the
start time is in the future, no events are returned.  If the
stop time is in the future, it is equivalent to specifying
4mCurrentTime24m.


__
|    4mTranslateCoordinates0m

  4msrc-window24m, 4mdst-window24m: WINDOW
  4msrc-x24m, 4msrc-y24m: INT16

   ->

  same-screen: BOOL
  child: WINDOW or 4mNone0m
  dst-x, dst-y: INT16

|__    Errors: 4mWindow0m


The src-x and src-y coordinates are taken relative to src-
window's origin and are returned as dst-x and dst-y coordi-
nates relative to dst-window's origin.	If same-screen is
4mFalse24m, then src-window and dst-window are on different
screens, and dst-x and dst-y are zero.	If the coordinates
are contained in a mapped child of dst-window, then that
child is returned.




			     1m480m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mWarpPointer0m

  4msrc-window24m: WINDOW or 4mNone0m
  4mdst-window24m: WINDOW or 4mNone0m
  4msrc-x24m, 4msrc-y24m: INT16
  4msrc-width24m, 4msrc-height24m: CARD16
  4mdst-x24m, 4mdst-y24m: INT16

|__    Errors: 4mWindow0m


If dst-window is 4mNone24m, this request moves the pointer by
offsets [dst-x, dst-y] relative to the current position of
the pointer.  If dst-window is a window, this request moves
the pointer to [dst-x, dst-y] relative to dst-window's ori-
gin.  However, if src-window is not 4mNone24m, the move only
takes place if src-window contains the pointer and the
pointer is contained in the specified rectangle of src-win-
dow.

The src-x and src-y coordinates are relative to src-window's
origin.	 If src-height is zero, it is replaced with the cur-
rent height of src-window minus src-y.	If src-width is
zero, it is replaced with the current width of src-window
minus src-x.

This request cannot be used to move the pointer outside the
confine-to window of an active pointer grab.  An attempt
will only move the pointer as far as the closest edge of the
confine-to window.

This request will generate events just as if the user had
instantaneously moved the pointer.


__
|    4mSetInputFocus0m

  4mfocus24m: WINDOW or 4mPointerRoot24m or 4mNone0m
  4mrevert-to24m: {4mParent24m, 4mPointerRoot24m, 4mNone24m}
  4mtime24m: TIMESTAMP or 4mCurrentTime0m

|__    Errors: 4mMatch24m, 4mValue24m, 4mWindow0m


This request changes the input focus and the last-focus-
change time.  The request has no effect if the specified
time is earlier than the current last-focus-change time or
is later than the current server time.	Otherwise, the last-
focus-change time is set to the specified time with 4mCurrent-0m
4mTime24m replaced by the current server time.

If 4mNone24m is specified as the focus, all keyboard events are
discarded until a new focus window is set.  In this case,



			     1m490m





1mX Protocol				X11, Release 6.7 DRAFT0m


the revert-to argument is ignored.

If a window is specified as the focus, it becomes the key-
board's focus window.  If a generated keyboard event would
normally be reported to this window or one of its inferiors,
the event is reported normally.	 Otherwise, the event is
reported with respect to the focus window.

If 4mPointerRoot24m is specified as the focus, the focus window
is dynamically taken to be the root window of whatever
screen the pointer is on at each keyboard event.  In this
case, the revert-to argument is ignored.

This request generates 4mFocusIn24m and 4mFocusOut24m events.

The specified focus window must be viewable at the time of
the request (or a 4mMatch24m error results).  If the focus window
later becomes not viewable, the new focus window depends on
the revert-to argument.	 If revert-to is 4mParent24m, the focus
reverts to the parent (or the closest viewable ancestor) and
the new revert-to value is taken to be 4mNone24m.  If revert-to
is 4mPointerRoot24m or 4mNone24m, the focus reverts to that value.
When the focus reverts, 4mFocusIn24m and 4mFocusOut24m events are gen-
erated, but the last-focus-change time is not affected.


__
|    4mGetInputFocus0m

   ->

  focus: WINDOW or 4mPointerRoot24m or 4mNone0m
|__    revert-to: {4mParent24m, 4mPointerRoot24m, 4mNone24m}


This request returns the current focus state.


__
|    4mQueryKeymap0m

   ->

|__    keys: LISTofCARD8


This request returns a bit vector for the logical state of
the keyboard.  Each bit set to 1 indicates that the corre-
sponding key is currently pressed.  The vector is repre-
sented as 32 bytes.  Byte N (from 0) contains the bits for
keys 8N to 8N + 7 with the least significant bit in the byte
representing key 8N.  Note that the logical state of a
device (as seen by means of the protocol) may lag the physi-
cal state if device event processing is frozen.



			     1m500m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mOpenFont0m

  4mfid24m: FONT
  4mname24m: STRING8

|__    Errors: 4mAlloc24m, 4mIDChoice24m, 4mName0m


This request loads the specified font, if necessary, and as-
sociates identifier fid with it.  The font name should use
the ISO Latin-1 encoding, and uppercase and lowercase do not
matter.	 When the characters ``?'' and ``*'' are used in a
font name, a pattern match is performed and any matching
font is used.  In the pattern, the ``?'' character (octal
value 77) will match any single character, and the ``*''
character (octal value 52) will match any number of charac-
ters.  A structured format for font names is specified in
the X.Org standard 4mX24m 4mLogical24m 4mFont24m 4mDescription24m 4mConventions24m.

Fonts are not associated with a particular screen and can be
stored as a component of any graphics context.


__
|    4mCloseFont0m

  4mfont24m: FONT

|__    Errors: 4mFont0m


This request deletes the association between the resource ID
and the font.  The font itself will be freed when no other
resource references it.























			     1m510m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mQueryFont0m

  4mfont24m: FONTABLE

   ->

  font-info: FONTINFO
  char-infos: LISTofCHARINFO

  where:


     FONTINFO:	 [draw-direction: {4mLeftToRight24m, 4mRightToLeft24m}
		  min-char-or-byte2, max-char-or-byte2: CARD16
		  min-byte1, max-byte1: CARD8
		  all-chars-exist: BOOL
		  default-char: CARD16
		  min-bounds: CHARINFO
		  max-bounds: CHARINFO
		  font-ascent: INT16
		  font-descent: INT16
		  properties: LISTofFONTPROP]
     FONTPROP:	 [name: ATOM
		  value: <32-bit-value>]
     CHARINFO:	 [left-side-bearing: INT16
		  right-side-bearing: INT16
		  character-width: INT16
		  ascent: INT16
		  descent: INT16
		  attributes: CARD16]


|__    Errors: 4mFont0m


This request returns logical information about a font.	If a
gcontext is given for font, the currently contained font is
used.

The draw-direction is just a hint and indicates whether most
char-infos have a positive, 4mLeftToRight24m, or a negative,
4mRightToLeft24m, character-width metric.  The core protocol
defines no support for vertical text.

If min-byte1 and max-byte1 are both zero, then min-char-or-
byte2 specifies the linear character index corresponding to
the first element of char-infos, and max-char-or-byte2 spec-
ifies the linear character index of the last element.  If
either min-byte1 or max-byte1 are nonzero, then both min-
char-or-byte2 and max-char-or-byte2 will be less than 256,
and the 2-byte character index values corresponding to char-
infos element N (counting from 0) are:





			     1m520m





1mX Protocol				X11, Release 6.7 DRAFT0m


     byte1 = N/D + min-byte1
     byte2 = N\\D + min-char-or-byte2


where:

     D = max-char-or-byte2 - min-char-or-byte2 + 1
     / = integer division
     \\ = integer modulus


If char-infos has length zero, then min-bounds and max-
bounds will be identical, and the effective char-infos is
one filled with this char-info, of length:

     L = D * (max-byte1 - min-byte1 + 1)


That is, all glyphs in the specified linear or matrix range
have the same information, as given by min-bounds (and max-
bounds).  If all-chars-exist is 4mTrue24m, then all characters in
char-infos have nonzero bounding boxes.

The default-char specifies the character that will be used
when an undefined or nonexistent character is used.  Note
that default-char is a CARD16, not CHAR2B.  For a font using
2-byte matrix format, the default-char has byte1 in the most
significant byte and byte2 in the least significant byte.
If the default-char itself specifies an undefined or nonex-
istent character, then no printing is performed for an unde-
fined or nonexistent character.

The min-bounds and max-bounds contain the minimum and maxi-
mum values of each individual CHARINFO component over all
char-infos (ignoring nonexistent characters).  The bounding
box of the font (that is, the smallest rectangle enclosing
the shape obtained by superimposing all characters at the
same origin [x,y]) has its upper-left coordinate at:

     [x + min-bounds.left-side-bearing, y - max-bounds.ascent]

with a width of:

     max-bounds.right-side-bearing - min-bounds.left-side-bearing


and a height of:

     max-bounds.ascent + max-bounds.descent


The font-ascent is the logical extent of the font above the
baseline and is used for determining line spacing.  Specific
characters may extend beyond this.  The font-descent is the



			     1m530m





1mX Protocol				X11, Release 6.7 DRAFT0m


logical extent of the font at or below the baseline and is
used for determining line spacing.  Specific characters may
extend beyond this.  If the baseline is at Y-coordinate y,
then the logical extent of the font is inclusive between the
Y-coordinate values (y - font-ascent) and (y + font-descent
- 1).

A font is not guaranteed to have any properties.  The inter-
pretation of the property value (for example, INT32, CARD32)
must be derived from 4ma24m 4mpriori24m knowledge of the property.  A
basic set of font properties is specified in the X.Org stan-
dard 4mX24m 4mLogical24m 4mFont24m 4mDescription24m 4mConventions24m.

For a character origin at [x,y], the bounding box of a char-
acter (that is, the smallest rectangle enclosing the charac-
ter's shape), described in terms of CHARINFO components, is
a rectangle with its upper-left corner at:

     [x + left-side-bearing, y - ascent]


with a width of:

     right-side-bearing - left-side-bearing


and a height of:

     ascent + descent


and the origin for the next character is defined to be:

     [x + character-width, y]


Note that the baseline is logically viewed as being just
below nondescending characters (when descent is zero, only
pixels with Y-coordinates less than y are drawn) and that
the origin is logically viewed as being coincident with the
left edge of a nonkerned character (when left-side-bearing
is zero, no pixels with X-coordinate less than x are drawn).

Note that CHARINFO metric values can be negative.

A nonexistent character is represented with all CHARINFO
components zero.

The interpretation of the per-character attributes field is
server-dependent.







			     1m540m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mQueryTextExtents0m

  4mfont24m: FONTABLE
  4mstring24m: STRING16

   ->

  draw-direction: {4mLeftToRight24m, 4mRightToLeft24m}
  font-ascent: INT16
  font-descent: INT16
  overall-ascent: INT16
  overall-descent: INT16
  overall-width: INT32
  overall-left: INT32
  overall-right: INT32

|__    Errors: 4mFont0m


This request returns the logical extents of the specified
string of characters in the specified font.  If a gcontext
is given for font, the currently contained font is used.
The draw-direction, font-ascent, and font-descent are the
same as described in 4mQueryFont24m.  The overall-ascent is the
maximum of the ascent metrics of all characters in the
string, and the overall-descent is the maximum of the
descent metrics.  The overall-width is the sum of the char-
acter-width metrics of all characters in the string.  For
each character in the string, let W be the sum of the char-
acter-width metrics of all characters preceding it in the
string, let L be the left-side-bearing metric of the charac-
ter plus W, and let R be the right-side-bearing metric of
the character plus W.  The overall-left is the minimum L of
all characters in the string, and the overall-right is the
maximum R.

For fonts defined with linear indexing rather than 2-byte
matrix indexing, the server will interpret each CHAR2B as a
16-bit number that has been transmitted most significant
byte first (that is, byte1 of the CHAR2B is taken as the
most significant byte).

Characters with all zero metrics are ignored.  If the font
has no defined default-char, then undefined characters in
the string are also ignored.












			     1m550m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mListFonts0m

  4mpattern24m: STRING8
  4mmax-names24m: CARD16

   ->

|__    names: LISTofSTRING8


This request returns a list of available font names (as con-
trolled by the font search path; see 4mSetFontPath24m request)
that match the pattern.	 At most, max-names names will be
returned.  The pattern should use the ISO Latin-1 encoding,
and uppercase and lowercase do not matter.  In the pattern,
the ``?'' character (octal value 77) will match any single
character, and the ``*'' character (octal value 52) will
match any number of characters.	 The returned names are in
lowercase.


__
|    4mListFontsWithInfo0m

  4mpattern24m: STRING8
  4mmax-names24m: CARD16

   ->

  name: STRING8
  info FONTINFO
  replies-hint: CARD32

  where:

|__  FONTINFO: <same type definition as in 4mQueryFont24m>


This request is similar to 4mListFonts24m, but it also returns
information about each font.  The information returned for
each font is identical to what 4mQueryFont24m would return except
that the per-character metrics are not returned.  Note that
this request can generate multiple replies.  With each
reply, replies-hint may provide an indication of how many
more fonts will be returned.  This number is a hint only and
may be larger or smaller than the number of fonts actually
returned.  A zero value does not guarantee that no more
fonts will be returned.	 After the font replies, a reply
with a zero-length name is sent to indicate the end of the
reply sequence.







			     1m560m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mSetFontPath0m

  4mpath24m: LISTofSTRING8

|__    Errors: 4mValue0m


This request defines the search path for font lookup.  There
is only one search path per server, not one per client.	 The
interpretation of the strings is operating-system-dependent,
but the strings are intended to specify directories to be
searched in the order listed.

Setting the path to the empty list restores the default path
defined for the server.

As a side effect of executing this request, the server is
guaranteed to flush all cached information about fonts for
which there currently are no explicit resource IDs allo-
cated.

The meaning of an error from this request is system spe-
cific.


__
|    4mGetFontPath0m

   ->

|__    path: LISTofSTRING8


This request returns the current search path for fonts.


__
|    4mCreatePixmap0m

  4mpid24m: PIXMAP
  4mdrawable24m: DRAWABLE
  4mdepth24m: CARD8
  4mwidth24m, 4mheight24m: CARD16

|__    Errors: 4mAlloc24m, 4mDrawable24m, 4mIDChoice24m, 4mValue0m


This request creates a pixmap and assigns the identifier pid
to it.	The width and height must be nonzero (or a 4mValue0m
error results).	 The depth must be one of the depths sup-
ported by the root of the specified drawable (or a 4mValue0m
error results).	 The initial contents of the pixmap are
undefined.




			     1m570m





1mX Protocol				X11, Release 6.7 DRAFT0m


It is legal to pass an 4mInputOnly24m window as a drawable to
this request.


__
|    4mFreePixmap0m

  4mpixmap24m: PIXMAP

|__    Errors: 4mPixmap0m


This request deletes the association between the resource ID
and the pixmap.	 The pixmap storage will be freed when no
other resource references it.


__
|    4mCreateGC0m

  4mcid24m: GCONTEXT
  4mdrawable24m: DRAWABLE
  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

  Errors: 4mAlloc24m, 4mDrawable24m, 4mFont24m, 4mIDChoice24m, 4mMatch24m, 4mPixmap24m,
|__    4mValue0m


This request creates a graphics context and assigns the
identifier cid to it.  The gcontext can be used with any
destination drawable having the same root and depth as the
specified drawable; use with other drawables results in a
4mMatch24m error.

The value-mask and value-list specify which components are
to be explicitly initialized.  The context components are:

-------------------------------------------------------------
1mComponent	    Type0m
-------------------------------------------------------------
function	  {4mClear24m, 4mAnd24m, 4mAndReverse24m, 4mCopy24m, 4mAndIn-0m
		  4mverted24m, 4mNoOp24m, 4mXor24m,
		    4mOr24m, 4mNor24m, 4mEquiv24m, 4mInvert24m, 4mOrReverse24m, 4mCopy-0m
		  4mInverted24m,
		    4mOrInverted24m, 4mNand24m, 4mSet24m}
plane-mask	  CARD32
foreground	  CARD32
background	  CARD32
line-width	  CARD16
line-style	  {4mSolid24m, 4mOnOffDash24m, 4mDoubleDash24m}
cap-style	  {4mNotLast24m, 4mButt24m, 4mRound24m, 4mProjecting24m}
join-style	  {4mMiter24m, 4mRound24m, 4mBevel24m}




			     1m580m





1mX Protocol				X11, Release 6.7 DRAFT0m


-------------------------------------------------------------
1mComponent	    Type0m
-------------------------------------------------------------
fill-style	  {4mSolid24m, 4mTiled24m, 4mOpaqueStippled24m, 4mStippled24m}
fill-rule	  {4mEvenOdd24m, 4mWinding24m}
arc-mode	  {4mChord24m, 4mPieSlice24m}
tile		  PIXMAP
stipple		  PIXMAP
tile-stipple-x-	  INT16
origin
tile-stipple-y-	  INT16
origin
font		  FONT
subwindow-mode	  {4mClipByChildren24m, 4mIncludeInferiors24m}
graphics-expo-	  BOOL
sures
clip-x-origin	  INT16
clip-y-origin	  INT16
clip-mask	  PIXMAP or 4mNone0m
dash-offset	  CARD16
dashes		  CARD8
-------------------------------------------------------------


In graphics operations, given a source and destination
pixel, the result is computed bitwise on corresponding bits
of the pixels; that is, a Boolean operation is performed in
each bit plane.	 The plane-mask restricts the operation to a
subset of planes, so the result is:


     ((src FUNC dst) AND plane-mask) OR (dst AND (NOT plane-mask))


Range checking is not performed on the values for fore-
ground, background, or plane-mask.  They are simply trun-
cated to the appropriate number of bits.

The meanings of the functions are:

---------------------------------------
1mFunction	    Operation0m
---------------------------------------
4mClear24m	       0
4mAnd24m	       src AND dst
4mAndReverse24m	       src AND (NOT dst)
4mCopy24m	       src
4mAndInverted24m       (NOT src) AND dst
4mNoOp24m	       dst
4mXor24m	       src XOR dst
4mOr24m		       src OR dst
4mNor24m	       (NOT src) AND (NOT
		  dst)




			     1m590m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mEquiv24m	       (NOT src) XOR dst
4mInvert24m	       NOT dst
4mOrReverse24m	       src OR (NOT dst)
4mCopyInverted24m      NOT src
4mOrInverted24m	       (NOT src) OR dst
4mNand24m	       (NOT src) OR (NOT
		  dst)
4mSet24m	       1
---------------------------------------


The line-width is measured in pixels and can be greater than
or equal to one, a wide line, or the special value zero, a
thin line.

Wide lines are drawn centered on the path described by the
graphics request.  Unless otherwise specified by the join or
cap style, the bounding box of a wide line with endpoints
[x1, y1], [x2, y2] and width w is a rectangle with vertices
at the following real coordinates:

     [x1-(w*sn/2), y1+(w*cs/2)], [x1+(w*sn/2), y1-(w*cs/2)],
     [x2-(w*sn/2), y2+(w*cs/2)], [x2+(w*sn/2), y2-(w*cs/2)]


The sn is the sine of the angle of the line and cs is the
cosine of the angle of the line.  A pixel is part of the
line (and hence drawn) if the center of the pixel is fully
inside the bounding box, which is viewed as having infinite-
ly thin edges.	If the center of the pixel is exactly on the
bounding box, it is part of the line if and only if the
interior is immediately to its right (x increasing direc-
tion).	Pixels with centers on a horizontal edge are a spe-
cial case and are part of the line if and only if the inte-
rior or the boundary is immediately below (y increasing
direction) and if the interior or the boundary is immedi-
ately to the right (x increasing direction).  Note that this
description is a mathematical model describing the pixels
that are drawn for a wide line and does not imply that
trigonometry is required to implement such a model.  Real or
fixed point arithmetic is recommended for computing the cor-
ners of the line endpoints for lines greater than one pixel
in width.

Thin lines (zero line-width) are nominally one pixel wide
lines drawn using an unspecified, device-dependent algo-
rithm.	There are only two constraints on this algorithm.
First, if a line is drawn unclipped from [x1,y1] to [x2,y2]
and another line is drawn unclipped from [x1+dx,y1+dy] to
[x2+dx,y2+dy], then a point [x,y] is touched by drawing the
first line if and only if the point [x+dx,y+dy] is touched
by drawing the second line.  Second, the effective set of
points comprising a line cannot be affected by clipping.
Thus, a point is touched in a clipped line if and only if



			     1m600m





1mX Protocol				X11, Release 6.7 DRAFT0m


the point lies inside the clipping region and the point
would be touched by the line when drawn unclipped.

Note that a wide line drawn from [x1,y1] to [x2,y2] always
draws the same pixels as a wide line drawn from [x2,y2] to
[x1,y1], not counting cap-style and join-style.	 Implemen-
tors are encouraged to make this property true for thin
lines, but it is not required.	A line-width of zero may
differ from a line-width of one in which pixels are drawn.
In general, drawing a thin line will be faster than drawing
a wide line of width one, but thin lines may not mix well
aesthetically with wide lines because of the different draw-
ing algorithms.	 If it is desirable to obtain precise and
uniform results across all displays, a client should always
use a line-width of one, rather than a line-width of zero.

The line-style defines which sections of a line are drawn:

4mSolid24m	  The full path of the line is drawn.
4mDoubleDash24m	  The full path of the line is drawn, but the
	     even dashes are filled differently than the odd
	     dashes (see fill-style), with 4mButt24m cap-style
	     used where even and odd dashes meet.
4mOnOffDash24m	  Only the even dashes are drawn, and cap-style
	     applies to all internal ends of the individual
	     dashes (except 4mNotLast24m is treated as 4mButt24m).


The cap-style defines how the endpoints of a path are drawn:

4mNotLast24m	  The result is equivalent to 4mButt24m, except that
	     for a line-width of zero the final endpoint is
	     not drawn.
4mButt24m	  The result is square at the endpoint (perpen-
	     dicular to the slope of the line) with no pro-
	     jection beyond.
4mRound24m	  The result is a circular arc with its diameter
	     equal to the line-width, centered on the end-
	     point; it is equivalent to 4mButt24m for line-width
	     zero.
4mProjecting24m	  The result is square at the end, but the path
	     continues beyond the endpoint for a distance
	     equal to half the line-width; it is equivalent
	     to 4mButt24m for line-width zero.


The join-style defines how corners are drawn for wide lines:

4mMiter24m	  The outer edges of the two lines extend to meet
	     at an angle.  However, if the angle is less
	     than 11 degrees, a 4mBevel24m join-style is used
	     instead.





			     1m610m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mRound24m	  The result is a circular arc with a diameter
	     equal to the line-width, centered on the join-
	     point.
4mBevel24m	  The result is 4mButt24m endpoint styles, and then
	     the triangular notch is filled.


For a line with coincident endpoints (x1=x2, y1=y2), when
the cap-style is applied to both endpoints, the semantics
depends on the line-width and the cap-style:

4mNotLast24m	  thin	  This is device-dependent, but the desired
		     effect is that nothing is drawn.
4mButt24m	  thin	  This is device-dependent, but the desired
		     effect is that a single pixel is drawn.
4mRound24m	  thin	  This is the same as 4mButt24m/thin.
4mProjecting24m	  thin	  This is the same as 4mButt24m/thin.
4mButt24m	  wide	  Nothing is drawn.
4mRound24m	  wide	  The closed path is a circle, centered at
		     the endpoint and with a diameter equal to
		     the line-width.
4mProjecting24m	  wide	  The closed path is a square, aligned with
		     the coordinate axes, centered at the end-
		     point and with sides equal to the line-
		     width.


For a line with coincident endpoints (x1=x2, y1=y2), when
the join-style is applied at one or both endpoints, the
effect is as if the line was removed from the overall path.
However, if the total path consists of (or is reduced to) a
single point joined with itself, the effect is the same as
when the cap-style is applied at both endpoints.

The tile/stipple represents an infinite two-dimensional
plane with the tile/stipple replicated in all dimensions.
When that plane is superimposed on the drawable for use in a
graphics operation, the upper-left corner of some instance
of the tile/stipple is at the coordinates within the draw-
able specified by the tile/stipple origin.  The tile/stipple
and clip origins are interpreted relative to the origin of
whatever destination drawable is specified in a graphics
request.

The tile pixmap must have the same root and depth as the
gcontext (or a 4mMatch24m error results).  The stipple pixmap
must have depth one and must have the same root as the gcon-
text (or a 4mMatch24m error results).  For fill-style 4mStippled0m
(but not fill-style 4mOpaqueStippled24m), the stipple pattern is
tiled in a single plane and acts as an additional clip mask
to be ANDed with the clip-mask.	 Any size pixmap can be used
for tiling or stippling, although some sizes may be faster
to use than others.




			     1m620m





1mX Protocol				X11, Release 6.7 DRAFT0m


The fill-style defines the contents of the source for line,
text, and fill requests.  For all text and fill requests
(for example, 4mPolyText824m, 4mPolyText1624m, 4mPolyFillRectangle24m,
4mFillPoly24m, and 4mPolyFillArc24m) as well as for line requests with
line-style 4mSolid24m, (for example, 4mPolyLine24m, 4mPolySegment24m,
4mPolyRectangle24m, 4mPolyArc24m) and for the even dashes for line
requests with line-style 4mOnOffDash24m or 4mDoubleDash24m:

4mSolid24m	    Foreground
4mTiled24m	    Tile
4mOpaqueStip-24m    A tile with the same width and height as
4mpled24m	    stipple but with background everywhere stip-
	       ple has a zero and with foreground everywhere
	       stipple has a one
4mStippled24m	    Foreground masked by stipple


For the odd dashes for line requests with line-style 4mDou-0m
4mbleDash24m:

4mSolid24m	    Background
4mTiled24m	    Same as for even dashes
4mOpaqueStip-24m    Same as for even dashes
4mpled0m
4mStippled24m	    Background masked by stipple


The dashes value allowed here is actually a simplified form
of the more general patterns that can be set with 4mSetDashes24m.
Specifying a value of N here is equivalent to specifying the
two element list [N, N] in 4mSetDashes24m.  The value must be
nonzero (or a 4mValue24m error results).  The meaning of dash-
offset and dashes are explained in the 4mSetDashes24m request.

The clip-mask restricts writes to the destination drawable.
Only pixels where the clip-mask has bits set to 1 are drawn.
Pixels are not drawn outside the area covered by the clip-
mask or where the clip-mask has bits set to 0.	The clip-
mask affects all graphics requests, but it does not clip
sources.  The clip-mask origin is interpreted relative to
the origin of whatever destination drawable is specified in
a graphics request.  If a pixmap is specified as the clip-
mask, it must have depth 1 and have the same root as the
gcontext (or a 4mMatch24m error results).  If clip-mask is 4mNone24m,
then pixels are always drawn, regardless of the clip origin.
The clip-mask can also be set with the 4mSetClipRectangles0m
request.

For 4mClipByChildren24m, both source and destination windows are
additionally clipped by all viewable 4mInputOutput24m children.
For 4mIncludeInferiors24m, neither source nor destination window
is clipped by inferiors.  This will result in including sub-
window contents in the source and drawing through subwindow
boundaries of the destination.	The use of 4mIncludeInferiors0m



			     1m630m





1mX Protocol				X11, Release 6.7 DRAFT0m


with a source or destination window of one depth with mapped
inferiors of differing depth is not illegal, but the seman-
tics is undefined by the core protocol.

The fill-rule defines what pixels are inside (that is, are
drawn) for paths given in 4mFillPoly24m requests.  4mEvenOdd24m means
a point is inside if an infinite ray with the point as ori-
gin crosses the path an odd number of times.  For 4mWinding24m, a
point is inside if an infinite ray with the point as origin
crosses an unequal number of clockwise and counterclockwise
directed path segments.	 A clockwise directed path segment
is one that crosses the ray from left to right as observed
from the point.	 A counter-clockwise segment is one that
crosses the ray from right to left as observed from the
point.	The case where a directed line segment is coincident
with the ray is uninteresting because one can simply choose
a different ray that is not coincident with a segment.

For both fill rules, a point is infinitely small and the
path is an infinitely thin line.  A pixel is inside if the
center point of the pixel is inside and the center point is
not on the boundary.  If the center point is on the bound-
ary, the pixel is inside if and only if the polygon interior
is immediately to its right (x increasing direction).  Pix-
els with centers along a horizontal edge are a special case
and are inside if and only if the polygon interior is imme-
diately below (y increasing direction).

The arc-mode controls filling in the 4mPolyFillArc24m request.

The graphics-exposures flag controls 4mGraphicsExposure24m event
generation for 4mCopyArea24m and 4mCopyPlane24m requests (and any sim-
ilar requests defined by extensions).

The default component values are:

---------------------------------------------------------------
1mComponent		Default0m
---------------------------------------------------------------
function	      4mCopy0m
plane-mask	      all ones
foreground	      0
background	      1
line-width	      0
line-style	      4mSolid0m
cap-style	      4mButt0m
join-style	      4mMiter0m
fill-style	      4mSolid0m
fill-rule	      4mEvenOdd0m
arc-mode	      4mPieSlice0m







			     1m640m





1mX Protocol				X11, Release 6.7 DRAFT0m


---------------------------------------------------------------
1mComponent		Default0m
---------------------------------------------------------------
tile		      Pixmap of unspecified size filled with
		      foreground pixel
		      (that is, client specified pixel if any,
		      else 0)
		      (subsequent changes to foreground do not
		      affect this pixmap)
stipple		      Pixmap of unspecified size filled with
		      ones
tile-stipple-x-ori-   0
gin
tile-stipple-y-ori-   0
gin
font		      <server-dependent-font>
subwindow-mode	      4mClipByChildren0m
graphics-exposures    4mTrue0m
clip-x-origin	      0
clip-y-origin	      0
clip-mask	      4mNone0m
dash-offset	      0
dashes		      4 (that is, the list [4, 4])
---------------------------------------------------------------


Storing a pixmap in a gcontext might or might not result in
a copy being made.  If the pixmap is later used as the des-
tination for a graphics request, the change might or might
not be reflected in the gcontext.  If the pixmap is used
simultaneously in a graphics request as both a destination
and as a tile or stipple, the results are not defined.

It is quite likely that some amount of gcontext information
will be cached in display hardware and that such hardware
can only cache a small number of gcontexts.  Given the num-
ber and complexity of components, clients should view
switching between gcontexts with nearly identical state as
significantly more expensive than making minor changes to a
single gcontext.


__
|    4mChangeGC0m

  4mgc24m: GCONTEXT
  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

|__    Errors: 4mAlloc24m, 4mFont24m, 4mGContext24m, 4mMatch24m, 4mPixmap24m, 4mValue0m


This request changes components in gc.	The value-mask and
value-list specify which components are to be changed.	The



			     1m650m





1mX Protocol				X11, Release 6.7 DRAFT0m


values and restrictions are the same as for 4mCreateGC24m.

Changing the clip-mask also overrides any previous 4mSet-0m
4mClipRectangles24m request on the context.  Changing dash-offset
or dashes overrides any previous 4mSetDashes24m request on the
context.

The order in which components are verified and altered is
server-dependent.  If an error is generated, a subset of the
components may have been altered.


__
|    4mCopyGC0m

  4msrc-gc24m, 4mdst-gc24m: GCONTEXT
  4mvalue-mask24m: BITMASK

|__    Errors: 4mAlloc24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request copies components from src-gc to dst-gc.  The
value-mask specifies which components to copy, as for 4mCre-0m
4mateGC24m.  The two gcontexts must have the same root and the
same depth (or a 4mMatch24m error results).


__
|    4mSetDashes0m

  4mgc24m: GCONTEXT
  4mdash-offset24m: CARD16
  4mdashes24m: LISTofCARD8

|__    Errors: 4mAlloc24m, 4mGContext24m, 4mValue0m


This request sets dash-offset and dashes in gc for dashed
line styles.  Dashes cannot be empty (or a 4mValue24m error
results).  Specifying an odd-length list is equivalent to
specifying the same list concatenated with itself to produce
an even-length list.  The initial and alternating elements
of dashes are the even dashes; the others are the odd
dashes.	 Each element specifies a dash length in pixels.
All of the elements must be nonzero (or a 4mValue24m error
results).  The dash-offset defines the phase of the pattern,
specifying how many pixels into dashes the pattern should
actually begin in any single graphics request.	Dashing is
continuous through path elements combined with a join-style
but is reset to the dash-offset between each sequence of
joined lines.

The unit of measure for dashes is the same as in the ordi-
nary coordinate system.	 Ideally, a dash length is measured



			     1m660m





1mX Protocol				X11, Release 6.7 DRAFT0m


along the slope of the line, but implementations are only
required to match this ideal for horizontal and vertical
lines.	Failing the ideal semantics, it is suggested that
the length be measured along the major axis of the line.
The major axis is defined as the x axis for lines drawn at
an angle of between -45 and +45 degrees or between 135 and
225 degrees from the x axis.  For all other lines, the major
axis is the y axis.

For any graphics primitive, the computation of the endpoint
of an individual dash only depends on the geometry of the
primitive, the start position of the dash, the direction of
the dash, and the dash length.

For any graphics primitive, the total set of pixels used to
render the primitive (both even and odd numbered dash ele-
ments) with 4mDoubleDash24m line-style is the same as the set of
pixels used to render the primitive with 4mSolid24m line-style.

For any graphics primitive, if the primitive is drawn with
4mOnOffDash24m or 4mDoubleDash24m line-style unclipped at position
[x,y] and again at position [x+dx,y+dy], then a point
[x1,y1] is included in a dash in the first instance if and
only if the point [x1+dx,y1+dy] is included in the dash in
the second instance.  In addition, the effective set of
points comprising a dash cannot be affected by clipping.  A
point is included in a clipped dash if and only if the point
lies inside the clipping region and the point would be
included in the dash when drawn unclipped.


__
|    4mSetClipRectangles0m

  4mgc24m: GCONTEXT
  4mclip-x-origin24m, 4mclip-y-origin24m: INT16
  4mrectangles24m: LISTofRECTANGLE
  4mordering24m: {4mUnSorted24m, 4mYSorted24m, 4mYXSorted24m, 4mYXBanded24m}

|__    Errors: 4mAlloc24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request changes clip-mask in gc to the specified list
of rectangles and sets the clip origin.	 Output will be
clipped to remain contained within the rectangles.  The clip
origin is interpreted relative to the origin of whatever
destination drawable is specified in a graphics request.
The rectangle coordinates are interpreted relative to the
clip origin.  The rectangles should be nonintersecting, or
graphics results will be undefined.  Note that the list of
rectangles can be empty, which effectively disables output.
This is the opposite of passing 4mNone24m as the clip-mask in
4mCreateGC24m and 4mChangeGC24m.




			     1m670m





1mX Protocol				X11, Release 6.7 DRAFT0m


If known by the client, ordering relations on the rectangles
can be specified with the ordering argument.  This may pro-
vide faster operation by the server.  If an incorrect order-
ing is specified, the server may generate a 4mMatch24m error, but
it is not required to do so.  If no error is generated, the
graphics results are undefined.	 4mUnSorted24m means that the
rectangles are in arbitrary order.  4mYSorted24m means that the
rectangles are nondecreasing in their Y origin.	 4mYXSorted0m
additionally constrains 4mYSorted24m order in that all rectangles
with an equal Y origin are nondecreasing in their X origin.
4mYXBanded24m additionally constrains 4mYXSorted24m by requiring that,
for every possible Y scanline, all rectangles that include
that scanline have identical Y origins and Y extents.


__
|    4mFreeGC0m

  4mgc24m: GCONTEXT

|__    Errors: 4mGContext0m


This request deletes the association between the resource ID
and the gcontext and destroys the gcontext.


__
|    4mClearArea0m

  4mwindow24m: WINDOW
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m: CARD16
  4mexposures24m: BOOL

|__    Errors: 4mMatch24m, 4mValue24m, 4mWindow0m


The x and y coordinates are relative to the window's origin
and specify the upper-left corner of the rectangle.  If
width is zero, it is replaced with the current width of the
window minus x.	 If height is zero, it is replaced with the
current height of the window minus y.  If the window has a
defined background tile, the rectangle is tiled with a
plane-mask of all ones and function of 4mCopy24m and a subwindow-
mode of 4mClipByChildren24m.  If the window has background 4mNone24m,
the contents of the window are not changed.  In either case,
if exposures is 4mTrue24m, then one or more exposure events are
generated for regions of the rectangle that are either visi-
ble or are being retained in a backing store.

It is a 4mMatch24m error to use an 4mInputOnly24m window in this
request.




			     1m680m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mCopyArea0m

  4msrc-drawable24m, 4mdst-drawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4msrc-x24m, 4msrc-y24m: INT16
  4mwidth24m, 4mheight24m: CARD16
  4mdst-x24m, 4mdst-y24m: INT16

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


This request combines the specified rectangle of src-draw-
able with the specified rectangle of dst-drawable.  The src-
x and src-y coordinates are relative to src-drawable's ori-
gin.  The dst-x and dst-y are relative to dst-drawable's
origin, each pair specifying the upper-left corner of the
rectangle.  The src-drawable must have the same root and the
same depth as dst-drawable (or a 4mMatch24m error results).

If regions of the source rectangle are obscured and have not
been retained in backing store or if regions outside the
boundaries of the source drawable are specified, then those
regions are not copied, but the following occurs on all cor-
responding destination regions that are either visible or
are retained in backing-store.	If the dst-drawable is a
window with a background other than 4mNone24m, these correspond-
ing destination regions are tiled (with plane-mask of all
ones and function 4mCopy24m) with that background.  Regardless of
tiling and whether the destination is a window or a pixmap,
if graphics-exposures in gc is 4mTrue24m, then 4mGraphicsExposure0m
events for all corresponding destination regions are gener-
ated.

If graphics-exposures is 4mTrue24m but no 4mGraphicsExposure24m events
are generated, then a 4mNoExposure24m event is generated.

GC components: function, plane-mask, subwindow-mode, graph-
ics-exposures, clip-x-origin, clip-y-origin, clip-mask


__
|    4mCopyPlane0m

  4msrc-drawable24m, 4mdst-drawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4msrc-x24m, 4msrc-y24m: INT16
  4mwidth24m, 4mheight24m: CARD16
  4mdst-x24m, 4mdst-y24m: INT16
  4mbit-plane24m: CARD32

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch24m, 4mValue0m






			     1m690m





1mX Protocol				X11, Release 6.7 DRAFT0m


The src-drawable must have the same root as dst-drawable (or
a 4mMatch24m error results), but it need not have the same depth.
The bit-plane must have exactly one bit set to 1 and the
value of bit-plane must be less than 24mn24m where 4mn24m is the depth
of src-drawable (or a 4mValue24m error results).  Effectively, a
pixmap of the same depth as dst-drawable and with size spec-
ified by the source region is formed using the fore-
ground/background pixels in gc (foreground everywhere the
bit-plane in src-drawable contains a bit set to 1, back-
ground everywhere the bit-plane contains a bit set to 0),
and the equivalent of a 4mCopyArea24m is performed, with all the
same exposure semantics.  This can also be thought of as
using the specified region of the source bit-plane as a
stipple with a fill-style of 4mOpaqueStippled24m for filling a
rectangular area of the destination.

GC components: function, plane-mask, foreground, background,
subwindow-mode, graphics-exposures, clip-x-origin, clip-y-
origin, clip-mask


__
|    4mPolyPoint0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mcoordinate-mode24m: {4mOrigin24m, 4mPrevious24m}
  4mpoints24m: LISTofPOINT

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request combines the foreground pixel in gc with the
pixel at each point in the drawable.  The points are drawn
in the order listed.

The first point is always relative to the drawable's origin.
The rest are relative either to that origin or the previous
point, depending on the coordinate-mode.

GC components: function, plane-mask, foreground, subwindow-
mode, clip-x-origin, clip-y-origin, clip-mask















			     1m700m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mPolyLine0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mcoordinate-mode24m: {4mOrigin24m, 4mPrevious24m}
  4mpoints24m: LISTofPOINT

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request draws lines between each pair of points
(point[i], point[i+1]).	 The lines are drawn in the order
listed.	 The lines join correctly at all intermediate
points, and if the first and last points coincide, the first
and last lines also join correctly.

For any given line, no pixel is drawn more than once.  If
thin (zero line-width) lines intersect, the intersecting
pixels are drawn multiple times.  If wide lines intersect,
the intersecting pixels are drawn only once, as though the
entire 4mPolyLine24m were a single filled shape.

The first point is always relative to the drawable's origin.
The rest are relative either to that origin or the previous
point, depending on the coordinate-mode.

When either of the two lines involved in a 4mBevel24m join is
neither vertical nor horizontal, then the slope and position
of the line segment defining the bevel join edge is imple-
mentation dependent.  However, the computation of the slope
and distance (relative to the join point) only depends on
the line width and the slopes of the two lines.

GC components: function, plane-mask, line-width, line-style,
cap-style, join-style, fill-style, subwindow-mode, clip-x-
origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-
offset, dashes

















			     1m710m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mPolySegment0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4msegments24m: LISTofSEGMENT

  where:

  SEGMENT: [x1, y1, x2, y2: INT16]

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


For each segment, this request draws a line between [x1, y1]
and [x2, y2].  The lines are drawn in the order listed.	 No
joining is performed at coincident endpoints.  For any given
line, no pixel is drawn more than once.	 If lines intersect,
the intersecting pixels are drawn multiple times.

GC components: function, plane-mask, line-width, line-style,
cap-style, fill-style, subwindow-mode, clip-x-origin, clip-
y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-
offset, dashes


__
|    4mPolyRectangle0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mrectangles24m: LISTofRECTANGLE

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


This request draws the outlines of the specified rectangles,
as if a five-point 4mPolyLine24m were specified for each rectan-
gle:


     [x,y] [x+width,y] [x+width,y+height] [x,y+height] [x,y]


The x and y coordinates of each rectangle are relative to
the drawable's origin and define the upper-left corner of
the rectangle.

The rectangles are drawn in the order listed.  For any given
rectangle, no pixel is drawn more than once.  If rectangles
intersect, the intersecting pixels are drawn multiple times.




			     1m720m





1mX Protocol				X11, Release 6.7 DRAFT0m


GC components: function, plane-mask, line-width, line-style,
cap-style, join-style, fill-style, subwindow-mode, clip-x-
origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-
offset, dashes


__
|    4mPolyArc0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4marcs24m: LISTofARC

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


This request draws circular or elliptical arcs.	 Each arc is
specified by a rectangle and two angles.  The angles are
signed integers in degrees scaled by 64, with positive indi-
cating counterclockwise motion and negative indicating
clockwise motion.  The start of the arc is specified by
angle1 relative to the three-o'clock position from the cen-
ter of the rectangle, and the path and extent of the arc is
specified by angle2 relative to the start of the arc.  If
the magnitude of angle2 is greater than 360 degrees, it is
truncated to 360 degrees.  The x and y coordinates of the
rectangle are relative to the origin of the drawable.  For
an arc specified as [x,y,w,h,a1,a2], the origin of the major
and minor axes is at [x+(w/2),y+(h/2)], and the infinitely
thin path describing the entire circle/ellipse intersects
the horizontal axis at [x,y+(h/2)] and [x+w,y+(h/2)] and
intersects the vertical axis at [x+(w/2),y] and
[x+(w/2),y+h].	These coordinates are not necessarily inte-
gral; that is, they are not truncated to discrete coordi-
nates.

For a wide line with line-width lw, the ideal bounding out-
lines for filling are given by the two infinitely thin paths
consisting of all points whose perpendicular distance from a
tangent to the path of the circle/ellipse is equal to lw/2
(which may be a fractional value).  When the width and
height of the arc are not equal and both are nonzero, then
the actual bounding outlines are implementation dependent.
However, the computation of the shape and position of the
bounding outlines (relative to the center of the arc) only
depends on the width and height of the arc and the line-
width.

The cap-style is applied the same as for a line correspond-
ing to the tangent of the circle/ellipse at the endpoint.
When the angle of an arc face is not an integral multiple of



			     1m730m





1mX Protocol				X11, Release 6.7 DRAFT0m


90 degrees, and the width and height of the arc are both are
nonzero, then the shape and position of the cap at that face
is implementation dependent.  However, for a 4mButt24m cap, the
face is defined by a straight line, and the computation of
the position (relative to the center of the arc) and the
slope of the line only depends on the width and height of
the arc and the angle of the arc face.	For other cap
styles, the computation of the position (relative to the
center of the arc) and the shape of the cap only depends on
the width and height of the arc, the line-width, the angle
of the arc face, and the direction (clockwise or counter
clockwise) of the arc from the endpoint.

The join-style is applied the same as for two lines corre-
sponding to the tangents of the circles/ellipses at the join
point.	When the width and height of both arcs are nonzero,
and the angle of either arc face is not an integral multiple
of 90 degrees, then the shape of the join is implementation
dependent.  However, the computation of the shape only
depends on the width and height of each arc, the line-width,
the angles of the two arc faces, the direction (clockwise or
counter clockwise) of the arcs from the join point, and the
relative orientation of the two arc center points.

For an arc specified as [x,y,w,h,a1,a2], the angles must be
specified in the effectively skewed coordinate system of the
ellipse (for a circle, the angles and coordinate systems are
identical).  The relationship between these angles and
angles expressed in the normal coordinate system of the
screen (as measured with a protractor) is as follows:

     skewed-angle = atan(tan(normal-angle) * w/h) + adjust


The skewed-angle and normal-angle are expressed in radians
(rather than in degrees scaled by 64) in the range [0,2*PI).
The atan returns a value in the range [-PI/2,PI/2].  The
adjust is:

     0	    for normal-angle in the range [0,PI/2)
     PI	    for normal-angle in the range [PI/2,(3*PI)/2)
     2*PI   for normal-angle in the range [(3*PI)/2,2*PI)


The arcs are drawn in the order listed.	 If the last point
in one arc coincides with the first point in the following
arc, the two arcs will join correctly.	If the first point
in the first arc coincides with the last point in the last
arc, the two arcs will join correctly.	For any given arc,
no pixel is drawn more than once.  If two arcs join cor-
rectly and the line-width is greater than zero and the arcs
intersect, no pixel is drawn more than once.  Otherwise, the
intersecting pixels of intersecting arcs are drawn multiple
times.	Specifying an arc with one endpoint and a clockwise



			     1m740m





1mX Protocol				X11, Release 6.7 DRAFT0m


extent draws the same pixels as specifying the other end-
point and an equivalent counterclockwise extent, except as
it affects joins.

By specifying one axis to be zero, a horizontal or vertical
line can be drawn.

Angles are computed based solely on the coordinate system,
ignoring the aspect ratio.

GC components: function, plane-mask, line-width, line-style,
cap-style, join-style, fill-style, subwindow-mode, clip-x-
origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin, dash-
offset, dashes


__
|    4mFillPoly0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mshape24m: {4mComplex24m, 4mNonconvex24m, 4mConvex24m}
  4mcoordinate-mode24m: {4mOrigin24m, 4mPrevious24m}
  4mpoints24m: LISTofPOINT

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request fills the region closed by the specified path.
The path is closed automatically if the last point in the
list does not coincide with the first point.  No pixel of
the region is drawn more than once.

The first point is always relative to the drawable's origin.
The rest are relative either to that origin or the previous
point, depending on the coordinate-mode.

The shape parameter may be used by the server to improve
performance.  4mComplex24m means the path may self-intersect.
Contiguous coincident points in the path are not treated as
self-intersection.

4mNonconvex24m means the path does not self-intersect, but the
shape is not wholly convex.  If known by the client, speci-
fying 4mNonconvex24m over 4mComplex24m may improve performance.	 If
4mNonconvex24m is specified for a self-intersecting path, the
graphics results are undefined.

4mConvex24m means that for every pair of points inside the poly-
gon, the line segment connecting them does not intersect the
path.  If known by the client, specifying 4mConvex24m can improve



			     1m750m





1mX Protocol				X11, Release 6.7 DRAFT0m


performance.  If 4mConvex24m is specified for a path that is not
convex, the graphics results are undefined.

GC components: function, plane-mask, fill-style, fill-rule,
subwindow-mode, clip-x-origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin


__
|    4mPolyFillRectangle0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mrectangles24m: LISTofRECTANGLE

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


This request fills the specified rectangles, as if a four-
point 4mFillPoly24m were specified for each rectangle:

     [x,y] [x+width,y] [x+width,y+height] [x,y+height]


The x and y coordinates of each rectangle are relative to
the drawable's origin and define the upper-left corner of
the rectangle.

The rectangles are drawn in the order listed.  For any given
rectangle, no pixel is drawn more than once.  If rectangles
intersect, the intersecting pixels are drawn multiple times.

GC components: function, plane-mask, fill-style, subwindow-
mode, clip-x-origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin


__
|    4mPolyFillArc0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4marcs24m: LISTofARC

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


For each arc, this request fills the region closed by the
infinitely thin path described by the specified arc and one
or two line segments, depending on the arc-mode.  For 4mChord24m,



			     1m760m





1mX Protocol				X11, Release 6.7 DRAFT0m


the single line segment joining the endpoints of the arc is
used.  For 4mPieSlice24m, the two line segments joining the end-
points of the arc with the center point are used.

For an arc specified as [x,y,w,h,a1,a2], the origin of the
major and minor axes is at [x+(w/2),y+(h/2)], and the infin-
itely thin path describing the entire circle/ellipse inter-
sects the horizontal axis at [x,y+(h/2)] and [x+w,y+(h/2)]
and intersects the vertical axis at [x+(w/2),y] and
[x+(w/2),y+h].	These coordinates are not necessarily inte-
gral; that is, they are not truncated to discrete coordi-
nates.

The arc angles are interpreted as specified in the 4mPolyArc0m
request.  When the angle of an arc face is not an integral
multiple of 90 degrees, then the precise endpoint on the arc
is implementation dependent.  However, for 4mChord24m arc-mode,
the computation of the pair of endpoints (relative to the
center of the arc) only depends on the width and height of
the arc and the angles of the two arc faces.  For 4mPieSlice0m
arc-mode, the computation of an endpoint only depends on the
angle of the arc face for that endpoint and the ratio of the
arc width to arc height.

The arcs are filled in the order listed.  For any given arc,
no pixel is drawn more than once.  If regions intersect, the
intersecting pixels are drawn multiple times.

GC components: function, plane-mask, fill-style, arc-mode,
subwindow-mode, clip-x-origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin


__
|    4mPutImage0m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mdepth24m: CARD8
  4mwidth24m, 4mheight24m: CARD16
  4mdst-x24m, 4mdst-y24m: INT16
  4mleft-pad24m: CARD8
  4mformat24m: {4mBitmap24m, 4mXYPixmap24m, 4mZPixmap24m}
  4mdata24m: LISTofBYTE

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch24m, 4mValue0m


This request combines an image with a rectangle of the draw-
able.  The dst-x and dst-y coordinates are relative to the
drawable's origin.




			     1m770m





1mX Protocol				X11, Release 6.7 DRAFT0m


If 4mBitmap24m format is used, then depth must be one (or a 4mMatch0m
error results), and the image must be in XY format.  The
foreground pixel in gc defines the source for bits set to 1
in the image, and the background pixel defines the source
for the bits set to 0.

For 4mXYPixmap24m and 4mZPixmap24m, the depth must match the depth of
the drawable (or a 4mMatch24m error results).  For 4mXYPixmap24m, the
image must be sent in XY format.  For 4mZPixmap24m, the image
must be sent in the Z format defined for the given depth.

The left-pad must be zero for 4mZPixmap24m format (or a 4mMatch0m
error results).	 For 4mBitmap24m and 4mXYPixmap24m format, left-pad
must be less than bitmap-scanline-pad as given in the server
connection setup information (or a 4mMatch24m error results).
The first left-pad bits in every scanline are to be ignored
by the server.	The actual image begins that many bits into
the data.  The width argument defines the width of the
actual image and does not include left-pad.

GC components: function, plane-mask, subwindow-mode, clip-x-
origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background


__
|    4mGetImage0m

  4mdrawable24m: DRAWABLE
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m: CARD16
  4mplane-mask24m: CARD32
  4mformat24m: {4mXYPixmap24m, 4mZPixmap24m}

   ->

  depth: CARD8
  visual: VISUALID or 4mNone0m
  data: LISTofBYTE

|__    Errors: 4mDrawable24m, 4mMatch24m, 4mValue0m


This request returns the contents of the given rectangle of
the drawable in the given format.  The x and y coordinates
are relative to the drawable's origin and define the upper-
left corner of the rectangle.  If 4mXYPixmap24m is specified,
only the bit planes specified in plane-mask are transmitted,
with the planes appearing from most significant to least
significant in bit order.  If 4mZPixmap24m is specified, then
bits in all planes not specified in plane-mask are transmit-
ted as zero.  Range checking is not performed on plane-mask;
extraneous bits are simply ignored.  The returned depth is



			     1m780m





1mX Protocol				X11, Release 6.7 DRAFT0m


as specified when the drawable was created and is the same
as a depth component in a FORMAT structure (in the connec-
tion setup), not a bits-per-pixel component.  If the draw-
able is a window, its visual type is returned.	If the draw-
able is a pixmap, the visual is 4mNone24m.

If the drawable is a pixmap, then the given rectangle must
be wholly contained within the pixmap (or a 4mMatch24m error
results).  If the drawable is a window, the window must be
viewable, and it must be the case that, if there were no
inferiors or overlapping windows, the specified rectangle of
the window would be fully visible on the screen and wholly
contained within the outside edges of the window (or a 4mMatch0m
error results).	 Note that the borders of the window can be
included and read with this request.  If the window has a
backing store, then the backing-store contents are returned
for regions of the window that are obscured by noninferior
windows; otherwise, the returned contents of such obscured
regions are undefined.	Also undefined are the returned con-
tents of visible regions of inferiors of different depth
than the specified window.  The pointer cursor image is not
included in the contents returned.

This request is not general-purpose in the same sense as
other graphics-related requests.  It is intended specifi-
cally for rudimentary hardcopy support.


__
|    4mPolyText80m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mx24m, 4my24m: INT16
  4mitems24m: LISTofTEXTITEM8

  where:

  TEXTITEM8:   TEXTELT8 or FONT
   TEXTELT8:   [delta: INT8
		string: STRING8]


|__    Errors: 4mDrawable24m, 4mFont24m, 4mGContext24m, 4mMatch0m


The x and y coordinates are relative to the drawable's ori-
gin and specify the baseline starting position (the initial
character origin).  Each text item is processed in turn.  A
font item causes the font to be stored in gc and to be used
for subsequent text.  Switching among fonts does not affect
the next character origin.  A text element delta specifies
an additional change in the position along the x axis before
the string is drawn; the delta is always added to the



			     1m790m





1mX Protocol				X11, Release 6.7 DRAFT0m


character origin.  Each character image, as defined by the
font in gc, is treated as an additional mask for a fill
operation on the drawable.

All contained FONTs are always transmitted most significant
byte first.

If a 4mFont24m error is generated for an item, the previous items
may have been drawn.

For fonts defined with 2-byte matrix indexing, each STRING8
byte is interpreted as a byte2 value of a CHAR2B with a
byte1 value of zero.

GC components: function, plane-mask, fill-style, font, sub-
window-mode, clip-x-origin, clip-y-origin, clip-mask

GC mode-dependent components: foreground, background, tile,
stipple, tile-stipple-x-origin, tile-stipple-y-origin


__
|    4mPolyText160m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mx24m, 4my24m: INT16
  4mitems24m: LISTofTEXTITEM16

  where:

  TEXTITEM16:	TEXTELT16 or FONT
   TEXTELT16:	[delta: INT8
		 string: STRING16]


|__    Errors: 4mDrawable24m, 4mFont24m, 4mGContext24m, 4mMatch0m


This request is similar to 4mPolyText824m, except 2-byte (or
16-bit) characters are used.  For fonts defined with linear
indexing rather than 2-byte matrix indexing, the server will
interpret each CHAR2B as a 16-bit number that has been
transmitted most significant byte first (that is, byte1 of
the CHAR2B is taken as the most significant byte).












			     1m800m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mImageText80m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mx24m, 4my24m: INT16
  4mstring24m: STRING8

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


The x and y coordinates are relative to the drawable's ori-
gin and specify the baseline starting position (the initial
character origin).  The effect is first to fill a destina-
tion rectangle with the background pixel defined in gc and
then to paint the text with the foreground pixel.  The
upper-left corner of the filled rectangle is at:

     [x, y - font-ascent]


the width is:

     overall-width


and the height is:

     font-ascent + font-descent


The overall-width, font-ascent, and font-descent are as they
would be returned by a 4mQueryTextExtents24m call using gc and
string.

The function and fill-style defined in gc are ignored for
this request.  The effective function is 4mCopy24m, and the
effective fill-style 4mSolid24m.

For fonts defined with 2-byte matrix indexing, each STRING8
byte is interpreted as a byte2 value of a CHAR2B with a
byte1 value of zero.

GC components: plane-mask, foreground, background, font,
subwindow-mode, clip-x-origin, clip-y-origin, clip-mask













			     1m810m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mImageText160m

  4mdrawable24m: DRAWABLE
  4mgc24m: GCONTEXT
  4mx24m, 4my24m: INT16
  4mstring24m: STRING16

|__    Errors: 4mDrawable24m, 4mGContext24m, 4mMatch0m


This request is similar to 4mImageText824m, except 2-byte (or
16-bit) characters are used.  For fonts defined with linear
indexing rather than 2-byte matrix indexing, the server will
interpret each CHAR2B as a 16-bit number that has been
transmitted most significant byte first (that is, byte1 of
the CHAR2B is taken as the most significant byte).


__
|    4mCreateColormap0m

  4mmid24m: COLORMAP
  4mvisual24m: VISUALID
  4mwindow24m: WINDOW
  4malloc24m: {4mNone24m, 4mAll24m}

|__    Errors: 4mAlloc24m, 4mIDChoice24m, 4mMatch24m, 4mValue24m, 4mWindow0m


This request creates a colormap of the specified visual type
for the screen on which the window resides and associates
the identifier mid with it.  The visual type must be one
supported by the screen (or a 4mMatch24m error results).  The
initial values of the colormap entries are undefined for
classes 4mGrayScale24m, 4mPseudoColor24m, and 4mDirectColor24m.	 For 4mStat-0m
4micGray24m, 4mStaticColor24m, and 4mTrueColor24m, the entries will have
defined values, but those values are specific to the visual
and are not defined by the core protocol.  For 4mStaticGray24m,
4mStaticColor24m, and 4mTrueColor24m, alloc must be specified as 4mNone0m
(or a 4mMatch24m error results).  For the other classes, if alloc
is 4mNone24m, the colormap initially has no allocated entries,
and clients can allocate entries.

If alloc is 4mAll24m, then the entire colormap is allocated
writable.  The initial values of all allocated entries are
undefined.  For 4mGrayScale24m and 4mPseudoColor24m, the effect is as
if an 4mAllocColorCells24m request returned all pixel values from
zero to N - 1, where N is the colormap-entries value in the
specified visual.  For 4mDirectColor24m, the effect is as if an
4mAllocColorPlanes24m request returned a pixel value of zero and
red-mask, green-mask, and blue-mask values containing the
same bits as the corresponding masks in the specified
visual.	 However, in all cases, none of these entries can be
freed with 4mFreeColors24m.



			     1m820m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mFreeColormap0m

  4mcmap24m: COLORMAP

|__    Errors: 4mColormap0m


This request deletes the association between the resource ID
and the colormap and frees the colormap storage.  If the
colormap is an installed map for a screen, it is uninstalled
(see 4mUninstallColormap24m request).  If the colormap is defined
as the colormap for a window (by means of 4mCreateWindow24m or
4mChangeWindowAttributes24m), the colormap for the window is
changed to 4mNone24m, and a 4mColormapNotify24m event is generated.
The protocol does not define the colors displayed for a win-
dow with a colormap of 4mNone24m.

This request has no effect on a default colormap for a
screen.


__
|    4mCopyColormapAndFree0m

  4mmid24m, 4msrc-cmap24m: COLORMAP

|__    Errors: 4mAlloc24m, 4mColormap24m, 4mIDChoice0m


This request creates a colormap of the same visual type and
for the same screen as src-cmap, and it associates identi-
fier mid with it.  It also moves all of the client's exist-
ing allocations from src-cmap to the new colormap with their
color values intact and their read-only or writable charac-
teristics intact, and it frees those entries in src-cmap.
Color values in other entries in the new colormap are unde-
fined.	If src-cmap was created by the client with alloc 4mAll0m
(see 4mCreateColormap24m request), then the new colormap is also
created with alloc 4mAll24m, all color values for all entries are
copied from src-cmap, and then all entries in src-cmap are
freed.	If src-cmap was not created by the client with alloc
4mAll24m, then the allocations to be moved are all those pixels
and planes that have been allocated by the client using
either 4mAllocColor24m, 4mAllocNamedColor24m, 4mAllocColorCells24m, or
4mAllocColorPlanes24m and that have not been freed since they
were allocated.











			     1m830m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mInstallColormap0m

  4mcmap24m: COLORMAP

|__    Errors: 4mColormap0m


This request makes this colormap an installed map for its
screen.	 All windows associated with this colormap immedi-
ately display with true colors.	 As a side effect, addi-
tional colormaps might be implicitly installed or unin-
stalled by the server.	Which other colormaps get installed
or uninstalled is server-dependent except that the required
list must remain installed.

If cmap is not already an installed map, a 4mColormapNotify0m
event is generated on every window having cmap as an
attribute.  In addition, for every other colormap that is
installed or uninstalled as a result of the request, a 4mCol-0m
4mormapNotify24m event is generated on every window having that
colormap as an attribute.

At any time, there is a subset of the installed maps that
are viewed as an ordered list and are called the required
list.  The length of the required list is at most M, where M
is the min-installed-maps specified for the screen in the
connection setup.  The required list is maintained as fol-
lows.  When a colormap is an explicit argument to 4mInstall-0m
4mColormap24m, it is added to the head of the list; the list is
truncated at the tail, if necessary, to keep the length of
the list to at most M.	When a colormap is an explicit argu-
ment to 4mUninstallColormap24m and it is in the required list, it
is removed from the list.  A colormap is not added to the
required list when it is installed implicitly by the server,
and the server cannot implicitly uninstall a colormap that
is in the required list.

Initially the default colormap for a screen is installed
(but is not in the required list).


__
|    4mUninstallColormap0m

  4mcmap24m: COLORMAP

|__    Errors: 4mColormap0m


If cmap is on the required list for its screen (see 4mInstall-0m
4mColormap24m request), it is removed from the list.  As a side
effect, cmap might be uninstalled, and additional colormaps
might be implicitly installed or uninstalled.  Which col-
ormaps get installed or uninstalled is server-dependent



			     1m840m





1mX Protocol				X11, Release 6.7 DRAFT0m


except that the required list must remain installed.

If cmap becomes uninstalled, a 4mColormapNotify24m event is gen-
erated on every window having cmap as an attribute.  In
addition, for every other colormap that is installed or
uninstalled as a result of the request, a 4mColormapNotify0m
event is generated on every window having that colormap as
an attribute.


__
|    4mListInstalledColormaps0m

  4mwindow24m: WINDOW

   ->

  cmaps: LISTofCOLORMAP

|__    Errors: 4mWindow0m


This request returns a list of the currently installed col-
ormaps for the screen of the specified window.	The order of
colormaps is not significant, and there is no explicit indi-
cation of the required list (see 4mInstallColormap24m request).


__
|    4mAllocColor0m

  4mcmap24m: COLORMAP
  4mred24m, 4mgreen24m, 4mblue24m: CARD16

   ->

  pixel: CARD32
  red, green, blue: CARD16

|__    Errors: 4mAlloc24m, 4mColormap0m


This request allocates a read-only colormap entry corre-
sponding to the closest RGB values provided by the hardware.
It also returns the pixel and the RGB values actually used.
Multiple clients requesting the same effective RGB values
can be assigned the same read-only entry, allowing entries
to be shared.









			     1m850m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mAllocNamedColor0m

  4mcmap24m: COLORMAP
  4mname24m: STRING8

   ->

  pixel: CARD32
  exact-red, exact-green, exact-blue: CARD16
  visual-red, visual-green, visual-blue: CARD16

|__    Errors: 4mAlloc24m, 4mColormap24m, 4mName0m


This request looks up the named color with respect to the
screen associated with the colormap.  Then, it does an
4mAllocColor24m on cmap.  The name should use the ISO Latin-1
encoding, and uppercase and lowercase do not matter.  The
exact RGB values specify the true values for the color, and
the visual values specify the values actually used in the
colormap.


__
|    4mAllocColorCells0m

  4mcmap24m: COLORMAP
  4mcolors24m, 4mplanes24m: CARD16
  4mcontiguous24m: BOOL

   ->

  pixels, masks: LISTofCARD32

|__    Errors: 4mAlloc24m, 4mColormap24m, 4mValue0m


The number of colors must be positive, and the number of
planes must be nonnegative (or a 4mValue24m error results).  If C
colors and P planes are requested, then C pixels and P masks
are returned.  No mask will have any bits in common with any
other mask or with any of the pixels.  By ORing together
masks and pixels, C*24mP24m distinct pixels can be produced; all
of these are allocated writable by the request.	 For
4mGrayScale24m or 4mPseudoColor24m, each mask will have exactly one
bit set to 1; for 4mDirectColor24m, each will have exactly three
bits set to 1.	If contiguous is 4mTrue24m and if all masks are
ORed together, a single contiguous set of bits will be
formed for 4mGrayScale24m or 4mPseudoColor24m, and three contiguous
sets of bits (one within each pixel subfield) for 4mDirect-0m
4mColor24m.  The RGB values of the allocated entries are unde-
fined.





			     1m860m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mAllocColorPlanes0m

  4mcmap24m: COLORMAP
  4mcolors24m, 4mreds24m, 4mgreens24m, 4mblues24m: CARD16
  4mcontiguous24m: BOOL

   ->

  pixels: LISTofCARD32
  red-mask, green-mask, blue-mask: CARD32

|__    Errors: 4mAlloc24m, 4mColormap24m, 4mValue0m


The number of colors must be positive, and the reds, greens,
and blues must be nonnegative (or a 4mValue24m error results).
If C colors, R reds, G greens, and B blues are requested,
then C pixels are returned, and the masks have R, G, and B
bits set, respectively.	 If contiguous is 4mTrue24m, then each
mask will have a contiguous set of bits.  No mask will have
any bits in common with any other mask or with any of the
pixels.	 For 4mDirectColor24m, each mask will lie within the cor-
responding pixel subfield.  By ORing together subsets of
masks with pixels, C*24mR24m+4mG24m+4mB24m distinct pixels can be produced;
all of these are allocated writable by the request.  The
initial RGB values of the allocated entries are undefined.
In the colormap, there are only C*24mR24m independent red
entries, C*24mG24m independent green entries, and C*24mB24m indepen-
dent blue entries.  This is true even for 4mPseudoColor24m.  When
the colormap entry for a pixel value is changed using 4mStore-0m
4mColors24m or 4mStoreNamedColor24m, the pixel is decomposed according
to the masks and the corresponding independent entries are
updated.


__
|    4mFreeColors0m

  4mcmap24m: COLORMAP
  4mpixels24m: LISTofCARD32
  4mplane-mask24m: CARD32

|__    Errors: 4mAccess24m, 4mColormap24m, 4mValue0m


The plane-mask should not have any bits in common with any
of the pixels.	The set of all pixels is produced by ORing
together subsets of plane-mask with the pixels.	 The request
frees all of these pixels that were allocated by the client
(using 4mAllocColor24m, 4mAllocNamedColor24m, 4mAllocColorCells24m, and
4mAllocColorPlanes24m).	 Note that freeing an individual pixel
obtained from 4mAllocColorPlanes24m may not actually allow it to
be reused until all of its related pixels are also freed.
Similarly, a read-only entry is not actually freed until it



			     1m870m





1mX Protocol				X11, Release 6.7 DRAFT0m


has been freed by all clients, and if a client allocates the
same read-only entry multiple times, it must free the entry
that many times before the entry is actually freed.

All specified pixels that are allocated by the client in
cmap are freed, even if one or more pixels produce an error.
A 4mValue24m error is generated if a specified pixel is not a
valid index into cmap.	An 4mAccess24m error is generated if a
specified pixel is not allocated by the client (that is, is
unallocated or is only allocated by another client) or if
the colormap was created with all entries writable (using an
alloc value of 4mAll24m in 4mCreateColormap24m).  If more than one
pixel is in error, it is arbitrary as to which pixel is
reported.


__
|    4mStoreColors0m

  4mcmap24m: COLORMAP
  4mitems24m: LISTofCOLORITEM

  where:

  COLORITEM:   [pixel: CARD32
		do-red, do-green, do-blue: BOOL
		red, green, blue: CARD16]


|__    Errors: 4mAccess24m, 4mColormap24m, 4mValue0m


This request changes the colormap entries of the specified
pixels.	 The do-red, do-green, and do-blue fields indicate
which components should actually be changed.  If the col-
ormap is an installed map for its screen, the changes are
visible immediately.

All specified pixels that are allocated writable in cmap (by
any client) are changed, even if one or more pixels produce
an error.  A 4mValue24m error is generated if a specified pixel
is not a valid index into cmap, and an 4mAccess24m error is gen-
erated if a specified pixel is unallocated or is allocated
read-only.  If more than one pixel is in error, it is arbi-
trary as to which pixel is reported.












			     1m880m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mStoreNamedColor0m

  4mcmap24m: COLORMAP
  4mpixel24m: CARD32
  4mname24m: STRING8
  4mdo-red24m, 4mdo-green24m, 4mdo-blue24m: BOOL

|__    Errors: 4mAccess24m, 4mColormap24m, 4mName24m, 4mValue0m


This request looks up the named color with respect to the
screen associated with cmap and then does a 4mStoreColors24m in
cmap.  The name should use the ISO Latin-1 encoding, and
uppercase and lowercase do not matter.	The 4mAccess24m and 4mValue0m
errors are the same as in 4mStoreColors24m.


__
|    4mQueryColors0m

  4mcmap24m: COLORMAP
  4mpixels24m: LISTofCARD32

   ->

  colors: LISTofRGB

  where:

  RGB: [red, green, blue: CARD16]

|__    Errors: 4mColormap24m, 4mValue0m


This request returns the hardware-specific color values
stored in cmap for the specified pixels.  The values
returned for an unallocated entry are undefined.  A 4mValue0m
error is generated if a pixel is not a valid index into
cmap.  If more than one pixel is in error, it is arbitrary
as to which pixel is reported.

















			     1m890m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mLookupColor0m

  4mcmap24m: COLORMAP
  4mname24m: STRING8

   ->

  exact-red, exact-green, exact-blue: CARD16
  visual-red, visual-green, visual-blue: CARD16

|__    Errors: 4mColormap24m, 4mName0m


This request looks up the string name of a color with
respect to the screen associated with cmap and returns both
the exact color values and the closest values provided by
the hardware with respect to the visual type of cmap.  The
name should use the ISO Latin-1 encoding, and uppercase and
lowercase do not matter.


__
|    4mCreateCursor0m

  4mcid24m: CURSOR
  4msource24m: PIXMAP
  4mmask24m: PIXMAP or 4mNone0m
  4mfore-red24m, 4mfore-green24m, 4mfore-blue24m: CARD16
  4mback-red24m, 4mback-green24m, 4mback-blue24m: CARD16
  4mx24m, 4my24m: CARD16

|__    Errors: 4mAlloc24m, 4mIDChoice24m, 4mMatch24m, 4mPixmap0m


This request creates a cursor and associates identifier cid
with it.  The foreground and background RGB values must be
specified, even if the server only has a 4mStaticGray24m or
4mGrayScale24m screen.	The foreground is used for the bits set
to 1 in the source, and the background is used for the bits
set to 0.  Both source and mask (if specified) must have
depth one (or a 4mMatch24m error results), but they can have any
root.  The mask pixmap defines the shape of the cursor.
That is, the bits set to 1 in the mask define which source
pixels will be displayed, and where the mask has bits set to
0, the corresponding bits of the source pixmap are ignored.
If no mask is given, all pixels of the source are displayed.
The mask, if present, must be the same size as the source
(or a 4mMatch24m error results).  The x and y coordinates define
the hotspot relative to the source's origin and must be a
point within the source (or a 4mMatch24m error results).

The components of the cursor may be transformed arbitrarily
to meet display limitations.




			     1m900m





1mX Protocol				X11, Release 6.7 DRAFT0m


The pixmaps can be freed immediately if no further explicit
references to them are to be made.

Subsequent drawing in the source or mask pixmap has an unde-
fined effect on the cursor.  The server might or might not
make a copy of the pixmap.


__
|    4mCreateGlyphCursor0m

  4mcid24m: CURSOR
  4msource-font24m: FONT
  4mmask-font24m: FONT or 4mNone0m
  4msource-char24m, 4mmask-char24m: CARD16
  4mfore-red24m, 4mfore-green24m, 4mfore-blue24m: CARD16
  4mback-red24m, 4mback-green24m, 4mback-blue24m: CARD16

|__    Errors: 4mAlloc24m, 4mFont24m, 4mIDChoice24m, 4mValue0m


This request is similar to 4mCreateCursor24m, except the source
and mask bitmaps are obtained from the specified font
glyphs.	 The source-char must be a defined glyph in source-
font, and if mask-font is given, mask-char must be a defined
glyph in mask-font (or a 4mValue24m error results).  The mask
font and character are optional.  The origins of the source
and mask (if it is defined) glyphs are positioned coinci-
dently and define the hotspot.	The source and mask need not
have the same bounding box metrics, and there is no restric-
tion on the placement of the hotspot relative to the bound-
ing boxes.  If no mask is given, all pixels of the source
are displayed.	Note that source-char and mask-char are
CARD16, not CHAR2B.  For 2-byte matrix fonts, the 16-bit
value should be formed with byte1 in the most significant
byte and byte2 in the least significant byte.

The components of the cursor may be transformed arbitrarily
to meet display limitations.

The fonts can be freed immediately if no further explicit
references to them are to be made.


__
|    4mFreeCursor0m

  4mcursor24m: CURSOR

|__    Errors: 4mCursor0m


This request deletes the association between the resource ID
and the cursor.	 The cursor storage will be freed when no



			     1m910m





1mX Protocol				X11, Release 6.7 DRAFT0m


other resource references it.


__
|    4mRecolorCursor0m

  4mcursor24m: CURSOR
  4mfore-red24m, 4mfore-green24m, 4mfore-blue24m: CARD16
  4mback-red24m, 4mback-green24m, 4mback-blue24m: CARD16

|__    Errors: 4mCursor0m


This request changes the color of a cursor.  If the cursor
is being displayed on a screen, the change is visible imme-
diately.


__
|    4mQueryBestSize0m

  4mclass24m: {4mCursor24m, 4mTile24m, 4mStipple24m}
  4mdrawable24m: DRAWABLE
  4mwidth24m, 4mheight24m: CARD16

   ->

  width, height: CARD16

|__    Errors: 4mDrawable24m, 4mMatch24m, 4mValue0m


This request returns the best size that is closest to the
argument size.	For 4mCursor24m, this is the largest size that
can be fully displayed.	 For 4mTile24m, this is the size that can
be tiled fastest.  For 4mStipple24m, this is the size that can be
stippled fastest.

For 4mCursor24m, the drawable indicates the desired screen.  For
4mTile24m and 4mStipple24m, the drawable indicates the screen and also
possibly the window class and depth.  An 4mInputOnly24m window
cannot be used as the drawable for 4mTile24m or 4mStipple24m (or a
4mMatch24m error results).














			     1m920m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mQueryExtension0m

  4mname24m: STRING8

   ->

  present: BOOL
  major-opcode: CARD8
  first-event: CARD8
|__    first-error: CARD8


This request determines if the named extension is present.
If so, the major opcode for the extension is returned, if it
has one.  Otherwise, zero is returned.	Any minor opcode and
the request formats are specific to the extension.  If the
extension involves additional event types, the base event
type code is returned.	Otherwise, zero is returned.  The
format of the events is specific to the extension.  If the
extension involves additional error codes, the base error
code is returned.  Otherwise, zero is returned.	 The format
of additional data in the errors is specific to the exten-
sion.

The extension name should use the ISO Latin-1 encoding, and
uppercase and lowercase matter.


__
|    4mListExtensions0m

   ->

|__    names: LISTofSTRING8


This request returns a list of all extensions supported by
the server.

__
|    4mSetModifierMapping0m

  4mkeycodes-per-modifier24m: CARD8
  4mkeycodes24m: LISTofKEYCODE

   ->

  status: {4mSuccess24m, 4mBusy24m, 4mFailed24m}

|__    Errors: 4mAlloc24m, 4mValue0m


This request specifies the keycodes (if any) of the keys to
be used as modifiers.  The number of keycodes in the list



			     1m930m





1mX Protocol				X11, Release 6.7 DRAFT0m


must be 8*keycodes-per-modifier (or a 4mLength24m error results).
The keycodes are divided into eight sets, with each set con-
taining keycodes-per-modifier elements.	 The sets are
assigned to the modifiers 4mShift24m, 4mLock24m, 4mControl24m, 4mMod124m, 4mMod224m,
4mMod324m, 4mMod424m, and 4mMod524m, in order.	Only nonzero keycode values
are used within each set; zero values are ignored.  All of
the nonzero keycodes must be in the range specified by min-
keycode and max-keycode in the connection setup (or a 4mValue0m
error results).	 The order of keycodes within a set does not
matter.	 If no nonzero values are specified in a set, the
use of the corresponding modifier is disabled, and the modi-
fier bit will always be zero.  Otherwise, the modifier bit
will be one whenever at least one of the keys in the corre-
sponding set is in the down position.

A server can impose restrictions on how modifiers can be
changed (for example, if certain keys do not generate up
transitions in hardware, if auto-repeat cannot be disabled
on certain keys, or if multiple keys per modifier are not
supported).  The status reply is 4mFailed24m if some such
restriction is violated, and none of the modifiers is
changed.

If the new nonzero keycodes specified for a modifier differ
from those currently defined and any (current or new) keys
for that modifier are logically in the down state, then the
status reply is 4mBusy24m, and none of the modifiers is changed.

This request generates a 4mMappingNotify24m event on a 4mSuccess0m
status.


__
|    4mGetModifierMapping0m

   ->

  keycodes-per-modifier: CARD8
|__    keycodes: LISTofKEYCODE


This request returns the keycodes of the keys being used as
modifiers.  The number of keycodes in the list is 8*key-
codes-per-modifier.  The keycodes are divided into eight
sets, with each set containing keycodes-per-modifier ele-
ments.	The sets are assigned to the modifiers 4mShift24m, 4mLock24m,
4mControl24m, 4mMod124m, 4mMod224m, 4mMod324m, 4mMod424m, and 4mMod524m, in order.  The
keycodes-per-modifier value is chosen arbitrarily by the
server; zeroes are used to fill in unused elements within
each set.  If only zero values are given in a set, the use
of the corresponding modifier has been disabled.  The order
of keycodes within each set is chosen arbitrarily by the
server.




			     1m940m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mChangeKeyboardMapping0m

  4mfirst-keycode24m: KEYCODE
  4mkeysyms-per-keycode24m: CARD8
  4mkeysyms24m: LISTofKEYSYM

|__    Errors: 4mAlloc24m, 4mValue0m


This request defines the symbols for the specified number of
keycodes, starting with the specified keycode.	The symbols
for keycodes outside this range remained unchanged.  The
number of elements in the keysyms list must be a multiple of
keysyms-per-keycode (or a 4mLength24m error results).  The first-
keycode must be greater than or equal to min-keycode as
returned in the connection setup (or a 4mValue24m error results)
and:

     first-keycode + (keysyms-length / keysyms-per-keycode) - 1


must be less than or equal to max-keycode as returned in the
connection setup (or a 4mValue24m error results).  KEYSYM number
N (counting from zero) for keycode K has an index (counting
from zero) of:

     (K - first-keycode) * keysyms-per-keycode + N


in keysyms.  The keysyms-per-keycode can be chosen arbitrar-
ily by the client to be large enough to hold all desired
symbols.  A special KEYSYM value of 4mNoSymbol24m should be used
to fill in unused elements for individual keycodes.  It is
legal for 4mNoSymbol24m to appear in nontrailing positions of the
effective list for a keycode.

This request generates a 4mMappingNotify24m event.

There is no requirement that the server interpret this map-
ping; it is merely stored for reading and writing by clients
(see section 5).
















			     1m950m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mGetKeyboardMapping0m

  4mfirst-keycode24m: KEYCODE
  4mcount24m: CARD8

   ->

  keysyms-per-keycode: CARD8
  keysyms: LISTofKEYSYM

|__    Errors: 4mValue0m


This request returns the symbols for the specified number of
keycodes, starting with the specified keycode.	The first-
keycode must be greater than or equal to min-keycode as
returned in the connection setup (or a 4mValue24m error results),
and:

     first-keycode + count - 1


must be less than or equal to max-keycode as returned in the
connection setup (or a 4mValue24m error results).  The number of
elements in the keysyms list is:

     count * keysyms-per-keycode


and KEYSYM number N (counting from zero) for keycode K has
an index (counting from zero) of:

     (K - first-keycode) * keysyms-per-keycode + N


in keysyms.  The keysyms-per-keycode value is chosen arbi-
trarily by the server to be large enough to report all
requested symbols.  A special KEYSYM value of 4mNoSymbol24m is
used to fill in unused elements for individual keycodes.


__
|    4mChangeKeyboardControl0m

  4mvalue-mask24m: BITMASK
  4mvalue-list24m: LISTofVALUE

|__    Errors: 4mMatch24m, 4mValue0m


This request controls various aspects of the keyboard.	The
value-mask and value-list specify which controls are to be
changed.  The possible values are:




			     1m960m





1mX Protocol				X11, Release 6.7 DRAFT0m


---------------------------------------
1mControl	      Type0m
---------------------------------------
key-click-percent   INT8
bell-percent	    INT8
bell-pitch	    INT16
bell-duration	    INT16
led		    CARD8
led-mode	    {4mOn24m, 4mOff24m}
key		    KEYCODE
auto-repeat-mode    {4mOn24m, 4mOff24m, 4mDefault24m}
---------------------------------------


The key-click-percent sets the volume for key clicks between
0 (off) and 100 (loud) inclusive, if possible.	Setting to
-1 restores the default.  Other negative values generate a
4mValue24m error.

The bell-percent sets the base volume for the bell between 0
(off) and 100 (loud) inclusive, if possible.  Setting to -1
restores the default.  Other negative values generate a
4mValue24m error.

The bell-pitch sets the pitch (specified in Hz) of the bell,
if possible.  Setting to -1 restores the default.  Other
negative values generate a 4mValue24m error.

The bell-duration sets the duration of the bell (specified
in milliseconds), if possible.	Setting to -1 restores the
default.  Other negative values generate a 4mValue24m error.

If both led-mode and led are specified, then the state of
that LED is changed, if possible.  If only led-mode is spec-
ified, then the state of all LEDs are changed, if possible.
At most 32 LEDs, numbered from one, are supported.  No stan-
dard interpretation of LEDs is defined.	 It is a 4mMatch24m error
if an led is specified without an led-mode.

If both auto-repeat-mode and key are specified, then the
auto-repeat mode of that key is changed, if possible.  If
only auto-repeat-mode is specified, then the global auto-
repeat mode for the entire keyboard is changed, if possible,
without affecting the per-key settings.	 It is a 4mMatch24m error
if a key is specified without an auto-repeat-mode.  Each key
has an individual mode of whether or not it should auto-
repeat and a default setting for that mode.  In addition,
there is a global mode of whether auto-repeat should be
enabled or not and a default setting for that mode.  When
the global mode is 4mOn24m, keys should obey their individual
auto-repeat modes.  When the global mode is 4mOff24m, no keys
should auto-repeat.  An auto-repeating key generates alter-
nating 4mKeyPress24m and 4mKeyRelease24m events.  When a key is used
as a modifier, it is desirable for the key not to auto-



			     1m970m





1mX Protocol				X11, Release 6.7 DRAFT0m


repeat, regardless of the auto-repeat setting for that key.

A bell generator connected with the console but not directly
on the keyboard is treated as if it were part of the key-
board.

The order in which controls are verified and altered is
server-dependent.  If an error is generated, a subset of the
controls may have been altered.


__
|    4mGetKeyboardControl0m

   ->

  key-click-percent: CARD8
  bell-percent: CARD8
  bell-pitch: CARD16
  bell-duration: CARD16
  led-mask: CARD32
  global-auto-repeat: {4mOn24m, 4mOff24m}
|__    auto-repeats: LISTofCARD8


This request returns the current control values for the key-
board.	For the LEDs, the least significant bit of led-mask
corresponds to LED one, and each one bit in led-mask indi-
cates an LED that is lit.  The auto-repeats is a bit vector;
each one bit indicates that auto-repeat is enabled for the
corresponding key.  The vector is represented as 32 bytes.
Byte N (from 0) contains the bits for keys 8N to 8N + 7,
with the least significant bit in the byte representing key
8N.


__
|    4mBell0m

  4mpercent24m: INT8

|__    Errors: 4mValue0m


This request rings the bell on the keyboard at a volume rel-
ative to the base volume for the keyboard, if possible.
Percent can range from -100 to 100 inclusive (or a 4mValue0m
error results).	 The volume at which the bell is rung when
percent is nonnegative is:

     base - [(base * percent) / 100] + percent






			     1m980m





1mX Protocol				X11, Release 6.7 DRAFT0m


When percent is negative, it is:

     base + [(base * percent) / 100]



__
|    4mSetPointerMapping0m

  4mmap24m: LISTofCARD8

   ->

  status: {4mSuccess24m, 4mBusy24m}

|__    Errors: 4mValue0m


This request sets the mapping of the pointer.  Elements of
the list are indexed starting from one.	 The length of the
list must be the same as 4mGetPointerMapping24m would return (or
a 4mValue24m error results).  The index is a core button number,
and the element of the list defines the effective number.

A zero element disables a button.  Elements are not
restricted in value by the number of physical buttons, but
no two elements can have the same nonzero value (or a 4mValue0m
error results).

If any of the buttons to be altered are logically in the
down state, the status reply is 4mBusy24m, and the mapping is not
changed.

This request generates a 4mMappingNotify24m event on a 4mSuccess0m
status.


__
|    4mGetPointerMapping0m

   ->

|__    map: LISTofCARD8


This request returns the current mapping of the pointer.
Elements of the list are indexed starting from one.  The
length of the list indicates the number of physical buttons.

The nominal mapping for a pointer is the identity mapping:
map[i]=i.






			     1m990m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mChangePointerControl0m

  4mdo-acceleration24m, 4mdo-threshold24m: BOOL
  4macceleration-numerator24m, 4macceleration-denominator24m: INT16
  4mthreshold24m: INT16

|__    Errors: 4mValue0m


This request defines how the pointer moves.  The accelera-
tion is a multiplier for movement expressed as a fraction.
For example, specifying 3/1 means the pointer moves three
times as fast as normal.  The fraction can be rounded arbi-
trarily by the server.	Acceleration only takes effect if
the pointer moves more than threshold number of pixels at
once and only applies to the amount beyond the threshold.
Setting a value to -1 restores the default.  Other negative
values generate a 4mValue24m error, as does a zero value for
acceleration-denominator.


__
|    4mGetPointerControl0m

   ->

  acceleration-numerator, acceleration-denominator: CARD16
|__    threshold: CARD16


This request returns the current acceleration and threshold
for the pointer.


__
|    4mSetScreenSaver0m

  4mtimeout24m, 4minterval24m: INT16
  4mprefer-blanking24m: {4mYes24m, 4mNo24m, 4mDefault24m}
  4mallow-exposures24m: {4mYes24m, 4mNo24m, 4mDefault24m}

|__    Errors: 4mValue0m


The timeout and interval are specified in seconds; setting a
value to -1 restores the default.  Other negative values
generate a 4mValue24m error.  If the timeout value is zero,
screen-saver is disabled (but an activated screen-saver is
not deactivated).  If the timeout value is nonzero, screen-
saver is enabled.  Once screen-saver is enabled, if no input
from the keyboard or pointer is generated for timeout sec-
onds, screen-saver is activated.  For each screen, if blank-
ing is preferred and the hardware supports video blanking,
the screen will simply go blank.  Otherwise, if either



			     1m1000m





1mX Protocol				X11, Release 6.7 DRAFT0m


exposures are allowed or the screen can be regenerated with-
out sending exposure events to clients, the screen is
changed in a server-dependent fashion to avoid phosphor
burn.  Otherwise, the state of the screens does not change,
and screen-saver is not activated.  At the next keyboard or
pointer input or at the next 4mForceScreenSaver24m with mode
4mReset24m, screen-saver is deactivated, and all screen states
are restored.

If the server-dependent screen-saver method is amenable to
periodic change, interval serves as a hint about how long
the change period should be, with zero hinting that no peri-
odic change should be made.  Examples of ways to change the
screen include scrambling the color map periodically, moving
an icon image about the screen periodically, or tiling the
screen with the root window background tile, randomly reo-
rigined periodically.


__
|    4mGetScreenSaver0m

   ->

  timeout, interval: CARD16
  prefer-blanking: {4mYes24m, 4mNo24m}
|__    allow-exposures: {4mYes24m, 4mNo24m}


This request returns the current screen-saver control val-
ues.


__
|    4mForceScreenSaver0m

  4mmode24m: {4mActivate24m, 4mReset24m}

|__    Errors: 4mValue0m


If the mode is 4mActivate24m and screen-saver is currently deac-
tivated, then screen-saver is activated (even if screen-
saver has been disabled with a timeout value of zero).	If
the mode is 4mReset24m and screen-saver is currently enabled,
then screen-saver is deactivated (if it was activated), and
the activation timer is reset to its initial state as if
device input had just been received.









			     1m1010m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mChangeHosts0m

  4mmode24m: {4mInsert24m, 4mDelete24m}
  4mhost24m: HOST

|__    Errors: 4mAccess24m, 4mValue0m


This request adds or removes the specified host from the
access control list.  When the access control mechanism is
enabled and a client attempts to establish a connection to
the server, the host on which the client resides must be in
the access control list, or the client must have been
granted permission by a server-dependent method, or the
server will refuse the connection.

The client must reside on the same host as the server and/or
have been granted permission by a server-dependent method to
execute this request (or an 4mAccess24m error results).

An initial access control list can usually be specified,
typically by naming a file that the server reads at startup
and reset.

The following address families are defined.  A server is not
required to support these families and may support families
not listed here.  Use of an unsupported family, an improper
address format, or an improper address length within a sup-
ported family results in a 4mValue24m error.

Note that use of a host address in the ChangeHosts request
is deprecated.	It is only useful when a host has a unique,
constant address, a requirement that is increasingly unmet
as sites adopt dynamically assigned addresses, network
address translation gateways, IPv6 link local addresses, and
various other technologies.  It also assumes all users of a
host share equivalent access rights, and as such has never
been suitable for many multi-user machine environments.
Instead, more secure forms of authentication, such as those
based on shared secrets or public key encryption, are recom-
mended.

For the Internet family, the address must be four bytes
long.  The address bytes are in standard IP order; the
server performs no automatic swapping on the address bytes.
The Internet family supports IP version 4 addresses only.

For the InternetV6 family, the address must be sixteen bytes
long.  The address bytes are in standard IP order; the
server performs no automatic swapping on the address bytes.
The InternetV6 family supports IP version 6 addresses only.

For the DECnet family, the server performs no automatic
swapping on the address bytes.	A Phase IV address is two



			     1m1020m





1mX Protocol				X11, Release 6.7 DRAFT0m


bytes long: the first byte contains the least significant
eight bits of the node number, and the second byte contains
the most significant two bits of the node number in the
least significant two bits of the byte and the area in the
most significant six bits of the byte.

For the Chaos family, the address must be two bytes long.
The host number is always the first byte in the address, and
the subnet number is always the second byte.  The server
performs no automatic swapping on the address bytes.


__
|    4mListHosts0m

   ->

  mode: {4mEnabled24m, 4mDisabled24m}
|__    hosts: LISTofHOST


This request returns the hosts on the access control list
and whether use of the list at connection setup is currently
enabled or disabled.

Each HOST is padded to a multiple of four bytes.


__
|    4mSetAccessControl0m

  4mmode24m: {4mEnable24m, 4mDisable24m}

|__    Errors: 4mAccess24m, 4mValue0m


This request enables or disables the use of the access con-
trol list at connection setups.

The client must reside on the same host as the server and/or
have been granted permission by a server-dependent method to
execute this request (or an 4mAccess24m error results).


__
|    4mSetCloseDownMode0m

  4mmode24m: {4mDestroy24m, 4mRetainPermanent24m, 4mRetainTemporary24m}

|__    Errors: 4mValue0m


This request defines what will happen to the client's
resources at connection close.	A connection starts in



			     1m1030m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mDestroy24m mode.  The meaning of the close-down mode is
described in section 10.


__
|    4mKillClient0m

  4mresource24m: CARD32 or 4mAllTemporary0m

|__    Errors: 4mValue0m


If a valid resource is specified, 4mKillClient24m forces a close-
down of the client that created the resource.  If the client
has already terminated in either 4mRetainPermanent24m or 4mRetain-0m
4mTemporary24m mode, all of the client's resources are destroyed
(see section 10).  If 4mAllTemporary24m is specified, then the
resources of all clients that have terminated in 4mRetainTem-0m
4mporary24m are destroyed.


__
|__  4mNoOperation0m


This request has no arguments and no results, but the
request length field allows the request to be any multiple
of four bytes in length.  The bytes contained in the request
are uninterpreted by the server.

This request can be used in its minimum four byte form as
padding where necessary by client libraries that find it
convenient to force requests to begin on 64-bit boundaries.

1m10.  Connection Close0m

At connection close, all event selections made by the client
are discarded.	If the client has the pointer actively
grabbed, an 4mUngrabPointer24m is performed.  If the client has
the keyboard actively grabbed, an 4mUngrabKeyboard24m is per-
formed.	 All passive grabs by the client are released.	If
the client has the server grabbed, an 4mUngrabServer24m is per-
formed.	 All selections (see 4mSetSelectionOwner24m request)
owned by the client are disowned.  If close-down mode (see
4mSetCloseDownMode24m request) is 4mRetainPermanent24m or 4mRetainTempo-0m
4mrary24m, then all resources (including colormap entries) allo-
cated by the client are marked as permanent or temporary,
respectively (but this does not prevent other clients from
explicitly destroying them).  If the mode is 4mDestroy24m, all of
the client's resources are destroyed.

When a client's resources are destroyed, for each window in
the client's save-set, if the window is an inferior of a
window created by the client, the save-set window is



			     1m1040m





1mX Protocol				X11, Release 6.7 DRAFT0m


reparented to the closest ancestor such that the save-set
window is not an inferior of a window created by the client.
If the save-set window is unmapped, a 4mMapWindow24m request is
performed on it (even if it was not an inferior of a window
created by the client).	 The reparenting leaves unchanged
the absolute coordinates (with respect to the root window)
of the upper-left outer corner of the save-set window.
After save-set processing, all windows created by the client
are destroyed.	For each nonwindow resource created by the
client, the appropriate 4mFree24m request is performed.	 All col-
ors and colormap entries allocated by the client are freed.

A server goes through a cycle of having no connections and
having some connections.  At every transition to the state
of having no connections as a result of a connection closing
with a 4mDestroy24m close-down mode, the server resets its state
as if it had just been started.	 This starts by destroying
all lingering resources from clients that have terminated in
4mRetainPermanent24m or 4mRetainTemporary24m mode.  It additionally
includes deleting all but the predefined atom identifiers,
deleting all properties on all root windows, resetting all
device maps and attributes (key click, bell volume, acceler-
ation), resetting the access control list, restoring the
standard root tiles and cursors, restoring the default font
path, and restoring the input focus to state 4mPointerRoot24m.

Note that closing a connection with a close-down mode of
4mRetainPermanent24m or 4mRetainTemporary24m will not cause the server
to reset.

1m11.  Events0m

When a button press is processed with the pointer in some
window W and no active pointer grab is in progress, the
ancestors of W are searched from the root down, looking for
a passive grab to activate.  If no matching passive grab on
the button exists, then an active grab is started automati-
cally for the client receiving the event, and the last-
pointer-grab time is set to the current server time.  The
effect is essentially equivalent to a 4mGrabButton24m with argu-
ments:

-----------------------------------------------------------
1mArgument		   Value0m
-----------------------------------------------------------
event-window		 Event window
event-mask		 Client's selected pointer events
			 on the event window
pointer-mode and key-	 4mAsynchronous0m
board-mode
owner-events		 4mTrue24m if the client has 4mOwner-0m
			 4mGrabButton24m selected on the event
			 window, otherwise 4mFalse0m




			     1m1050m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------
1mArgument		   Value0m
-----------------------------------------------------------
confine-to		 4mNone0m
cursor			 4mNone0m
-----------------------------------------------------------


The grab is terminated automatically when the logical state
of the pointer has all buttons released.  4mUngrabPointer24m and
4mChangeActivePointerGrab24m can both be used to modify the
active grab.


__
|    4mKeyPress0m
4mKeyRelease0m
4mButtonPress0m
4mButtonRelease0m
4mMotionNotify0m

  4mroot24m, 4mevent24m: WINDOW
  4mchild24m: WINDOW or 4mNone0m
  4msame-screen24m: BOOL
  4mroot-x24m, 4mroot-y24m, 4mevent-x24m, 4mevent-y24m: INT16
  4mdetail24m: <see below>
  4mstate24m: SETofKEYBUTMASK
|__    4mtime24m: TIMESTAMP


These events are generated either when a key or button logi-
cally changes state or when the pointer logically moves.
The generation of these logical changes may lag the physical
changes if device event processing is frozen.  Note that
4mKeyPress24m and 4mKeyRelease24m are generated for all keys, even
those mapped to modifier bits.	The source of the event is
the window the pointer is in.  The window the event is
reported with respect to is called the event window.  The
event window is found by starting with the source window and
looking up the hierarchy for the first window on which any
client has selected interest in the event (provided no
intervening window prohibits event generation by including
the event type in its do-not-propagate-mask).  The actual
window used for reporting can be modified by active grabs
and, in the case of keyboard events, can be modified by the
focus window.

The root is the root window of the source window, and root-x
and root-y are the pointer coordinates relative to root's
origin at the time of the event.  Event is the event window.
If the event window is on the same screen as root, then
event-x and event-y are the pointer coordinates relative to
the event window's origin.  Otherwise, event-x and event-y
are zero.  If the source window is an inferior of the event



			     1m1060m





1mX Protocol				X11, Release 6.7 DRAFT0m


window, then child is set to the child of the event window
that is an ancestor of (or is) the source window.  Other-
wise, it is set to 4mNone24m.  The state component gives the log-
ical state of the buttons and modifier keys just before the
event.	The detail component type varies with the event
type:

--------------------------------------
1mEvent			 Component0m
--------------------------------------
4mKeyPress24m, 4mKeyRelease24m	 KEYCODE
4mButtonPress24m, 4mButton-24m	 BUTTON
4mRelease0m
4mMotionNotify24m	    {4mNormal24m, 4mHint24m}
--------------------------------------


4mMotionNotify24m events are only generated when the motion
begins and ends in the window.	The granularity of motion
events is not guaranteed, but a client selecting for motion
events is guaranteed to get at least one event when the
pointer moves and comes to rest.  Selecting 4mPointerMotion0m
receives events independent of the state of the pointer but-
tons.  By selecting some subset of 4mButton[1-5]Motion0m
instead, 4mMotionNotify24m events will only be received when one
or more of the specified buttons are pressed.  By selecting
4mButtonMotion24m, 4mMotionNotify24m events will be received only when
at least one button is pressed.	 The events are always of
type 4mMotionNotify24m, independent of the selection.  If 4mPoint-0m
4merMotionHint24m is selected, the server is free to send only
one 4mMotionNotify24m event (with detail 4mHint24m) to the client for
the event window until either the key or button state
changes, the pointer leaves the event window, or the client
issues a 4mQueryPointer24m or 4mGetMotionEvents24m request.


__
|    4mEnterNotify0m
4mLeaveNotify0m

  4mroot24m, 4mevent24m: WINDOW
  4mchild24m: WINDOW or 4mNone0m
  4msame-screen24m: BOOL
  4mroot-x24m, 4mroot-y24m, 4mevent-x24m, 4mevent-y24m: INT16
  4mmode24m: {4mNormal24m, 4mGrab24m, 4mUngrab24m}
  4mdetail24m: {4mAncestor24m, 4mVirtual24m, 4mInferior24m, 4mNonlinear24m, 4mNonlin-0m
  4mearVirtual24m}
  4mfocus24m: BOOL
  4mstate24m: SETofKEYBUTMASK
|__    4mtime24m: TIMESTAMP


If pointer motion or window hierarchy change causes the
pointer to be in a different window than before, 4mEnterNotify0m



			     1m1070m





1mX Protocol				X11, Release 6.7 DRAFT0m


and 4mLeaveNotify24m events are generated instead of a 4mMotionNo-0m
4mtify24m event.  Only clients selecting 4mEnterWindow24m on a window
receive 4mEnterNotify24m events, and only clients selecting
4mLeaveWindow24m receive 4mLeaveNotify24m events.  The pointer posi-
tion reported in the event is always the final position, not
the initial position of the pointer.  The root is the root
window for this position, and root-x and root-y are the
pointer coordinates relative to root's origin at the time of
the event.  Event is the event window.	If the event window
is on the same screen as root, then event-x and event-y are
the pointer coordinates relative to the event window's ori-
gin.  Otherwise, event-x and event-y are zero.	In a
4mLeaveNotify24m event, if a child of the event window contains
the initial position of the pointer, then the child compo-
nent is set to that child.  Otherwise, it is 4mNone24m.	 For an
4mEnterNotify24m event, if a child of the event window contains
the final pointer position, then the child component is set
to that child.	Otherwise, it is 4mNone24m.  If the event window
is the focus window or an inferior of the focus window, then
focus is 4mTrue24m.  Otherwise, focus is 4mFalse24m.

Normal pointer motion events have mode 4mNormal24m.  Pseudo-
motion events when a grab activates have mode 4mGrab24m, and
pseudo-motion events when a grab deactivates have mode
4mUngrab24m.

All 4mEnterNotify24m and 4mLeaveNotify24m events caused by a hierarchy
change are generated after any hierarchy event caused by
that change (that is, 4mUnmapNotify24m, 4mMapNotify24m, 4mConfigureNo-0m
4mtify24m, 4mGravityNotify24m, 4mCirculateNotify24m), but the ordering of
4mEnterNotify24m and 4mLeaveNotify24m events with respect to 4mFocusOut24m,
4mVisibilityNotify24m, and 4mExpose24m events is not constrained.

Normal events are generated as follows:

When the pointer moves from window A to window B and A is an
inferior of B:

·    4mLeaveNotify24m with detail 4mAncestor24m is generated on A.

·    4mLeaveNotify24m with detail 4mVirtual24m is generated on each
     window between A and B exclusive (in that order).

·    4mEnterNotify24m with detail 4mInferior24m is generated on B.

When the pointer moves from window A to window B and B is an
inferior of A:

·    4mLeaveNotify24m with detail 4mInferior24m is generated on A.

·    4mEnterNotify24m with detail 4mVirtual24m is generated on each
     window between A and B exclusive (in that order).





			     1m1080m





1mX Protocol				X11, Release 6.7 DRAFT0m


·    4mEnterNotify24m with detail 4mAncestor24m is generated on B.

When the pointer moves from window A to window B and window
C is their least common ancestor:

·    4mLeaveNotify24m with detail 4mNonlinear24m is generated on A.

·    4mLeaveNotify24m with detail 4mNonlinearVirtual24m is generated
     on each window between A and C exclusive (in that
     order).

·    4mEnterNotify24m with detail 4mNonlinearVirtual24m is generated
     on each window between C and B exclusive (in that
     order).

·    4mEnterNotify24m with detail 4mNonlinear24m is generated on B.

When the pointer moves from window A to window B on differ-
ent screens:

·    4mLeaveNotify24m with detail 4mNonlinear24m is generated on A.

·    If A is not a root window, 4mLeaveNotify24m with detail 4mNon-0m
     4mlinearVirtual24m is generated on each window above A up to
     and including its root (in order).

·    If B is not a root window, 4mEnterNotify24m with detail 4mNon-0m
     4mlinearVirtual24m is generated on each window from B's root
     down to but not including B (in order).

·    4mEnterNotify24m with detail 4mNonlinear24m is generated on B.

When a pointer grab activates (but after any initial warp
into a confine-to window and before generating any actual
4mButtonPress24m event that activates the grab), G is the grab-
window for the grab, and P is the window the pointer is in:

·    4mEnterNotify24m and 4mLeaveNotify24m events with mode 4mGrab24m are
     generated (as for 4mNormal24m above) as if the pointer were
     to suddenly warp from its current position in P to some
     position in G.  However, the pointer does not warp, and
     the pointer position is used as both the initial and
     final positions for the events.

When a pointer grab deactivates (but after generating any
actual 4mButtonRelease24m event that deactivates the grab), G is
the grab-window for the grab, and P is the window the
pointer is in:

·    4mEnterNotify24m and 4mLeaveNotify24m events with mode 4mUngrab24m are
     generated (as for 4mNormal24m above) as if the pointer were
     to suddenly warp from some position in G to its current
     position in P.  However, the pointer does not warp, and
     the current pointer position is used as both the



			     1m1090m





1mX Protocol				X11, Release 6.7 DRAFT0m


     initial and final positions for the events.


__
|    4mFocusIn0m
4mFocusOut0m

  4mevent24m: WINDOW
  4mmode24m: {4mNormal24m, 4mWhileGrabbed24m, 4mGrab24m, 4mUngrab24m}
  4mdetail24m: {4mAncestor24m, 4mVirtual24m, 4mInferior24m, 4mNonlinear24m, 4mNonlin-0m
  4mearVirtual24m, 4mPointer24m,
|__		   4mPointerRoot24m, 4mNone24m}


These events are generated when the input focus changes and
are reported to clients selecting 4mFocusChange24m on the window.
Events generated by 4mSetInputFocus24m when the keyboard is not
grabbed have mode 4mNormal24m.	Events generated by 4mSetInputFocus0m
when the keyboard is grabbed have mode 4mWhileGrabbed24m.  Events
generated when a keyboard grab activates have mode 4mGrab24m, and
events generated when a keyboard grab deactivates have mode
4mUngrab24m.

All 4mFocusOut24m events caused by a window unmap are generated
after any 4mUnmapNotify24m event, but the ordering of 4mFocusOut0m
with respect to generated 4mEnterNotify24m, 4mLeaveNotify24m, 4mVisibil-0m
4mityNotify24m, and 4mExpose24m events is not constrained.

4mNormal24m and 4mWhileGrabbed24m events are generated as follows:

When the focus moves from window A to window B, A is an
inferior of B, and the pointer is in window P:

·    4mFocusOut24m with detail 4mAncestor24m is generated on A.

·    4mFocusOut24m with detail 4mVirtual24m is generated on each win-
     dow between A and B exclusive (in order).

·    4mFocusIn24m with detail 4mInferior24m is generated on B.

·    If P is an inferior of B but P is not A or an inferior
     of A or an ancestor of A, 4mFocusIn24m with detail 4mPointer0m
     is generated on each window below B down to and includ-
     ing P (in order).

When the focus moves from window A to window B, B is an
inferior of A, and the pointer is in window P:

·    If P is an inferior of A but P is not an inferior of B
     or an ancestor of B, 4mFocusOut24m with detail 4mPointer24m is
     generated on each window from P up to but not including
     A (in order).





			     1m1100m





1mX Protocol				X11, Release 6.7 DRAFT0m


·    4mFocusOut24m with detail 4mInferior24m is generated on A.

·    4mFocusIn24m with detail 4mVirtual24m is generated on each window
     between A and B exclusive (in order).

·    4mFocusIn24m with detail 4mAncestor24m is generated on B.

When the focus moves from window A to window B, window C is
their least common ancestor, and the pointer is in window P:

·    If P is an inferior of A, 4mFocusOut24m with detail 4mPointer0m
     is generated on each window from P up to but not
     including A (in order).

·    4mFocusOut24m with detail 4mNonlinear24m is generated on A.

·    4mFocusOut24m with detail 4mNonlinearVirtual24m is generated on
     each window between A and C exclusive (in order).

·    4mFocusIn24m with detail 4mNonlinearVirtual24m is generated on
     each window between C and B exclusive (in order).

·    4mFocusIn24m with detail 4mNonlinear24m is generated on B.

·    If P is an inferior of B, 4mFocusIn24m with detail 4mPointer0m
     is generated on each window below B down to and includ-
     ing P (in order).

When the focus moves from window A to window B on different
screens and the pointer is in window P:

·    If P is an inferior of A, 4mFocusOut24m with detail 4mPointer0m
     is generated on each window from P up to but not
     including A (in order).

·    4mFocusOut24m with detail 4mNonlinear24m is generated on A.

·    If A is not a root window, 4mFocusOut24m with detail 4mNonlin-0m
     4mearVirtual24m is generated on each window above A up to
     and including its root (in order).

·    If B is not a root window, 4mFocusIn24m with detail 4mNonlin-0m
     4mearVirtual24m is generated on each window from B's root
     down to but not including B (in order).

·    4mFocusIn24m with detail 4mNonlinear24m is generated on B.

·    If P is an inferior of B, 4mFocusIn24m with detail 4mPointer0m
     is generated on each window below B down to and includ-
     ing P (in order).

When the focus moves from window A to 4mPointerRoot24m (or 4mNone24m)
and the pointer is in window P:




			     1m1110m





1mX Protocol				X11, Release 6.7 DRAFT0m


·    If P is an inferior of A, 4mFocusOut24m with detail 4mPointer0m
     is generated on each window from P up to but not
     including A (in order).

·    4mFocusOut24m with detail 4mNonlinear24m is generated on A.

·    If A is not a root window, 4mFocusOut24m with detail 4mNonlin-0m
     4mearVirtual24m is generated on each window above A up to
     and including its root (in order).

·    4mFocusIn24m with detail 4mPointerRoot24m (or 4mNone24m) is generated
     on all root windows.

·    If the new focus is 4mPointerRoot24m, 4mFocusIn24m with detail
     4mPointer24m is generated on each window from P's root down
     to and including P (in order).

When the focus moves from 4mPointerRoot24m (or 4mNone24m) to window A
and the pointer is in window P:

·    If the old focus is 4mPointerRoot24m, 4mFocusOut24m with detail
     4mPointer24m is generated on each window from P up to and
     including P's root (in order).

·    4mFocusOut24m with detail 4mPointerRoot24m (or 4mNone24m) is generated
     on all root windows.

·    If A is not a root window, 4mFocusIn24m with detail 4mNonlin-0m
     4mearVirtual24m is generated on each window from A's root
     down to but not including A (in order).

·    4mFocusIn24m with detail 4mNonlinear24m is generated on A.

·    If P is an inferior of A, 4mFocusIn24m with detail 4mPointer0m
     is generated on each window below A down to and includ-
     ing P (in order).

When the focus moves from 4mPointerRoot24m to 4mNone24m (or vice
versa) and the pointer is in window P:

·    If the old focus is 4mPointerRoot24m, 4mFocusOut24m with detail
     4mPointer24m is generated on each window from P up to and
     including P's root (in order).

·    4mFocusOut24m with detail 4mPointerRoot24m (or 4mNone24m) is generated
     on all root windows.

·    4mFocusIn24m with detail 4mNone24m (or 4mPointerRoot24m) is generated
     on all root windows.

·    If the new focus is 4mPointerRoot24m, 4mFocusIn24m with detail
     4mPointer24m is generated on each window from P's root down
     to and including P (in order).




			     1m1120m





1mX Protocol				X11, Release 6.7 DRAFT0m


When a keyboard grab activates (but before generating any
actual 4mKeyPress24m event that activates the grab), G is the
grab-window for the grab, and F is the current focus:

·    4mFocusIn24m and 4mFocusOut24m events with mode 4mGrab24m are gener-
     ated (as for 4mNormal24m above) as if the focus were to
     change from F to G.

When a keyboard grab deactivates (but after generating any
actual 4mKeyRelease24m event that deactivates the grab), G is the
grab-window for the grab, and F is the current focus:

·    4mFocusIn24m and 4mFocusOut24m events with mode 4mUngrab24m are gener-
     ated (as for 4mNormal24m above) as if the focus were to
     change from G to F.


__
|    4mKeymapNotify0m

|__    4mkeys24m: LISTofCARD8


The value is a bit vector as described in 4mQueryKeymap24m.  This
event is reported to clients selecting 4mKeymapState24m on a win-
dow and is generated immediately after every 4mEnterNotify24m and
4mFocusIn24m.


__
|    4mExpose0m

  4mwindow24m: WINDOW
  4mx24m, 4my24m, 4mwidth24m, 4mheight24m: CARD16
|__    4mcount24m: CARD16


This event is reported to clients selecting 4mExposure24m on the
window.	 It is generated when no valid contents are avail-
able for regions of a window, and either the regions are
visible, the regions are viewable and the server is (perhaps
newly) maintaining backing store on the window, or the win-
dow is not viewable but the server is (perhaps newly) honor-
ing window's backing-store attribute of 4mAlways24m or 4mWhen-0m
4mMapped24m.  The regions are decomposed into an arbitrary set of
rectangles, and an 4mExpose24m event is generated for each rec-
tangle.

For a given action causing exposure events, the set of
events for a given window are guaranteed to be reported con-
tiguously.  If count is zero, then no more 4mExpose24m events for
this window follow.  If count is nonzero, then at least that
many more 4mExpose24m events for this window follow (and possibly
more).



			     1m1130m





1mX Protocol				X11, Release 6.7 DRAFT0m


The x and y coordinates are relative to window's origin and
specify the upper-left corner of a rectangle.  The width and
height specify the extent of the rectangle.

4mExpose24m events are never generated on 4mInputOnly24m windows.

All 4mExpose24m events caused by a hierarchy change are generated
after any hierarchy event caused by that change (for exam-
ple, 4mUnmapNotify24m, 4mMapNotify24m, 4mConfigureNotify24m, 4mGravityNotify24m,
4mCirculateNotify24m).	All 4mExpose24m events on a given window are
generated after any 4mVisibilityNotify24m event on that window,
but it is not required that all 4mExpose24m events on all windows
be generated after all 4mVisibilitity24m events on all windows.
The ordering of 4mExpose24m events with respect to 4mFocusOut24m,
4mEnterNotify24m, and 4mLeaveNotify24m events is not constrained.


__
|    4mGraphicsExposure0m

  4mdrawable24m: DRAWABLE
  4mx24m, 4my24m, 4mwidth24m, 4mheight24m: CARD16
  4mcount24m: CARD16
  4mmajor-opcode24m: CARD8
|__    4mminor-opcode24m: CARD16


This event is reported to a client using a graphics context
with graphics-exposures selected and is generated when a
destination region could not be computed due to an obscured
or out-of-bounds source region.	 All of the regions exposed
by a given graphics request are guaranteed to be reported
contiguously.  If count is zero then no more 4mGraphicsExpo-0m
4msure24m events for this window follow.  If count is nonzero,
then at least that many more 4mGraphicsExposure24m events for
this window follow (and possibly more).

The x and y coordinates are relative to drawable's origin
and specify the upper-left corner of a rectangle.  The width
and height specify the extent of the rectangle.

The major and minor opcodes identify the graphics request
used.  For the core protocol, major-opcode is always 4mCopy-0m
4mArea24m or 4mCopyPlane24m, and minor-opcode is always zero.


__
|    4mNoExposure0m

  4mdrawable24m: DRAWABLE
  4mmajor-opcode24m: CARD8
|__    4mminor-opcode:24m CARD16





			     1m1140m





1mX Protocol				X11, Release 6.7 DRAFT0m


This event is reported to a client using a graphics context
with graphics-exposures selected and is generated when a
graphics request that might produce 4mGraphicsExposure24m events
does not produce any.  The drawable specifies the destina-
tion used for the graphics request.

The major and minor opcodes identify the graphics request
used.  For the core protocol, major-opcode is always 4mCopy-0m
4mArea24m or 4mCopyPlane24m, and the minor-opcode is always zero.


__
|    4mVisibilityNotify0m

  4mwindow24m: WINDOW
|__    4mstate24m: {4mUnobscured24m, 4mPartiallyObscured24m, 4mFullyObscured24m}


This event is reported to clients selecting 4mVisibilityChange0m
on the window.	In the following, the state of the window is
calculated ignoring all of the window's subwindows.  When a
window changes state from partially or fully obscured or not
viewable to viewable and completely unobscured, an event
with 4mUnobscured24m is generated.  When a window changes state
from viewable and completely unobscured, from viewable and
completely obscured, or from not viewable, to viewable and
partially obscured, an event with 4mPartiallyObscured24m is gen-
erated.	 When a window changes state from viewable and com-
pletely unobscured, from viewable and partially obscured, or
from not viewable to viewable and fully obscured, an event
with 4mFullyObscured24m is generated.

4mVisibilityNotify24m events are never generated on 4mInputOnly0m
windows.

All 4mVisibilityNotify24m events caused by a hierarchy change are
generated after any hierarchy event caused by that change
(for example, 4mUnmapNotify24m, 4mMapNotify24m, 4mConfigureNotify24m, 4mGrav-0m
4mityNotify24m, 4mCirculateNotify24m).	Any 4mVisibilityNotify24m event on
a given window is generated before any 4mExpose24m events on that
window, but it is not required that all 4mVisibilityNotify0m
events on all windows be generated before all 4mExpose24m events
on all windows.	 The ordering of 4mVisibilityNotify24m events
with respect to 4mFocusOut24m, 4mEnterNotify24m, and 4mLeaveNotify0m
events is not constrained.












			     1m1150m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mCreateNotify0m

  4mparent24m, 4mwindow24m: WINDOW
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m, 4mborder-width24m: CARD16
|__    4moverride-redirect24m: BOOL


This event is reported to clients selecting 4mSubstructureNo-0m
4mtify24m on the parent and is generated when the window is cre-
ated.  The arguments are as in the 4mCreateWindow24m request.


__
|    4mDestroyNotify0m

|__    4mevent24m, 4mwindow24m: WINDOW


This event is reported to clients selecting 4mStructureNotify0m
on the window and to clients selecting 4mSubstructureNotify24m on
the parent.  It is generated when the window is destroyed.
The event is the window on which the event was generated,
and the window is the window that is destroyed.

The ordering of the 4mDestroyNotify24m events is such that for
any given window, 4mDestroyNotify24m is generated on all inferi-
ors of the window before being generated on the window
itself.	 The ordering among siblings and across subhierar-
chies is not otherwise constrained.


__
|    4mUnmapNotify0m

  4mevent24m, 4mwindow24m: WINDOW
|__    4mfrom-configure24m: BOOL


This event is reported to clients selecting 4mStructureNotify0m
on the window and to clients selecting 4mSubstructureNotify24m on
the parent.  It is generated when the window changes state
from mapped to unmapped.  The event is the window on which
the event was generated, and the window is the window that
is unmapped.  The from-configure flag is 4mTrue24m if the event
was generated as a result of the window's parent being
resized when the window itself had a win-gravity of 4mUnmap24m.










			     1m1160m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mMapNotify0m

  4mevent24m, 4mwindow24m: WINDOW
|__    4moverride-redirect24m: BOOL


This event is reported to clients selecting 4mStructureNotify0m
on the window and to clients selecting 4mSubstructureNotify24m on
the parent.  It is generated when the window changes state
from unmapped to mapped.  The event is the window on which
the event was generated, and the window is the window that
is mapped.  The override-redirect flag is from the window's
attribute.


__
|    4mMapRequest0m

|__    4mparent24m, 4mwindow24m: WINDOW


This event is reported to the client selecting 4mSubstructur-0m
4meRedirect24m on the parent and is generated when a 4mMapWindow0m
request is issued on an unmapped window with an override-re-
direct attribute of 4mFalse24m.


__
|    4mReparentNotify0m

  4mevent24m, 4mwindow24m, 4mparent24m: WINDOW
  4mx24m, 4my24m: INT16
|__    4moverride-redirect24m: BOOL


This event is reported to clients selecting 4mSubstructureNo-0m
4mtify24m on either the old or the new parent and to clients
selecting 4mStructureNotify24m on the window.  It is generated
when the window is reparented.	The event is the window on
which the event was generated.	The window is the window
that has been rerooted.	 The parent specifies the new par-
ent.  The x and y coordinates are relative to the new par-
ent's origin and specify the position of the upper-left
outer corner of the window.  The override-redirect flag is
from the window's attribute.












			     1m1170m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mConfigureNotify0m

  4mevent24m, 4mwindow24m: WINDOW
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m, 4mborder-width24m: CARD16
  4mabove-sibling24m: WINDOW or 4mNone0m
|__    4moverride-redirect24m: BOOL


This event is reported to clients selecting 4mStructureNotify0m
on the window and to clients selecting 4mSubstructureNotify24m on
the parent.  It is generated when a 4mConfigureWindow24m request
actually changes the state of the window.  The event is the
window on which the event was generated, and the window is
the window that is changed.  The x and y coordinates are
relative to the new parent's origin and specify the position
of the upper-left outer corner of the window.  The width and
height specify the inside size, not including the border.
If above-sibling is 4mNone24m, then the window is on the bottom
of the stack with respect to siblings.	Otherwise, the win-
dow is immediately on top of the specified sibling.  The
override-redirect flag is from the window's attribute.


__
|    4mGravityNotify0m

  4mevent24m, 4mwindow24m: WINDOW
|__    4mx24m, 4my24m: INT16


This event is reported to clients selecting 4mSubstructureNo-0m
4mtify24m on the parent and to clients selecting 4mStructureNotify0m
on the window.	It is generated when a window is moved
because of a change in size of the parent.  The event is the
window on which the event was generated, and the window is
the window that is moved.  The x and y coordinates are rela-
tive to the new parent's origin and specify the position of
the upper-left outer corner of the window.


__
|    4mResizeRequest0m

  4mwindow24m: WINDOW
|__    4mwidth24m, 4mheight24m: CARD16


This event is reported to the client selecting 4mResizeRedi-0m
4mrect24m on the window and is generated when a 4mConfigureWindow0m
request by some other client on the window attempts to
change the size of the window.	The width and height are the
requested inside size, not including the border.




			     1m1180m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mConfigureRequest0m

  4mparent24m, 4mwindow24m: WINDOW
  4mx24m, 4my24m: INT16
  4mwidth24m, 4mheight24m, 4mborder-width24m: CARD16
  4msibling24m: WINDOW or 4mNone0m
  4mstack-mode24m: {4mAbove24m, 4mBelow24m, 4mTopIf24m, 4mBottomIf24m, 4mOpposite24m}
|__    4mvalue-mask24m: BITMASK


This event is reported to the client selecting 4mSubstructur-0m
4meRedirect24m on the parent and is generated when a 4mConfig-0m
4mureWindow24m request is issued on the window by some other
client.	 The value-mask indicates which components were
specified in the request.  The value-mask and the corre-
sponding values are reported as given in the request.  The
remaining values are filled in from the current geometry of
the window, except in the case of sibling and stack-mode,
which are reported as 4mNone24m and 4mAbove24m (respectively) if not
given in the request.


__
|    4mCirculateNotify0m

  4mevent24m, 4mwindow24m: WINDOW
|__    4mplace24m: {4mTop24m, 4mBottom24m}


This event is reported to clients selecting 4mStructureNotify0m
on the window and to clients selecting 4mSubstructureNotify24m on
the parent.  It is generated when the window is actually
restacked from a 4mCirculateWindow24m request.	The event is the
window on which the event was generated, and the window is
the window that is restacked.  If place is 4mTop24m, the window
is now on top of all siblings.	Otherwise, it is below all
siblings.


__
|    4mCirculateRequest0m

  4mparent24m, 4mwindow24m: WINDOW
|__    4mplace24m: {4mTop24m, 4mBottom24m}


This event is reported to the client selecting 4mSubstructur-0m
4meRedirect24m on the parent and is generated when a 4mCircu-0m
4mlateWindow24m request is issued on the parent and a window
actually needs to be restacked.	 The window specifies the
window to be restacked, and the place specifies what the new
position in the stacking order should be.





			     1m1190m





1mX Protocol				X11, Release 6.7 DRAFT0m

__
|    4mPropertyNotify0m

  4mwindow24m: WINDOW
  4matom24m: ATOM
  4mstate24m: {4mNewValue24m, 4mDeleted24m}
|__    4mtime24m: TIMESTAMP


This event is reported to clients selecting 4mPropertyChange0m
on the window and is generated with state 4mNewValue24m when a
property of the window is changed using 4mChangeProperty24m or
4mRotateProperties24m, even when adding zero-length data using
4mChangeProperty24m and when replacing all or part of a property
with identical data using 4mChangeProperty24m or 4mRotateProper-0m
4mties24m.  It is generated with state 4mDeleted24m when a property of
the window is deleted using request 4mDeleteProperty24m or 4mGet-0m
4mProperty24m.	The timestamp indicates the server time when the
property was changed.


__
|    4mSelectionClear0m

  4mowner24m: WINDOW
  4mselection24m: ATOM
|__    4mtime24m: TIMESTAMP


This event is reported to the current owner of a selection
and is generated when a new owner is being defined by means
of 4mSetSelectionOwner24m.  The timestamp is the last-change time
recorded for the selection.  The owner argument is the win-
dow that was specified by the current owner in its 4mSetSelec-0m
4mtionOwner24m request.


__
|    4mSelectionRequest0m

  4mowner24m: WINDOW
  4mselection24m: ATOM
  4mtarget24m: ATOM
  4mproperty24m: ATOM or 4mNone0m
  4mrequestor24m: WINDOW
|__    4mtime24m: TIMESTAMP or 4mCurrentTime0m


This event is reported to the owner of a selection and is
generated when a client issues a 4mConvertSelection24m request.
The owner argument is the window that was specified in the
4mSetSelectionOwner24m request.	 The remaining arguments are as
in the 4mConvertSelection24m request.





			     1m1200m





1mX Protocol				X11, Release 6.7 DRAFT0m


The owner should convert the selection based on the speci-
fied target type and send a 4mSelectionNotify24m back to the
requestor.  A complete specification for using selections is
given in the X.Org standard 4mInter-Client24m 4mCommunication24m 4mCon-0m
4mventions24m 4mManual24m.


__
|    4mSelectionNotify0m

  4mrequestor24m: WINDOW
  4mselection24m, 4mtarget24m: ATOM
  4mproperty24m: ATOM or 4mNone0m
|__    4mtime24m: TIMESTAMP or 4mCurrentTime0m


This event is generated by the server in response to a 4mCon-0m
4mvertSelection24m request when there is no owner for the selec-
tion.  When there is an owner, it should be generated by the
owner using 4mSendEvent24m.  The owner of a selection should send
this event to a requestor either when a selection has been
converted and stored as a property or when a selection con-
version could not be performed (indicated with property
4mNone24m).


__
|    4mColormapNotify0m

  4mwindow24m: WINDOW
  4mcolormap24m: COLORMAP or 4mNone0m
  4mnew24m: BOOL
|__    4mstate24m: {4mInstalled24m, 4mUninstalled24m}


This event is reported to clients selecting 4mColormapChange0m
on the window.	It is generated with value 4mTrue24m for new when
the colormap attribute of the window is changed and is gen-
erated with value 4mFalse24m for new when the colormap of a win-
dow is installed or uninstalled.  In either case, the state
indicates whether the colormap is currently installed.


__
|    4mMappingNotify0m

  4mrequest24m: {4mModifier24m, 4mKeyboard24m, 4mPointer24m}
|__    4mfirst-keycode24m, 4mcount24m: CARD8


This event is sent to all clients.  There is no mechanism to
express disinterest in this event.  The detail indicates the
kind of change that occurred: 4mModifiers24m for a successful
4mSetModifierMapping24m, 4mKeyboard24m for a successful



			     1m1210m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mChangeKeyboardMapping24m, and 4mPointer24m for a successful 4mSet-0m
4mPointerMapping24m.  If the detail is 4mKeyboard24m, then first-key-
code and count indicate the range of altered keycodes.


__
|    4mClientMessage0m

  4mwindow24m: WINDOW
  4mtype24m: ATOM
  4mformat24m: {8, 16, 32}
|__    4mdata24m: LISTofINT8 or LISTofINT16 or LISTofINT32


This event is only generated by clients using 4mSendEvent24m.
The type specifies how the data is to be interpreted by the
receiving client; the server places no interpretation on the
type or the data.  The format specifies whether the data
should be viewed as a list of 8-bit, 16-bit, or 32-bit quan-
tities, so that the server can correctly byte-swap, as nec-
essary.	 The data always consists of either 20 8-bit values
or 10 16-bit values or 5 32-bit values, although particular
message types might not make use of all of these values.

1m12.  Flow Control and Concurrency0m

Whenever the server is writing to a given connection, it is
permissible for the server to stop reading from that connec-
tion (but if the writing would block, it must continue to
service other connections).  The server is not required to
buffer more than a single request per connection at one
time.  For a given connection to the server, a client can
block while reading from the connection but should undertake
to read (events and errors) when writing would block.  Fail-
ure on the part of a client to obey this rule could result
in a deadlocked connection, although deadlock is probably
unlikely unless either the transport layer has very little
buffering or the client attempts to send large numbers of
requests without ever reading replies or checking for errors
and events.

Whether or not a server is implemented with internal concur-
rency, the overall effect must be as if individual requests
are executed to completion in some serial order, and
requests from a given connection must be executed in deliv-
ery order (that is, the total execution order is a shuffle
of the individual streams).  The execution of a request
includes validating all arguments, collecting all data for
any reply, and generating and queueing all required events.
However, it does not include the actual transmission of the
reply and the events.  In addition, the effect of any other
cause that can generate multiple events (for example, acti-
vation of a grab or pointer motion) must effectively gener-
ate and queue all required events indivisibly with respect



			     1m1220m





1mX Protocol				X11, Release 6.7 DRAFT0m


to all other causes and requests.  For a request from a
given client, any events destined for that client that are
caused by executing the request must be sent to the client
before any reply or error is sent.





















































			     1m1230m





1mX Protocol				X11, Release 6.7 DRAFT0m




			 1mAppendix A0m

		      1mKEYSYM Encoding0m



For convenience, KEYSYM values are viewed as split into four
bytes:

·    Byte 1 (for the purposes of this encoding) is the most-
     significant 5 bits (because of the 29-bit effective
     values)

·    Byte 2 is the next most-significant 8 bits

·    Byte 3 is the next most-significant 8 bits

·    Byte 4 is the least-significant 8 bits

There are two special KEYSYM values: 4mNoSymbol24m and 4mVoidSym-0m
4mbol24m.  They are used to indicate the absence of symbols (see
section 5).

-----------------------------------------------
1mByte 1   Byte 2   Byte 3   Byte 4   Name0m
-----------------------------------------------
  0	    0	     0	      0	    4mNoSymbol0m
  0	  255	   255	    255	    4mVoidSymbol0m
-----------------------------------------------

All other standard KEYSYM values have zero values for bytes
1 and 2.  Byte 3 indicates a character code set, and byte 4
indicates a particular character within that set.

----------------------------------
1mByte 3   Byte 40m
----------------------------------
   0	 Latin-1
   1	 Latin-2
   2	 Latin-3
   3	 Latin-4
   4	 Kana
   5	 Arabic
   6	 Cyrillic
   7	 Greek
   8	 Technical
   9	 Special
  10	 Publishing
  11	 APL
  12	 Hebrew
  13	 Thai




			     1m1240m





1mX Protocol				X11, Release 6.7 DRAFT0m


  14	 Korean
  15	 Latin-5
  16	 Latin-6
  17	 Latin-7
  18	 Latin-8
  19	 Latin-9
  32	 Currency
 253	 3270
 254	 Keyboard (XKB) Extension
 255	 Keyboard
----------------------------------

Each character set contains gaps where codes have been
removed that were duplicates with codes in previous charac-
ter sets (that is, character sets with lesser byte 3 value).

The 94 and 96 character code sets have been moved to occupy
the right-hand quadrant (decimal 129 through 256), so the
ASCII subset has a unique encoding across byte 4, which cor-
responds to the ASCII character code.  However, this cannot
be guaranteed with future registrations and does not apply
to all of the Keyboard set.

To the best of our knowledge, the Latin, Kana, Arabic,
Cyrillic, Greek, APL, and Hebrew sets are from the appropri-
ate ISO and/or ECMA international standards.  There are no
Technical, Special, or Publishing international standards,
so these sets are based on Digital Equipment Corporation
standards.

The ordering between the sets (byte 3) is essentially arbi-
trary.	National and international standards bodies were
commencing deliberations regarding international 2-byte and
4-byte character sets at the time these keysyms were devel-
oped, but we did not know of any proposed layouts.

The order may be arbitrary, but it is important in dealing
with duplicate coding.	As far as possible, keysym values
(byte 4) follow the character set encoding standards, except
for the Greek and Cyrillic keysyms which are based on early
draft standards.  In the Latin-1 to Latin-4 sets, all dupli-
cate glyphs occupy the same code position.  However, dupli-
cates between Greek and Technical do not occupy the same
code position.	Applications that wish to use the Latin-2,
Latin-3, Latin-4, Greek, Cyrillic, or Technical sets may
find it convenient to use arrays to transform the keysyms.

There is a difference between European and US usage of the
names Pilcrow, Paragraph, and Section, as follows:

-----------------------------------------------------------
1mUS name	   European name    code position in Latin-10m





			     1m1250m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------
Section sign	 Paragraph sign	  10/07
Paragraph sign	 Pilcrow sign	  11/06
-----------------------------------------------------------


We have adopted the US names (by accident rather than by
design).

The Keyboard set is a miscellaneous collection of commonly
occurring keys on keyboards.  Within this set, the keypad
symbols are generally duplicates of symbols found on keys on
the main part of the keyboard, but they are distinguished
here because they often have a distinguishable semantics
associated with them.

Keyboards tend to be comparatively standard with respect to
the alphanumeric keys, but they differ radically on the mis-
cellaneous function keys.  Many function keys are left over
from early timesharing days or are designed for a specific
application.  Keyboard layouts from large manufacturers tend
to have lots of keys for every conceivable purpose, whereas
small workstation manufacturers often add keys that are
solely for support of some of their unique functionality.
There are two ways of thinking about how to define keysyms
for such a world:

·    The Engraving approach

·    The Common approach

The Engraving approach is to create a keysym for every
unique key engraving.  This is effectively taking the union
of all key engravings on all keyboards.	 For example, some
keyboards label function keys across the top as F1 through
Fn, and others label them as PF1 through PFn.  These would
be different keys under the Engraving approach.	 Likewise,
Lock would differ from Shift Lock, which is different from
the up-arrow symbol that has the effect of changing lower-
case to uppercase.  There are lots of other aliases such as
Del, DEL, Delete, Remove, and so forth.	 The Engraving
approach makes it easy to decide if a new entry should be
added to the keysym set:  if it does not exactly match an
existing one, then a new one is created.  One estimate is
that there would be on the order of 300-500 Keyboard keysyms
using this approach, without counting foreign translations
and variations.

The Common approach tries to capture all of the keys present
on an interesting number of keyboards, folding likely
aliases into the same keysym.  For example, Del, DEL, and
Delete are all merged into a single keysym.  Vendors would
be expected to augment the keysym set (using the vendor-spe-
cific encoding space) to include all of their unique keys



			     1m1260m





1mX Protocol				X11, Release 6.7 DRAFT0m


that were not included in the standard set.  Each vendor
decides which of its keys map into the standard keysyms,
which presumably can be overridden by a user.  It is more
difficult to implement this approach, because judgment is
required about when a sufficient set of keyboards implements
an engraving to justify making it a keysym in the standard
set and about which engravings should be merged into a sin-
gle keysym.  Under this scheme there are an estimated
100-150 keysyms.

Although neither scheme is perfect or elegant, the Common
approach has been selected because it makes it easier to
write a portable application.  Having the Delete functional-
ity merged into a single keysym allows an application to
implement a deletion function and expect reasonable bindings
on a wide set of workstations.	Under the Common approach,
application writers are still free to look for and interpret
vendor-specific keysyms, but because they are in the
extended set, the application developer is more conscious
that they are writing the application in a nonportable fash-
ion.

In the listings below, Code Pos is a representation of byte
4 of the KEYSYM value, expressed as most-significant/least-
significant 4-bit values.  The Code Pos numbers are for ref-
erence only and do not affect the KEYSYM value.	 In all
cases, the KEYSYM value is:


     byte3 * 256 + byte4


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
000    032    02/00   SPACE						 Latin-1
000    033    02/01   EXCLAMATION POINT					 Latin-1
000    034    02/02   QUOTATION MARK					 Latin-1
000    035    02/03   NUMBER SIGN					 Latin-1
000    036    02/04   DOLLAR SIGN					 Latin-1
000    037    02/05   PERCENT SIGN					 Latin-1
000    038    02/06   AMPERSAND						 Latin-1
000    039    02/07   APOSTROPHE					 Latin-1
000    040    02/08   LEFT PARENTHESIS					 Latin-1
000    041    02/09   RIGHT PARENTHESIS					 Latin-1
000    042    02/10   ASTERISK						 Latin-1
000    043    02/11   PLUS SIGN						 Latin-1
000    044    02/12   COMMA						 Latin-1
000    045    02/13   MINUS SIGN					 Latin-1
000    046    02/14   FULL STOP						 Latin-1
000    047    02/15   SOLIDUS						 Latin-1
000    048    03/00   DIGIT ZERO					 Latin-1




			     1m1270m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
000    049    03/01   DIGIT ONE						 Latin-1
000    050    03/02   DIGIT TWO						 Latin-1
000    051    03/03   DIGIT THREE					 Latin-1
000    052    03/04   DIGIT FOUR					 Latin-1
000    053    03/05   DIGIT FIVE					 Latin-1
000    054    03/06   DIGIT SIX						 Latin-1
000    055    03/07   DIGIT SEVEN					 Latin-1
000    056    03/08   DIGIT EIGHT					 Latin-1
000    057    03/09   DIGIT NINE					 Latin-1
000    058    03/10   COLON						 Latin-1
000    059    03/11   SEMICOLON						 Latin-1
000    060    03/12   LESS THAN SIGN					 Latin-1
000    061    03/13   EQUALS SIGN					 Latin-1
000    062    03/14   GREATER THAN SIGN					 Latin-1
000    063    03/15   QUESTION MARK					 Latin-1
000    064    04/00   COMMERCIAL AT					 Latin-1
000    065    04/01   LATIN CAPITAL LETTER A				 Latin-1
000    066    04/02   LATIN CAPITAL LETTER B				 Latin-1
000    067    04/03   LATIN CAPITAL LETTER C				 Latin-1
000    068    04/04   LATIN CAPITAL LETTER D				 Latin-1
000    069    04/05   LATIN CAPITAL LETTER E				 Latin-1
000    070    04/06   LATIN CAPITAL LETTER F				 Latin-1
000    071    04/07   LATIN CAPITAL LETTER G				 Latin-1
000    072    04/08   LATIN CAPITAL LETTER H				 Latin-1
000    073    04/09   LATIN CAPITAL LETTER I				 Latin-1
000    074    04/10   LATIN CAPITAL LETTER J				 Latin-1
000    075    04/11   LATIN CAPITAL LETTER K				 Latin-1
000    076    04/12   LATIN CAPITAL LETTER L				 Latin-1
000    077    04/13   LATIN CAPITAL LETTER M				 Latin-1
000    078    04/14   LATIN CAPITAL LETTER N				 Latin-1
000    079    04/15   LATIN CAPITAL LETTER O				 Latin-1
000    080    05/00   LATIN CAPITAL LETTER P				 Latin-1
000    081    05/01   LATIN CAPITAL LETTER Q				 Latin-1
000    082    05/02   LATIN CAPITAL LETTER R				 Latin-1
000    083    05/03   LATIN CAPITAL LETTER S				 Latin-1
000    084    05/04   LATIN CAPITAL LETTER T				 Latin-1
000    085    05/05   LATIN CAPITAL LETTER U				 Latin-1
000    086    05/06   LATIN CAPITAL LETTER V				 Latin-1
000    087    05/07   LATIN CAPITAL LETTER W				 Latin-1
000    088    05/08   LATIN CAPITAL LETTER X				 Latin-1
000    089    05/09   LATIN CAPITAL LETTER Y				 Latin-1
000    090    05/10   LATIN CAPITAL LETTER Z				 Latin-1
000    091    05/11   LEFT SQUARE BRACKET				 Latin-1
000    092    05/12   REVERSE SOLIDUS					 Latin-1
000    093    05/13   RIGHT SQUARE BRACKET				 Latin-1
000    094    05/14   CIRCUMFLEX ACCENT					 Latin-1
000    095    05/15   LOW LINE						 Latin-1
000    096    06/00   GRAVE ACCENT					 Latin-1
000    097    06/01   LATIN SMALL LETTER a				 Latin-1




			     1m1280m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
000    098    06/02   LATIN SMALL LETTER b				 Latin-1
000    099    06/03   LATIN SMALL LETTER c				 Latin-1
000    100    06/04   LATIN SMALL LETTER d				 Latin-1
000    101    06/05   LATIN SMALL LETTER e				 Latin-1
000    102    06/06   LATIN SMALL LETTER f				 Latin-1
000    103    06/07   LATIN SMALL LETTER g				 Latin-1
000    104    06/08   LATIN SMALL LETTER h				 Latin-1
000    105    06/09   LATIN SMALL LETTER i				 Latin-1
000    106    06/10   LATIN SMALL LETTER j				 Latin-1
000    107    06/11   LATIN SMALL LETTER k				 Latin-1
000    108    06/12   LATIN SMALL LETTER l				 Latin-1
000    109    06/13   LATIN SMALL LETTER m				 Latin-1
000    110    06/14   LATIN SMALL LETTER n				 Latin-1
000    111    06/15   LATIN SMALL LETTER o				 Latin-1
000    112    07/00   LATIN SMALL LETTER p				 Latin-1
000    113    07/01   LATIN SMALL LETTER q				 Latin-1
000    114    07/02   LATIN SMALL LETTER r				 Latin-1
000    115    07/03   LATIN SMALL LETTER s				 Latin-1
000    116    07/04   LATIN SMALL LETTER t				 Latin-1
000    117    07/05   LATIN SMALL LETTER u				 Latin-1
000    118    07/06   LATIN SMALL LETTER v				 Latin-1
000    119    07/07   LATIN SMALL LETTER w				 Latin-1
000    120    07/08   LATIN SMALL LETTER x				 Latin-1
000    121    07/09   LATIN SMALL LETTER y				 Latin-1
000    122    07/10   LATIN SMALL LETTER z				 Latin-1
000    123    07/11   LEFT CURLY BRACKET				 Latin-1
000    124    07/12   VERTICAL LINE					 Latin-1
000    125    07/13   RIGHT CURLY BRACKET				 Latin-1
000    126    07/14   TILDE						 Latin-1
000    160    10/00   NO-BREAK SPACE					 Latin-1
000    161    10/01   INVERTED EXCLAMATION MARK				 Latin-1
000    162    10/02   CENT SIGN						 Latin-1
000    163    10/03   POUND SIGN					 Latin-1
000    164    10/04   CURRENCY SIGN					 Latin-1
000    165    10/05   YEN SIGN						 Latin-1
000    166    10/06   BROKEN VERTICAL BAR				 Latin-1
000    167    10/07   SECTION SIGN					 Latin-1
000    168    10/08   DIAERESIS						 Latin-1
000    169    10/09   COPYRIGHT SIGN					 Latin-1
000    170    10/10   FEMININE ORDINAL INDICATOR			 Latin-1
000    171    10/11   LEFT ANGLE QUOTATION MARK				 Latin-1
000    172    10/12   NOT SIGN						 Latin-1
000    173    10/13   HYPHEN						 Latin-1
000    174    10/14   REGISTERED TRADEMARK SIGN				 Latin-1
000    175    10/15   MACRON						 Latin-1
000    176    11/00   DEGREE SIGN, RING ABOVE				 Latin-1
000    177    11/01   PLUS-MINUS SIGN					 Latin-1
000    178    11/02   SUPERSCRIPT TWO					 Latin-1
000    179    11/03   SUPERSCRIPT THREE					 Latin-1




			     1m1290m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
000    180    11/04   ACUTE ACCENT					 Latin-1
000    181    11/05   MICRO SIGN					 Latin-1
000    182    11/06   PARAGRAPH SIGN					 Latin-1
000    183    11/07   MIDDLE DOT					 Latin-1
000    184    11/08   CEDILLA						 Latin-1
000    185    11/09   SUPERSCRIPT ONE					 Latin-1
000    186    11/10   MASCULINE ORDINAL INDICATOR			 Latin-1
000    187    11/11   RIGHT ANGLE QUOTATION MARK			 Latin-1
000    188    11/12   VULGAR FRACTION ONE QUARTER			 Latin-1
000    189    11/13   VULGAR FRACTION ONE HALF				 Latin-1
000    190    11/14   VULGAR FRACTION THREE QUARTERS			 Latin-1
000    191    11/15   INVERTED QUESTION MARK				 Latin-1
000    192    12/00   LATIN CAPITAL LETTER A WITH GRAVE ACCENT		 Latin-1
000    193    12/01   LATIN CAPITAL LETTER A WITH ACUTE ACCENT		 Latin-1
000    194    12/02   LATIN CAPITAL LETTER A WITH CIRCUMFLEX ACCENT	 Latin-1
000    195    12/03   LATIN CAPITAL LETTER A WITH TILDE			 Latin-1
000    196    12/04   LATIN CAPITAL LETTER A WITH DIAERESIS		 Latin-1
000    197    12/05   LATIN CAPITAL LETTER A WITH RING ABOVE		 Latin-1
000    198    12/06   LATIN CAPITAL DIPHTHONG AE			 Latin-1
000    199    12/07   LATIN CAPITAL LETTER C WITH CEDILLA		 Latin-1
000    200    12/08   LATIN CAPITAL LETTER E WITH GRAVE ACCENT		 Latin-1
000    201    12/09   LATIN CAPITAL LETTER E WITH ACUTE ACCENT		 Latin-1
000    202    12/10   LATIN CAPITAL LETTER E WITH CIRCUMFLEX ACCENT	 Latin-1
000    203    12/11   LATIN CAPITAL LETTER E WITH DIAERESIS		 Latin-1
000    204    12/12   LATIN CAPITAL LETTER I WITH GRAVE ACCENT		 Latin-1
000    205    12/13   LATIN CAPITAL LETTER I WITH ACUTE ACCENT		 Latin-1
000    206    12/14   LATIN CAPITAL LETTER I WITH CIRCUMFLEX ACCENT	 Latin-1
000    207    12/15   LATIN CAPITAL LETTER I WITH DIAERESIS		 Latin-1
000    208    13/00   ICELANDIC CAPITAL LETTER ETH			 Latin-1
000    209    13/01   LATIN CAPITAL LETTER N WITH TILDE			 Latin-1
000    210    13/02   LATIN CAPITAL LETTER O WITH GRAVE ACCENT		 Latin-1
000    211    13/03   LATIN CAPITAL LETTER O WITH ACUTE ACCENT		 Latin-1
000    212    13/04   LATIN CAPITAL LETTER O WITH CIRCUMFLEX ACCENT	 Latin-1
000    213    13/05   LATIN CAPITAL LETTER O WITH TILDE			 Latin-1
000    214    13/06   LATIN CAPITAL LETTER O WITH DIAERESIS		 Latin-1
000    215    13/07   MULTIPLICATION SIGN				 Latin-1
000    216    13/08   LATIN CAPITAL LETTER O WITH OBLIQUE STROKE	 Latin-1
000    217    13/09   LATIN CAPITAL LETTER U WITH GRAVE ACCENT		 Latin-1
000    218    13/10   LATIN CAPITAL LETTER U WITH ACUTE ACCENT		 Latin-1
000    219    13/11   LATIN CAPITAL LETTER U WITH CIRCUMFLEX ACCENT	 Latin-1
000    220    13/12   LATIN CAPITAL LETTER U WITH DIAERESIS		 Latin-1
000    221    13/13   LATIN CAPITAL LETTER Y WITH ACUTE ACCENT		 Latin-1
000    222    13/14   ICELANDIC CAPITAL LETTER THORN			 Latin-1
000    223    13/15   GERMAN SMALL LETTER SHARP s			 Latin-1
000    224    14/00   LATIN SMALL LETTER a WITH GRAVE ACCENT		 Latin-1
000    225    14/01   LATIN SMALL LETTER a WITH ACUTE ACCENT		 Latin-1
000    226    14/02   LATIN SMALL LETTER a WITH CIRCUMFLEX ACCENT	 Latin-1
000    227    14/03   LATIN SMALL LETTER a WITH TILDE			 Latin-1
000    228    14/04   LATIN SMALL LETTER a WITH DIAERESIS		 Latin-1




			     1m1300m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
000    229    14/05   LATIN SMALL LETTER a WITH RING ABOVE		 Latin-1
000    230    14/06   LATIN SMALL DIPHTHONG ae				 Latin-1
000    231    14/07   LATIN SMALL LETTER c WITH CEDILLA			 Latin-1
000    232    14/08   LATIN SMALL LETTER e WITH GRAVE ACCENT		 Latin-1
000    233    14/09   LATIN SMALL LETTER e WITH ACUTE ACCENT		 Latin-1
000    234    14/10   LATIN SMALL LETTER e WITH CIRCUMFLEX ACCENT	 Latin-1
000    235    14/11   LATIN SMALL LETTER e WITH DIAERESIS		 Latin-1
000    236    14/12   LATIN SMALL LETTER i WITH GRAVE ACCENT		 Latin-1
000    237    14/13   LATIN SMALL LETTER i WITH ACUTE ACCENT		 Latin-1
000    238    14/14   LATIN SMALL LETTER i WITH CIRCUMFLEX ACCENT	 Latin-1
000    239    14/15   LATIN SMALL LETTER i WITH DIAERESIS		 Latin-1
000    240    15/00   ICELANDIC SMALL LETTER ETH			 Latin-1
000    241    15/01   LATIN SMALL LETTER n WITH TILDE			 Latin-1
000    242    15/02   LATIN SMALL LETTER o WITH GRAVE ACCENT		 Latin-1
000    243    15/03   LATIN SMALL LETTER o WITH ACUTE ACCENT		 Latin-1
000    244    15/04   LATIN SMALL LETTER o WITH CIRCUMFLEX ACCENT	 Latin-1
000    245    15/05   LATIN SMALL LETTER o WITH TILDE			 Latin-1
000    246    15/06   LATIN SMALL LETTER o WITH DIAERESIS		 Latin-1
000    247    15/07   DIVISION SIGN					 Latin-1
000    248    15/08   LATIN SMALL LETTER o WITH OBLIQUE STROKE		 Latin-1
000    249    15/09   LATIN SMALL LETTER u WITH GRAVE ACCENT		 Latin-1
000    250    15/10   LATIN SMALL LETTER u WITH ACUTE ACCENT		 Latin-1
000    251    15/11   LATIN SMALL LETTER u WITH CIRCUMFLEX ACCENT	 Latin-1
000    252    15/12   LATIN SMALL LETTER u WITH DIAERESIS		 Latin-1
000    253    15/13   LATIN SMALL LETTER y WITH ACUTE ACCENT		 Latin-1
000    254    15/14   ICELANDIC SMALL LETTER THORN			 Latin-1
000    255    15/15   LATIN SMALL LETTER y WITH DIAERESIS		 Latin-1


001    161    10/01   LATIN CAPITAL LETTER A WITH OGONEK		 Latin-2
001    162    10/02   BREVE						 Latin-2
001    163    10/03   LATIN CAPITAL LETTER L WITH STROKE		 Latin-2
001    165    10/05   LATIN CAPITAL LETTER L WITH CARON			 Latin-2
001    166    10/06   LATIN CAPITAL LETTER S WITH ACUTE ACCENT		 Latin-2
001    169    10/09   LATIN CAPITAL LETTER S WITH CARON			 Latin-2
001    170    10/10   LATIN CAPITAL LETTER S WITH CEDILLA		 Latin-2
001    171    10/11   LATIN CAPITAL LETTER T WITH CARON			 Latin-2
001    172    10/12   LATIN CAPITAL LETTER Z WITH ACUTE ACCENT		 Latin-2
001    174    10/14   LATIN CAPITAL LETTER Z WITH CARON			 Latin-2
001    175    10/15   LATIN CAPITAL LETTER Z WITH DOT ABOVE		 Latin-2
001    177    11/01   LATIN SMALL LETTER a WITH OGONEK			 Latin-2
001    178    11/02   OGONEK						 Latin-2
001    179    11/03   LATIN SMALL LETTER l WITH STROKE			 Latin-2
001    181    11/05   LATIN SMALL LETTER l WITH CARON			 Latin-2
001    182    11/06   LATIN SMALL LETTER s WITH ACUTE ACCENT		 Latin-2
001    183    11/07   CARON						 Latin-2
001    185    11/09   LATIN SMALL LETTER s WITH CARON			 Latin-2
001    186    11/10   LATIN SMALL LETTER s WITH CEDILLA			 Latin-2
001    187    11/11   LATIN SMALL LETTER t WITH CARON			 Latin-2




			     1m1310m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
001    188    11/12   LATIN SMALL LETTER z WITH ACUTE ACCENT		 Latin-2
001    189    11/13   DOUBLE ACUTE ACCENT				 Latin-2
001    190    11/14   LATIN SMALL LETTER z WITH CARON			 Latin-2
001    191    11/15   LATIN SMALL LETTER z WITH DOT ABOVE		 Latin-2
001    192    12/00   LATIN CAPITAL LETTER R WITH ACUTE ACCENT		 Latin-2
001    195    12/03   LATIN CAPITAL LETTER A WITH BREVE			 Latin-2
001    197    12/05   LATIN CAPITAL LETTER L WITH ACUTE ACCENT		 Latin-2
001    198    12/06   LATIN CAPITAL LETTER C WITH ACUTE ACCENT		 Latin-2
001    200    12/08   LATIN CAPITAL LETTER C WITH CARON			 Latin-2
001    202    12/10   LATIN CAPITAL LETTER E WITH OGONEK		 Latin-2
001    204    12/12   LATIN CAPITAL LETTER E WITH CARON			 Latin-2
001    207    12/15   LATIN CAPITAL LETTER D WITH CARON			 Latin-2
001    208    13/00   LATIN CAPITAL LETTER D WITH STROKE		 Latin-2
001    209    13/01   LATIN CAPITAL LETTER N WITH ACUTE ACCENT		 Latin-2
001    210    13/02   LATIN CAPITAL LETTER N WITH CARON			 Latin-2
001    213    13/05   LATIN CAPITAL LETTER O WITH DOUBLE ACUTE ACCENT	 Latin-2
001    216    13/08   LATIN CAPITAL LETTER R WITH CARON			 Latin-2
001    217    13/09   LATIN CAPITAL LETTER U WITH RING ABOVE		 Latin-2
001    219    13/11   LATIN CAPITAL LETTER U WITH DOUBLE ACUTE ACCENT	 Latin-2
001    222    13/14   LATIN CAPITAL LETTER T WITH CEDILLA		 Latin-2
001    224    14/00   LATIN SMALL LETTER r WITH ACUTE ACCENT		 Latin-2
001    227    14/03   LATIN SMALL LETTER a WITH BREVE			 Latin-2
001    229    14/05   LATIN SMALL LETTER l WITH ACUTE ACCENT		 Latin-2
001    230    14/06   LATIN SMALL LETTER c WITH ACUTE ACCENT		 Latin-2
001    232    14/08   LATIN SMALL LETTER c WITH CARON			 Latin-2
001    234    14/10   LATIN SMALL LETTER e WITH OGONEK			 Latin-2
001    236    14/12   LATIN SMALL LETTER e WITH CARON			 Latin-2
001    239    14/15   LATIN SMALL LETTER d WITH CARON			 Latin-2
001    240    15/00   LATIN SMALL LETTER d WITH STROKE			 Latin-2
001    241    15/01   LATIN SMALL LETTER n WITH ACUTE ACCENT		 Latin-2
001    242    15/02   LATIN SMALL LETTER n WITH CARON			 Latin-2
001    245    15/05   LATIN SMALL LETTER o WITH DOUBLE ACUTE ACCENT	 Latin-2
001    248    15/08   LATIN SMALL LETTER r WITH CARON			 Latin-2
001    249    15/09   LATIN SMALL LETTER u WITH RING ABOVE		 Latin-2
001    251    15/11   LATIN SMALL LETTER u WITH DOUBLE ACUTE ACCENT	 Latin-2
001    254    15/14   LATIN SMALL LETTER t WITH CEDILLA			 Latin-2
001    255    15/15   DOT ABOVE						 Latin-2


002    161    10/01   LATIN CAPITAL LETTER H WITH STROKE		 Latin-3
002    166    10/06   LATIN CAPITAL LETTER H WITH CIRCUMFLEX ACCENT	 Latin-3
002    169    10/09   LATIN CAPITAL LETTER I WITH DOT ABOVE		 Latin-3
002    171    10/11   LATIN CAPITAL LETTER G WITH BREVE			 Latin-3
002    172    10/12   LATIN CAPITAL LETTER J WITH CIRCUMFLEX ACCENT	 Latin-3
002    177    11/01   LATIN SMALL LETTER h WITH STROKE			 Latin-3
002    182    11/06   LATIN SMALL LETTER h WITH CIRCUMFLEX ACCENT	 Latin-3
002    185    11/09   SMALL DOTLESS LETTER i				 Latin-3
002    187    11/11   LATIN SMALL LETTER g WITH BREVE			 Latin-3
002    188    11/12   LATIN SMALL LETTER j WITH CIRCUMFLEX ACCENT	 Latin-3




			     1m1320m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
002    197    12/05   LATIN CAPITAL LETTER C WITH DOT ABOVE		 Latin-3
002    198    12/06   LATIN CAPITAL LETTER C WITH CIRCUMFLEX ACCENT	 Latin-3
002    213    13/05   LATIN CAPITAL LETTER G WITH DOT ABOVE		 Latin-3
002    216    13/08   LATIN CAPITAL LETTER G WITH CIRCUMFLEX ACCENT	 Latin-3
002    221    13/13   LATIN CAPITAL LETTER U WITH BREVE			 Latin-3
002    222    13/14   LATIN CAPITAL LETTER S WITH CIRCUMFLEX ACCENT	 Latin-3
002    229    14/05   LATIN SMALL LETTER c WITH DOT ABOVE		 Latin-3
002    230    14/06   LATIN SMALL LETTER c WITH CIRCUMFLEX ACCENT	 Latin-3
002    245    15/05   LATIN SMALL LETTER g WITH DOT ABOVE		 Latin-3
002    248    15/08   LATIN SMALL LETTER g WITH CIRCUMFLEX ACCENT	 Latin-3
002    253    15/13   LATIN SMALL LETTER u WITH BREVE			 Latin-3
002    254    15/14   LATIN SMALL LETTER s WITH CIRCUMFLEX ACCENT	 Latin-3


003    162    10/02   SMALL GREENLANDIC LETTER KRA			 Latin-4
003    163    10/03   LATIN CAPITAL LETTER R WITH CEDILLA		 Latin-4
003    165    10/05   LATIN CAPITAL LETTER I WITH TILDE			 Latin-4
003    166    10/06   LATIN CAPITAL LETTER L WITH CEDILLA		 Latin-4
003    170    10/10   LATIN CAPITAL LETTER E WITH MACRON		 Latin-4
003    171    10/11   LATIN CAPITAL LETTER G WITH CEDILLA		 Latin-4
003    172    10/12   LATIN CAPITAL LETTER T WITH OBLIQUE STROKE	 Latin-4
003    179    11/03   LATIN SMALL LETTER r WITH CEDILLA			 Latin-4
003    181    11/05   LATIN SMALL LETTER i WITH TILDE			 Latin-4
003    182    11/06   LATIN SMALL LETTER l WITH CEDILLA			 Latin-4
003    186    11/10   LATIN SMALL LETTER e WITH MACRON			 Latin-4
003    187    11/11   LATIN SMALL LETTER g WITH CEDILLA ABOVE		 Latin-4
003    188    11/12   LATIN SMALL LETTER t WITH OBLIQUE STROKE		 Latin-4
003    189    11/13   LAPPISH CAPITAL LETTER ENG			 Latin-4
003    191    11/15   LAPPISH SMALL LETTER ENG				 Latin-4
003    192    12/00   LATIN CAPITAL LETTER A WITH MACRON		 Latin-4
003    199    12/07   LATIN CAPITAL LETTER I WITH OGONEK		 Latin-4
003    204    12/12   LATIN CAPITAL LETTER E WITH DOT ABOVE		 Latin-4
003    207    12/15   LATIN CAPITAL LETTER I WITH MACRON		 Latin-4
003    209    13/01   LATIN CAPITAL LETTER N WITH CEDILLA		 Latin-4
003    210    13/02   LATIN CAPITAL LETTER O WITH MACRON		 Latin-4
003    211    13/03   LATIN CAPITAL LETTER K WITH CEDILLA		 Latin-4
003    217    13/09   LATIN CAPITAL LETTER U WITH OGONEK		 Latin-4
003    221    13/13   LATIN CAPITAL LETTER U WITH TILDE			 Latin-4
003    222    13/14   LATIN CAPITAL LETTER U WITH MACRON		 Latin-4
003    224    14/00   LATIN SMALL LETTER a WITH MACRON			 Latin-4
003    231    14/07   LATIN SMALL LETTER i WITH OGONEK			 Latin-4
003    236    14/12   LATIN SMALL LETTER e WITH DOT ABOVE		 Latin-4
003    239    14/15   LATIN SMALL LETTER i WITH MACRON			 Latin-4
003    241    15/01   LATIN SMALL LETTER n WITH CEDILLA			 Latin-4
003    242    15/02   LATIN SMALL LETTER o WITH MACRON			 Latin-4
003    243    15/03   LATIN SMALL LETTER k WITH CEDILLA			 Latin-4
003    249    15/09   LATIN SMALL LETTER u WITH OGONEK			 Latin-4
003    253    15/13   LATIN SMALL LETTER u WITH TILDE			 Latin-4
003    254    15/14   LATIN SMALL LETTER u WITH MACRON			 Latin-4




			     1m1330m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
004    126    07/14   OVERLINE						 Kana
004    161    10/01   KANA FULL STOP					 Kana
004    162    10/02   KANA OPENING BRACKET				 Kana
004    163    10/03   KANA CLOSING BRACKET				 Kana
004    164    10/04   KANA COMMA					 Kana
004    165    10/05   KANA CONJUNCTIVE					 Kana
004    166    10/06   KANA LETTER WO					 Kana
004    167    10/07   KANA LETTER SMALL A				 Kana
004    168    10/08   KANA LETTER SMALL I				 Kana
004    169    10/09   KANA LETTER SMALL U				 Kana
004    170    10/10   KANA LETTER SMALL E				 Kana
004    171    10/11   KANA LETTER SMALL O				 Kana
004    172    10/12   KANA LETTER SMALL YA				 Kana
004    173    10/13   KANA LETTER SMALL YU				 Kana
004    174    10/14   KANA LETTER SMALL YO				 Kana
004    175    10/15   KANA LETTER SMALL TSU				 Kana
004    176    11/00   PROLONGED SOUND SYMBOL				 Kana
004    177    11/01   KANA LETTER A					 Kana
004    178    11/02   KANA LETTER I					 Kana
004    179    11/03   KANA LETTER U					 Kana
004    180    11/04   KANA LETTER E					 Kana
004    181    11/05   KANA LETTER O					 Kana
004    182    11/06   KANA LETTER KA					 Kana
004    183    11/07   KANA LETTER KI					 Kana
004    184    11/08   KANA LETTER KU					 Kana
004    185    11/09   KANA LETTER KE					 Kana
004    186    11/10   KANA LETTER KO					 Kana
004    187    11/11   KANA LETTER SA					 Kana
004    188    11/12   KANA LETTER SHI					 Kana
004    189    11/13   KANA LETTER SU					 Kana
004    190    11/14   KANA LETTER SE					 Kana
004    191    11/15   KANA LETTER SO					 Kana
004    192    12/00   KANA LETTER TA					 Kana
004    193    12/01   KANA LETTER CHI					 Kana
004    194    12/02   KANA LETTER TSU					 Kana
004    195    12/03   KANA LETTER TE					 Kana
004    196    12/04   KANA LETTER TO					 Kana
004    197    12/05   KANA LETTER NA					 Kana
004    198    12/06   KANA LETTER NI					 Kana
004    199    12/07   KANA LETTER NU					 Kana
004    200    12/08   KANA LETTER NE					 Kana
004    201    12/09   KANA LETTER NO					 Kana
004    202    12/10   KANA LETTER HA					 Kana
004    203    12/11   KANA LETTER HI					 Kana
004    204    12/12   KANA LETTER FU					 Kana
004    205    12/13   KANA LETTER HE					 Kana
004    206    12/14   KANA LETTER HO					 Kana
004    207    12/15   KANA LETTER MA					 Kana
004    208    13/00   KANA LETTER MI					 Kana




			     1m1340m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
004    209    13/01   KANA LETTER MU					 Kana
004    210    13/02   KANA LETTER ME					 Kana
004    211    13/03   KANA LETTER MO					 Kana
004    212    13/04   KANA LETTER YA					 Kana
004    213    13/05   KANA LETTER YU					 Kana
004    214    13/06   KANA LETTER YO					 Kana
004    215    13/07   KANA LETTER RA					 Kana
004    216    13/08   KANA LETTER RI					 Kana
004    217    13/09   KANA LETTER RU					 Kana
004    218    13/10   KANA LETTER RE					 Kana
004    219    13/11   KANA LETTER RO					 Kana
004    220    13/12   KANA LETTER WA					 Kana
004    221    13/13   KANA LETTER N					 Kana
004    222    13/14   VOICED SOUND SYMBOL				 Kana
004    223    13/15   SEMIVOICED SOUND SYMBOL				 Kana


005    172    10/12   ARABIC COMMA					 Arabic
005    187    11/11   ARABIC SEMICOLON					 Arabic
005    191    11/15   ARABIC QUESTION MARK				 Arabic
005    193    12/01   ARABIC LETTER HAMZA				 Arabic
005    194    12/02   ARABIC LETTER MADDA ON ALEF			 Arabic
005    195    12/03   ARABIC LETTER HAMZA ON ALEF			 Arabic
005    196    12/04   ARABIC LETTER HAMZA ON WAW			 Arabic
005    197    12/05   ARABIC LETTER HAMZA UNDER ALEF			 Arabic
005    198    12/06   ARABIC LETTER HAMZA ON YEH			 Arabic
005    199    12/07   ARABIC LETTER ALEF				 Arabic
005    200    12/08   ARABIC LETTER BEH					 Arabic
005    201    12/09   ARABIC LETTER TEH MARBUTA				 Arabic
005    202    12/10   ARABIC LETTER TEH					 Arabic
005    203    12/11   ARABIC LETTER THEH				 Arabic
005    204    12/12   ARABIC LETTER JEEM				 Arabic
005    205    12/13   ARABIC LETTER HAH					 Arabic
005    206    12/14   ARABIC LETTER KHAH				 Arabic
005    207    12/15   ARABIC LETTER DAL					 Arabic
005    208    13/00   ARABIC LETTER THAL				 Arabic
005    209    13/01   ARABIC LETTER RA					 Arabic
005    210    13/02   ARABIC LETTER ZAIN				 Arabic
005    211    13/03   ARABIC LETTER SEEN				 Arabic
005    212    13/04   ARABIC LETTER SHEEN				 Arabic
005    213    13/05   ARABIC LETTER SAD					 Arabic
005    214    13/06   ARABIC LETTER DAD					 Arabic
005    215    13/07   ARABIC LETTER TAH					 Arabic
005    216    13/08   ARABIC LETTER ZAH					 Arabic
005    217    13/09   ARABIC LETTER AIN					 Arabic
005    218    13/10   ARABIC LETTER GHAIN				 Arabic
005    224    14/00   ARABIC LETTER TATWEEL				 Arabic
005    225    14/01   ARABIC LETTER FEH					 Arabic
005    226    14/02   ARABIC LETTER QAF					 Arabic




			     1m1350m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
005    227    14/03   ARABIC LETTER KAF					 Arabic
005    228    14/04   ARABIC LETTER LAM					 Arabic
005    229    14/05   ARABIC LETTER MEEM				 Arabic
005    230    14/06   ARABIC LETTER NOON				 Arabic
005    231    14/07   ARABIC LETTER HA					 Arabic
005    232    14/08   ARABIC LETTER WAW					 Arabic
005    233    14/09   ARABIC LETTER ALEF MAKSURA			 Arabic
005    234    14/10   ARABIC LETTER YEH					 Arabic
005    235    14/11   ARABIC LETTER FATHATAN				 Arabic
005    236    14/12   ARABIC LETTER DAMMATAN				 Arabic
005    237    14/13   ARABIC LETTER KASRATAN				 Arabic
005    238    14/14   ARABIC LETTER FATHA				 Arabic
005    239    14/15   ARABIC LETTER DAMMA				 Arabic
005    240    15/00   ARABIC LETTER KASRA				 Arabic
005    241    15/01   ARABIC LETTER SHADDA				 Arabic
005    242    15/02   ARABIC LETTER SUKUN				 Arabic


006    161    10/01   SERBOCROATION CYRILLIC SMALL LETTER DJE		 Cyrillic
006    162    10/02   MACEDONIAN CYRILLIC SMALL LETTER GJE		 Cyrillic
006    163    10/03   CYRILLIC SMALL LETTER IO				 Cyrillic
006    164    10/04   UKRAINIAN CYRILLIC SMALL LETTER IE		 Cyrillic
006    165    10/05   MACEDONIAN SMALL LETTER DSE			 Cyrillic
006    166    10/06   BYELORUSSIAN/UKRAINIAN CYRILLIC SMALL LETTER I	 Cyrillic
006    167    10/07   UKRAINIAN SMALL LETTER YI				 Cyrillic
006    168    10/08   CYRILLIC SMALL LETTER JE				 Cyrillic
006    169    10/09   CYRILLIC SMALL LETTER LJE				 Cyrillic
006    170    10/10   CYRILLIC SMALL LETTER NJE				 Cyrillic
006    171    10/11   SERBIAN SMALL LETTER TSHE				 Cyrillic
006    172    10/12   MACEDONIAN CYRILLIC SMALL LETTER KJE		 Cyrillic
006    174    10/14   BYELORUSSIAN SMALL LETTER SHORT U			 Cyrillic
006    175    10/15   CYRILLIC SMALL LETTER DZHE			 Cyrillic
006    176    11/00   NUMERO SIGN					 Cyrillic
006    177    11/01   SERBOCROATIAN CYRILLIC CAPITAL LETTER DJE		 Cyrillic
006    178    11/02   MACEDONIAN CYRILLIC CAPITAL LETTER GJE		 Cyrillic
006    179    11/03   CYRILLIC CAPITAL LETTER IO			 Cyrillic
006    180    11/04   UKRAINIAN CYRILLIC CAPITAL LETTER IE		 Cyrillic
006    181    11/05   MACEDONIAN CAPITAL LETTER DSE			 Cyrillic
006    182    11/06   BYELORUSSIAN/UKRAINIAN CYRILLIC CAPITAL LETTER I	 Cyrillic
006    183    11/07   UKRAINIAN CAPITAL LETTER YI			 Cyrillic
006    184    11/08   CYRILLIC CAPITAL LETTER JE			 Cyrillic
006    185    11/09   CYRILLIC CAPITAL LETTER LJE			 Cyrillic
006    186    11/10   CYRILLIC CAPITAL LETTER NJE			 Cyrillic
006    187    11/11   SERBIAN CAPITAL LETTER TSHE			 Cyrillic
006    188    11/12   MACEDONIAN CYRILLIC CAPITAL LETTER KJE		 Cyrillic
006    190    11/14   BYELORUSSIAN CAPITAL LETTER SHORT U		 Cyrillic
006    191    11/15   CYRILLIC CAPITAL LETTER DZHE			 Cyrillic
006    192    12/00   CYRILLIC SMALL LETTER YU				 Cyrillic
006    193    12/01   CYRILLIC SMALL LETTER A				 Cyrillic




			     1m1360m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
006    194    12/02   CYRILLIC SMALL LETTER BE				 Cyrillic
006    195    12/03   CYRILLIC SMALL LETTER TSE				 Cyrillic
006    196    12/04   CYRILLIC SMALL LETTER DE				 Cyrillic
006    197    12/05   CYRILLIC SMALL LETTER IE				 Cyrillic
006    198    12/06   CYRILLIC SMALL LETTER EF				 Cyrillic
006    199    12/07   CYRILLIC SMALL LETTER GHE				 Cyrillic
006    200    12/08   CYRILLIC SMALL LETTER HA				 Cyrillic
006    201    12/09   CYRILLIC SMALL LETTER I				 Cyrillic
006    202    12/10   CYRILLIC SMALL LETTER SHORT I			 Cyrillic
006    203    12/11   CYRILLIC SMALL LETTER KA				 Cyrillic
006    204    12/12   CYRILLIC SMALL LETTER EL				 Cyrillic
006    205    12/13   CYRILLIC SMALL LETTER EM				 Cyrillic
006    206    12/14   CYRILLIC SMALL LETTER EN				 Cyrillic
006    207    12/15   CYRILLIC SMALL LETTER O				 Cyrillic
006    208    13/00   CYRILLIC SMALL LETTER PE				 Cyrillic
006    209    13/01   CYRILLIC SMALL LETTER YA				 Cyrillic
006    210    13/02   CYRILLIC SMALL LETTER ER				 Cyrillic
006    211    13/03   CYRILLIC SMALL LETTER ES				 Cyrillic
006    212    13/04   CYRILLIC SMALL LETTER TE				 Cyrillic
006    213    13/05   CYRILLIC SMALL LETTER U				 Cyrillic
006    214    13/06   CYRILLIC SMALL LETTER ZHE				 Cyrillic
006    215    13/07   CYRILLIC SMALL LETTER VE				 Cyrillic
006    216    13/08   CYRILLIC SMALL SOFT SIGN				 Cyrillic
006    217    13/09   CYRILLIC SMALL LETTER YERU			 Cyrillic
006    218    13/10   CYRILLIC SMALL LETTER ZE				 Cyrillic
006    219    13/11   CYRILLIC SMALL LETTER SHA				 Cyrillic
006    220    13/12   CYRILLIC SMALL LETTER E				 Cyrillic
006    221    13/13   CYRILLIC SMALL LETTER SHCHA			 Cyrillic
006    222    13/14   CYRILLIC SMALL LETTER CHE				 Cyrillic
006    223    13/15   CYRILLIC SMALL HARD SIGN				 Cyrillic
006    224    14/00   CYRILLIC CAPITAL LETTER YU			 Cyrillic
006    225    14/01   CYRILLIC CAPITAL LETTER A				 Cyrillic
006    226    14/02   CYRILLIC CAPITAL LETTER BE			 Cyrillic
006    227    14/03   CYRILLIC CAPITAL LETTER TSE			 Cyrillic
006    228    14/04   CYRILLIC CAPITAL LETTER DE			 Cyrillic
006    229    14/05   CYRILLIC CAPITAL LETTER IE			 Cyrillic
006    230    14/06   CYRILLIC CAPITAL LETTER EF			 Cyrillic
006    231    14/07   CYRILLIC CAPITAL LETTER GHE			 Cyrillic
006    232    14/08   CYRILLIC CAPITAL LETTER HA			 Cyrillic
006    233    14/09   CYRILLIC CAPITAL LETTER I				 Cyrillic
006    234    14/10   CYRILLIC CAPITAL LETTER SHORT I			 Cyrillic
006    235    14/11   CYRILLIC CAPITAL LETTER KA			 Cyrillic
006    236    14/12   CYRILLIC CAPITAL LETTER EL			 Cyrillic
006    237    14/13   CYRILLIC CAPITAL LETTER EM			 Cyrillic
006    238    14/14   CYRILLIC CAPITAL LETTER EN			 Cyrillic
006    239    14/15   CYRILLIC CAPITAL LETTER O				 Cyrillic
006    240    15/00   CYRILLIC CAPITAL LETTER PE			 Cyrillic
006    241    15/01   CYRILLIC CAPITAL LETTER YA			 Cyrillic
006    242    15/02   CYRILLIC CAPITAL LETTER ER			 Cyrillic




			     1m1370m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
006    243    15/03   CYRILLIC CAPITAL LETTER ES			 Cyrillic
006    244    15/04   CYRILLIC CAPITAL LETTER TE			 Cyrillic
006    245    15/05   CYRILLIC CAPITAL LETTER U				 Cyrillic
006    246    15/06   CYRILLIC CAPITAL LETTER ZHE			 Cyrillic
006    247    15/07   CYRILLIC CAPITAL LETTER VE			 Cyrillic
006    248    15/08   CYRILLIC CAPITAL SOFT SIGN			 Cyrillic
006    249    15/09   CYRILLIC CAPITAL LETTER YERU			 Cyrillic
006    250    15/10   CYRILLIC CAPITAL LETTER ZE			 Cyrillic
006    251    15/11   CYRILLIC CAPITAL LETTER SHA			 Cyrillic
006    252    15/12   CYRILLIC CAPITAL LETTER E				 Cyrillic
006    253    15/13   CYRILLIC CAPITAL LETTER SHCHA			 Cyrillic
006    254    15/14   CYRILLIC CAPITAL LETTER CHE			 Cyrillic
006    255    15/15   CYRILLIC CAPITAL HARD SIGN			 Cyrillic


007    161    10/01   GREEK CAPITAL LETTER ALPHA WITH ACCENT		 Greek
007    162    10/02   GREEK CAPITAL LETTER EPSILON WITH ACCENT		 Greek
007    163    10/03   GREEK CAPITAL LETTER ETA WITH ACCENT		 Greek
007    164    10/04   GREEK CAPITAL LETTER IOTA WITH ACCENT		 Greek
007    165    10/05   GREEK CAPITAL LETTER IOTA WITH DIAERESIS		 Greek
007    167    10/07   GREEK CAPITAL LETTER OMICRON WITH ACCENT		 Greek
007    168    10/08   GREEK CAPITAL LETTER UPSILON WITH ACCENT		 Greek
007    169    10/09   GREEK CAPITAL LETTER UPSILON WITH DIAERESIS	 Greek
007    171    10/11   GREEK CAPITAL LETTER OMEGA WITH ACCENT		 Greek
007    174    10/14   DIAERESIS AND ACCENT				 Greek
007    175    10/15   HORIZONTAL BAR					 Greek
007    177    11/01   GREEK SMALL LETTER ALPHA WITH ACCENT		 Greek
007    178    11/02   GREEK SMALL LETTER EPSILON WITH ACCENT		 Greek
007    179    11/03   GREEK SMALL LETTER ETA WITH ACCENT		 Greek
007    180    11/04   GREEK SMALL LETTER IOTA WITH ACCENT		 Greek
007    181    11/05   GREEK SMALL LETTER IOTA WITH DIAERESIS		 Greek
007    182    11/06   GREEK SMALL LETTER IOTA WITH ACCENT+DIAERESIS	 Greek
007    183    11/07   GREEK SMALL LETTER OMICRON WITH ACCENT		 Greek
007    184    11/08   GREEK SMALL LETTER UPSILON WITH ACCENT		 Greek
007    185    11/09   GREEK SMALL LETTER UPSILON WITH DIAERESIS		 Greek
007    186    11/10   GREEK SMALL LETTER UPSILON WITH ACCENT+DIAERESIS	 Greek
007    187    11/11   GREEK SMALL LETTER OMEGA WITH ACCENT		 Greek
007    193    12/01   GREEK CAPITAL LETTER ALPHA			 Greek
007    194    12/02   GREEK CAPITAL LETTER BETA				 Greek
007    195    12/03   GREEK CAPITAL LETTER GAMMA			 Greek
007    196    12/04   GREEK CAPITAL LETTER DELTA			 Greek
007    197    12/05   GREEK CAPITAL LETTER EPSILON			 Greek
007    198    12/06   GREEK CAPITAL LETTER ZETA				 Greek
007    199    12/07   GREEK CAPITAL LETTER ETA				 Greek
007    200    12/08   GREEK CAPITAL LETTER THETA			 Greek
007    201    12/09   GREEK CAPITAL LETTER IOTA				 Greek
007    202    12/10   GREEK CAPITAL LETTER KAPPA			 Greek
007    203    12/11   GREEK CAPITAL LETTER LAMDA			 Greek
007    204    12/12   GREEK CAPITAL LETTER MU				 Greek




			     1m1380m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
007    205    12/13   GREEK CAPITAL LETTER NU				 Greek
007    206    12/14   GREEK CAPITAL LETTER XI				 Greek
007    207    12/15   GREEK CAPITAL LETTER OMICRON			 Greek
007    208    13/00   GREEK CAPITAL LETTER PI				 Greek
007    209    13/01   GREEK CAPITAL LETTER RHO				 Greek
007    210    13/02   GREEK CAPITAL LETTER SIGMA			 Greek
007    212    13/04   GREEK CAPITAL LETTER TAU				 Greek
007    213    13/05   GREEK CAPITAL LETTER UPSILON			 Greek
007    214    13/06   GREEK CAPITAL LETTER PHI				 Greek
007    215    13/07   GREEK CAPITAL LETTER CHI				 Greek
007    216    13/08   GREEK CAPITAL LETTER PSI				 Greek
007    217    13/09   GREEK CAPITAL LETTER OMEGA			 Greek
007    225    14/01   GREEK SMALL LETTER ALPHA				 Greek
007    226    14/02   GREEK SMALL LETTER BETA				 Greek
007    227    14/03   GREEK SMALL LETTER GAMMA				 Greek
007    228    14/04   GREEK SMALL LETTER DELTA				 Greek
007    229    14/05   GREEK SMALL LETTER EPSILON			 Greek
007    230    14/06   GREEK SMALL LETTER ZETA				 Greek
007    231    14/07   GREEK SMALL LETTER ETA				 Greek
007    232    14/08   GREEK SMALL LETTER THETA				 Greek
007    233    14/09   GREEK SMALL LETTER IOTA				 Greek
007    234    14/10   GREEK SMALL LETTER KAPPA				 Greek
007    235    14/11   GREEK SMALL LETTER LAMDA				 Greek
007    236    14/12   GREEK SMALL LETTER MU				 Greek
007    237    14/13   GREEK SMALL LETTER NU				 Greek
007    238    14/14   GREEK SMALL LETTER XI				 Greek
007    239    14/15   GREEK SMALL LETTER OMICRON			 Greek
007    240    15/00   GREEK SMALL LETTER PI				 Greek
007    241    15/01   GREEK SMALL LETTER RHO				 Greek
007    242    15/02   GREEK SMALL LETTER SIGMA				 Greek
007    243    15/03   GREEK SMALL LETTER FINAL SMALL SIGMA		 Greek
007    244    15/04   GREEK SMALL LETTER TAU				 Greek
007    245    15/05   GREEK SMALL LETTER UPSILON			 Greek
007    246    15/06   GREEK SMALL LETTER PHI				 Greek
007    247    15/07   GREEK SMALL LETTER CHI				 Greek
007    248    15/08   GREEK SMALL LETTER PSI				 Greek
007    249    15/09   GREEK SMALL LETTER OMEGA				 Greek


008    161    10/01   LEFT RADICAL					 Technical
008    162    10/02   TOP LEFT RADICAL					 Technical
008    163    10/03   HORIZONTAL CONNECTOR				 Technical
008    164    10/04   TOP INTEGRAL					 Technical
008    165    10/05   BOTTOM INTEGRAL					 Technical
008    166    10/06   VERTICAL CONNECTOR				 Technical
008    167    10/07   TOP LEFT SQUARE BRACKET				 Technical
008    168    10/08   BOTTOM LEFT SQUARE BRACKET			 Technical
008    169    10/09   TOP RIGHT SQUARE BRACKET				 Technical
008    170    10/10   BOTTOM RIGHT SQUARE BRACKET			 Technical




			     1m1390m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
008    171    10/11   TOP LEFT PARENTHESIS				 Technical
008    172    10/12   BOTTOM LEFT PARENTHESIS				 Technical
008    173    10/13   TOP RIGHT PARENTHESIS				 Technical
008    174    10/14   BOTTOM RIGHT PARENTHESIS				 Technical
008    175    10/15   LEFT MIDDLE CURLY BRACE				 Technical
008    176    11/00   RIGHT MIDDLE CURLY BRACE				 Technical
008    177    11/01   TOP LEFT SUMMATION				 Technical
008    178    11/02   BOTTOM LEFT SUMMATION				 Technical
008    179    11/03   TOP VERTICAL SUMMATION CONNECTOR			 Technical
008    180    11/04   BOTTOM VERTICAL SUMMATION CONNECTOR		 Technical
008    181    11/05   TOP RIGHT SUMMATION				 Technical
008    182    11/06   BOTTOM RIGHT SUMMATION				 Technical
008    183    11/07   RIGHT MIDDLE SUMMATION				 Technical
008    188    11/12   LESS THAN OR EQUAL SIGN				 Technical
008    189    11/13   NOT EQUAL SIGN					 Technical
008    190    11/14   GREATER THAN OR EQUAL SIGN			 Technical
008    191    11/15   INTEGRAL						 Technical
008    192    12/00   THEREFORE						 Technical
008    193    12/01   VARIATION, PROPORTIONAL TO			 Technical
008    194    12/02   INFINITY						 Technical
008    197    12/05   NABLA, DEL					 Technical
008    200    12/08   IS APPROXIMATE TO					 Technical
008    201    12/09   SIMILAR OR EQUAL TO				 Technical
008    205    12/13   IF AND ONLY IF					 Technical
008    206    12/14   IMPLIES						 Technical
008    207    12/15   IDENTICAL TO					 Technical
008    214    13/06   RADICAL						 Technical
008    218    13/10   IS INCLUDED IN					 Technical
008    219    13/11   INCLUDES						 Technical
008    220    13/12   INTERSECTION					 Technical
008    221    13/13   UNION						 Technical
008    222    13/14   LOGICAL AND					 Technical
008    223    13/15   LOGICAL OR					 Technical
008    239    14/15   PARTIAL DERIVATIVE				 Technical
008    246    15/06   FUNCTION						 Technical
008    251    15/11   LEFT ARROW					 Technical
008    252    15/12   UPWARD ARROW					 Technical
008    253    15/13   RIGHT ARROW					 Technical
008    254    15/14   DOWNWARD ARROW					 Technical


009    223    13/15   BLANK						 Special
009    224    14/00   SOLID DIAMOND					 Special
009    225    14/01   CHECKERBOARD					 Special
009    226    14/02   ``HT''						 Special
009    227    14/03   ``FF''						 Special
009    228    14/04   ``CR''						 Special
009    229    14/05   ``LF''						 Special
009    232    14/08   ``NL''						 Special




			     1m1400m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
009    233    14/09   ``VT''						 Special
009    234    14/10   LOWER-RIGHT CORNER				 Special
009    235    14/11   UPPER-RIGHT CORNER				 Special
009    236    14/12   UPPER-LEFT CORNER					 Special
009    237    14/13   LOWER-LEFT CORNER					 Special
009    238    14/14   CROSSING-LINES					 Special
009    239    14/15   HORIZONTAL LINE, SCAN 1				 Special
009    240    15/00   HORIZONTAL LINE, SCAN 3				 Special
009    241    15/01   HORIZONTAL LINE, SCAN 5				 Special
009    242    15/02   HORIZONTAL LINE, SCAN 7				 Special
009    243    15/03   HORIZONTAL LINE, SCAN 9				 Special
009    244    15/04   LEFT ``T''					 Special
009    245    15/05   RIGHT ``T''					 Special
009    246    15/06   BOTTOM ``T''					 Special
009    247    15/07   TOP ``T''						 Special
009    248    15/08   VERTICAL BAR					 Special


010    161    10/01   EM SPACE						 Publish
010    162    10/02   EN SPACE						 Publish
010    163    10/03   3/EM SPACE					 Publish
010    164    10/04   4/EM SPACE					 Publish
010    165    10/05   DIGIT SPACE					 Publish
010    166    10/06   PUNCTUATION SPACE					 Publish
010    167    10/07   THIN SPACE					 Publish
010    168    10/08   HAIR SPACE					 Publish
010    169    10/09   EM DASH						 Publish
010    170    10/10   EN DASH						 Publish
010    172    10/12   SIGNIFICANT BLANK SYMBOL				 Publish
010    174    10/14   ELLIPSIS						 Publish
010    175    10/15   DOUBLE BASELINE DOT				 Publish
010    176    11/00   VULGAR FRACTION ONE THIRD				 Publish
010    177    11/01   VULGAR FRACTION TWO THIRDS			 Publish
010    178    11/02   VULGAR FRACTION ONE FIFTH				 Publish
010    179    11/03   VULGAR FRACTION TWO FIFTHS			 Publish
010    180    11/04   VULGAR FRACTION THREE FIFTHS			 Publish
010    181    11/05   VULGAR FRACTION FOUR FIFTHS			 Publish
010    182    11/06   VULGAR FRACTION ONE SIXTH				 Publish
010    183    11/07   VULGAR FRACTION FIVE SIXTHS			 Publish
010    184    11/08   CARE OF						 Publish
010    187    11/11   FIGURE DASH					 Publish
010    188    11/12   LEFT ANGLE BRACKET				 Publish
010    189    11/13   DECIMAL POINT					 Publish
010    190    11/14   RIGHT ANGLE BRACKET				 Publish
010    191    11/15   MARKER						 Publish
010    195    12/03   VULGAR FRACTION ONE EIGHTH			 Publish
010    196    12/04   VULGAR FRACTION THREE EIGHTHS			 Publish
010    197    12/05   VULGAR FRACTION FIVE EIGHTHS			 Publish
010    198    12/06   VULGAR FRACTION SEVEN EIGHTHS			 Publish




			     1m1410m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
010    201    12/09   TRADEMARK SIGN					 Publish
010    202    12/10   SIGNATURE MARK					 Publish
010    203    12/11   TRADEMARK SIGN IN CIRCLE				 Publish
010    204    12/12   LEFT OPEN TRIANGLE				 Publish
010    205    12/13   RIGHT OPEN TRIANGLE				 Publish
010    206    12/14   EM OPEN CIRCLE					 Publish
010    207    12/15   EM OPEN RECTANGLE					 Publish
010    208    13/00   LEFT SINGLE QUOTATION MARK			 Publish
010    209    13/01   RIGHT SINGLE QUOTATION MARK			 Publish
010    210    13/02   LEFT DOUBLE QUOTATION MARK			 Publish
010    211    13/03   RIGHT DOUBLE QUOTATION MARK			 Publish
010    212    13/04   PRESCRIPTION, TAKE, RECIPE			 Publish
010    214    13/06   MINUTES						 Publish
010    215    13/07   SECONDS						 Publish
010    217    13/09   LATIN CROSS					 Publish
010    218    13/10   HEXAGRAM						 Publish
010    219    13/11   FILLED RECTANGLE BULLET				 Publish
010    220    13/12   FILLED LEFT TRIANGLE BULLET			 Publish
010    221    13/13   FILLED RIGHT TRIANGLE BULLET			 Publish
010    222    13/14   EM FILLED CIRCLE					 Publish
010    223    13/15   EM FILLED RECTANGLE				 Publish
010    224    14/00   EN OPEN CIRCLE BULLET				 Publish
010    225    14/01   EN OPEN SQUARE BULLET				 Publish
010    226    14/02   OPEN RECTANGULAR BULLET				 Publish
010    227    14/03   OPEN TRIANGULAR BULLET UP				 Publish
010    228    14/04   OPEN TRIANGULAR BULLET DOWN			 Publish
010    229    14/05   OPEN STAR						 Publish
010    230    14/06   EN FILLED CIRCLE BULLET				 Publish
010    231    14/07   EN FILLED SQUARE BULLET				 Publish
010    232    14/08   FILLED TRIANGULAR BULLET UP			 Publish
010    233    14/09   FILLED TRIANGULAR BULLET DOWN			 Publish
010    234    14/10   LEFT POINTER					 Publish
010    235    14/11   RIGHT POINTER					 Publish
010    236    14/12   CLUB						 Publish
010    237    14/13   DIAMOND						 Publish
010    238    14/14   HEART						 Publish
010    240    15/00   MALTESE CROSS					 Publish
010    241    15/01   DAGGER						 Publish
010    242    15/02   DOUBLE DAGGER					 Publish
010    243    15/03   CHECK MARK, TICK					 Publish
010    244    15/04   BALLOT CROSS					 Publish
010    245    15/05   MUSICAL SHARP					 Publish
010    246    15/06   MUSICAL FLAT					 Publish
010    247    15/07   MALE SYMBOL					 Publish
010    248    15/08   FEMALE SYMBOL					 Publish
010    249    15/09   TELEPHONE SYMBOL					 Publish
010    250    15/10   TELEPHONE RECORDER SYMBOL				 Publish
010    251    15/11   PHONOGRAPH COPYRIGHT SIGN				 Publish
010    252    15/12   CARET						 Publish




			     1m1420m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
010    253    15/13   SINGLE LOW QUOTATION MARK				 Publish
010    254    15/14   DOUBLE LOW QUOTATION MARK				 Publish
010    255    15/15   CURSOR						 Publish


011    163    10/03   LEFT CARET					 APL
011    166    10/06   RIGHT CARET					 APL
011    168    10/08   DOWN CARET					 APL
011    169    10/09   UP CARET						 APL
011    192    12/00   OVERBAR						 APL
011    194    12/02   DOWN TACK						 APL
011    195    12/03   UP SHOE (CAP)					 APL
011    196    12/04   DOWN STILE					 APL
011    198    12/06   UNDERBAR						 APL
011    202    12/10   JOT						 APL
011    204    12/12   QUAD						 APL
011    206    12/14   UP TACK						 APL
011    207    12/15   CIRCLE						 APL
011    211    13/03   UP STILE						 APL
011    214    13/06   DOWN SHOE (CUP)					 APL
011    216    13/08   RIGHT SHOE					 APL
011    218    13/10   LEFT SHOE						 APL
011    220    13/12   LEFT TACK						 APL
011    252    15/12   RIGHT TACK					 APL


012    223    13/15   DOUBLE LOW LINE					 Hebrew
012    224    14/00   HEBREW LETTER ALEPH				 Hebrew
012    225    14/01   HEBREW LETTER BET					 Hebrew
012    226    14/02   HEBREW LETTER GIMEL				 Hebrew
012    227    14/03   HEBREW LETTER DALET				 Hebrew
012    228    14/04   HEBREW LETTER HE					 Hebrew
012    229    14/05   HEBREW LETTER WAW					 Hebrew
012    230    14/06   HEBREW LETTER ZAIN				 Hebrew
012    231    14/07   HEBREW LETTER CHET				 Hebrew
012    232    14/08   HEBREW LETTER TET					 Hebrew
012    233    14/09   HEBREW LETTER YOD					 Hebrew
012    234    14/10   HEBREW LETTER FINAL KAPH				 Hebrew
012    235    14/11   HEBREW LETTER KAPH				 Hebrew
012    236    14/12   HEBREW LETTER LAMED				 Hebrew
012    237    14/13   HEBREW LETTER FINAL MEM				 Hebrew
012    238    14/14   HEBREW LETTER MEM					 Hebrew
012    239    14/15   HEBREW LETTER FINAL NUN				 Hebrew
012    240    15/00   HEBREW LETTER NUN					 Hebrew
012    241    15/01   HEBREW LETTER SAMECH				 Hebrew
012    242    15/02   HEBREW LETTER A'YIN				 Hebrew
012    243    15/03   HEBREW LETTER FINAL PE				 Hebrew
012    244    15/04   HEBREW LETTER PE					 Hebrew
012    245    15/05   HEBREW LETTER FINAL ZADE				 Hebrew




			     1m1430m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
012    246    15/06   HEBREW LETTER ZADE				 Hebrew
012    247    15/07   HEBREW QOPH					 Hebrew
012    248    15/08   HEBREW RESH					 Hebrew
012    249    15/09   HEBREW SHIN					 Hebrew
012    250    15/10   HEBREW TAW					 Hebrew


013    161    10/01   THAI KOKAI					 Thai
013    162    10/02   THAI KHOKHAI					 Thai
013    163    10/03   THAI KHOKHUAT					 Thai
013    164    10/04   THAI KHOKHWAI					 Thai
013    165    10/05   THAI KHOKHON					 Thai
013    166    10/06   THAI KHORAKHANG					 Thai
013    167    10/07   THAI NGONGU					 Thai
013    168    10/08   THAI CHOCHAN					 Thai
013    169    10/09   THAI CHOCHING					 Thai
013    170    10/10   THAI CHOCHANG					 Thai
013    171    10/11   THAI SOSO						 Thai
013    172    10/12   THAI CHOCHOE					 Thai
013    173    10/13   THAI YOYING					 Thai
013    174    10/14   THAI DOCHADA					 Thai
013    175    10/15   THAI TOPATAK					 Thai
013    176    11/00   THAI THOTHAN					 Thai
013    177    11/01   THAI THONANGMONTHO				 Thai
013    178    11/02   THAI THOPHUTHAO					 Thai
013    179    11/03   THAI NONEN					 Thai
013    180    11/04   THAI DODEK					 Thai
013    181    11/05   THAI TOTAO					 Thai
013    182    11/06   THAI THOTHUNG					 Thai
013    183    11/07   THAI THOTHAHAN					 Thai
013    184    11/08   THAI THOTHONG					 Thai
013    185    11/09   THAI NONU						 Thai
013    186    11/10   THAI BOBAIMAI					 Thai
013    187    11/11   THAI POPLA					 Thai
013    188    11/12   THAI PHOPHUNG					 Thai
013    189    11/13   THAI FOFA						 Thai
013    190    11/14   THAI PHOPHAN					 Thai
013    191    11/15   THAI FOFAN					 Thai
013    192    12/00   THAI PHOSAMPHAO					 Thai
013    193    12/01   THAI MOMA						 Thai
013    194    12/02   THAI YOYAK					 Thai
013    195    12/03   THAI RORUA					 Thai
013    196    12/04   THAI RU						 Thai
013    197    12/05   THAI LOLING					 Thai
013    198    12/06   THAI LU						 Thai
013    199    12/07   THAI WOWAEN					 Thai
013    200    12/08   THAI SOSALA					 Thai
013    201    12/09   THAI SORUSI					 Thai
013    202    12/10   THAI SOSUA					 Thai




			     1m1440m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
013    203    12/11   THAI HOHIP					 Thai
013    204    12/12   THAI LOCHULA					 Thai
013    205    12/13   THAI OANG						 Thai
013    206    12/14   THAI HONOKHUK					 Thai
013    207    12/15   THAI PAIYANNOI					 Thai
013    208    13/00   THAI SARAA					 Thai
013    209    13/01   THAI MAIHANAKAT					 Thai
013    210    13/02   THAI SARAAA					 Thai
013    211    13/03   THAI SARAAM					 Thai
013    212    13/04   THAI SARAI					 Thai
013    213    13/05   THAI SARAII					 Thai
013    214    13/06   THAI SARAUE					 Thai
013    215    13/07   THAI SARAUEE					 Thai
013    216    13/08   THAI SARAU					 Thai
013    217    13/09   THAI SARAUU					 Thai
013    218    13/10   THAI PHINTHU					 Thai
013    222    13/14   THAI MAIHANAKAT					 Thai
013    223    13/15   THAI BAHT						 Thai
013    224    14/00   THAI SARAE					 Thai
013    225    14/01   THAI SARAAE					 Thai
013    226    14/02   THAI SARAO					 Thai
013    227    14/03   THAI SARAAIMAIMUAN				 Thai
013    228    14/04   THAI SARAAIMAIMALAI				 Thai
013    229    14/05   THAI LAKKHANGYAO					 Thai
013    230    14/06   THAI MAIYAMOK					 Thai
013    231    14/07   THAI MAITAIKHU					 Thai
013    232    14/08   THAI MAIEK					 Thai
013    233    14/09   THAI MAITHO					 Thai
013    234    14/10   THAI MAITRI					 Thai
013    235    14/11   THAI MAICHATTAWA					 Thai
013    236    14/12   THAI THANTHAKHAT					 Thai
013    237    14/13   THAI NIKHAHIT					 Thai
013    240    15/00   THAI LEKSUN					 Thai
013    241    15/01   THAI LEKNUNG					 Thai
013    242    15/02   THAI LEKSONG					 Thai
013    243    15/03   THAI LEKSAM					 Thai
013    244    15/04   THAI LEKSI					 Thai
013    245    15/05   THAI LEKHA					 Thai
013    246    15/06   THAI LEKHOK					 Thai
013    247    15/07   THAI LEKCHET					 Thai
013    248    15/08   THAI LEKPAET					 Thai
013    249    15/09   THAI LEKKAO					 Thai


014    161    10/01   HANGUL KIYEOG					 Korean
014    162    10/02   HANGUL SSANG KIYEOG				 Korean
014    163    10/03   HANGUL KIYEOG SIOS				 Korean
014    164    10/04   HANGUL NIEUN					 Korean
014    165    10/05   HANGUL NIEUN JIEUJ				 Korean




			     1m1450m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
014    166    10/06   HANGUL NIEUN HIEUH				 Korean
014    167    10/07   HANGUL DIKEUD					 Korean
014    168    10/08   HANGUL SSANG DIKEUD				 Korean
014    169    10/09   HANGUL RIEUL					 Korean
014    170    10/10   HANGUL RIEUL KIYEOG				 Korean
014    171    10/11   HANGUL RIEUL MIEUM				 Korean
014    172    10/12   HANGUL RIEUL PIEUB				 Korean
014    173    10/13   HANGUL RIEUL SIOS					 Korean
014    174    10/14   HANGUL RIEUL TIEUT				 Korean
014    175    10/15   HANGUL RIEUL PHIEUF				 Korean
014    176    11/00   HANGUL RIEUL HIEUH				 Korean
014    177    11/01   HANGUL MIEUM					 Korean
014    178    11/02   HANGUL PIEUB					 Korean
014    179    11/03   HANGUL SSANG PIEUB				 Korean
014    180    11/04   HANGUL PIEUB SIOS					 Korean
014    181    11/05   HANGUL SIOS					 Korean
014    182    11/06   HANGUL SSANG SIOS					 Korean
014    183    11/07   HANGUL IEUNG					 Korean
014    184    11/08   HANGUL JIEUJ					 Korean
014    185    11/09   HANGUL SSANG JIEUJ				 Korean
014    186    11/10   HANGUL CIEUC					 Korean
014    187    11/11   HANGUL KHIEUQ					 Korean
014    188    11/12   HANGUL TIEUT					 Korean
014    189    11/13   HANGUL PHIEUF					 Korean
014    190    11/14   HANGUL HIEUH					 Korean
014    191    11/15   HANGUL A						 Korean
014    192    12/00   HANGUL AE						 Korean
014    193    12/01   HANGUL YA						 Korean
014    194    12/02   HANGUL YAE					 Korean
014    195    12/03   HANGUL EO						 Korean
014    196    12/04   HANGUL E						 Korean
014    197    12/05   HANGUL YEO					 Korean
014    198    12/06   HANGUL YE						 Korean
014    199    12/07   HANGUL O						 Korean
014    200    12/08   HANGUL WA						 Korean
014    201    12/09   HANGUL WAE					 Korean
014    202    12/10   HANGUL OE						 Korean
014    203    12/11   HANGUL YO						 Korean
014    204    12/12   HANGUL U						 Korean
014    205    12/13   HANGUL WEO					 Korean
014    206    12/14   HANGUL WE						 Korean
014    207    12/15   HANGUL WI						 Korean
014    208    13/00   HANGUL YU						 Korean
014    209    13/01   HANGUL EU						 Korean
014    210    13/02   HANGUL YI						 Korean
014    211    13/03   HANGUL I						 Korean
014    212    13/04   HANGUL JONG SEONG KIYEOG				 Korean
014    213    13/05   HANGUL JONG SEONG SSANG KIYEOG			 Korean
014    214    13/06   HANGUL JONG SEONG KIYEOG SIOS			 Korean




			     1m1460m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
014    215    13/07   HANGUL JONG SEONG NIEUN				 Korean
014    216    13/08   HANGUL JONG SEONG NIEUN JIEUJ			 Korean
014    217    13/09   HANGUL JONG SEONG NIEUN HIEUH			 Korean
014    218    13/10   HANGUL JONG SEONG DIKEUD				 Korean
014    219    13/11   HANGUL JONG SEONG RIEUL				 Korean
014    220    13/12   HANGUL JONG SEONG RIEUL KIYEOG			 Korean
014    221    13/13   HANGUL JONG SEONG RIEUL MIEUM			 Korean
014    222    13/14   HANGUL JONG SEONG RIEUL PIEUB			 Korean
014    223    13/15   HANGUL JONG SEONG RIEUL SIOS			 Korean
014    224    14/00   HANGUL JONG SEONG RIEUL TIEUT			 Korean
014    225    14/01   HANGUL JONG SEONG RIEUL PHIEUF			 Korean
014    226    14/02   HANGUL JONG SEONG RIEUL HIEUH			 Korean
014    227    14/03   HANGUL JONG SEONG MIEUM				 Korean
014    228    14/04   HANGUL JONG SEONG PIEUB				 Korean
014    229    14/05   HANGUL JONG SEONG PIEUB SIOS			 Korean
014    230    14/06   HANGUL JONG SEONG SIOS				 Korean
014    231    14/07   HANGUL JONG SEONG SSANG SIOS			 Korean
014    232    14/08   HANGUL JONG SEONG IEUNG				 Korean
014    233    14/09   HANGUL JONG SEONG JIEUJ				 Korean
014    234    14/10   HANGUL JONG SEONG CIEUC				 Korean
014    235    14/11   HANGUL JONG SEONG KHIEUQ				 Korean
014    236    14/12   HANGUL JONG SEONG TIEUT				 Korean
014    237    14/13   HANGUL JONG SEONG PHIEUF				 Korean
014    238    14/14   HANGUL JONG SEONG HIEUH				 Korean
014    239    14/15   HANGUL RIEUL YEORIN HIEUH				 Korean
014    240    15/00   HANGUL SUNKYEONGEUM MIEUM				 Korean
014    241    15/01   HANGUL SUNKYEONGEUM PIEUB				 Korean
014    242    15/02   HANGUL PAN SIOS					 Korean
014    243    15/03   HANGUL KKOGJI DALRIN IEUNG			 Korean
014    244    15/04   HANGUL SUNKYEONGEUM PHIEUF			 Korean
014    245    15/05   HANGUL YEORIN HIEUH				 Korean
014    246    15/06   HANGUL ARAE A					 Korean
014    247    15/07   HANGUL ARAE AE					 Korean
014    248    15/08   HANGUL JONG SEONG PAN SIOS			 Korean
014    249    15/09   HANGUL JONG SEONG KKOGJI DALRIN IEUNG		 Korean
014    250    15/10   HANGUL JONG SEONG YEORIN HIEUH			 Korean
014    255    15/15   KOREAN WON					 Korean


019    188    11/12   LATIN CAPITAL DIPHTHONG OE			 Latin-9
019    189    11/13   LATIN SMALL DIPHTHONG oe				 Latin-9
019    190    11/14   LATIN CAPITAL LETTER Y WITH DIAERESIS		 Latin-9


032    160    10/00   CURRENCY ECU SIGN					 Currency
032    161    10/01   CURRENCY COLON SIGN				 Currency
032    162    10/02   CURRENCY CRUZEIRO SIGN				 Currency
032    163    10/03   CURRENCY FRENCH FRANC SIGN			 Currency
032    164    10/04   CURRENCY LIRA SIGN				 Currency




			     1m1470m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
032    165    10/05   CURRENCY MILL SIGN				 Currency
032    166    10/06   CURRENCY NAIRA SIGN				 Currency
032    167    10/07   CURRENCY PESETA SIGN				 Currency
032    168    10/08   CURRENCY RUPEE SIGN				 Currency
032    169    10/09   CURRENCY WON SIGN					 Currency
032    170    10/10   CURRENCY NEW SHEQEL SIGN				 Currency
032    171    10/11   CURRENCY DONG SIGN				 Currency
032    172    10/12   CURRENCY EURO SIGN				 Currency


253    001    00/01   3270 DUPLICATE					 3270
253    002    00/02   3270 FIELDMARK					 3270
253    003    00/03   3270 RIGHT2					 3270
253    004    00/04   3270 LEFT2					 3270
253    005    00/05   3270 BACKTAB					 3270
253    006    00/06   3270 ERASEEOF					 3270
253    007    00/07   3270 ERASEINPUT					 3270
253    008    00/08   3270 RESET					 3270
253    009    00/09   3270 QUIT						 3270
253    010    00/10   3270 PA1						 3270
253    011    00/11   3270 PA2						 3270
253    012    00/12   3270 PA3						 3270
253    013    00/13   3270 TEST						 3270
253    014    00/14   3270 ATTN						 3270
253    015    00/15   3270 CURSORBLINK					 3270
253    016    01/01   3270 ALTCURSOR					 3270
253    017    01/02   3270 KEYCLICK					 3270
253    018    01/03   3270 JUMP						 3270
253    019    01/04   3270 IDENT					 3270
253    020    01/05   3270 RULE						 3270
253    021    01/06   3270 COPY						 3270
253    022    01/07   3270 PLAY						 3270
253    023    01/08   3270 SETUP					 3270
253    024    01/09   3270 RECORD					 3270
253    025    01/10   3270 CHANGESCREEN					 3270
253    026    01/11   3270 DELETEWORD					 3270
253    027    01/12   3270 EXSELECT					 3270
253    028    01/13   3270 CURSORSELECT					 3270
253    029    01/14   3270 PRINTSCREEN					 3270
253    030    01/15   3270 ENTER					 3270


255    008    00/08   BACKSPACE, BACK SPACE, BACK CHAR			 Keyboard
255    009    00/09   TAB						 Keyboard
255    010    00/10   LINEFEED, LF					 Keyboard
255    011    00/11   CLEAR						 Keyboard
255    013    00/13   RETURN, ENTER					 Keyboard
255    019    01/03   PAUSE, HOLD					 Keyboard
255    020    01/04   SCROLL LOCK					 Keyboard




			     1m1480m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
255    021    01/05   SYS REQ, SYSTEM REQUEST				 Keyboard
255    027    01/11   ESCAPE						 Keyboard
255    032    02/00   MULTI-KEY CHARACTER PREFACE			 Keyboard
255    033    02/01   KANJI, KANJI CONVERT				 Keyboard
255    034    02/02   MUHENKAN						 Keyboard
255    035    02/03   HENKAN MODE					 Keyboard
255    036    02/04   ROMAJI						 Keyboard
255    037    02/05   HIRAGANA						 Keyboard
255    038    02/06   KATAKANA						 Keyboard
255    039    02/07   HIRAGANA/KATAKANA TOGGLE				 Keyboard
255    040    02/08   ZENKAKU						 Keyboard
255    041    02/09   HANKAKU						 Keyboard
255    042    02/10   ZENKAKU/HANKAKU TOGGLE				 Keyboard
255    043    02/11   TOUROKU						 Keyboard
255    044    02/12   MASSYO						 Keyboard
255    045    02/13   KANA LOCK						 Keyboard
255    046    02/14   KANA SHIFT					 Keyboard
255    047    02/15   EISU SHIFT					 Keyboard
255    048    03/00   EISU TOGGLE					 Keyboard
255    049    03/01   HANGUL START/STOP (TOGGLE)			 Keyboard
255    050    03/02   HANGUL START					 Keyboard
255    051    03/03   HANGUL END, ENGLISH START				 Keyboard
255    052    03/04   START HANGUL/HANJA CONVERSION			 Keyboard
255    053    03/05   HANGUL JAMO MODE					 Keyboard
255    054    03/06   HANGUL ROMAJA MODE				 Keyboard
255    055    03/07   HANGUL CODE INPUT					 Keyboard
255    056    03/08   HANGUL JEONJA MODE				 Keyboard
255    057    03/09   HANGUL BANJA MODE					 Keyboard
255    058    03/10   HANGUL PREHANJA CONVERSION			 Keyboard
255    059    03/11   HANGUL POSTHANJA CONVERSION			 Keyboard
255    060    03/12   HANGUL SINGLE CANDIDATE				 Keyboard
255    061    03/13   HANGUL MULTIPLE CANDIDATE				 Keyboard
255    062    03/14   HANGUL PREVIOUS CANDIDATE				 Keyboard
255    063    03/15   HANGUL SPECIAL SYMBOLS				 Keyboard
255    080    05/00   HOME						 Keyboard
255    081    05/01   LEFT, MOVE LEFT, LEFT ARROW			 Keyboard
255    082    05/02   UP, MOVE UP, UP ARROW				 Keyboard
255    083    05/03   RIGHT, MOVE RIGHT, RIGHT ARROW			 Keyboard
255    084    05/04   DOWN, MOVE DOWN, DOWN ARROW			 Keyboard
255    085    05/05   PRIOR, PREVIOUS, PAGE UP				 Keyboard
255    086    05/06   NEXT, PAGE DOWN					 Keyboard
255    087    05/07   END, EOL						 Keyboard
255    088    05/08   BEGIN, BOL					 Keyboard
255    096    06/00   SELECT, MARK					 Keyboard
255    097    06/01   PRINT						 Keyboard
255    098    06/02   EXECUTE, RUN, DO					 Keyboard
255    099    06/03   INSERT, INSERT HERE				 Keyboard
255    101    06/05   UNDO, OOPS					 Keyboard
255    102    06/06   REDO, AGAIN					 Keyboard




			     1m1490m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
255    103    06/07   MENU						 Keyboard
255    104    06/08   FIND, SEARCH					 Keyboard
255    105    06/09   CANCEL, STOP, ABORT, EXIT				 Keyboard
255    106    06/10   HELP						 Keyboard
255    107    06/11   BREAK						 Keyboard
255    126    07/14   MODE SWITCH, SCRIPT SWITCH, CHARACTER SET SWITCH	 Keyboard
255    127    07/15   NUM LOCK						 Keyboard
255    128    08/00   KEYPAD SPACE					 Keyboard
255    137    08/09   KEYPAD TAB					 Keyboard
255    141    08/13   KEYPAD ENTER					 Keyboard
255    145    09/01   KEYPAD F1, PF1, A					 Keyboard
255    146    09/02   KEYPAD F2, PF2, B					 Keyboard
255    147    09/03   KEYPAD F3, PF3, C					 Keyboard
255    148    09/04   KEYPAD F4, PF4, D					 Keyboard
255    149    09/05   KEYPAD HOME					 Keyboard
255    150    09/06   KEYPAD LEFT					 Keyboard
255    151    09/07   KEYPAD UP						 Keyboard
255    152    09/08   KEYPAD RIGHT					 Keyboard
255    153    09/09   KEYPAD DOWN					 Keyboard
255    154    09/10   KEYPAD PRIOR, PAGE UP				 Keyboard
255    155    09/11   KEYPAD NEXT, PAGE DOWN				 Keyboard
255    156    09/12   KEYPAD END					 Keyboard
255    157    09/13   KEYPAD BEGIN					 Keyboard
255    158    09/14   KEYPAD INSERT					 Keyboard
255    159    09/15   KEYPAD DELETE					 Keyboard
255    170    10/10   KEYPAD MULTIPLICATION SIGN, ASTERISK		 Keyboard
255    171    10/11   KEYPAD PLUS SIGN					 Keyboard
255    172    10/12   KEYPAD SEPARATOR, COMMA				 Keyboard
255    173    10/13   KEYPAD MINUS SIGN, HYPHEN				 Keyboard
255    174    10/14   KEYPAD DECIMAL POINT, FULL STOP			 Keyboard
255    175    10/15   KEYPAD DIVISION SIGN, SOLIDUS			 Keyboard
255    176    11/00   KEYPAD DIGIT ZERO					 Keyboard
255    177    11/01   KEYPAD DIGIT ONE					 Keyboard
255    178    11/02   KEYPAD DIGIT TWO					 Keyboard
255    179    11/03   KEYPAD DIGIT THREE				 Keyboard
255    180    11/04   KEYPAD DIGIT FOUR					 Keyboard
255    181    11/05   KEYPAD DIGIT FIVE					 Keyboard
255    182    11/06   KEYPAD DIGIT SIX					 Keyboard
255    183    11/07   KEYPAD DIGIT SEVEN				 Keyboard
255    184    11/08   KEYPAD DIGIT EIGHT				 Keyboard
255    185    11/09   KEYPAD DIGIT NINE					 Keyboard
255    189    11/13   KEYPAD EQUALS SIGN				 Keyboard
255    190    11/14   F1						 Keyboard
255    191    11/15   F2						 Keyboard
255    192    12/00   F3						 Keyboard
255    193    12/01   F4						 Keyboard
255    194    12/02   F5						 Keyboard
255    195    12/03   F6						 Keyboard
255    196    12/04   F7						 Keyboard




			     1m1500m





1mX Protocol				X11, Release 6.7 DRAFT0m


-----------------------------------------------------------------------------------
1mByte	 Byte	Code	Name						   Set0m
 1m3	  4	Pos0m
-----------------------------------------------------------------------------------
255    197    12/05   F8						 Keyboard
255    198    12/06   F9						 Keyboard
255    199    12/07   F10						 Keyboard
255    200    12/08   F11, L1						 Keyboard
255    201    12/09   F12, L2						 Keyboard
255    202    12/10   F13, L3						 Keyboard
255    203    12/11   F14, L4						 Keyboard
255    204    12/12   F15, L5						 Keyboard
255    205    12/13   F16, L6						 Keyboard
255    206    12/14   F17, L7						 Keyboard
255    207    12/15   F18, L8						 Keyboard
255    208    13/00   F19, L9						 Keyboard
255    209    13/01   F20, L10						 Keyboard
255    210    13/02   F21, R1						 Keyboard
255    211    13/03   F22, R2						 Keyboard
255    212    13/04   F23, R3						 Keyboard
255    213    13/05   F24, R4						 Keyboard
255    214    13/06   F25, R5						 Keyboard
255    215    13/07   F26, R6						 Keyboard
255    216    13/08   F27, R7						 Keyboard
255    217    13/09   F28, R8						 Keyboard
255    218    13/10   F29, R9						 Keyboard
255    219    13/11   F30, R10						 Keyboard
255    220    13/12   F31, R11						 Keyboard
255    221    13/13   F32, R12						 Keyboard
255    222    13/14   F33, R13						 Keyboard
255    223    13/15   F34, R14						 Keyboard
255    224    14/00   F35, R15						 Keyboard
255    225    14/01   LEFT SHIFT					 Keyboard
255    226    14/02   RIGHT SHIFT					 Keyboard
255    227    14/03   LEFT CONTROL					 Keyboard
255    228    14/04   RIGHT CONTROL					 Keyboard
255    229    14/05   CAPS LOCK						 Keyboard
255    230    14/06   SHIFT LOCK					 Keyboard
255    231    14/07   LEFT META						 Keyboard
255    232    14/08   RIGHT META					 Keyboard
255    233    14/09   LEFT ALT						 Keyboard
255    234    14/10   RIGHT ALT						 Keyboard
255    235    14/11   LEFT SUPER					 Keyboard
255    236    14/12   RIGHT SUPER					 Keyboard
255    237    14/13   LEFT HYPER					 Keyboard
255    238    14/14   RIGHT HYPER					 Keyboard
255    255    15/15   DELETE, RUBOUT					 Keyboard
-----------------------------------------------------------------------------------









			     1m1510m





1mX Protocol				X11, Release 6.7 DRAFT0m




			 1mAppendix B0m

		     1mProtocol Encoding0m




1mSyntactic Conventions0m

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:


     4mNameofThing0m
       encode-form
       ...
       encode-form


Each encode-form describes a single component.

For components described in the protocol as:


     name: TYPE


the encode-form is:


     N	       TYPE name


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


     depth: CARD8


becomes:


     1	       CARD8	      depth


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




			     1m1520m





1mX Protocol				X11, Release 6.7 DRAFT0m


     N	       value	      name


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


     1	       0    Error
     1	       3    code


For components described in the protocol as:

     name: {4mName124m,..., 4mNameI24m}

the encode-form is:


     N		    name
	       value1 Name1
	       ...
	       valueI NameI


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

     class: {4mInputOutput24m, 4mInputOnly24m, 4mCopyFromParent24m}

becomes:


     2			      class
	       0    CopyFromParent
	       1    InputOutput
	       2    InputOnly


For components described in the protocol as:

     NAME: TYPE or 4mAlternative124m...or 4mAlternativeI0m

the encode-form is:


     N	       TYPE	      NAME
	       value1	 Alternative1
	       ...
	       valueI	 AlternativeI





			     1m1530m





1mX Protocol				X11, Release 6.7 DRAFT0m


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

     destination: WINDOW or 4mPointerWindow24m or 4mInputFocus0m

becomes:


     4	       WINDOW	      destination
	       0    PointerWindow
	       1    InputFocus


For components described in the protocol as:


     value-mask: BITMASK


the encode-form is:


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


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

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


     VALUEs
      encode-form
      ...
      encode-form


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



			     1m1540m





1mX Protocol				X11, Release 6.7 DRAFT0m


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

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


     2	       3+n	      request length
     4n	       LISTofPOINT    points


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


     N			 unused


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


     p			 unused, p=pad(E)


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


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


1mCommon Types0m

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




			     1m1550m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



			     1m1560m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



BOOL
       0	 False
       1	 True



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



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





			     1m1570m





1mX Protocol				X11, Release 6.7 DRAFT0m


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

KEYSYM: CARD32

KEYCODE: CARD8

BUTTON: CARD8


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



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


STRING8: LISTofCARD8

STRING16: LISTofCHAR2B


CHAR2B
  1  CARD8     byte1
  1  CARD8     byte2



POINT
  2  INT16     x
  2  INT16     y



RECTANGLE
  2  INT16     x
  2  INT16     y



			     1m1580m





1mX Protocol				X11, Release 6.7 DRAFT0m


  2  CARD16    width
  2  CARD16    height



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



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



STR
  1  n			 length of name in bytes
  n  STRING8		 name


1mErrors0m


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



4mValue0m
  1  0			 Error
  1  2			 code
  2  CARD16		 sequence number
  4  <32-bits>		 bad value
  2  CARD16		 minor opcode



			     1m1590m





1mX Protocol				X11, Release 6.7 DRAFT0m


  1  CARD8		 major opcode
  21			 unused



4mWindow0m
  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



4mPixmap0m
  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



4mAtom0m
  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



4mCursor0m
  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



4mFont0m
  1  0			 Error
  1  7			 code
  2  CARD16		 sequence number
  4  CARD32		 bad resource id



			     1m1600m





1mX Protocol				X11, Release 6.7 DRAFT0m


  2  CARD16		 minor opcode
  1  CARD8		 major opcode
  21			 unused



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



4mDrawable0m
  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



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



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



4mColormap0m
  1  0			 Error
  1  12			 code
  2  CARD16		 sequence number



			     1m1610m





1mX Protocol				X11, Release 6.7 DRAFT0m


  4  CARD32		 bad resource id
  2  CARD16		 minor opcode
  1  CARD8		 major opcode
  21			 unused



4mGContext0m
  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



4mIDChoice0m
  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



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



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



4mImplementation0m
  1  0			 Error
  1  17			 code



			     1m1620m





1mX Protocol				X11, Release 6.7 DRAFT0m


  2  CARD16		 sequence number
  4			 unused
  2  CARD16		 minor opcode
  1  CARD8		 major opcode
  21			 unused


1mKeyboards0m

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

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

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

1mPointers0m

BUTTON values are numbered starting with one.

1mPredefined Atoms0m


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



			     1m1630m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


1mConnection Setup0m

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

Information sent by the client at connection setup:


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


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

Information received by the client if the connection is
refused:


  1  0			 Failed
  1  n			 length of reason in bytes
  2  CARD16		 protocol-major-version



			     1m1640m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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 further authentication
is required:


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


Information received by the client if the connection is
accepted:


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



FORMAT
  1  CARD8		 depth



			     1m1650m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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	       LISTofVISUALTYPEvisuals



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



			     1m1660m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mRequests0m


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


  VALUEs
  4  PIXMAP		 background-pixmap
     0	       None
     1	       ParentRelative
  4  CARD32		 background-pixel
  4  PIXMAP		 border-pixmap
     0	       CopyFromParent
  4  CARD32		 border-pixel
  1  BITGRAVITY		 bit-gravity
  1  WINGRAVITY		 win-gravity
  1			 backing-store
     0	       NotUseful
     1	       WhenMapped
     2	       Always
  4  CARD32		 backing-planes



			     1m1670m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mChangeWindowAttributes0m
  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



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


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



			     1m1680m





1mX Protocol				X11, Release 6.7 DRAFT0m


  4  COLORMAP		 colormap
     0	       None
  4  SETofEVENT		 all-event-masks
  4  SETofEVENT		 your-event-mask
  2  SETofDEVICEEVENT	 do-not-propagate-mask
  2			 unused



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



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



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



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



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






			     1m1690m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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



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



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


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



			     1m1700m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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


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



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


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



4mInternAtom0m



			     1m1710m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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)


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



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


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



4mChangeProperty0m
  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)



			     1m1720m





1mX Protocol				X11, Release 6.7 DRAFT0m


			 (= 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)



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



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


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



4mListProperties0m
  1  21			 opcode
  1			 unused



			     1m1730m





1mX Protocol				X11, Release 6.7 DRAFT0m


  2  2			 request length
  4  WINDOW		 window


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



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



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


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



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



			     1m1740m





1mX Protocol				X11, Release 6.7 DRAFT0m


  4  TIMESTAMP		 time
     0	       CurrentTime



4mSendEvent0m
  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)



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


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



4mUngrabPointer0m
  1  27			 opcode



			     1m1750m





1mX Protocol				X11, Release 6.7 DRAFT0m


  1			 unused
  2  2			 request length
  4  TIMESTAMP		 time
     0	       CurrentTime



4mGrabButton0m
  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



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



4mChangeActivePointerGrab0m
  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




			     1m1760m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


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



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



4mGrabKey0m
  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



			     1m1770m





1mX Protocol				X11, Release 6.7 DRAFT0m


  3			 unused



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



4mAllowEvents0m
  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



4mGrabServer0m
  1  36			 opcode
  1			 unused
  2  1			 request length



4mUngrabServer0m
  1  37			 opcode
  1			 unused
  2  1			 request length



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





			     1m1780m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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


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



  TIMECOORD
  4  TIMESTAMP		 time
  2  INT16		 x
  2  INT16		 y



4mTranslateCoordinates0m
  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



			     1m1790m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mWarpPointer0m
  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



4mSetInputFocus0m
  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



4mGetInputFocus0m
  1  43			 opcode
  1			 unused
  2  1			 request length


 ->
  1  1			 Reply
  1			 revert-to



			     1m1800m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mQueryKeymap0m
  1  44			 opcode
  1			 unused
  2  1			 request length


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



4mOpenFont0m
  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)



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



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





			     1m1810m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


  FONTPROP
  4  ATOM		 name
  4  <32-bits>		 value



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



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


 ->
  1  1			 Reply
  1			 draw-direction



			     1m1820m





1mX Protocol				X11, Release 6.7 DRAFT0m


     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



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


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



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


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



			     1m1830m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


  FONTPROP
  encodings are the same as for QueryFont

  CHARINFO
  encodings are the same as for QueryFont


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



4mSetFontPath0m
  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)



4mGetFontPath0m
  1  52			 opcode
  1			 unused
  2  1			 request list


 ->



			     1m1840m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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)



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



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



4mCreateGC0m
  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



			     1m1850m





1mX Protocol				X11, Release 6.7 DRAFT0m


     #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



			     1m1860m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mChangeGC0m
  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



4mCopyGC0m
  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



4mSetDashes0m
  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)






			     1m1870m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mSetClipRectangles0m
  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



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



4mClearArea0m
  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



4mCopyArea0m
  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



4mCopyPlane0m
  1  63			 opcode
  1			 unused



			     1m1880m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



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



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



4mPolySegment0m
  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





			     1m1890m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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



4mFillPoly0m
  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



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



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



			     1m1900m





1mX Protocol				X11, Release 6.7 DRAFT0m


  12n	       LISTofARC arcs



4mPutImage0m
  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)



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


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



4mPolyText80m
  1  74			 opcode



			     1m1910m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


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



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


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



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



			     1m1920m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mImageText160m
  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)



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



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



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



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



			     1m1930m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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


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



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


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



4mAllocNamedColor0m
  1  85			 opcode
  1			 unused



			     1m1940m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


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



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


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



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



			     1m1950m





1mX Protocol				X11, Release 6.7 DRAFT0m


  2  CARD16		 blues


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



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



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


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



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



			     1m1960m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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


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


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



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


 ->
  1  1			 Reply
  1			 unused
  2  CARD16		 sequence number



			     1m1970m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mCreateCursor0m
  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



4mCreateGlyphCursor0m
  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



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



			     1m1980m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mRecolorCursor0m
  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



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


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



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


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



			     1m1990m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mListExtensions0m
  1  99			 opcode
  1			 unused
  2  1			 request length


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



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



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


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



4mChangeKeyboardControl0m



			     1m2000m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


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



4mGetKeyboardControl0m
  1  103		 opcode
  1			 unused
  2  1			 request length


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





			     1m2010m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mBell0m
  1  104		 opcode
  1  INT8		 percent
  2  1			 request length



4mChangePointerControl0m
  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



4mGetPointerControl0m
  1  106		 opcode
  1			 unused
  2  1			 request length


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



4mSetScreenSaver0m
  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





			     1m2020m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mGetScreenSaver0m
  1  108		 opcode
  1			 unused
  2  1			 request length


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



4mChangeHosts0m
  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)



4mListHosts0m
  1  110		 opcode
  1			 unused
  2  1			 request length


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



			     1m2030m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mSetAccessControl0m
  1  111		 opcode
  1			 mode
     0	       Disable
     1	       Enable
  2  1			 request length



4mSetCloseDownMode0m
  1  112		 opcode
  1			 mode
     0	       Destroy
     1	       RetainPermanent
     2	       RetainTemporary
  2  1			 request length



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



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



4mForceScreenSaver0m
  1  115		 opcode
  1			 mode
     0	       Reset
     1	       Activate
  2  1			 request length



4mSetPointerMapping0m



			     1m2040m





1mX Protocol				X11, Release 6.7 DRAFT0m


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


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



4mGetPointerMapping0m
  1  117		 opcode
  1			 unused
  2  1			 request length


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



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


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






			     1m2050m





1mX Protocol				X11, Release 6.7 DRAFT0m


4mGetModifierMapping0m
  1  119		 opcode
  1			 unused
  2  1			 request length


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



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


1mEvents0m


4mKeyPress0m
  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



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



			     1m2060m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mButtonPress0m
  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



4mButtonRelease0m
  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



4mMotionNotify0m
  1  6			 code
  1			 detail
     0	       Normal
     1	       Hint
  2  CARD16		 sequence number



			     1m2070m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mEnterNotify0m
  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



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



			     1m2080m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mFocusIn0m
  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



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



			     1m2090m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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



4mExpose0m
  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



4mGraphicsExposure0m
  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



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



			     1m2100m





1mX Protocol				X11, Release 6.7 DRAFT0m


  21			 unused



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



4mCreateNotify0m
  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



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



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






			     1m2110m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



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



4mReparentNotify0m
  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



4mConfigureNotify0m
  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



4mConfigureRequest0m



			     1m2120m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



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



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



4mCirculateNotify0m
  1  26			 code



			     1m2130m





1mX Protocol				X11, Release 6.7 DRAFT0m


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



4mCirculateRequest0m
  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



4mPropertyNotify0m
  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



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



4mSelectionRequest0m
  1  30			 code
  1			 unused



			     1m2140m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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



4mSelectionNotify0m
  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



4mColormapNotify0m
  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



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



4mMappingNotify0m



			     1m2150m





1mX Protocol				X11, Release 6.7 DRAFT0m


  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















































			     1m2160m





1mX Protocol				X11, Release 6.7 DRAFT0m




			  1mGlossary0m



1mAccess control list0m

     X maintains a list of hosts from which client programs
     can be run.  By default, only programs on the local
     host and hosts specified in an initial list read by the
     server can use the display.  Clients on the local host
     can change this access control list.  Some server
     implementations can also implement other authorization
     mechanisms in addition to or in place of this mecha-
     nism.  The action of this mechanism can be conditional
     based on the authorization protocol name and data
     received by the server at connection setup.

1mActive grab0m

     A grab is active when the pointer or keyboard is actu-
     ally owned by the single grabbing client.

1mAncestors0m

     If W is an inferior of A, then A is an ancestor of W.

1mAtom0m

     An atom is a unique ID corresponding to a string name.
     Atoms are used to identify properties, types, and
     selections.

1mBackground0m

     An 4mInputOutput24m window can have a background, which is
     defined as a pixmap.  When regions of the window have
     their contents lost or invalidated, the server will
     automatically tile those regions with the background.

1mBacking store0m

     When a server maintains the contents of a window, the
     pixels saved off screen are known as a backing store.












			     1m2170m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mBit gravity0m

     When a window is resized, the contents of the window
     are not necessarily discarded.  It is possible to
     request that the server relocate the previous contents
     to some region of the window (though no guarantees are
     made).  This attraction of window contents for some
     location of a window is known as bit gravity.

1mBit plane0m

     When a pixmap or window is thought of as a stack of
     bitmaps, each bitmap is called a bit plane or plane.

1mBitmap0m

     A bitmap is a pixmap of depth one.

1mBorder0m

     An 4mInputOutput24m window can have a border of equal thick-
     ness on all four sides of the window.  A pixmap defines
     the contents of the border, and the server automati-
     cally maintains the contents of the border.  Exposure
     events are never generated for border regions.

1mButton grabbing0m

     Buttons on the pointer may be passively grabbed by a
     client.  When the button is pressed, the pointer is
     then actively grabbed by the client.

1mByte order0m

     For image (pixmap/bitmap) data, the server defines the
     byte order, and clients with different native byte
     ordering must swap bytes as necessary.  For all other
     parts of the protocol, the client defines the byte
     order, and the server swaps bytes as necessary.

1mChildren0m

     The children of a window are its first-level subwin-
     dows.













			     1m2180m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mClient0m

     An application program connects to the window system
     server by some interprocess communication path, such as
     a TCP connection or a shared memory buffer.  This pro-
     gram is referred to as a client of the window system
     server.  More precisely, the client is the communica-
     tion path itself; a program with multiple paths open to
     the server is viewed as multiple clients by the proto-
     col.  Resource lifetimes are controlled by connection
     lifetimes, not by program lifetimes.

1mClipping region0m

     In a graphics context, a bitmap or list of rectangles
     can be specified to restrict output to a particular
     region of the window.  The image defined by the bitmap
     or rectangles is called a clipping region.

1mColormap0m

     A colormap consists of a set of entries defining color
     values.  The colormap associated with a window is used
     to display the contents of the window; each pixel value
     indexes the colormap to produce RGB values that drive
     the guns of a monitor.  Depending on hardware limita-
     tions, one or more colormaps may be installed at one
     time, so that windows associated with those maps dis-
     play with correct colors.

1mConnection0m

     The interprocess communication path between the server
     and client program is known as a connection.  A client
     program typically (but not necessarily) has one connec-
     tion to the server over which requests and events are
     sent.

1mContainment0m

     A window ``contains'' the pointer if the window is
     viewable and the hotspot of the cursor is within a vis-
     ible region of the window or a visible region of one of
     its inferiors.  The border of the window is included as
     part of the window for containment.  The pointer is
     ``in'' a window if the window contains the pointer but
     no inferior contains the pointer.










			     1m2190m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mCoordinate system0m

     The coordinate system has the X axis horizontal and the
     Y axis vertical, with the origin [0, 0] at the upper
     left.  Coordinates are integral, in terms of pixels,
     and coincide with pixel centers.  Each window and
     pixmap has its own coordinate system.  For a window,
     the origin is inside the border at the inside upper
     left.

1mCursor0m

     A cursor is the visible shape of the pointer on a
     screen.  It consists of a hot spot, a source bitmap, a
     shape bitmap, and a pair of colors.  The cursor defined
     for a window controls the visible appearance when the
     pointer is in that window.

1mDepth0m

     The depth of a window or pixmap is the number of bits
     per pixel that it has.  The depth of a graphics context
     is the depth of the drawables it can be used in con-
     junction with for graphics output.

1mDevice0m

     Keyboards, mice, tablets, track-balls, button boxes,
     and so on are all collectively known as input devices.
     The core protocol only deals with two devices, ``the
     keyboard'' and ``the pointer.''

1mDirectColor0m

     4mDirectColor24m is a class of colormap in which a pixel
     value is decomposed into three separate subfields for
     indexing.	The first subfield indexes an array to pro-
     duce red intensity values.	 The second subfield indexes
     a second array to produce blue intensity values.  The
     third subfield indexes a third array to produce green
     intensity values.	The RGB values can be changed dynam-
     ically.

1mDisplay0m

     A server, together with its screens and input devices,
     is called a display.










			     1m2200m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mDrawable0m

     Both windows and pixmaps can be used as sources and
     destinations in graphics operations.  These windows and
     pixmaps are collectively known as drawables.  However,
     an 4mInputOnly24m window cannot be used as a source or des-
     tination in a graphics operation.

1mEvent0m

     Clients are informed of information asynchronously by
     means of events.  These events can be generated either
     asynchronously from devices or as side effects of
     client requests.  Events are grouped into types.  The
     server never sends events to a client unless the client
     has specificially asked to be informed of that type of
     event.  However, other clients can force events to be
     sent to other clients.  Events are typically reported
     relative to a window.

1mEvent mask0m

     Events are requested relative to a window.	 The set of
     event types that a client requests relative to a window
     is described by using an event mask.

1mEvent synchronization0m

     There are certain race conditions possible when demul-
     tiplexing device events to clients (in particular
     deciding where pointer and keyboard events should be
     sent when in the middle of window management opera-
     tions).  The event synchronization mechanism allows
     synchronous processing of device events.

1mEvent propagation0m

     Device-related events propagate from the source window
     to ancestor windows until some client has expressed
     interest in handling that type of event or until the
     event is discarded explicitly.

1mEvent source0m

     The window the pointer is in is the source of a device-
     related event.

1mExposure event0m

     Servers do not guarantee to preserve the contents of
     windows when windows are obscured or reconfigured.
     Exposure events are sent to clients to inform them when
     contents of regions of windows have been lost.




			     1m2210m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mExtension0m

     Named extensions to the core protocol can be defined to
     extend the system.	 Extension to output requests,
     resources, and event types are all possible and are
     expected.

1mFocus window0m

     The focus window is another term for the input focus.

1mFont0m

     A font is a matrix of glyphs (typically characters).
     The protocol does no translation or interpretation of
     character sets.  The client simply indicates values
     used to index the glyph array.  A font contains addi-
     tional metric information to determine interglyph and
     interline spacing.

1mGC22m, 1mGContext0m

     GC and gcontext are abbreviations for graphics context.

1mGlyph0m

     A glyph is an image, typically of a character, in a
     font.

1mGrab0m

     Keyboard keys, the keyboard, pointer buttons, the
     pointer, and the server can be grabbed for exclusive
     use by a client.  In general, these facilities are not
     intended to be used by normal applications but are
     intended for various input and window managers to
     implement various styles of user interfaces.

1mGraphics context0m

     Various information for graphics output is stored in a
     graphics context such as foreground pixel, background
     pixel, line width, clipping region, and so on.  A
     graphics context can only be used with drawables that
     have the same root and the same depth as the graphics
     context.

1mGravity0m

     See 1mbit gravity 22mand 1mwindow gravity22m.







			     1m2220m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mGrayScale0m

     4mGrayScale24m can be viewed as a degenerate case of 4mPseudo-0m
     4mColor24m, in which the red, green, and blue values in any
     given colormap entry are equal, thus producing shades
     of gray.  The gray values can be changed dynamically.

1mHotspot0m

     A cursor has an associated hotspot that defines the
     point in the cursor corresponding to the coordinates
     reported for the pointer.

1mIdentifier0m

     An identifier is a unique value associated with a
     resource that clients use to name that resource.  The
     identifier can be used over any connection.

1mInferiors0m

     The inferiors of a window are all of the subwindows
     nested below it: the children, the children's children,
     and so on.

1mInput focus0m

     The input focus is normally a window defining the scope
     for processing of keyboard input.	If a generated key-
     board event would normally be reported to this window
     or one of its inferiors, the event is reported nor-
     mally.  Otherwise, the event is reported with respect
     to the focus window.  The input focus also can be set
     such that all keyboard events are discarded and such
     that the focus window is dynamically taken to be the
     root window of whatever screen the pointer is on at
     each keyboard event.

1mInput manager0m

     Control over keyboard input is typically provided by an
     input manager client.

1mInputOnly window0m

     An 4mInputOnly24m window is a window that cannot be used for
     graphics requests.	 4mInputOnly24m windows are invisible and
     can be used to control such things as cursors, input
     event generation, and grabbing.  4mInputOnly24m windows can-
     not have 4mInputOutput24m windows as inferiors.







			     1m2230m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mInputOutput window0m

     An 4mInputOutput24m window is the normal kind of opaque win-
     dow, used for both input and output.  4mInputOutput24m win-
     dows can have both 4mInputOutput24m and 4mInputOnly24m windows as
     inferiors.

1mKey grabbing0m

     Keys on the keyboard can be passively grabbed by a
     client.  When the key is pressed, the keyboard is then
     actively grabbed by the client.

1mKeyboard grabbing0m

     A client can actively grab control of the keyboard, and
     key events will be sent to that client rather than the
     client the events would normally have been sent to.

1mKeysym0m

     An encoding of a symbol on a keycap on a keyboard.

1mMapped0m

     A window is said to be mapped if a map call has been
     performed on it.  Unmapped windows and their inferiors
     are never viewable or visible.

1mModifier keys0m

     Shift, Control, Meta, Super, Hyper, Alt, Compose,
     Apple, CapsLock, ShiftLock, and similar keys are called
     modifier keys.

1mMonochrome0m

     Monochrome is a special case of 4mStaticGray24m in which
     there are only two colormap entries.

1mObscure0m

     A window is obscured if some other window obscures it.
     Window A obscures window B if both are viewable
     4mInputOutput24m windows, A is higher in the global stacking
     order, and the rectangle defined by the outside edges
     of A intersects the rectangle defined by the outside
     edges of B.  Note the distinction between obscure and
     occludes.	Also note that window borders are included
     in the calculation and that a window can be obscured
     and yet still have visible regions.






			     1m2240m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mOcclude0m

     A window is occluded if some other window occludes it.
     Window A occludes window B if both are mapped, A is
     higher in the global stacking order, and the rectangle
     defined by the outside edges of A intersects the rec-
     tangle defined by the outside edges of B.	Note the
     distinction between occludes and obscures.	 Also note
     that window borders are included in the calculation.

1mPadding0m

     Some padding bytes are inserted in the data stream to
     maintain alignment of the protocol requests on natural
     boundaries.  This increases ease of portability to some
     machine architectures.

1mParent window0m

     If C is a child of P, then P is the parent of C.

1mPassive grab0m

     Grabbing a key or button is a passive grab.  The grab
     activates when the key or button is actually pressed.

1mPixel value0m

     A pixel is an N-bit value, where N is the number of bit
     planes used in a particular window or pixmap (that is,
     N is the depth of the window or pixmap).  For a window,
     a pixel value indexes a colormap to derive an actual
     color to be displayed.

1mPixmap0m

     A pixmap is a three-dimensional array of bits.  A
     pixmap is normally thought of as a two-dimensional
     array of pixels, where each pixel can be a value from 0
     to (2^N)-1 and where N is the depth (z axis) of the
     pixmap.  A pixmap can also be thought of as a stack of
     N bitmaps.

1mPlane0m

     When a pixmap or window is thought of as a stack of
     bitmaps, each bitmap is called a plane or bit plane.










			     1m2250m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mPlane mask0m

     Graphics operations can be restricted to only affect a
     subset of bit planes of a destination.  A plane mask is
     a bit mask describing which planes are to be modified.
     The plane mask is stored in a graphics context.

1mPointer0m

     The pointer is the pointing device attached to the cur-
     sor and tracked on the screens.

1mPointer grabbing0m

     A client can actively grab control of the pointer.
     Then button and motion events will be sent to that
     client rather than the client the events would normally
     have been sent to.

1mPointing device0m

     A pointing device is typically a mouse, tablet, or some
     other device with effective dimensional motion.  There
     is only one visible cursor defined by the core proto-
     col, and it tracks whatever pointing device is attached
     as the pointer.

1mProperty0m

     Windows may have associated properties, which consist
     of a name, a type, a data format, and some data.  The
     protocol places no interpretation on properties.  They
     are intended as a general-purpose naming mechanism for
     clients.  For example, clients might use properties to
     share information such as resize hints, program names,
     and icon formats with a window manager.

1mProperty list0m

     The property list of a window is the list of properties
     that have been defined for the window.

1mPseudoColor0m

     4mPseudoColor24m is a class of colormap in which a pixel
     value indexes the colormap to produce independent red,
     green, and blue values; that is, the colormap is viewed
     as an array of triples (RGB values).  The RGB values
     can be changed dynamically.








			     1m2260m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mRedirecting control0m

     Window managers (or client programs) may want to
     enforce window layout policy in various ways.  When a
     client attempts to change the size or position of a
     window, the operation may be redirected to a specified
     client rather than the operation actually being per-
     formed.

1mReply0m

     Information requested by a client program is sent back
     to the client with a reply.  Both events and replies
     are multiplexed on the same connection.  Most requests
     do not generate replies, although some requests gener-
     ate multiple replies.

1mRequest0m

     A command to the server is called a request.  It is a
     single block of data sent over a connection.

1mResource0m

     Windows, pixmaps, cursors, fonts, graphics contexts,
     and colormaps are known as resources.  They all have
     unique identifiers associated with them for naming pur-
     poses.  The lifetime of a resource usually is bounded
     by the lifetime of the connection over which the
     resource was created.

1mRGB values0m

     Red, green, and blue (RGB) intensity values are used to
     define color.  These values are always represented as
     16-bit unsigned numbers, with 0 being the minimum
     intensity and 65535 being the maximum intensity.  The
     server scales the values to match the display hardware.

1mRoot0m

     The root of a pixmap, colormap, or graphics context is
     the same as the root of whatever drawable was used when
     the pixmap, colormap, or graphics context was created.
     The root of a window is the root window under which the
     window was created.

1mRoot window0m

     Each screen has a root window covering it.	 It cannot
     be reconfigured or unmapped, but it otherwise acts as a
     full-fledged window.  A root window has no parent.





			     1m2270m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mSave set0m

     The save set of a client is a list of other clients'
     windows that, if they are inferiors of one of the
     client's windows at connection close, should not be
     destroyed and that should be remapped if currently
     unmapped.	Save sets are typically used by window man-
     agers to avoid lost windows if the manager terminates
     abnormally.

1mScanline0m

     A scanline is a list of pixel or bit values viewed as a
     horizontal row (all values having the same y coordi-
     nate) of an image, with the values ordered by increas-
     ing x coordinate.

1mScanline order0m

     An image represented in scanline order contains scan-
     lines ordered by increasing y coordinate.

1mScreen0m

     A server can provide several independent screens, which
     typically have physically independent monitors.  This
     would be the expected configuration when there is only
     a single keyboard and pointer shared among the screens.

1mSelection0m

     A selection can be thought of as an indirect property
     with dynamic type; that is, rather than having the
     property stored in the server, it is maintained by some
     client (the ``owner'').  A selection is global in
     nature and is thought of as belonging to the user
     (although maintained by clients), rather than as being
     private to a particular window subhierarchy or a par-
     ticular set of clients.  When a client asks for the
     contents of a selection, it specifies a selection
     ``target type''.  This target type can be used to con-
     trol the transmitted representation of the contents.
     For example, if the selection is ``the last thing the
     user clicked on'' and that is currently an image, then
     the target type might specify whether the contents of
     the image should be sent in XY format or Z format.	 The
     target type can also be used to control the class of
     contents transmitted; for example, asking for the
     ``looks'' (fonts, line spacing, indentation, and so on)
     of a paragraph selection rather than the text of the
     paragraph.	 The target type can also be used for other
     purposes.	The protocol does not constrain the seman-
     tics.




			     1m2280m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mServer0m

     The server provides the basic windowing mechanism.	 It
     handles connections from clients, multiplexes graphics
     requests onto the screens, and demultiplexes input back
     to the appropriate clients.

1mServer grabbing0m

     The server can be grabbed by a single client for exclu-
     sive use.	This prevents processing of any requests
     from other client connections until the grab is com-
     pleted.  This is typically only a transient state for
     such things as rubber-banding, pop-up menus, or to exe-
     cute requests indivisibly.

1mSibling0m

     Children of the same parent window are known as sibling
     windows.

1mStacking order0m

     Sibling windows may stack on top of each other.  Win-
     dows above other windows both obscure and occlude those
     lower windows.  This is similar to paper on a desk.
     The relationship between sibling windows is known as
     the stacking order.

1mStaticColor0m

     4mStaticColor24m can be viewed as a degenerate case of 4mPseu-0m
     4mdoColor24m in which the RGB values are predefined and
     read-only.

1mStaticGray0m

     4mStaticGray24m can be viewed as a degenerate case of
     4mGrayScale24m in which the gray values are predefined and
     read-only.	 The values are typically linear or near-
     linear increasing ramps.

1mStipple0m

     A stipple pattern is a bitmap that is used to tile a
     region that will serve as an additional clip mask for a
     fill operation with the foreground color.










			     1m2290m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mString Equivalence0m

     Two ISO Latin-1 STRING8 values are considered equal if
     they are the same length and if corresponding bytes are
     either equal or are equivalent as follows:	 decimal
     values 65 to 90 inclusive (characters ``A'' to ``Z'')
     are pairwise equivalent to decimal values 97 to 122
     inclusive (characters ``a'' to ``z''), decimal values
     192 to 214 inclusive (characters ``A grave'' to ``O
     diaeresis'') are pairwise equivalent to decimal values
     224 to 246 inclusive (characters ``a grave'' to ``o
     diaeresis''), and decimal values 216 to 222 inclusive
     (characters ``O oblique'' to ``THORN'') are pairwise
     equivalent to decimal values 246 to 254 inclusive
     (characters ``o oblique'' to ``thorn'').

1mTile0m

     A pixmap can be replicated in two dimensions to tile a
     region.  The pixmap itself is also known as a tile.

1mTimestamp0m

     A timestamp is a time value, expressed in milliseconds.
     It typically is the time since the last server reset.
     Timestamp values wrap around (after about 49.7 days).
     The server, given its current time is represented by
     timestamp T, always interprets timestamps from clients
     by treating half of the timestamp space as being ear-
     lier in time than T and half of the timestamp space as
     being later in time than T.  One timestamp value (named
     4mCurrentTime24m) is never generated by the server.  This
     value is reserved for use in requests to represent the
     current server time.

1mTrueColor0m

     4mTrueColor24m can be viewed as a degenerate case of 4mDirect-0m
     4mColor24m in which the subfields in the pixel value
     directly encode the corresponding RGB values; that is,
     the colormap has predefined read-only RGB values.	The
     values are typically linear or near-linear increasing
     ramps.

1mType0m

     A type is an arbitrary atom used to identify the inter-
     pretation of property data.  Types are completely unin-
     terpreted by the server and are solely for the benefit
     of clients.







			     1m2300m





1mX Protocol				X11, Release 6.7 DRAFT0m


1mViewable0m

     A window is viewable if it and all of its ancestors are
     mapped.  This does not imply that any portion of the
     window is actually visible.  Graphics requests can be
     performed on a window when it is not viewable, but out-
     put will not be retained unless the server is maintain-
     ing backing store.

1mVisible0m

     A region of a window is visible if someone looking at
     the screen can actually see it; that is, the window is
     viewable and the region is not occluded by any other
     window.

1mWindow gravity0m

     When windows are resized, subwindows may be reposi-
     tioned automatically relative to some position in the
     window.  This attraction of a subwindow to some part of
     its parent is known as window gravity.

1mWindow manager0m

     Manipulation of windows on the screen and much of the
     user interface (policy) is typically provided by a win-
     dow manager client.

1mXYFormat0m

     The data for a pixmap is said to be in XY format if it
     is organized as a set of bitmaps representing individ-
     ual bit planes, with the planes appearing from most-
     significant to least-significant in bit order.

1mZFormat0m

     The data for a pixmap is said to be in Z format if it
     is organized as a set of pixel values in scanline
     order.
















			     1m2310m





1mX Protocol				X11, Release 6.7 DRAFT0m





		     1mTable of Contents0m


Acknowledgments	 . . . . . . . . . . . . . . . . . . . . iii
1. Protocol Formats  . . . . . . . . . . . . . . . . . .   1
2. Syntactic Conventions . . . . . . . . . . . . . . . .   2
3. Common Types	 . . . . . . . . . . . . . . . . . . . .   3
4. Errors  . . . . . . . . . . . . . . . . . . . . . . .   5
5. Keyboards . . . . . . . . . . . . . . . . . . . . . .   8
6. Pointers  . . . . . . . . . . . . . . . . . . . . . .  10
7. Predefined Atoms  . . . . . . . . . . . . . . . . . .  10
8. Connection Setup  . . . . . . . . . . . . . . . . . .  11
9. Requests  . . . . . . . . . . . . . . . . . . . . . .  17
10. Connection Close . . . . . . . . . . . . . . . . . . 104
11. Events . . . . . . . . . . . . . . . . . . . . . . . 105
12. Flow Control and Concurrency . . . . . . . . . . . . 122
Appendix A - KEYSYM Encoding . . . . . . . . . . . . . . 124
Appendix B - Protocol Encoding . . . . . . . . . . . . . 152
Glossary . . . . . . . . . . . . . . . . . . . . . . . . 217
Index  . . . . . . . . . . . . . . . . . . . . . . . . . 232