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