Home | History | Annotate | Download | only in X11
      1 /*
      2  *	$Xorg: Xproto.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $
      3  */
      4 
      5 /* Definitions for the X window system used by server and c bindings */
      6 
      7 /*
      8  * This packet-construction scheme makes the following assumptions:
      9  *
     10  * 1. The compiler is able
     11  * to generate code which addresses one- and two-byte quantities.
     12  * In the worst case, this would be done with bit-fields.  If bit-fields
     13  * are used it may be necessary to reorder the request fields in this file,
     14  * depending on the order in which the machine assigns bit fields to
     15  * machine words.  There may also be a problem with sign extension,
     16  * as K+R specify that bitfields are always unsigned.
     17  *
     18  * 2. 2- and 4-byte fields in packet structures must be ordered by hand
     19  * such that they are naturally-aligned, so that no compiler will ever
     20  * insert padding bytes.
     21  *
     22  * 3. All packets are hand-padded to a multiple of 4 bytes, for
     23  * the same reason.
     24  */
     25 
     26 #ifndef XPROTO_H
     27 #define XPROTO_H
     28 
     29 /***********************************************************
     30 
     31 Copyright 1987, 1998  The Open Group
     32 
     33 Permission to use, copy, modify, distribute, and sell this software and its
     34 documentation for any purpose is hereby granted without fee, provided that
     35 the above copyright notice appear in all copies and that both that
     36 copyright notice and this permission notice appear in supporting
     37 documentation.
     38 
     39 The above copyright notice and this permission notice shall be included in
     40 all copies or substantial portions of the Software.
     41 
     42 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     43 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     44 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
     45 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
     46 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     47 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     48 
     49 Except as contained in this notice, the name of The Open Group shall not be
     50 used in advertising or otherwise to promote the sale, use or other dealings
     51 in this Software without prior written authorization from The Open Group.
     52 
     53 
     54 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
     55 
     56                         All Rights Reserved
     57 
     58 Permission to use, copy, modify, and distribute this software and its
     59 documentation for any purpose and without fee is hereby granted,
     60 provided that the above copyright notice appear in all copies and that
     61 both that copyright notice and this permission notice appear in
     62 supporting documentation, and that the name of Digital not be
     63 used in advertising or publicity pertaining to distribution of the
     64 software without specific, written prior permission.
     65 
     66 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
     67 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
     68 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
     69 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
     70 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
     71 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
     72 SOFTWARE.
     73 
     74 ******************************************************************/
     75 
     76 #include <X11/Xmd.h>
     77 #include <X11/Xprotostr.h>
     78 
     79 /*
     80  * Define constants for the sizes of the network packets.  The sz_ prefix is
     81  * used instead of something more descriptive so that the symbols are no more
     82  * than 32 characters in length (which causes problems for some compilers).
     83  */
     84 #define sz_xSegment 8
     85 #define sz_xPoint 4
     86 #define sz_xRectangle 8
     87 #define sz_xArc 12
     88 #define sz_xConnClientPrefix 12
     89 #define sz_xConnSetupPrefix 8
     90 #define sz_xConnSetup 32
     91 #define sz_xPixmapFormat 8
     92 #define sz_xDepth 8
     93 #define sz_xVisualType 24
     94 #define sz_xWindowRoot 40
     95 #define sz_xTimecoord 8
     96 #define sz_xHostEntry 4
     97 #define sz_xCharInfo 12
     98 #define sz_xFontProp 8
     99 #define sz_xTextElt 2
    100 #define sz_xColorItem 12
    101 #define sz_xrgb 8
    102 #define sz_xGenericReply 32
    103 #define sz_xGetWindowAttributesReply 44
    104 #define sz_xGetGeometryReply 32
    105 #define sz_xQueryTreeReply 32
    106 #define sz_xInternAtomReply 32
    107 #define sz_xGetAtomNameReply 32
    108 #define sz_xGetPropertyReply 32
    109 #define sz_xListPropertiesReply 32
    110 #define sz_xGetSelectionOwnerReply 32
    111 #define sz_xGrabPointerReply 32
    112 #define sz_xQueryPointerReply 32
    113 #define sz_xGetMotionEventsReply 32
    114 #define sz_xTranslateCoordsReply 32
    115 #define sz_xGetInputFocusReply 32
    116 #define sz_xQueryKeymapReply 40
    117 #define sz_xQueryFontReply 60
    118 #define sz_xQueryTextExtentsReply 32
    119 #define sz_xListFontsReply 32
    120 #define sz_xGetFontPathReply 32
    121 #define sz_xGetImageReply 32
    122 #define sz_xListInstalledColormapsReply 32
    123 #define sz_xAllocColorReply 32
    124 #define sz_xAllocNamedColorReply 32
    125 #define sz_xAllocColorCellsReply 32
    126 #define sz_xAllocColorPlanesReply 32
    127 #define sz_xQueryColorsReply 32
    128 #define sz_xLookupColorReply 32
    129 #define sz_xQueryBestSizeReply 32
    130 #define sz_xQueryExtensionReply 32
    131 #define sz_xListExtensionsReply 32
    132 #define sz_xSetMappingReply 32
    133 #define sz_xGetKeyboardControlReply 52
    134 #define sz_xGetPointerControlReply 32
    135 #define sz_xGetScreenSaverReply 32
    136 #define sz_xListHostsReply 32
    137 #define sz_xSetModifierMappingReply 32
    138 #define sz_xError 32
    139 #define sz_xEvent 32
    140 #define sz_xKeymapEvent 32
    141 #define sz_xReq 4
    142 #define sz_xResourceReq 8
    143 #define sz_xCreateWindowReq 32
    144 #define sz_xChangeWindowAttributesReq 12
    145 #define sz_xChangeSaveSetReq 8
    146 #define sz_xReparentWindowReq 16
    147 #define sz_xConfigureWindowReq 12
    148 #define sz_xCirculateWindowReq 8
    149 #define sz_xInternAtomReq 8
    150 #define sz_xChangePropertyReq 24
    151 #define sz_xDeletePropertyReq 12
    152 #define sz_xGetPropertyReq 24
    153 #define sz_xSetSelectionOwnerReq 16
    154 #define sz_xConvertSelectionReq 24
    155 #define sz_xSendEventReq 44
    156 #define sz_xGrabPointerReq 24
    157 #define sz_xGrabButtonReq 24
    158 #define sz_xUngrabButtonReq 12
    159 #define sz_xChangeActivePointerGrabReq 16
    160 #define sz_xGrabKeyboardReq 16
    161 #define sz_xGrabKeyReq 16
    162 #define sz_xUngrabKeyReq 12
    163 #define sz_xAllowEventsReq 8
    164 #define sz_xGetMotionEventsReq 16
    165 #define sz_xTranslateCoordsReq 16
    166 #define sz_xWarpPointerReq 24
    167 #define sz_xSetInputFocusReq 12
    168 #define sz_xOpenFontReq 12
    169 #define sz_xQueryTextExtentsReq 8
    170 #define sz_xListFontsReq 8
    171 #define sz_xSetFontPathReq 8
    172 #define sz_xCreatePixmapReq 16
    173 #define sz_xCreateGCReq 16
    174 #define sz_xChangeGCReq 12
    175 #define sz_xCopyGCReq 16
    176 #define sz_xSetDashesReq 12
    177 #define sz_xSetClipRectanglesReq 12
    178 #define sz_xCopyAreaReq 28
    179 #define sz_xCopyPlaneReq 32
    180 #define sz_xPolyPointReq 12
    181 #define sz_xPolySegmentReq 12
    182 #define sz_xFillPolyReq 16
    183 #define sz_xPutImageReq 24
    184 #define sz_xGetImageReq 20
    185 #define sz_xPolyTextReq 16
    186 #define sz_xImageTextReq 16
    187 #define sz_xCreateColormapReq 16
    188 #define sz_xCopyColormapAndFreeReq 12
    189 #define sz_xAllocColorReq 16
    190 #define sz_xAllocNamedColorReq 12
    191 #define sz_xAllocColorCellsReq 12
    192 #define sz_xAllocColorPlanesReq 16
    193 #define sz_xFreeColorsReq 12
    194 #define sz_xStoreColorsReq 8
    195 #define sz_xStoreNamedColorReq 16
    196 #define sz_xQueryColorsReq 8
    197 #define sz_xLookupColorReq 12
    198 #define sz_xCreateCursorReq 32
    199 #define sz_xCreateGlyphCursorReq 32
    200 #define sz_xRecolorCursorReq 20
    201 #define sz_xQueryBestSizeReq 12
    202 #define sz_xQueryExtensionReq 8
    203 #define sz_xChangeKeyboardControlReq 8
    204 #define sz_xBellReq 4
    205 #define sz_xChangePointerControlReq 12
    206 #define sz_xSetScreenSaverReq 12
    207 #define sz_xChangeHostsReq 8
    208 #define sz_xListHostsReq 4
    209 #define sz_xChangeModeReq 4
    210 #define sz_xRotatePropertiesReq 12
    211 #define sz_xReply 32
    212 #define sz_xGrabKeyboardReply 32
    213 #define sz_xListFontsWithInfoReply 60
    214 #define sz_xSetPointerMappingReply 32
    215 #define sz_xGetKeyboardMappingReply 32
    216 #define sz_xGetPointerMappingReply 32
    217 #define sz_xGetModifierMappingReply 32
    218 #define sz_xListFontsWithInfoReq 8
    219 #define sz_xPolyLineReq 12
    220 #define sz_xPolyArcReq 12
    221 #define sz_xPolyRectangleReq 12
    222 #define sz_xPolyFillRectangleReq 12
    223 #define sz_xPolyFillArcReq 12
    224 #define sz_xPolyText8Req 16
    225 #define sz_xPolyText16Req 16
    226 #define sz_xImageText8Req 16
    227 #define sz_xImageText16Req 16
    228 #define sz_xSetPointerMappingReq 4
    229 #define sz_xForceScreenSaverReq 4
    230 #define sz_xSetCloseDownModeReq 4
    231 #define sz_xClearAreaReq 16
    232 #define sz_xSetAccessControlReq 4
    233 #define sz_xGetKeyboardMappingReq 8
    234 #define sz_xSetModifierMappingReq 4
    235 #define sz_xPropIconSize 24
    236 #define sz_xChangeKeyboardMappingReq 8
    237 
    238 
    239 /* For the purpose of the structure definitions in this file,
    240 we must redefine the following types in terms of Xmd.h's types, which may
    241 include bit fields.  All of these are #undef'd at the end of this file,
    242 restoring the definitions in X.h.  */
    243 
    244 #define Window CARD32
    245 #define Drawable CARD32
    246 #define Font CARD32
    247 #define Pixmap CARD32
    248 #define Cursor CARD32
    249 #define Colormap CARD32
    250 #define GContext CARD32
    251 #define Atom CARD32
    252 #define VisualID CARD32
    253 #define Time CARD32
    254 #define KeyCode CARD8
    255 #define KeySym CARD32
    256 
    257 #define X_TCP_PORT 6000     /* add display number */
    258 
    259 #define xTrue        1
    260 #define xFalse       0
    261 
    262 
    263 typedef CARD16 KeyButMask;
    264 
    265 /*****************
    266    connection setup structure.  This is followed by
    267    numRoots xWindowRoot structs.
    268 *****************/
    269 
    270 typedef struct {
    271     CARD8	byteOrder;
    272     BYTE	pad;
    273     CARD16	majorVersion B16, minorVersion B16;
    274     CARD16	nbytesAuthProto B16;	/* Authorization protocol */
    275     CARD16	nbytesAuthString B16;	/* Authorization string */
    276     CARD16	pad2 B16;
    277 } xConnClientPrefix;
    278 
    279 typedef struct {
    280     CARD8          success;
    281     BYTE           lengthReason; /*num bytes in string following if failure */
    282     CARD16         majorVersion B16,
    283                    minorVersion B16;
    284     CARD16         length B16;  /* 1/4 additional bytes in setup info */
    285 } xConnSetupPrefix;
    286 
    287 
    288 typedef struct {
    289     CARD32         release B32;
    290     CARD32         ridBase B32,
    291                    ridMask B32;
    292     CARD32         motionBufferSize B32;
    293     CARD16         nbytesVendor B16;  /* number of bytes in vendor string */
    294     CARD16         maxRequestSize B16;
    295     CARD8          numRoots;          /* number of roots structs to follow */
    296     CARD8          numFormats;        /* number of pixmap formats */
    297     CARD8          imageByteOrder;        /* LSBFirst, MSBFirst */
    298     CARD8          bitmapBitOrder;        /* LeastSignificant, MostSign...*/
    299     CARD8          bitmapScanlineUnit,     /* 8, 16, 32 */
    300                    bitmapScanlinePad;     /* 8, 16, 32 */
    301     KeyCode	   minKeyCode, maxKeyCode;
    302     CARD32	   pad2 B32;
    303 } xConnSetup;
    304 
    305 typedef struct {
    306     CARD8          depth;
    307     CARD8          bitsPerPixel;
    308     CARD8          scanLinePad;
    309     CARD8          pad1;
    310     CARD32	   pad2 B32;
    311 } xPixmapFormat;
    312 
    313 /* window root */
    314 
    315 typedef struct {
    316     CARD8 	depth;
    317     CARD8 	pad1;
    318     CARD16	nVisuals B16;  /* number of xVisualType structures following */
    319     CARD32	pad2 B32;
    320     } xDepth;
    321 
    322 typedef struct {
    323     VisualID visualID B32;
    324 #if defined(__cplusplus) || defined(c_plusplus)
    325     CARD8 c_class;
    326 #else
    327     CARD8 class;
    328 #endif
    329     CARD8 bitsPerRGB;
    330     CARD16 colormapEntries B16;
    331     CARD32 redMask B32, greenMask B32, blueMask B32;
    332     CARD32 pad B32;
    333     } xVisualType;
    334 
    335 typedef struct {
    336     Window         windowId B32;
    337     Colormap       defaultColormap B32;
    338     CARD32         whitePixel B32, blackPixel B32;
    339     CARD32         currentInputMask B32;
    340     CARD16         pixWidth B16, pixHeight B16;
    341     CARD16         mmWidth B16, mmHeight B16;
    342     CARD16         minInstalledMaps B16, maxInstalledMaps B16;
    343     VisualID       rootVisualID B32;
    344     CARD8          backingStore;
    345     BOOL           saveUnders;
    346     CARD8          rootDepth;
    347     CARD8          nDepths;  /* number of xDepth structures following */
    348 } xWindowRoot;
    349 
    350 
    352 /*****************************************************************
    353  * Structure Defns
    354  *   Structures needed for replies
    355  *****************************************************************/
    356 
    357 /* Used in GetMotionEvents */
    358 
    359 typedef struct {
    360     CARD32 time B32;
    361     INT16 x B16, y B16;
    362 } xTimecoord;
    363 
    364 typedef struct {
    365     CARD8 family;
    366     BYTE pad;
    367     CARD16 length B16;
    368 } xHostEntry;
    369 
    370 typedef struct {
    371     INT16 leftSideBearing B16,
    372 	  rightSideBearing B16,
    373 	  characterWidth B16,
    374 	  ascent B16,
    375 	  descent B16;
    376     CARD16 attributes B16;
    377 } xCharInfo;
    378 
    379 typedef struct {
    380     Atom name B32;
    381     CARD32 value B32;
    382 } xFontProp;
    383 
    384 /*
    385  * non-aligned big-endian font ID follows this struct
    386  */
    387 typedef struct {           /* followed by string */
    388     CARD8 len;	/* number of *characters* in string, or FontChange (255)
    389 		   for font change, or 0 if just delta given */
    390     INT8 delta;
    391 } xTextElt;
    392 
    393 
    394 typedef struct {
    395     CARD32 pixel B32;
    396     CARD16 red B16, green B16, blue B16;
    397     CARD8 flags;  /* DoRed, DoGreen, DoBlue booleans */
    398     CARD8 pad;
    399 } xColorItem;
    400 
    401 
    402 typedef struct {
    403     CARD16 red B16, green B16, blue B16, pad B16;
    404 } xrgb;
    405 
    406 typedef CARD8 KEYCODE;
    407 
    408 
    410 /*****************
    411  * XRep:
    412  *    meant to be 32 byte quantity
    413  *****************/
    414 
    415 /* GenericReply is the common format of all replies.  The "data" items
    416    are specific to each individual reply type. */
    417 
    418 typedef struct {
    419     BYTE type;              /* X_Reply */
    420     BYTE data1;             /* depends on reply type */
    421     CARD16 sequenceNumber B16;  /* of last request received by server */
    422     CARD32 length B32;      /* 4 byte quantities beyond size of GenericReply */
    423     CARD32 data00 B32;
    424     CARD32 data01 B32;
    425     CARD32 data02 B32;
    426     CARD32 data03 B32;
    427     CARD32 data04 B32;
    428     CARD32 data05 B32;
    429     } xGenericReply;
    430 
    431 /* Individual reply formats. */
    432 
    433 typedef struct {
    434     BYTE type;  /* X_Reply */
    435     CARD8 backingStore;
    436     CARD16 sequenceNumber B16;
    437     CARD32 length B32;	/* NOT 0; this is an extra-large reply */
    438     VisualID visualID B32;
    439 #if defined(__cplusplus) || defined(c_plusplus)
    440     CARD16 c_class B16;
    441 #else
    442     CARD16 class B16;
    443 #endif
    444     CARD8 bitGravity;
    445     CARD8 winGravity;
    446     CARD32 backingBitPlanes B32;
    447     CARD32 backingPixel B32;
    448     BOOL saveUnder;
    449     BOOL mapInstalled;
    450     CARD8 mapState;
    451     BOOL override;
    452     Colormap colormap B32;
    453     CARD32 allEventMasks B32;
    454     CARD32 yourEventMask B32;
    455     CARD16 doNotPropagateMask B16;
    456     CARD16 pad B16;
    457     } xGetWindowAttributesReply;
    458 
    459 typedef struct {
    460     BYTE type;   /* X_Reply */
    461     CARD8 depth;
    462     CARD16 sequenceNumber B16;
    463     CARD32 length B32;  /* 0 */
    464     Window root B32;
    465     INT16 x B16, y B16;
    466     CARD16 width B16, height B16;
    467     CARD16 borderWidth B16;
    468     CARD16 pad1 B16;
    469     CARD32 pad2 B32;
    470     CARD32 pad3 B32;
    471     } xGetGeometryReply;
    472 
    473 typedef struct {
    474     BYTE type;  /* X_Reply */
    475     BYTE pad1;
    476     CARD16 sequenceNumber B16;
    477     CARD32 length B32;
    478     Window root B32, parent B32;
    479     CARD16 nChildren B16;
    480     CARD16 pad2 B16;
    481     CARD32 pad3 B32;
    482     CARD32 pad4 B32;
    483     CARD32 pad5 B32;
    484     } xQueryTreeReply;
    485 
    486 typedef struct {
    487     BYTE type;  /* X_Reply */
    488     BYTE pad1;
    489     CARD16 sequenceNumber B16;
    490     CARD32 length B32; /* 0 */
    491     Atom atom B32;
    492     CARD32 pad2 B32;
    493     CARD32 pad3 B32;
    494     CARD32 pad4 B32;
    495     CARD32 pad5 B32;
    496     CARD32 pad6 B32;
    497     } xInternAtomReply;
    498 
    499 typedef struct {
    500     BYTE type;  /* X_Reply */
    501     BYTE pad1;
    502     CARD16 sequenceNumber B16;
    503     CARD32 length B32;  /* of additional bytes */
    504     CARD16 nameLength B16;  /* # of characters in name */
    505     CARD16 pad2 B16;
    506     CARD32 pad3 B32;
    507     CARD32 pad4 B32;
    508     CARD32 pad5 B32;
    509     CARD32 pad6 B32;
    510     CARD32 pad7 B32;
    511     } xGetAtomNameReply;
    512 
    513 typedef struct {
    514     BYTE type;  /* X_Reply */
    515     CARD8 format;
    516     CARD16 sequenceNumber B16;
    517     CARD32 length B32; /* of additional bytes */
    518     Atom propertyType B32;
    519     CARD32 bytesAfter B32;
    520     CARD32 nItems B32; /* # of 8, 16, or 32-bit entities in reply */
    521     CARD32 pad1 B32;
    522     CARD32 pad2 B32;
    523     CARD32 pad3 B32;
    524     } xGetPropertyReply;
    525 
    526 typedef struct {
    527     BYTE type;  /* X_Reply */
    528     BYTE pad1;
    529     CARD16 sequenceNumber B16;
    530     CARD32 length B32;
    531     CARD16 nProperties B16;
    532     CARD16 pad2 B16;
    533     CARD32 pad3 B32;
    534     CARD32 pad4 B32;
    535     CARD32 pad5 B32;
    536     CARD32 pad6 B32;
    537     CARD32 pad7 B32;
    538     } xListPropertiesReply;
    539 
    540 typedef struct {
    541     BYTE type;  /* X_Reply */
    542     BYTE pad1;
    543     CARD16 sequenceNumber B16;
    544     CARD32 length B32;  /* 0 */
    545     Window owner B32;
    546     CARD32 pad2 B32;
    547     CARD32 pad3 B32;
    548     CARD32 pad4 B32;
    549     CARD32 pad5 B32;
    550     CARD32 pad6 B32;
    551     } xGetSelectionOwnerReply;
    552 
    553 typedef struct {
    554     BYTE type;  /* X_Reply */
    555     BYTE status;
    556     CARD16 sequenceNumber B16;
    557     CARD32 length B32;  /* 0 */
    558     CARD32 pad1 B32;
    559     CARD32 pad2 B32;
    560     CARD32 pad3 B32;
    561     CARD32 pad4 B32;
    562     CARD32 pad5 B32;
    563     CARD32 pad6 B32;
    564     } xGrabPointerReply;
    565 
    566 typedef xGrabPointerReply xGrabKeyboardReply;
    567 
    568 typedef struct {
    569     BYTE type;  /* X_Reply */
    570     BOOL sameScreen;
    571     CARD16 sequenceNumber B16;
    572     CARD32 length B32;  /* 0 */
    573     Window root B32, child B32;
    574     INT16 rootX B16, rootY B16, winX B16, winY B16;
    575     CARD16 mask B16;
    576     CARD16 pad1 B16;
    577     CARD32 pad B32;
    578     } xQueryPointerReply;
    579 
    580 typedef struct {
    581     BYTE type;  /* X_Reply */
    582     BYTE pad1;
    583     CARD16 sequenceNumber B16;
    584     CARD32 length B32;
    585     CARD32 nEvents B32;
    586     CARD32 pad2 B32;
    587     CARD32 pad3 B32;
    588     CARD32 pad4 B32;
    589     CARD32 pad5 B32;
    590     CARD32 pad6 B32;
    591     } xGetMotionEventsReply;
    592 
    593 typedef struct {
    594     BYTE type;  /* X_Reply */
    595     BOOL sameScreen;
    596     CARD16 sequenceNumber B16;
    597     CARD32 length B32; /* 0 */
    598     Window child B32;
    599     INT16 dstX B16, dstY B16;
    600     CARD32 pad2 B32;
    601     CARD32 pad3 B32;
    602     CARD32 pad4 B32;
    603     CARD32 pad5 B32;
    604     } xTranslateCoordsReply;
    605 
    606 typedef struct {
    607     BYTE type;  /* X_Reply */
    608     CARD8 revertTo;
    609     CARD16 sequenceNumber B16;
    610     CARD32 length B32;  /* 0 */
    611     Window focus B32;
    612     CARD32 pad1 B32;
    613     CARD32 pad2 B32;
    614     CARD32 pad3 B32;
    615     CARD32 pad4 B32;
    616     CARD32 pad5 B32;
    617     } xGetInputFocusReply;
    618 
    619 typedef struct {
    620     BYTE type;  /* X_Reply */
    621     BYTE pad1;
    622     CARD16 sequenceNumber B16;
    623     CARD32 length B32;  /* 2, NOT 0; this is an extra-large reply */
    624     BYTE map[32];
    625     } xQueryKeymapReply;
    626 
    627 /* Warning: this MUST match (up to component renaming) xListFontsWithInfoReply */
    628 typedef struct _xQueryFontReply {
    629     BYTE type;  /* X_Reply */
    630     BYTE pad1;
    631     CARD16 sequenceNumber B16;
    632     CARD32 length B32;  /* definitely > 0, even if "nCharInfos" is 0 */
    633     xCharInfo minBounds;
    634 #ifndef WORD64
    635     CARD32 walign1 B32;
    636 #endif
    637     xCharInfo maxBounds;
    638 #ifndef WORD64
    639     CARD32 walign2 B32;
    640 #endif
    641     CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
    642     CARD16 defaultChar B16;
    643     CARD16 nFontProps B16;  /* followed by this many xFontProp structures */
    644     CARD8 drawDirection;
    645     CARD8 minByte1, maxByte1;
    646     BOOL allCharsExist;
    647     INT16 fontAscent B16, fontDescent B16;
    648     CARD32 nCharInfos B32; /* followed by this many xCharInfo structures */
    649 } xQueryFontReply;
    650 
    651 typedef struct {
    652     BYTE type;  /* X_Reply */
    653     CARD8 drawDirection;
    654     CARD16 sequenceNumber B16;
    655     CARD32 length B32;  /* 0 */
    656     INT16 fontAscent B16, fontDescent B16;
    657     INT16 overallAscent B16, overallDescent B16;
    658     INT32 overallWidth B32, overallLeft B32, overallRight B32;
    659     CARD32 pad B32;
    660     } xQueryTextExtentsReply;
    661 
    662 typedef struct {
    663     BYTE type;  /* X_Reply */
    664     BYTE pad1;
    665     CARD16 sequenceNumber B16;
    666     CARD32 length B32;
    667     CARD16 nFonts B16;
    668     CARD16 pad2 B16;
    669     CARD32 pad3 B32;
    670     CARD32 pad4 B32;
    671     CARD32 pad5 B32;
    672     CARD32 pad6 B32;
    673     CARD32 pad7 B32;
    674     } xListFontsReply;
    675 
    676 /* Warning: this MUST match (up to component renaming) xQueryFontReply */
    677 typedef struct {
    678     BYTE type;  /* X_Reply */
    679     CARD8 nameLength;  /* 0 indicates end-of-reply-sequence */
    680     CARD16 sequenceNumber B16;
    681     CARD32 length B32;  /* definitely > 0, even if "nameLength" is 0 */
    682     xCharInfo minBounds;
    683 #ifndef WORD64
    684     CARD32 walign1 B32;
    685 #endif
    686     xCharInfo maxBounds;
    687 #ifndef WORD64
    688     CARD32 walign2 B32;
    689 #endif
    690     CARD16 minCharOrByte2 B16, maxCharOrByte2 B16;
    691     CARD16 defaultChar B16;
    692     CARD16 nFontProps B16;  /* followed by this many xFontProp structures */
    693     CARD8 drawDirection;
    694     CARD8 minByte1, maxByte1;
    695     BOOL allCharsExist;
    696     INT16 fontAscent B16, fontDescent B16;
    697     CARD32 nReplies B32;   /* hint as to how many more replies might be coming */
    698 } xListFontsWithInfoReply;
    699 
    700 typedef struct {
    701     BYTE type;  /* X_Reply */
    702     BYTE pad1;
    703     CARD16 sequenceNumber B16;
    704     CARD32 length B32;
    705     CARD16 nPaths B16;
    706     CARD16 pad2 B16;
    707     CARD32 pad3 B32;
    708     CARD32 pad4 B32;
    709     CARD32 pad5 B32;
    710     CARD32 pad6 B32;
    711     CARD32 pad7 B32;
    712     } xGetFontPathReply;
    713 
    714 typedef struct {
    715     BYTE type;  /* X_Reply */
    716     CARD8 depth;
    717     CARD16 sequenceNumber B16;
    718     CARD32 length B32;
    719     VisualID visual B32;
    720     CARD32 pad3 B32;
    721     CARD32 pad4 B32;
    722     CARD32 pad5 B32;
    723     CARD32 pad6 B32;
    724     CARD32 pad7 B32;
    725     } xGetImageReply;
    726 
    727 typedef struct {
    728     BYTE type;  /* X_Reply */
    729     BYTE pad1;
    730     CARD16 sequenceNumber B16;
    731     CARD32 length B32;
    732     CARD16 nColormaps B16;
    733     CARD16 pad2 B16;
    734     CARD32 pad3 B32;
    735     CARD32 pad4 B32;
    736     CARD32 pad5 B32;
    737     CARD32 pad6 B32;
    738     CARD32 pad7 B32;
    739     } xListInstalledColormapsReply;
    740 
    741 typedef struct {
    742     BYTE type; /* X_Reply */
    743     BYTE pad1;
    744     CARD16 sequenceNumber B16;
    745     CARD32 length B32;   /* 0 */
    746     CARD16 red B16, green B16, blue B16;
    747     CARD16 pad2 B16;
    748     CARD32 pixel B32;
    749     CARD32 pad3 B32;
    750     CARD32 pad4 B32;
    751     CARD32 pad5 B32;
    752     } xAllocColorReply;
    753 
    754 typedef struct {
    755     BYTE type; /* X_Reply */
    756     BYTE pad1;
    757     CARD16 sequenceNumber B16;
    758     CARD32 length B32;  /* 0 */
    759     CARD32 pixel B32;
    760     CARD16 exactRed B16, exactGreen B16, exactBlue B16;
    761     CARD16 screenRed B16, screenGreen B16, screenBlue B16;
    762     CARD32 pad2 B32;
    763     CARD32 pad3 B32;
    764     } xAllocNamedColorReply;
    765 
    766 typedef struct {
    767     BYTE type;  /* X_Reply */
    768     BYTE pad1;
    769     CARD16 sequenceNumber B16;
    770     CARD32 length B32;
    771     CARD16 nPixels B16, nMasks B16;
    772     CARD32 pad3 B32;
    773     CARD32 pad4 B32;
    774     CARD32 pad5 B32;
    775     CARD32 pad6 B32;
    776     CARD32 pad7 B32;
    777     } xAllocColorCellsReply;
    778 
    779 typedef struct {
    780     BYTE type; /* X_Reply */
    781     BYTE pad1;
    782     CARD16 sequenceNumber B16;
    783     CARD32 length B32;
    784     CARD16 nPixels B16;
    785     CARD16 pad2 B16;
    786     CARD32 redMask B32, greenMask B32, blueMask B32;
    787     CARD32 pad3 B32;
    788     CARD32 pad4 B32;
    789     } xAllocColorPlanesReply;
    790 
    791 typedef struct {
    792     BYTE type; /* X_Reply */
    793     BYTE pad1;
    794     CARD16 sequenceNumber B16;
    795     CARD32 length B32;
    796     CARD16 nColors B16;
    797     CARD16 pad2 B16;
    798     CARD32 pad3 B32;
    799     CARD32 pad4 B32;
    800     CARD32 pad5 B32;
    801     CARD32 pad6 B32;
    802     CARD32 pad7 B32;
    803     } xQueryColorsReply;
    804 
    805 typedef struct {
    806     BYTE type;  /* X_Reply */
    807     BYTE pad1;
    808     CARD16 sequenceNumber B16;
    809     CARD32 length B32;  /* 0 */
    810     CARD16 exactRed B16, exactGreen B16, exactBlue B16;
    811     CARD16 screenRed B16, screenGreen B16, screenBlue B16;
    812     CARD32 pad3 B32;
    813     CARD32 pad4 B32;
    814     CARD32 pad5 B32;
    815     } xLookupColorReply;
    816 
    817 typedef struct {
    818     BYTE type;  /* X_Reply */
    819     BYTE pad1;
    820     CARD16 sequenceNumber B16;
    821     CARD32 length B32;  /* 0 */
    822     CARD16 width B16, height B16;
    823     CARD32 pad3 B32;
    824     CARD32 pad4 B32;
    825     CARD32 pad5 B32;
    826     CARD32 pad6 B32;
    827     CARD32 pad7 B32;
    828     } xQueryBestSizeReply;
    829 
    830 typedef struct {
    831     BYTE type;  /* X_Reply */
    832     BYTE pad1;
    833     CARD16 sequenceNumber B16;
    834     CARD32 length B32; /* 0 */
    835     BOOL  present;
    836     CARD8 major_opcode;
    837     CARD8 first_event;
    838     CARD8 first_error;
    839     CARD32 pad3 B32;
    840     CARD32 pad4 B32;
    841     CARD32 pad5 B32;
    842     CARD32 pad6 B32;
    843     CARD32 pad7 B32;
    844     } xQueryExtensionReply;
    845 
    846 typedef struct {
    847     BYTE type;  /* X_Reply */
    848     CARD8 nExtensions;
    849     CARD16 sequenceNumber B16;
    850     CARD32 length B32;
    851     CARD32 pad2 B32;
    852     CARD32 pad3 B32;
    853     CARD32 pad4 B32;
    854     CARD32 pad5 B32;
    855     CARD32 pad6 B32;
    856     CARD32 pad7 B32;
    857     } xListExtensionsReply;
    858 
    859 
    860 typedef struct {
    861     BYTE   type;  /* X_Reply */
    862     CARD8  success;
    863     CARD16 sequenceNumber B16;
    864     CARD32 length B32;
    865     CARD32 pad2 B32;
    866     CARD32 pad3 B32;
    867     CARD32 pad4 B32;
    868     CARD32 pad5 B32;
    869     CARD32 pad6 B32;
    870     CARD32 pad7 B32;
    871     } xSetMappingReply;
    872 typedef xSetMappingReply xSetPointerMappingReply;
    873 typedef xSetMappingReply xSetModifierMappingReply;
    874 
    875 typedef struct {
    876     BYTE type;  /* X_Reply */
    877     CARD8 nElts;  /* how many elements does the map have */
    878     CARD16 sequenceNumber B16;
    879     CARD32 length B32;
    880     CARD32 pad2 B32;
    881     CARD32 pad3 B32;
    882     CARD32 pad4 B32;
    883     CARD32 pad5 B32;
    884     CARD32 pad6 B32;
    885     CARD32 pad7 B32;
    886     } xGetPointerMappingReply;
    887 
    888 typedef struct {
    889     BYTE type;
    890     CARD8 keySymsPerKeyCode;
    891     CARD16 sequenceNumber B16;
    892     CARD32 length B32;
    893     CARD32 pad2 B32;
    894     CARD32 pad3 B32;
    895     CARD32 pad4 B32;
    896     CARD32 pad5 B32;
    897     CARD32 pad6 B32;
    898     CARD32 pad7 B32;
    899 } xGetKeyboardMappingReply;
    900 
    901 typedef struct {
    902     BYTE type;
    903     CARD8 numKeyPerModifier;
    904     CARD16 sequenceNumber B16;
    905     CARD32 length B32;
    906     CARD32 pad1 B32;
    907     CARD32 pad2 B32;
    908     CARD32 pad3 B32;
    909     CARD32 pad4 B32;
    910     CARD32 pad5 B32;
    911     CARD32 pad6 B32;
    912 } xGetModifierMappingReply;
    913 
    914 typedef struct {
    915     BYTE type;  /* X_Reply */
    916     BOOL globalAutoRepeat;
    917     CARD16 sequenceNumber B16;
    918     CARD32 length B32;  /* 5 */
    919     CARD32 ledMask B32;
    920     CARD8 keyClickPercent, bellPercent;
    921     CARD16 bellPitch B16, bellDuration B16;
    922     CARD16 pad B16;
    923     BYTE map[32];  /* bit masks start here */
    924     } xGetKeyboardControlReply;
    925 
    926 typedef struct {
    927     BYTE type;  /* X_Reply */
    928     BYTE pad1;
    929     CARD16 sequenceNumber B16;
    930     CARD32 length B32;  /* 0 */
    931     CARD16 accelNumerator B16, accelDenominator B16;
    932     CARD16 threshold B16;
    933     CARD16 pad2 B16;
    934     CARD32 pad3 B32;
    935     CARD32 pad4 B32;
    936     CARD32 pad5 B32;
    937     CARD32 pad6 B32;
    938     } xGetPointerControlReply;
    939 
    940 typedef struct {
    941     BYTE type;  /* X_Reply */
    942     BYTE pad1;
    943     CARD16 sequenceNumber B16;
    944     CARD32 length B32;  /* 0 */
    945     CARD16 timeout B16, interval B16;
    946     BOOL preferBlanking;
    947     BOOL allowExposures;
    948     CARD16 pad2 B16;
    949     CARD32 pad3 B32;
    950     CARD32 pad4 B32;
    951     CARD32 pad5 B32;
    952     CARD32 pad6 B32;
    953     } xGetScreenSaverReply;
    954 
    955 typedef struct {
    956     BYTE type;  /* X_Reply */
    957     BOOL enabled;
    958     CARD16 sequenceNumber B16;
    959     CARD32 length B32;
    960     CARD16 nHosts B16;
    961     CARD16 pad1 B16;
    962     CARD32 pad3 B32;
    963     CARD32 pad4 B32;
    964     CARD32 pad5 B32;
    965     CARD32 pad6 B32;
    966     CARD32 pad7 B32;
    967     } xListHostsReply;
    968 
    969 
    970 
    972 
    973 /*****************************************************************
    974  * Xerror
    975  *    All errors  are 32 bytes
    976  *****************************************************************/
    977 
    978 typedef struct {
    979     BYTE type;                  /* X_Error */
    980     BYTE errorCode;
    981     CARD16 sequenceNumber B16;       /* the nth request from this client */
    982     CARD32 resourceID B32;
    983     CARD16 minorCode B16;
    984     CARD8 majorCode;
    985     BYTE pad1;
    986     CARD32 pad3 B32;
    987     CARD32 pad4 B32;
    988     CARD32 pad5 B32;
    989     CARD32 pad6 B32;
    990     CARD32 pad7 B32;
    991 } xError;
    992 
    993 /*****************************************************************
    994  * xEvent
    995  *    All events are 32 bytes
    996  *****************************************************************/
    997 
    998 typedef struct _xEvent {
    999     union {
   1000 	struct {
   1001 	    BYTE type;
   1002 	    BYTE detail;
   1003 	    CARD16 sequenceNumber B16;
   1004 	    } u;
   1005 	struct {
   1006             CARD32 pad00 B32;
   1007 	    Time time B32;
   1008 	    Window root B32, event B32, child B32;
   1009 	    INT16 rootX B16, rootY B16, eventX B16, eventY B16;
   1010 	    KeyButMask state B16;
   1011 	    BOOL sameScreen;
   1012 	    BYTE pad1;
   1013 	} keyButtonPointer;
   1014 	struct {
   1015             CARD32 pad00 B32;
   1016             Time time B32;
   1017 	    Window root B32, event B32, child B32;
   1018 	    INT16 rootX B16, rootY B16, eventX B16, eventY B16;
   1019 	    KeyButMask state B16;
   1020 	    BYTE mode; 			/* really XMode */
   1021 	    BYTE flags;		/* sameScreen and focus booleans, packed together */
   1022 #define ELFlagFocus        (1<<0)
   1023 #define ELFlagSameScreen   (1<<1)
   1024 	} enterLeave;
   1025 	struct {
   1026             CARD32 pad00 B32;
   1027 	    Window window B32;
   1028 	    BYTE mode; 			/* really XMode */
   1029 	    BYTE pad1, pad2, pad3;
   1030 	} focus;
   1031 	struct {
   1032             CARD32 pad00 B32;
   1033 	    Window window B32;
   1034 	    CARD16 x B16, y B16, width B16, height B16;
   1035 	    CARD16 count B16;
   1036 	    CARD16 pad2 B16;
   1037 	} expose;
   1038 	struct {
   1039             CARD32 pad00 B32;
   1040 	    Drawable drawable B32;
   1041 	    CARD16 x B16, y B16, width B16, height B16;
   1042 	    CARD16 minorEvent B16;
   1043 	    CARD16 count B16;
   1044 	    BYTE majorEvent;
   1045 	    BYTE pad1, pad2, pad3;
   1046 	} graphicsExposure;
   1047 	struct {
   1048             CARD32 pad00 B32;
   1049 	    Drawable drawable B32;
   1050 	    CARD16 minorEvent B16;
   1051 	    BYTE majorEvent;
   1052 	    BYTE bpad;
   1053 	} noExposure;
   1054 	struct {
   1055             CARD32 pad00 B32;
   1056 	    Window window B32;
   1057 	    CARD8 state;
   1058 	    BYTE pad1, pad2, pad3;
   1059 	} visibility;
   1060 	struct {
   1061             CARD32 pad00 B32;
   1062 	    Window parent B32, window B32;
   1063 	    INT16 x B16, y B16;
   1064 	    CARD16 width B16, height B16, borderWidth B16;
   1065 	    BOOL override;
   1066 	    BYTE bpad;
   1067         } createNotify;
   1068 /*
   1069  * The event fields in the structures for DestroyNotify, UnmapNotify,
   1070  * MapNotify, ReparentNotify, ConfigureNotify, CirculateNotify, GravityNotify,
   1071  * must be at the same offset because server internal code is depending upon
   1072  * this to patch up the events before they are delivered.
   1073  * Also note that MapRequest, ConfigureRequest and CirculateRequest have
   1074  * the same offset for the event window.
   1075  */
   1076 	struct {
   1077             CARD32 pad00 B32;
   1078 	    Window event B32, window B32;
   1079 	} destroyNotify;
   1080 	struct {
   1081             CARD32 pad00 B32;
   1082 	    Window event B32, window B32;
   1083 	    BOOL fromConfigure;
   1084 	    BYTE pad1, pad2, pad3;
   1085         } unmapNotify;
   1086 	struct {
   1087             CARD32 pad00 B32;
   1088 	    Window event B32, window B32;
   1089 	    BOOL override;
   1090 	    BYTE pad1, pad2, pad3;
   1091         } mapNotify;
   1092 	struct {
   1093             CARD32 pad00 B32;
   1094 	    Window parent B32, window B32;
   1095         } mapRequest;
   1096 	struct {
   1097             CARD32 pad00 B32;
   1098 	    Window event B32, window B32, parent B32;
   1099 	    INT16 x B16, y B16;
   1100 	    BOOL override;
   1101 	    BYTE pad1, pad2, pad3;
   1102 	} reparent;
   1103 	struct {
   1104             CARD32 pad00 B32;
   1105 	    Window event B32, window B32, aboveSibling B32;
   1106 	    INT16 x B16, y B16;
   1107 	    CARD16 width B16, height B16, borderWidth B16;
   1108 	    BOOL override;
   1109 	    BYTE bpad;
   1110 	} configureNotify;
   1111 	struct {
   1112             CARD32 pad00 B32;
   1113 	    Window parent B32, window B32, sibling B32;
   1114 	    INT16 x B16, y B16;
   1115 	    CARD16 width B16, height B16, borderWidth B16;
   1116 	    CARD16 valueMask B16;
   1117 	    CARD32 pad1 B32;
   1118 	} configureRequest;
   1119 	struct {
   1120             CARD32 pad00 B32;
   1121 	    Window event B32, window B32;
   1122 	    INT16 x B16, y B16;
   1123 	    CARD32 pad1 B32, pad2 B32, pad3 B32, pad4 B32;
   1124 	} gravity;
   1125 	struct {
   1126             CARD32 pad00 B32;
   1127 	    Window window B32;
   1128 	    CARD16 width B16, height B16;
   1129 	} resizeRequest;
   1130 	struct {
   1131 /* The event field in the circulate record is really the parent when this
   1132    is used as a CirculateRequest instead of a CirculateNotify */
   1133             CARD32 pad00 B32;
   1134 	    Window event B32, window B32, parent B32;
   1135 	    BYTE place;			/* Top or Bottom */
   1136 	    BYTE pad1, pad2, pad3;
   1137 	} circulate;
   1138 	struct {
   1139             CARD32 pad00 B32;
   1140 	    Window window B32;
   1141 	    Atom atom B32;
   1142 	    Time time B32;
   1143 	    BYTE state;			/* NewValue or Deleted */
   1144 	    BYTE pad1;
   1145 	    CARD16 pad2 B16;
   1146 	} property;
   1147 	struct {
   1148             CARD32 pad00 B32;
   1149             Time time B32;
   1150 	    Window window B32;
   1151 	    Atom atom B32;
   1152 	} selectionClear;
   1153 	struct {
   1154             CARD32 pad00 B32;
   1155             Time time B32;
   1156 	    Window owner B32, requestor B32;
   1157 	    Atom selection B32, target B32, property B32;
   1158 	} selectionRequest;
   1159 	struct {
   1160             CARD32 pad00 B32;
   1161             Time time B32;
   1162 	    Window requestor B32;
   1163 	    Atom selection B32, target B32, property B32;
   1164 	} selectionNotify;
   1165 	struct {
   1166             CARD32 pad00 B32;
   1167 	    Window window B32;
   1168 	    Colormap colormap B32;
   1169 #if defined(__cplusplus) || defined(c_plusplus)
   1170 	    BOOL c_new;
   1171 #else
   1172 	    BOOL new;
   1173 #endif
   1174 	    BYTE state;			/* Installed or UnInstalled */
   1175 	    BYTE pad1, pad2;
   1176 	} colormap;
   1177 	struct {
   1178 	    CARD32 pad00 B32;
   1179 	    CARD8 request;
   1180 	    KeyCode firstKeyCode;
   1181 	    CARD8 count;
   1182 	    BYTE pad1;
   1183 	} mappingNotify;
   1184 	struct {
   1185             CARD32 pad00 B32;
   1186 	    Window window B32;
   1187 	    union {
   1188 		struct {
   1189 		    Atom type B32;
   1190 		    INT32 longs0 B32;
   1191 		    INT32 longs1 B32;
   1192 		    INT32 longs2 B32;
   1193 		    INT32 longs3 B32;
   1194 		    INT32 longs4 B32;
   1195 		} l;
   1196 		struct {
   1197 		    Atom type B32;
   1198 		    INT16 shorts0 B16;
   1199 		    INT16 shorts1 B16;
   1200 		    INT16 shorts2 B16;
   1201 		    INT16 shorts3 B16;
   1202 		    INT16 shorts4 B16;
   1203 		    INT16 shorts5 B16;
   1204 		    INT16 shorts6 B16;
   1205 		    INT16 shorts7 B16;
   1206 		    INT16 shorts8 B16;
   1207 		    INT16 shorts9 B16;
   1208 		} s;
   1209 		struct {
   1210 		    Atom type B32;
   1211 		    INT8 bytes[20];
   1212 		} b;
   1213 	    } u;
   1214 	} clientMessage;
   1215     } u;
   1216 } xEvent;
   1217 
   1218 /* KeymapNotify events are not included in the above union because they
   1219    are different from all other events: they do not have a "detail"
   1220    or "sequenceNumber", so there is room for a 248-bit key mask. */
   1221 
   1222 typedef struct {
   1223     BYTE type;
   1224     BYTE map[31];
   1225     } xKeymapEvent;
   1226 
   1227 #define XEventSize (sizeof(xEvent))
   1228 
   1229 /* XReply is the union of all the replies above whose "fixed part"
   1230 fits in 32 bytes.  It does NOT include GetWindowAttributesReply,
   1231 QueryFontReply, QueryKeymapReply, or GetKeyboardControlReply
   1232 ListFontsWithInfoReply */
   1233 
   1234 typedef union {
   1235     xGenericReply generic;
   1236     xGetGeometryReply geom;
   1237     xQueryTreeReply tree;
   1238     xInternAtomReply atom;
   1239     xGetAtomNameReply atomName;
   1240     xGetPropertyReply property;
   1241     xListPropertiesReply listProperties;
   1242     xGetSelectionOwnerReply selection;
   1243     xGrabPointerReply grabPointer;
   1244     xGrabKeyboardReply grabKeyboard;
   1245     xQueryPointerReply pointer;
   1246     xGetMotionEventsReply motionEvents;
   1247     xTranslateCoordsReply coords;
   1248     xGetInputFocusReply inputFocus;
   1249     xQueryTextExtentsReply textExtents;
   1250     xListFontsReply fonts;
   1251     xGetFontPathReply fontPath;
   1252     xGetImageReply image;
   1253     xListInstalledColormapsReply colormaps;
   1254     xAllocColorReply allocColor;
   1255     xAllocNamedColorReply allocNamedColor;
   1256     xAllocColorCellsReply colorCells;
   1257     xAllocColorPlanesReply colorPlanes;
   1258     xQueryColorsReply colors;
   1259     xLookupColorReply lookupColor;
   1260     xQueryBestSizeReply bestSize;
   1261     xQueryExtensionReply extension;
   1262     xListExtensionsReply extensions;
   1263     xSetModifierMappingReply setModifierMapping;
   1264     xGetModifierMappingReply getModifierMapping;
   1265     xSetPointerMappingReply setPointerMapping;
   1266     xGetKeyboardMappingReply getKeyboardMapping;
   1267     xGetPointerMappingReply getPointerMapping;
   1268     xGetPointerControlReply pointerControl;
   1269     xGetScreenSaverReply screenSaver;
   1270     xListHostsReply hosts;
   1271     xError error;
   1272     xEvent event;
   1273 } xReply;
   1274 
   1275 
   1276 
   1278 /*****************************************************************
   1279  * REQUESTS
   1280  *****************************************************************/
   1281 
   1282 
   1283 /* Request structure */
   1284 
   1285 typedef struct _xReq {
   1286 	CARD8 reqType;
   1287 	CARD8 data;            /* meaning depends on request type */
   1288 	CARD16 length B16;         /* length in 4 bytes quantities
   1289 				  of whole request, including this header */
   1290 } xReq;
   1291 
   1292 /*****************************************************************
   1293  *  structures that follow request.
   1294  *****************************************************************/
   1295 
   1296 /* ResourceReq is used for any request which has a resource ID
   1297    (or Atom or Time) as its one and only argument.  */
   1298 
   1299 typedef struct {
   1300     CARD8 reqType;
   1301     BYTE pad;
   1302     CARD16 length B16;
   1303     CARD32 id B32;  /* a Window, Drawable, Font, GContext, Pixmap, etc. */
   1304     } xResourceReq;
   1305 
   1306 typedef struct {
   1307     CARD8 reqType;
   1308     CARD8 depth;
   1309     CARD16 length B16;
   1310     Window wid B32, parent B32;
   1311     INT16 x B16, y B16;
   1312     CARD16 width B16, height B16, borderWidth B16;
   1313 #if defined(__cplusplus) || defined(c_plusplus)
   1314     CARD16 c_class B16;
   1315 #else
   1316     CARD16 class B16;
   1317 #endif
   1318     VisualID visual B32;
   1319     CARD32 mask B32;
   1320 } xCreateWindowReq;
   1321 
   1322 typedef struct {
   1323     CARD8 reqType;
   1324     BYTE pad;
   1325     CARD16 length B16;
   1326     Window window B32;
   1327     CARD32 valueMask B32;
   1328 } xChangeWindowAttributesReq;
   1329 
   1330 typedef struct {
   1331     CARD8 reqType;
   1332     BYTE mode;
   1333     CARD16 length B16;
   1334     Window window B32;
   1335 } xChangeSaveSetReq;
   1336 
   1337 typedef struct {
   1338     CARD8 reqType;
   1339     BYTE pad;
   1340     CARD16 length B16;
   1341     Window window B32, parent B32;
   1342     INT16 x B16, y B16;
   1343 } xReparentWindowReq;
   1344 
   1345 typedef struct {
   1346     CARD8 reqType;
   1347     CARD8 pad;
   1348     CARD16 length B16;
   1349     Window window B32;
   1350     CARD16 mask B16;
   1351     CARD16 pad2 B16;
   1352 } xConfigureWindowReq;
   1353 
   1354 typedef struct {
   1355     CARD8 reqType;
   1356     CARD8 direction;
   1357     CARD16 length B16;
   1358     Window window B32;
   1359 } xCirculateWindowReq;
   1360 
   1361 typedef struct {    /* followed by padded string */
   1362     CARD8 reqType;
   1363     BOOL onlyIfExists;
   1364     CARD16 length B16;
   1365     CARD16 nbytes  B16;    /* number of bytes in string */
   1366     CARD16 pad B16;
   1367 } xInternAtomReq;
   1368 
   1369 typedef struct {
   1370     CARD8 reqType;
   1371     CARD8 mode;
   1372     CARD16 length B16;
   1373     Window window B32;
   1374     Atom property B32, type B32;
   1375     CARD8 format;
   1376     BYTE pad[3];
   1377     CARD32 nUnits B32;     /* length of stuff following, depends on format */
   1378 } xChangePropertyReq;
   1379 
   1380 typedef struct {
   1381     CARD8 reqType;
   1382     BYTE pad;
   1383     CARD16 length B16;
   1384     Window window B32;
   1385     Atom property B32;
   1386 } xDeletePropertyReq;
   1387 
   1388 typedef struct {
   1389     CARD8 reqType;
   1390 #if defined(__cplusplus) || defined(c_plusplus)
   1391     BOOL c_delete;
   1392 #else
   1393     BOOL delete;
   1394 #endif
   1395     CARD16 length B16;
   1396     Window window B32;
   1397     Atom property B32, type B32;
   1398     CARD32 longOffset B32;
   1399     CARD32 longLength B32;
   1400 } xGetPropertyReq;
   1401 
   1402 typedef struct {
   1403     CARD8 reqType;
   1404     BYTE pad;
   1405     CARD16 length B16;
   1406     Window window B32;
   1407     Atom selection B32;
   1408     Time time B32;
   1409 } xSetSelectionOwnerReq;
   1410 
   1411 typedef struct {
   1412     CARD8 reqType;
   1413     BYTE pad;
   1414     CARD16 length B16;
   1415     Window requestor B32;
   1416     Atom selection B32, target B32, property B32;
   1417     Time time B32;
   1418     } xConvertSelectionReq;
   1419 
   1420 typedef struct {
   1421     CARD8 reqType;
   1422     BOOL propagate;
   1423     CARD16 length B16;
   1424     Window destination B32;
   1425     CARD32 eventMask B32;
   1426 #ifdef WORD64
   1427     /* the structure should have been quad-aligned */
   1428     BYTE eventdata[SIZEOF(xEvent)];
   1429 #else
   1430     xEvent event;
   1431 #endif /* WORD64 */
   1432 } xSendEventReq;
   1433 
   1434 typedef struct {
   1435     CARD8 reqType;
   1436     BOOL ownerEvents;
   1437     CARD16 length B16;
   1438     Window grabWindow B32;
   1439     CARD16 eventMask B16;
   1440     BYTE pointerMode, keyboardMode;
   1441     Window confineTo B32;
   1442     Cursor cursor B32;
   1443     Time time B32;
   1444 } xGrabPointerReq;
   1445 
   1446 typedef struct {
   1447     CARD8 reqType;
   1448     BOOL ownerEvents;
   1449     CARD16 length B16;
   1450     Window grabWindow B32;
   1451     CARD16 eventMask B16;
   1452     BYTE pointerMode, keyboardMode;
   1453     Window confineTo B32;
   1454     Cursor cursor B32;
   1455     CARD8 button;
   1456     BYTE pad;
   1457     CARD16 modifiers B16;
   1458 } xGrabButtonReq;
   1459 
   1460 typedef struct {
   1461     CARD8 reqType;
   1462     CARD8 button;
   1463     CARD16 length B16;
   1464     Window grabWindow B32;
   1465     CARD16 modifiers B16;
   1466     CARD16 pad B16;
   1467 } xUngrabButtonReq;
   1468 
   1469 typedef struct {
   1470     CARD8 reqType;
   1471     BYTE pad;
   1472     CARD16 length B16;
   1473     Cursor cursor B32;
   1474     Time time B32;
   1475     CARD16 eventMask B16;
   1476     CARD16 pad2 B16;
   1477 } xChangeActivePointerGrabReq;
   1478 
   1479 typedef struct {
   1480     CARD8 reqType;
   1481     BOOL ownerEvents;
   1482     CARD16 length B16;
   1483     Window grabWindow B32;
   1484     Time time B32;
   1485     BYTE pointerMode, keyboardMode;
   1486     CARD16 pad B16;
   1487 } xGrabKeyboardReq;
   1488 
   1489 typedef struct {
   1490     CARD8 reqType;
   1491     BOOL ownerEvents;
   1492     CARD16 length B16;
   1493     Window grabWindow B32;
   1494     CARD16 modifiers B16;
   1495     CARD8 key;
   1496     BYTE pointerMode, keyboardMode;
   1497     BYTE pad1, pad2, pad3;
   1498 } xGrabKeyReq;
   1499 
   1500 typedef struct {
   1501     CARD8 reqType;
   1502     CARD8 key;
   1503     CARD16 length B16;
   1504     Window grabWindow B32;
   1505     CARD16 modifiers B16;
   1506     CARD16 pad B16;
   1507 } xUngrabKeyReq;
   1508 
   1509 typedef struct {
   1510     CARD8 reqType;
   1511     CARD8 mode;
   1512     CARD16 length B16;
   1513     Time time B32;
   1514 } xAllowEventsReq;
   1515 
   1516 typedef struct {
   1517     CARD8 reqType;
   1518     BYTE pad;
   1519     CARD16 length B16;
   1520     Window window B32;
   1521     Time start B32, stop B32;
   1522 } xGetMotionEventsReq;
   1523 
   1524 typedef struct {
   1525     CARD8 reqType;
   1526     BYTE pad;
   1527     CARD16 length B16;
   1528     Window srcWid B32, dstWid B32;
   1529     INT16 srcX B16, srcY B16;
   1530 } xTranslateCoordsReq;
   1531 
   1532 typedef struct {
   1533     CARD8 reqType;
   1534     BYTE pad;
   1535     CARD16 length B16;
   1536     Window srcWid B32, dstWid B32;
   1537     INT16 srcX B16, srcY B16;
   1538     CARD16 srcWidth B16, srcHeight B16;
   1539     INT16 dstX B16, dstY B16;
   1540 } xWarpPointerReq;
   1541 
   1542 typedef struct {
   1543     CARD8 reqType;
   1544     CARD8 revertTo;
   1545     CARD16 length B16;
   1546     Window focus B32;
   1547     Time time B32;
   1548 } xSetInputFocusReq;
   1549 
   1550 typedef struct {
   1551     CARD8 reqType;
   1552     BYTE pad;
   1553     CARD16 length B16;
   1554     Font fid B32;
   1555     CARD16 nbytes B16;
   1556     BYTE pad1, pad2;	/* string follows on word boundary */
   1557 } xOpenFontReq;
   1558 
   1559 typedef struct {
   1560     CARD8 reqType;
   1561     BOOL oddLength;
   1562     CARD16 length B16;
   1563     Font fid B32;
   1564     } xQueryTextExtentsReq;
   1565 
   1566 typedef struct {
   1567     CARD8 reqType;
   1568     BYTE pad;
   1569     CARD16 length B16;
   1570     CARD16 maxNames B16;
   1571     CARD16 nbytes B16;  /* followed immediately by string bytes */
   1572 } xListFontsReq;
   1573 
   1574 typedef xListFontsReq xListFontsWithInfoReq;
   1575 
   1576 typedef struct {
   1577     CARD8 reqType;
   1578     BYTE pad;
   1579     CARD16 length B16;
   1580     CARD16 nFonts B16;
   1581     BYTE pad1, pad2;	/* LISTofSTRING8 follows on word boundary */
   1582 } xSetFontPathReq;
   1583 
   1584 typedef struct {
   1585     CARD8 reqType;
   1586     CARD8 depth;
   1587     CARD16 length B16;
   1588     Pixmap pid B32;
   1589     Drawable drawable B32;
   1590     CARD16 width B16, height B16;
   1591 } xCreatePixmapReq;
   1592 
   1593 typedef struct {
   1594     CARD8 reqType;
   1595     BYTE pad;
   1596     CARD16 length B16;
   1597     GContext gc B32;
   1598     Drawable drawable B32;
   1599     CARD32 mask B32;
   1600 } xCreateGCReq;
   1601 
   1602 typedef struct {
   1603     CARD8 reqType;
   1604     BYTE pad;
   1605     CARD16 length B16;
   1606     GContext gc B32;
   1607     CARD32 mask B32;
   1608 } xChangeGCReq;
   1609 
   1610 typedef struct {
   1611     CARD8 reqType;
   1612     BYTE pad;
   1613     CARD16 length B16;
   1614     GContext srcGC B32, dstGC B32;
   1615     CARD32 mask B32;
   1616 } xCopyGCReq;
   1617 
   1618 typedef struct {
   1619     CARD8 reqType;
   1620     BYTE pad;
   1621     CARD16 length B16;
   1622     GContext gc B32;
   1623     CARD16 dashOffset B16;
   1624     CARD16 nDashes B16;        /* length LISTofCARD8 of values following */
   1625 } xSetDashesReq;
   1626 
   1627 typedef struct {
   1628     CARD8 reqType;
   1629     BYTE ordering;
   1630     CARD16 length B16;
   1631     GContext gc B32;
   1632     INT16 xOrigin B16, yOrigin B16;
   1633 } xSetClipRectanglesReq;
   1634 
   1635 typedef struct {
   1636     CARD8 reqType;
   1637     BOOL exposures;
   1638     CARD16 length B16;
   1639     Window window B32;
   1640     INT16 x B16, y B16;
   1641     CARD16 width B16, height B16;
   1642 } xClearAreaReq;
   1643 
   1644 typedef struct {
   1645     CARD8 reqType;
   1646     BYTE pad;
   1647     CARD16 length B16;
   1648     Drawable srcDrawable B32, dstDrawable B32;
   1649     GContext gc B32;
   1650     INT16 srcX B16, srcY B16, dstX B16, dstY B16;
   1651     CARD16 width B16, height B16;
   1652 } xCopyAreaReq;
   1653 
   1654 typedef struct {
   1655     CARD8 reqType;
   1656     BYTE pad;
   1657     CARD16 length B16;
   1658     Drawable srcDrawable B32, dstDrawable B32;
   1659     GContext gc B32;
   1660     INT16 srcX B16, srcY B16, dstX B16, dstY B16;
   1661     CARD16 width B16, height B16;
   1662     CARD32 bitPlane B32;
   1663 } xCopyPlaneReq;
   1664 
   1665 typedef struct {
   1666     CARD8 reqType;
   1667     BYTE coordMode;
   1668     CARD16 length B16;
   1669     Drawable drawable B32;
   1670     GContext gc B32;
   1671 } xPolyPointReq;
   1672 
   1673 typedef xPolyPointReq xPolyLineReq;  /* same request structure */
   1674 
   1675 /* The following used for PolySegment, PolyRectangle, PolyArc, PolyFillRectangle, PolyFillArc */
   1676 
   1677 typedef struct {
   1678     CARD8 reqType;
   1679     BYTE pad;
   1680     CARD16 length B16;
   1681     Drawable drawable B32;
   1682     GContext gc B32;
   1683 } xPolySegmentReq;
   1684 
   1685 typedef xPolySegmentReq xPolyArcReq;
   1686 typedef xPolySegmentReq xPolyRectangleReq;
   1687 typedef xPolySegmentReq xPolyFillRectangleReq;
   1688 typedef xPolySegmentReq xPolyFillArcReq;
   1689 
   1690 typedef struct _FillPolyReq {
   1691     CARD8 reqType;
   1692     BYTE pad;
   1693     CARD16 length B16;
   1694     Drawable drawable B32;
   1695     GContext gc B32;
   1696     BYTE shape;
   1697     BYTE coordMode;
   1698     CARD16 pad1 B16;
   1699 } xFillPolyReq;
   1700 
   1701 
   1702 typedef struct _PutImageReq {
   1703     CARD8 reqType;
   1704     CARD8 format;
   1705     CARD16 length B16;
   1706     Drawable drawable B32;
   1707     GContext gc B32;
   1708     CARD16 width B16, height B16;
   1709     INT16 dstX B16, dstY B16;
   1710     CARD8 leftPad;
   1711     CARD8 depth;
   1712     CARD16 pad B16;
   1713 } xPutImageReq;
   1714 
   1715 typedef struct {
   1716     CARD8 reqType;
   1717     CARD8 format;
   1718     CARD16 length B16;
   1719     Drawable drawable B32;
   1720     INT16 x B16, y B16;
   1721     CARD16 width B16, height B16;
   1722     CARD32 planeMask B32;
   1723 } xGetImageReq;
   1724 
   1725 /* the following used by PolyText8 and PolyText16 */
   1726 
   1727 typedef struct {
   1728     CARD8 reqType;
   1729     CARD8 pad;
   1730     CARD16 length B16;
   1731     Drawable drawable B32;
   1732     GContext gc B32;
   1733     INT16 x B16, y B16;		/* items (xTextElt) start after struct */
   1734 } xPolyTextReq;
   1735 
   1736 typedef xPolyTextReq xPolyText8Req;
   1737 typedef xPolyTextReq xPolyText16Req;
   1738 
   1739 typedef struct {
   1740     CARD8 reqType;
   1741     BYTE nChars;
   1742     CARD16 length B16;
   1743     Drawable drawable B32;
   1744     GContext gc B32;
   1745     INT16 x B16, y B16;
   1746 } xImageTextReq;
   1747 
   1748 typedef xImageTextReq xImageText8Req;
   1749 typedef xImageTextReq xImageText16Req;
   1750 
   1751 typedef struct {
   1752     CARD8 reqType;
   1753     BYTE alloc;
   1754     CARD16 length B16;
   1755     Colormap mid B32;
   1756     Window window B32;
   1757     VisualID visual B32;
   1758 } xCreateColormapReq;
   1759 
   1760 typedef struct {
   1761     CARD8 reqType;
   1762     BYTE pad;
   1763     CARD16 length B16;
   1764     Colormap mid B32;
   1765     Colormap srcCmap B32;
   1766 } xCopyColormapAndFreeReq;
   1767 
   1768 typedef struct {
   1769     CARD8 reqType;
   1770     BYTE pad;
   1771     CARD16 length B16;
   1772     Colormap cmap B32;
   1773     CARD16 red B16, green B16, blue B16;
   1774     CARD16 pad2 B16;
   1775 } xAllocColorReq;
   1776 
   1777 typedef struct {
   1778     CARD8 reqType;
   1779     BYTE pad;
   1780     CARD16 length B16;
   1781     Colormap cmap B32;
   1782     CARD16 nbytes B16;  /* followed by structure */
   1783     BYTE pad1, pad2;
   1784 } xAllocNamedColorReq;
   1785 
   1786 typedef struct {
   1787     CARD8 reqType;
   1788     BOOL contiguous;
   1789     CARD16 length B16;
   1790     Colormap cmap B32;
   1791     CARD16 colors B16, planes B16;
   1792 } xAllocColorCellsReq;
   1793 
   1794 typedef struct {
   1795     CARD8 reqType;
   1796     BOOL contiguous;
   1797     CARD16 length B16;
   1798     Colormap cmap B32;
   1799     CARD16 colors B16, red B16, green B16, blue B16;
   1800 } xAllocColorPlanesReq;
   1801 
   1802 typedef struct {
   1803     CARD8 reqType;
   1804     BYTE pad;
   1805     CARD16 length B16;
   1806     Colormap cmap B32;
   1807     CARD32 planeMask B32;
   1808 } xFreeColorsReq;
   1809 
   1810 typedef struct {
   1811     CARD8 reqType;
   1812     BYTE pad;
   1813     CARD16 length B16;
   1814     Colormap cmap B32;
   1815 } xStoreColorsReq;
   1816 
   1817 typedef struct {
   1818     CARD8 reqType;
   1819     CARD8 flags;   /* DoRed, DoGreen, DoBlue, as in xColorItem */
   1820     CARD16 length B16;
   1821     Colormap cmap B32;
   1822     CARD32 pixel B32;
   1823     CARD16 nbytes B16;  /* number of name string bytes following structure */
   1824     BYTE pad1, pad2;
   1825     } xStoreNamedColorReq;
   1826 
   1827 typedef struct {
   1828     CARD8 reqType;
   1829     BYTE pad;
   1830     CARD16 length B16;
   1831     Colormap cmap B32;
   1832 } xQueryColorsReq;
   1833 
   1834 typedef struct {    /* followed  by string of length len */
   1835     CARD8 reqType;
   1836     BYTE pad;
   1837     CARD16 length B16;
   1838     Colormap cmap B32;
   1839     CARD16 nbytes B16;  /* number of string bytes following structure*/
   1840     BYTE pad1, pad2;
   1841 } xLookupColorReq;
   1842 
   1843 typedef struct {
   1844     CARD8 reqType;
   1845     BYTE pad;
   1846     CARD16 length B16;
   1847     Cursor cid B32;
   1848     Pixmap source B32, mask B32;
   1849     CARD16 foreRed B16, foreGreen B16, foreBlue B16;
   1850     CARD16 backRed B16, backGreen B16, backBlue B16;
   1851     CARD16 x B16, y B16;
   1852 } xCreateCursorReq;
   1853 
   1854 typedef struct {
   1855     CARD8 reqType;
   1856     BYTE pad;
   1857     CARD16 length B16;
   1858     Cursor cid B32;
   1859     Font source B32, mask B32;
   1860     CARD16 sourceChar B16, maskChar B16;
   1861     CARD16 foreRed B16, foreGreen B16, foreBlue B16;
   1862     CARD16 backRed B16, backGreen B16, backBlue B16;
   1863 } xCreateGlyphCursorReq;
   1864 
   1865 typedef struct {
   1866     CARD8 reqType;
   1867     BYTE pad;
   1868     CARD16 length B16;
   1869     Cursor cursor B32;
   1870     CARD16 foreRed B16, foreGreen B16, foreBlue B16;
   1871     CARD16 backRed B16, backGreen B16, backBlue B16;
   1872 } xRecolorCursorReq;
   1873 
   1874 typedef struct {
   1875     CARD8 reqType;
   1876 #if defined(__cplusplus) || defined(c_plusplus)
   1877     CARD8 c_class;
   1878 #else
   1879     CARD8 class;
   1880 #endif
   1881     CARD16 length B16;
   1882     Drawable drawable B32;
   1883     CARD16 width B16, height B16;
   1884 } xQueryBestSizeReq;
   1885 
   1886 typedef struct {
   1887     CARD8 reqType;
   1888     BYTE pad;
   1889     CARD16 length B16;
   1890     CARD16 nbytes B16;  /* number of string bytes following structure */
   1891     BYTE pad1, pad2;
   1892 } xQueryExtensionReq;
   1893 
   1894 typedef struct {
   1895     CARD8   reqType;
   1896     CARD8   numKeyPerModifier;
   1897     CARD16  length B16;
   1898 } xSetModifierMappingReq;
   1899 
   1900 typedef struct {
   1901     CARD8 reqType;
   1902     CARD8 nElts;  /* how many elements in the map */
   1903     CARD16 length B16;
   1904 } xSetPointerMappingReq;
   1905 
   1906 typedef struct {
   1907     CARD8 reqType;
   1908     BYTE pad;
   1909     CARD16 length B16;
   1910     KeyCode firstKeyCode;
   1911     CARD8 count;
   1912     CARD16 pad1 B16;
   1913 } xGetKeyboardMappingReq;
   1914 
   1915 typedef struct {
   1916     CARD8 reqType;
   1917     CARD8 keyCodes;
   1918     CARD16 length B16;
   1919     KeyCode firstKeyCode;
   1920     CARD8 keySymsPerKeyCode;
   1921     CARD16 pad1 B16;
   1922 } xChangeKeyboardMappingReq;
   1923 
   1924 typedef struct {
   1925     CARD8 reqType;
   1926     BYTE pad;
   1927     CARD16 length B16;
   1928     CARD32 mask B32;
   1929 } xChangeKeyboardControlReq;
   1930 
   1931 typedef struct {
   1932     CARD8 reqType;
   1933     INT8 percent;  /* -100 to 100 */
   1934     CARD16 length B16;
   1935 } xBellReq;
   1936 
   1937 typedef struct {
   1938     CARD8 reqType;
   1939     BYTE pad;
   1940     CARD16 length B16;
   1941     INT16 accelNum B16, accelDenum B16;
   1942     INT16 threshold B16;
   1943     BOOL doAccel, doThresh;
   1944 } xChangePointerControlReq;
   1945 
   1946 typedef struct {
   1947     CARD8 reqType;
   1948     BYTE pad;
   1949     CARD16 length B16;
   1950     INT16 timeout B16, interval B16;
   1951     BYTE preferBlank, allowExpose;
   1952     CARD16 pad2 B16;
   1953 } xSetScreenSaverReq;
   1954 
   1955 typedef struct {
   1956     CARD8 reqType;
   1957     BYTE mode;
   1958     CARD16 length B16;
   1959     CARD8 hostFamily;
   1960     BYTE pad;
   1961     CARD16 hostLength B16;
   1962 } xChangeHostsReq;
   1963 
   1964 typedef struct {
   1965     CARD8 reqType;
   1966     BYTE pad;
   1967     CARD16 length B16;
   1968     } xListHostsReq;
   1969 
   1970 typedef struct {
   1971     CARD8 reqType;
   1972     BYTE mode;
   1973     CARD16 length B16;
   1974     } xChangeModeReq;
   1975 
   1976 typedef xChangeModeReq xSetAccessControlReq;
   1977 typedef xChangeModeReq xSetCloseDownModeReq;
   1978 typedef xChangeModeReq xForceScreenSaverReq;
   1979 
   1980 typedef struct { /* followed by LIST of ATOM */
   1981     CARD8 reqType;
   1982     BYTE pad;
   1983     CARD16 length B16;
   1984     Window window B32;
   1985     CARD16 nAtoms B16;
   1986     INT16 nPositions B16;
   1987     } xRotatePropertiesReq;
   1988 
   1989 
   1990 
   1992 /* Reply codes */
   1993 
   1994 #define X_Reply		1		/* Normal reply */
   1995 #define X_Error		0		/* Error */
   1996 
   1997 /* Request codes */
   1998 
   1999 #define X_CreateWindow                  1
   2000 #define X_ChangeWindowAttributes        2
   2001 #define X_GetWindowAttributes           3
   2002 #define X_DestroyWindow                 4
   2003 #define X_DestroySubwindows             5
   2004 #define X_ChangeSaveSet                 6
   2005 #define X_ReparentWindow                7
   2006 #define X_MapWindow                     8
   2007 #define X_MapSubwindows                 9
   2008 #define X_UnmapWindow                  10
   2009 #define X_UnmapSubwindows              11
   2010 #define X_ConfigureWindow              12
   2011 #define X_CirculateWindow              13
   2012 #define X_GetGeometry                  14
   2013 #define X_QueryTree                    15
   2014 #define X_InternAtom                   16
   2015 #define X_GetAtomName                  17
   2016 #define X_ChangeProperty               18
   2017 #define X_DeleteProperty               19
   2018 #define X_GetProperty                  20
   2019 #define X_ListProperties               21
   2020 #define X_SetSelectionOwner            22
   2021 #define X_GetSelectionOwner            23
   2022 #define X_ConvertSelection             24
   2023 #define X_SendEvent                    25
   2024 #define X_GrabPointer                  26
   2025 #define X_UngrabPointer                27
   2026 #define X_GrabButton                   28
   2027 #define X_UngrabButton                 29
   2028 #define X_ChangeActivePointerGrab      30
   2029 #define X_GrabKeyboard                 31
   2030 #define X_UngrabKeyboard               32
   2031 #define X_GrabKey                      33
   2032 #define X_UngrabKey                    34
   2033 #define X_AllowEvents                  35
   2034 #define X_GrabServer                   36
   2035 #define X_UngrabServer                 37
   2036 #define X_QueryPointer                 38
   2037 #define X_GetMotionEvents              39
   2038 #define X_TranslateCoords              40
   2039 #define X_WarpPointer                  41
   2040 #define X_SetInputFocus                42
   2041 #define X_GetInputFocus                43
   2042 #define X_QueryKeymap                  44
   2043 #define X_OpenFont                     45
   2044 #define X_CloseFont                    46
   2045 #define X_QueryFont                    47
   2046 #define X_QueryTextExtents             48
   2047 #define X_ListFonts                    49
   2048 #define X_ListFontsWithInfo    	       50
   2049 #define X_SetFontPath                  51
   2050 #define X_GetFontPath                  52
   2051 #define X_CreatePixmap                 53
   2052 #define X_FreePixmap                   54
   2053 #define X_CreateGC                     55
   2054 #define X_ChangeGC                     56
   2055 #define X_CopyGC                       57
   2056 #define X_SetDashes                    58
   2057 #define X_SetClipRectangles            59
   2058 #define X_FreeGC                       60
   2059 #define X_ClearArea                    61
   2060 #define X_CopyArea                     62
   2061 #define X_CopyPlane                    63
   2062 #define X_PolyPoint                    64
   2063 #define X_PolyLine                     65
   2064 #define X_PolySegment                  66
   2065 #define X_PolyRectangle                67
   2066 #define X_PolyArc                      68
   2067 #define X_FillPoly                     69
   2068 #define X_PolyFillRectangle            70
   2069 #define X_PolyFillArc                  71
   2070 #define X_PutImage                     72
   2071 #define X_GetImage                     73
   2072 #define X_PolyText8                    74
   2073 #define X_PolyText16                   75
   2074 #define X_ImageText8                   76
   2075 #define X_ImageText16                  77
   2076 #define X_CreateColormap               78
   2077 #define X_FreeColormap                 79
   2078 #define X_CopyColormapAndFree          80
   2079 #define X_InstallColormap              81
   2080 #define X_UninstallColormap            82
   2081 #define X_ListInstalledColormaps       83
   2082 #define X_AllocColor                   84
   2083 #define X_AllocNamedColor              85
   2084 #define X_AllocColorCells              86
   2085 #define X_AllocColorPlanes             87
   2086 #define X_FreeColors                   88
   2087 #define X_StoreColors                  89
   2088 #define X_StoreNamedColor              90
   2089 #define X_QueryColors                  91
   2090 #define X_LookupColor                  92
   2091 #define X_CreateCursor                 93
   2092 #define X_CreateGlyphCursor            94
   2093 #define X_FreeCursor                   95
   2094 #define X_RecolorCursor                96
   2095 #define X_QueryBestSize                97
   2096 #define X_QueryExtension               98
   2097 #define X_ListExtensions               99
   2098 #define X_ChangeKeyboardMapping        100
   2099 #define X_GetKeyboardMapping           101
   2100 #define X_ChangeKeyboardControl        102
   2101 #define X_GetKeyboardControl           103
   2102 #define X_Bell                         104
   2103 #define X_ChangePointerControl         105
   2104 #define X_GetPointerControl            106
   2105 #define X_SetScreenSaver               107
   2106 #define X_GetScreenSaver               108
   2107 #define X_ChangeHosts                  109
   2108 #define X_ListHosts                    110
   2109 #define X_SetAccessControl             111
   2110 #define X_SetCloseDownMode             112
   2111 #define X_KillClient                   113
   2112 #define X_RotateProperties	       114
   2113 #define X_ForceScreenSaver	       115
   2114 #define X_SetPointerMapping            116
   2115 #define X_GetPointerMapping            117
   2116 #define X_SetModifierMapping	       118
   2117 #define X_GetModifierMapping	       119
   2118 #define X_NoOperation                  127
   2119 
   2120 /* restore these definitions back to the typedefs in X.h */
   2121 #undef Window
   2122 #undef Drawable
   2123 #undef Font
   2124 #undef Pixmap
   2125 #undef Cursor
   2126 #undef Colormap
   2127 #undef GContext
   2128 #undef Atom
   2129 #undef VisualID
   2130 #undef Time
   2131 #undef KeyCode
   2132 #undef KeySym
   2133 
   2134 #endif /* XPROTO_H */
   2135