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
27Copyright 1987, 1998 The Open Group
28
29Permission to use, copy, modify, distribute, and sell this software and its
30documentation for any purpose is hereby granted without fee, provided that
31the above copyright notice appear in all copies and that both that
32copyright notice and this permission notice appear in supporting
33documentation.
34
35The above copyright notice and this permission notice shall be included in
36all copies or substantial portions of the Software.
37
38THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
40FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
42AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
43CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
44
45Except as contained in this notice, the name of The Open Group shall not be
46used in advertising or otherwise to promote the sale, use or other dealings
47in this Software without prior written authorization from The Open Group.
48
49
50Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
51
52 All Rights Reserved
53
54Permission to use, copy, modify, and distribute this software and its
55documentation for any purpose and without fee is hereby granted,
56provided that the above copyright notice appear in all copies and that
57both that copyright notice and this permission notice appear in
58supporting documentation, and that the name of Digital not be
59used in advertising or publicity pertaining to distribution of the
60software without specific, written prior permission.
61
62DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
63ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
64DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
65ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
66WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
67ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
68SOFTWARE.
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,
236we must redefine the following types in terms of Xmd.h's types, which may
237include bit fields. All of these are #undef'd at the end of this file,
238restoring 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
259typedef CARD16 KeyButMask;
260
261/*****************
262 Connection setup structures. See Chapter 8: Connection Setup
263 of the X Window System Protocol specification for details.
264*****************/
265
266/* Client initiates handshake with this data, followed by the strings
267 * for the auth protocol & data.
268 */
269typedef struct {
270 CARD8 byteOrder;
271 BYTE pad;
272 CARD16 majorVersion, minorVersion;
273 CARD16 nbytesAuthProto; /* Authorization protocol */
274 CARD16 nbytesAuthString; /* Authorization string */
275 CARD16 pad2;
276} xConnClientPrefix;
277
278/* Server response to xConnClientPrefix.
279 *
280 * If success == Success, this is followed by xConnSetup and
281 * numRoots xWindowRoot structs.
282 *
283 * If success == Failure, this is followed by a reason string.
284 *
285 * The protocol also defines a case of success == Authenticate, but
286 * that doesn't seem to have ever been implemented by the X Consortium.
287 */
288typedef struct {
289 CARD8 success;
290 BYTE lengthReason; /*num bytes in string following if failure */
291 CARD16 majorVersion,
292 minorVersion;
293 CARD16 length; /* 1/4 additional bytes in setup info */
294} xConnSetupPrefix;
295
296
297typedef struct {
298 CARD32 release;
299 CARD32 ridBase,
300 ridMask;
301 CARD32 motionBufferSize;
302 CARD16 nbytesVendor; /* number of bytes in vendor string */
303 CARD16 maxRequestSize;
304 CARD8 numRoots; /* number of roots structs to follow */
305 CARD8 numFormats; /* number of pixmap formats */
306 CARD8 imageByteOrder; /* LSBFirst, MSBFirst */
307 CARD8 bitmapBitOrder; /* LeastSignificant, MostSign...*/
308 CARD8 bitmapScanlineUnit, /* 8, 16, 32 */
309 bitmapScanlinePad; /* 8, 16, 32 */
310 KeyCode minKeyCode, maxKeyCode;
311 CARD32 pad2;
312} xConnSetup;
313
314typedef struct {
315 CARD8 depth;
316 CARD8 bitsPerPixel;
317 CARD8 scanLinePad;
318 CARD8 pad1;
319 CARD32 pad2;
320} xPixmapFormat;
321
322/* window root */
323
324typedef struct {
325 CARD8 depth;
326 CARD8 pad1;
327 CARD16 nVisuals; /* number of xVisualType structures following */
328 CARD32 pad2;
329 } xDepth;
330
331typedef struct {
332 VisualID visualID;
333#if defined(__cplusplus) || defined(c_plusplus)
334 CARD8 c_class;
335#else
336 CARD8 class;
337#endif
338 CARD8 bitsPerRGB;
339 CARD16 colormapEntries;
340 CARD32 redMask, greenMask, blueMask;
341 CARD32 pad;
342 } xVisualType;
343
344typedef struct {
345 Window windowId;
346 Colormap defaultColormap;
347 CARD32 whitePixel, blackPixel;
348 CARD32 currentInputMask;
349 CARD16 pixWidth, pixHeight;
350 CARD16 mmWidth, mmHeight;
351 CARD16 minInstalledMaps, maxInstalledMaps;
352 VisualID rootVisualID;
353 CARD8 backingStore;
354 BOOL saveUnders;
355 CARD8 rootDepth;
356 CARD8 nDepths; /* number of xDepth structures following */
357} xWindowRoot;
358
359
360/*****************************************************************
361 * Structure Defns
362 * Structures needed for replies
363 *****************************************************************/
364
365/* Used in GetMotionEvents */
366
367typedef struct {
368 CARD32 time;
369 INT16 x, y;
370} xTimecoord;
371
372typedef struct {
373 CARD8 family;
374 BYTE pad;
375 CARD16 length;
376} xHostEntry;
377
378typedef struct {
379 INT16 leftSideBearing,
380 rightSideBearing,
381 characterWidth,
382 ascent,
383 descent;
384 CARD16 attributes;
385} xCharInfo;
386
387typedef struct {
388 Atom name;
389 CARD32 value;
390} xFontProp;
391
392/*
393 * non-aligned big-endian font ID follows this struct
394 */
395typedef struct { /* followed by string */
396 CARD8 len; /* number of *characters* in string, or FontChange (255)
397 for font change, or 0 if just delta given */
398 INT8 delta;
399} xTextElt;
400
401
402typedef struct {
403 CARD32 pixel;
404 CARD16 red, green, blue;
405 CARD8 flags; /* DoRed, DoGreen, DoBlue booleans */
406 CARD8 pad;
407} xColorItem;
408
409
410typedef struct {
411 CARD16 red, green, blue, pad;
412} xrgb;
413
414typedef CARD8 KEYCODE;
415
416
417/*****************
418 * XRep:
419 * meant to be 32 byte quantity
420 *****************/
421
422/* GenericReply is the common format of all replies. The "data" items
423 are specific to each individual reply type. */
424
425typedef struct {
426 BYTE type; /* X_Reply */
427 BYTE data1; /* depends on reply type */
428 CARD16 sequenceNumber; /* of last request received by server */
429 CARD32 length; /* 4 byte quantities beyond size of GenericReply */
430 CARD32 data00;
431 CARD32 data01;
432 CARD32 data02;
433 CARD32 data03;
434 CARD32 data04;
435 CARD32 data05;
436 } xGenericReply;
437
438/* Individual reply formats. */
439
440typedef struct {
441 BYTE type; /* X_Reply */
442 CARD8 backingStore;
443 CARD16 sequenceNumber;
444 CARD32 length; /* NOT 0; this is an extra-large reply */
445 VisualID visualID;
446#if defined(__cplusplus) || defined(c_plusplus)
447 CARD16 c_class;
448#else
449 CARD16 class;
450#endif
451 CARD8 bitGravity;
452 CARD8 winGravity;
453 CARD32 backingBitPlanes;
454 CARD32 backingPixel;
455 BOOL saveUnder;
456 BOOL mapInstalled;
457 CARD8 mapState;
458 BOOL override;
459 Colormap colormap;
460 CARD32 allEventMasks;
461 CARD32 yourEventMask;
462 CARD16 doNotPropagateMask;
463 CARD16 pad;
464 } xGetWindowAttributesReply;
465
466typedef struct {
467 BYTE type; /* X_Reply */
468 CARD8 depth;
469 CARD16 sequenceNumber;
470 CARD32 length; /* 0 */
471 Window root;
472 INT16 x, y;
473 CARD16 width, height;
474 CARD16 borderWidth;
475 CARD16 pad1;
476 CARD32 pad2;
477 CARD32 pad3;
478 } xGetGeometryReply;
479
480typedef struct {
481 BYTE type; /* X_Reply */
482 BYTE pad1;
483 CARD16 sequenceNumber;
484 CARD32 length;
485 Window root, parent;
486 CARD16 nChildren;
487 CARD16 pad2;
488 CARD32 pad3;
489 CARD32 pad4;
490 CARD32 pad5;
491 } xQueryTreeReply;
492
493typedef struct {
494 BYTE type; /* X_Reply */
495 BYTE pad1;
496 CARD16 sequenceNumber;
497 CARD32 length; /* 0 */
498 Atom atom;
499 CARD32 pad2;
500 CARD32 pad3;
501 CARD32 pad4;
502 CARD32 pad5;
503 CARD32 pad6;
504 } xInternAtomReply;
505
506typedef struct {
507 BYTE type; /* X_Reply */
508 BYTE pad1;
509 CARD16 sequenceNumber;
510 CARD32 length; /* of additional bytes */
511 CARD16 nameLength; /* # of characters in name */
512 CARD16 pad2;
513 CARD32 pad3;
514 CARD32 pad4;
515 CARD32 pad5;
516 CARD32 pad6;
517 CARD32 pad7;
518 } xGetAtomNameReply;
519
520typedef struct {
521 BYTE type; /* X_Reply */
522 CARD8 format;
523 CARD16 sequenceNumber;
524 CARD32 length; /* of additional bytes */
525 Atom propertyType;
526 CARD32 bytesAfter;
527 CARD32 nItems; /* # of 8, 16, or 32-bit entities in reply */
528 CARD32 pad1;
529 CARD32 pad2;
530 CARD32 pad3;
531 } xGetPropertyReply;
532
533typedef struct {
534 BYTE type; /* X_Reply */
535 BYTE pad1;
536 CARD16 sequenceNumber;
537 CARD32 length;
538 CARD16 nProperties;
539 CARD16 pad2;
540 CARD32 pad3;
541 CARD32 pad4;
542 CARD32 pad5;
543 CARD32 pad6;
544 CARD32 pad7;
545 } xListPropertiesReply;
546
547typedef struct {
548 BYTE type; /* X_Reply */
549 BYTE pad1;
550 CARD16 sequenceNumber;
551 CARD32 length; /* 0 */
552 Window owner;
553 CARD32 pad2;
554 CARD32 pad3;
555 CARD32 pad4;
556 CARD32 pad5;
557 CARD32 pad6;
558 } xGetSelectionOwnerReply;
559
560typedef struct {
561 BYTE type; /* X_Reply */
562 BYTE status;
563 CARD16 sequenceNumber;
564 CARD32 length; /* 0 */
565 CARD32 pad1;
566 CARD32 pad2;
567 CARD32 pad3;
568 CARD32 pad4;
569 CARD32 pad5;
570 CARD32 pad6;
571 } xGrabPointerReply;
572
573typedef xGrabPointerReply xGrabKeyboardReply;
574
575typedef struct {
576 BYTE type; /* X_Reply */
577 BOOL sameScreen;
578 CARD16 sequenceNumber;
579 CARD32 length; /* 0 */
580 Window root, child;
581 INT16 rootX, rootY, winX, winY;
582 CARD16 mask;
583 CARD16 pad1;
584 CARD32 pad;
585 } xQueryPointerReply;
586
587typedef struct {
588 BYTE type; /* X_Reply */
589 BYTE pad1;
590 CARD16 sequenceNumber;
591 CARD32 length;
592 CARD32 nEvents;
593 CARD32 pad2;
594 CARD32 pad3;
595 CARD32 pad4;
596 CARD32 pad5;
597 CARD32 pad6;
598 } xGetMotionEventsReply;
599
600typedef struct {
601 BYTE type; /* X_Reply */
602 BOOL sameScreen;
603 CARD16 sequenceNumber;
604 CARD32 length; /* 0 */
605 Window child;
606 INT16 dstX, dstY;
607 CARD32 pad2;
608 CARD32 pad3;
609 CARD32 pad4;
610 CARD32 pad5;
611 } xTranslateCoordsReply;
612
613typedef struct {
614 BYTE type; /* X_Reply */
615 CARD8 revertTo;
616 CARD16 sequenceNumber;
617 CARD32 length; /* 0 */
618 Window focus;
619 CARD32 pad1;
620 CARD32 pad2;
621 CARD32 pad3;
622 CARD32 pad4;
623 CARD32 pad5;
624 } xGetInputFocusReply;
625
626typedef struct {
627 BYTE type; /* X_Reply */
628 BYTE pad1;
629 CARD16 sequenceNumber;
630 CARD32 length; /* 2, NOT 0; this is an extra-large reply */
631 BYTE map[32];
632 } xQueryKeymapReply;
633
634/* Warning: this MUST match (up to component renaming) xListFontsWithInfoReply */
635typedef struct _xQueryFontReply {
636 BYTE type; /* X_Reply */
637 BYTE pad1;
638 CARD16 sequenceNumber;
639 CARD32 length; /* definitely > 0, even if "nCharInfos" is 0 */
640 xCharInfo minBounds;
641 CARD32 walign1;
642 xCharInfo maxBounds;
643 CARD32 walign2;
644 CARD16 minCharOrByte2, maxCharOrByte2;
645 CARD16 defaultChar;
646 CARD16 nFontProps; /* followed by this many xFontProp structures */
647 CARD8 drawDirection;
648 CARD8 minByte1, maxByte1;
649 BOOL allCharsExist;
650 INT16 fontAscent, fontDescent;
651 CARD32 nCharInfos; /* followed by this many xCharInfo structures */
652} xQueryFontReply;
653
654typedef struct {
655 BYTE type; /* X_Reply */
656 CARD8 drawDirection;
657 CARD16 sequenceNumber;
658 CARD32 length; /* 0 */
659 INT16 fontAscent, fontDescent;
660 INT16 overallAscent, overallDescent;
661 INT32 overallWidth, overallLeft, overallRight;
662 CARD32 pad;
663 } xQueryTextExtentsReply;
664
665typedef struct {
666 BYTE type; /* X_Reply */
667 BYTE pad1;
668 CARD16 sequenceNumber;
669 CARD32 length;
670 CARD16 nFonts;
671 CARD16 pad2;
672 CARD32 pad3;
673 CARD32 pad4;
674 CARD32 pad5;
675 CARD32 pad6;
676 CARD32 pad7;
677 } xListFontsReply;
678
679/* Warning: this MUST match (up to component renaming) xQueryFontReply */
680typedef struct {
681 BYTE type; /* X_Reply */
682 CARD8 nameLength; /* 0 indicates end-of-reply-sequence */
683 CARD16 sequenceNumber;
684 CARD32 length; /* definitely > 0, even if "nameLength" is 0 */
685 xCharInfo minBounds;
686 CARD32 walign1;
687 xCharInfo maxBounds;
688 CARD32 walign2;
689 CARD16 minCharOrByte2, maxCharOrByte2;
690 CARD16 defaultChar;
691 CARD16 nFontProps; /* followed by this many xFontProp structures */
692 CARD8 drawDirection;
693 CARD8 minByte1, maxByte1;
694 BOOL allCharsExist;
695 INT16 fontAscent, fontDescent;
696 CARD32 nReplies; /* hint as to how many more replies might be coming */
697} xListFontsWithInfoReply;
698
699typedef struct {
700 BYTE type; /* X_Reply */
701 BYTE pad1;
702 CARD16 sequenceNumber;
703 CARD32 length;
704 CARD16 nPaths;
705 CARD16 pad2;
706 CARD32 pad3;
707 CARD32 pad4;
708 CARD32 pad5;
709 CARD32 pad6;
710 CARD32 pad7;
711 } xGetFontPathReply;
712
713typedef struct {
714 BYTE type; /* X_Reply */
715 CARD8 depth;
716 CARD16 sequenceNumber;
717 CARD32 length;
718 VisualID visual;
719 CARD32 pad3;
720 CARD32 pad4;
721 CARD32 pad5;
722 CARD32 pad6;
723 CARD32 pad7;
724 } xGetImageReply;
725
726typedef struct {
727 BYTE type; /* X_Reply */
728 BYTE pad1;
729 CARD16 sequenceNumber;
730 CARD32 length;
731 CARD16 nColormaps;
732 CARD16 pad2;
733 CARD32 pad3;
734 CARD32 pad4;
735 CARD32 pad5;
736 CARD32 pad6;
737 CARD32 pad7;
738 } xListInstalledColormapsReply;
739
740typedef struct {
741 BYTE type; /* X_Reply */
742 BYTE pad1;
743 CARD16 sequenceNumber;
744 CARD32 length; /* 0 */
745 CARD16 red, green, blue;
746 CARD16 pad2;
747 CARD32 pixel;
748 CARD32 pad3;
749 CARD32 pad4;
750 CARD32 pad5;
751 } xAllocColorReply;
752
753typedef struct {
754 BYTE type; /* X_Reply */
755 BYTE pad1;
756 CARD16 sequenceNumber;
757 CARD32 length; /* 0 */
758 CARD32 pixel;
759 CARD16 exactRed, exactGreen, exactBlue;
760 CARD16 screenRed, screenGreen, screenBlue;
761 CARD32 pad2;
762 CARD32 pad3;
763 } xAllocNamedColorReply;
764
765typedef struct {
766 BYTE type; /* X_Reply */
767 BYTE pad1;
768 CARD16 sequenceNumber;
769 CARD32 length;
770 CARD16 nPixels, nMasks;
771 CARD32 pad3;
772 CARD32 pad4;
773 CARD32 pad5;
774 CARD32 pad6;
775 CARD32 pad7;
776 } xAllocColorCellsReply;
777
778typedef struct {
779 BYTE type; /* X_Reply */
780 BYTE pad1;
781 CARD16 sequenceNumber;
782 CARD32 length;
783 CARD16 nPixels;
784 CARD16 pad2;
785 CARD32 redMask, greenMask, blueMask;
786 CARD32 pad3;
787 CARD32 pad4;
788 } xAllocColorPlanesReply;
789
790typedef struct {
791 BYTE type; /* X_Reply */
792 BYTE pad1;
793 CARD16 sequenceNumber;
794 CARD32 length;
795 CARD16 nColors;
796 CARD16 pad2;
797 CARD32 pad3;
798 CARD32 pad4;
799 CARD32 pad5;
800 CARD32 pad6;
801 CARD32 pad7;
802 } xQueryColorsReply;
803
804typedef struct {
805 BYTE type; /* X_Reply */
806 BYTE pad1;
807 CARD16 sequenceNumber;
808 CARD32 length; /* 0 */
809 CARD16 exactRed, exactGreen, exactBlue;
810 CARD16 screenRed, screenGreen, screenBlue;
811 CARD32 pad3;
812 CARD32 pad4;
813 CARD32 pad5;
814 } xLookupColorReply;
815
816typedef struct {
817 BYTE type; /* X_Reply */
818 BYTE pad1;
819 CARD16 sequenceNumber;
820 CARD32 length; /* 0 */
821 CARD16 width, height;
822 CARD32 pad3;
823 CARD32 pad4;
824 CARD32 pad5;
825 CARD32 pad6;
826 CARD32 pad7;
827 } xQueryBestSizeReply;
828
829typedef struct {
830 BYTE type; /* X_Reply */
831 BYTE pad1;
832 CARD16 sequenceNumber;
833 CARD32 length; /* 0 */
834 BOOL present;
835 CARD8 major_opcode;
836 CARD8 first_event;
837 CARD8 first_error;
838 CARD32 pad3;
839 CARD32 pad4;
840 CARD32 pad5;
841 CARD32 pad6;
842 CARD32 pad7;
843 } xQueryExtensionReply;
844
845typedef struct {
846 BYTE type; /* X_Reply */
847 CARD8 nExtensions;
848 CARD16 sequenceNumber;
849 CARD32 length;
850 CARD32 pad2;
851 CARD32 pad3;
852 CARD32 pad4;
853 CARD32 pad5;
854 CARD32 pad6;
855 CARD32 pad7;
856 } xListExtensionsReply;
857
858
859typedef struct {
860 BYTE type; /* X_Reply */
861 CARD8 success;
862 CARD16 sequenceNumber;
863 CARD32 length;
864 CARD32 pad2;
865 CARD32 pad3;
866 CARD32 pad4;
867 CARD32 pad5;
868 CARD32 pad6;
869 CARD32 pad7;
870 } xSetMappingReply;
871typedef xSetMappingReply xSetPointerMappingReply;
872typedef xSetMappingReply xSetModifierMappingReply;
873
874typedef struct {
875 BYTE type; /* X_Reply */
876 CARD8 nElts; /* how many elements does the map have */
877 CARD16 sequenceNumber;
878 CARD32 length;
879 CARD32 pad2;
880 CARD32 pad3;
881 CARD32 pad4;
882 CARD32 pad5;
883 CARD32 pad6;
884 CARD32 pad7;
885 } xGetPointerMappingReply;
886
887typedef struct {
888 BYTE type;
889 CARD8 keySymsPerKeyCode;
890 CARD16 sequenceNumber;
891 CARD32 length;
892 CARD32 pad2;
893 CARD32 pad3;
894 CARD32 pad4;
895 CARD32 pad5;
896 CARD32 pad6;
897 CARD32 pad7;
898} xGetKeyboardMappingReply;
899
900typedef struct {
901 BYTE type;
902 CARD8 numKeyPerModifier;
903 CARD16 sequenceNumber;
904 CARD32 length;
905 CARD32 pad1;
906 CARD32 pad2;
907 CARD32 pad3;
908 CARD32 pad4;
909 CARD32 pad5;
910 CARD32 pad6;
911} xGetModifierMappingReply;
912
913typedef struct {
914 BYTE type; /* X_Reply */
915 BOOL globalAutoRepeat;
916 CARD16 sequenceNumber;
917 CARD32 length; /* 5 */
918 CARD32 ledMask;
919 CARD8 keyClickPercent, bellPercent;
920 CARD16 bellPitch, bellDuration;
921 CARD16 pad;
922 BYTE map[32]; /* bit masks start here */
923 } xGetKeyboardControlReply;
924
925typedef struct {
926 BYTE type; /* X_Reply */
927 BYTE pad1;
928 CARD16 sequenceNumber;
929 CARD32 length; /* 0 */
930 CARD16 accelNumerator, accelDenominator;
931 CARD16 threshold;
932 CARD16 pad2;
933 CARD32 pad3;
934 CARD32 pad4;
935 CARD32 pad5;
936 CARD32 pad6;
937 } xGetPointerControlReply;
938
939typedef struct {
940 BYTE type; /* X_Reply */
941 BYTE pad1;
942 CARD16 sequenceNumber;
943 CARD32 length; /* 0 */
944 CARD16 timeout, interval;
945 BOOL preferBlanking;
946 BOOL allowExposures;
947 CARD16 pad2;
948 CARD32 pad3;
949 CARD32 pad4;
950 CARD32 pad5;
951 CARD32 pad6;
952 } xGetScreenSaverReply;
953
954typedef struct {
955 BYTE type; /* X_Reply */
956 BOOL enabled;
957 CARD16 sequenceNumber;
958 CARD32 length;
959 CARD16 nHosts;
960 CARD16 pad1;
961 CARD32 pad3;
962 CARD32 pad4;
963 CARD32 pad5;
964 CARD32 pad6;
965 CARD32 pad7;
966 } xListHostsReply;
967
968
969
970
971/*****************************************************************
972 * Xerror
973 * All errors are 32 bytes
974 *****************************************************************/
975
976typedef struct {
977 BYTE type; /* X_Error */
978 BYTE errorCode;
979 CARD16 sequenceNumber; /* the nth request from this client */
980 CARD32 resourceID;
981 CARD16 minorCode;
982 CARD8 majorCode;
983 BYTE pad1;
984 CARD32 pad3;
985 CARD32 pad4;
986 CARD32 pad5;
987 CARD32 pad6;
988 CARD32 pad7;
989} xError;
990
991/*****************************************************************
992 * xEvent
993 * All events are 32 bytes
994 *****************************************************************/
995
996typedef struct _xEvent {
997 union {
998 struct {
999 BYTE type;
1000 BYTE detail;
1001 CARD16 sequenceNumber;
1002 } u;
1003 struct {
1004 CARD32 pad00;
1005 Time time;
1006 Window root, event, child;
1007 INT16 rootX, rootY, eventX, eventY;
1008 KeyButMask state;
1009 BOOL sameScreen;
1010 BYTE pad1;
1011 } keyButtonPointer;
1012 struct {
1013 CARD32 pad00;
1014 Time time;
1015 Window root, event, child;
1016 INT16 rootX, rootY, eventX, eventY;
1017 KeyButMask state;
1018 BYTE mode; /* really XMode */
1019 BYTE flags; /* sameScreen and focus booleans, packed together */
1020#define ELFlagFocus (1<<0)
1021#define ELFlagSameScreen (1<<1)
1022 } enterLeave;
1023 struct {
1024 CARD32 pad00;
1025 Window window;
1026 BYTE mode; /* really XMode */
1027 BYTE pad1, pad2, pad3;
1028 } focus;
1029 struct {
1030 CARD32 pad00;
1031 Window window;
1032 CARD16 x, y, width, height;
1033 CARD16 count;
1034 CARD16 pad2;
1035 } expose;
1036 struct {
1037 CARD32 pad00;
1038 Drawable drawable;
1039 CARD16 x, y, width, height;
1040 CARD16 minorEvent;
1041 CARD16 count;
1042 BYTE majorEvent;
1043 BYTE pad1, pad2, pad3;
1044 } graphicsExposure;
1045 struct {
1046 CARD32 pad00;
1047 Drawable drawable;
1048 CARD16 minorEvent;
1049 BYTE majorEvent;
1050 BYTE bpad;
1051 } noExposure;
1052 struct {
1053 CARD32 pad00;
1054 Window window;
1055 CARD8 state;
1056 BYTE pad1, pad2, pad3;
1057 } visibility;
1058 struct {
1059 CARD32 pad00;
1060 Window parent, window;
1061 INT16 x, y;
1062 CARD16 width, height, borderWidth;
1063 BOOL override;
1064 BYTE bpad;
1065 } createNotify;
1066/*
1067 * The event fields in the structures for DestroyNotify, UnmapNotify,
1068 * MapNotify, ReparentNotify, ConfigureNotify, CirculateNotify, GravityNotify,
1069 * must be at the same offset because server internal code is depending upon
1070 * this to patch up the events before they are delivered.
1071 * Also note that MapRequest, ConfigureRequest and CirculateRequest have
1072 * the same offset for the event window.
1073 */
1074 struct {
1075 CARD32 pad00;
1076 Window event, window;
1077 } destroyNotify;
1078 struct {
1079 CARD32 pad00;
1080 Window event, window;
1081 BOOL fromConfigure;
1082 BYTE pad1, pad2, pad3;
1083 } unmapNotify;
1084 struct {
1085 CARD32 pad00;
1086 Window event, window;
1087 BOOL override;
1088 BYTE pad1, pad2, pad3;
1089 } mapNotify;
1090 struct {
1091 CARD32 pad00;
1092 Window parent, window;
1093 } mapRequest;
1094 struct {
1095 CARD32 pad00;
1096 Window event, window, parent;
1097 INT16 x, y;
1098 BOOL override;
1099 BYTE pad1, pad2, pad3;
1100 } reparent;
1101 struct {
1102 CARD32 pad00;
1103 Window event, window, aboveSibling;
1104 INT16 x, y;
1105 CARD16 width, height, borderWidth;
1106 BOOL override;
1107 BYTE bpad;
1108 } configureNotify;
1109 struct {
1110 CARD32 pad00;
1111 Window parent, window, sibling;
1112 INT16 x, y;
1113 CARD16 width, height, borderWidth;
1114 CARD16 valueMask;
1115 CARD32 pad1;
1116 } configureRequest;
1117 struct {
1118 CARD32 pad00;
1119 Window event, window;
1120 INT16 x, y;
1121 CARD32 pad1, pad2, pad3, pad4;
1122 } gravity;
1123 struct {
1124 CARD32 pad00;
1125 Window window;
1126 CARD16 width, height;
1127 } resizeRequest;
1128 struct {
1129/* The event field in the circulate record is really the parent when this
1130 is used as a CirculateRequest instead of a CirculateNotify */
1131 CARD32 pad00;
1132 Window event, window, parent;
1133 BYTE place; /* Top or Bottom */
1134 BYTE pad1, pad2, pad3;
1135 } circulate;
1136 struct {
1137 CARD32 pad00;
1138 Window window;
1139 Atom atom;
1140 Time time;
1141 BYTE state; /* NewValue or Deleted */
1142 BYTE pad1;
1143 CARD16 pad2;
1144 } property;
1145 struct {
1146 CARD32 pad00;
1147 Time time;
1148 Window window;
1149 Atom atom;
1150 } selectionClear;
1151 struct {
1152 CARD32 pad00;
1153 Time time;
1154 Window owner, requestor;
1155 Atom selection, target, property;
1156 } selectionRequest;
1157 struct {
1158 CARD32 pad00;
1159 Time time;
1160 Window requestor;
1161 Atom selection, target, property;
1162 } selectionNotify;
1163 struct {
1164 CARD32 pad00;
1165 Window window;
1166 Colormap colormap;
1167#if defined(__cplusplus) || defined(c_plusplus)
1168 BOOL c_new;
1169#else
1170 BOOL new;
1171#endif
1172 BYTE state; /* Installed or UnInstalled */
1173 BYTE pad1, pad2;
1174 } colormap;
1175 struct {
1176 CARD32 pad00;
1177 CARD8 request;
1178 KeyCode firstKeyCode;
1179 CARD8 count;
1180 BYTE pad1;
1181 } mappingNotify;
1182 struct {
1183 CARD32 pad00;
1184 Window window;
1185 union {
1186 struct {
1187 Atom type;
1188 INT32 longs0;
1189 INT32 longs1;
1190 INT32 longs2;
1191 INT32 longs3;
1192 INT32 longs4;
1193 } l;
1194 struct {
1195 Atom type;
1196 INT16 shorts0;
1197 INT16 shorts1;
1198 INT16 shorts2;
1199 INT16 shorts3;
1200 INT16 shorts4;
1201 INT16 shorts5;
1202 INT16 shorts6;
1203 INT16 shorts7;
1204 INT16 shorts8;
1205 INT16 shorts9;
1206 } s;
1207 struct {
1208 Atom type;
1209 INT8 bytes[20];
1210 } b;
1211 } u;
1212 } clientMessage;
1213 } u;
1214} xEvent;
1215
1216/*********************************************************
1217 *
1218 * Generic event
1219 *
1220 * Those events are not part of the core protocol spec and can be used by
1221 * various extensions.
1222 * type is always GenericEvent
1223 * extension is the minor opcode of the extension the event belongs to.
1224 * evtype is the actual event type, unique __per extension__.
1225 *
1226 * GenericEvents can be longer than 32 bytes, with the length field
1227 * specifying the number of 4 byte blocks after the first 32 bytes.
1228 *
1229 *
1230 */
1231typedef struct
1232{
1233 BYTE type;
1234 CARD8 extension;
1235 CARD16 sequenceNumber;
1236 CARD32 length;
1237 CARD16 evtype;
1238 CARD16 pad2;
1239 CARD32 pad3;
1240 CARD32 pad4;
1241 CARD32 pad5;
1242 CARD32 pad6;
1243 CARD32 pad7;
1244} xGenericEvent;
1245
1246
1247
1248/* KeymapNotify events are not included in the above union because they
1249 are different from all other events: they do not have a "detail"
1250 or "sequenceNumber", so there is room for a 248-bit key mask. */
1251
1252typedef struct {
1253 BYTE type;
1254 BYTE map[31];
1255 } xKeymapEvent;
1256
1257#define XEventSize (sizeof(xEvent))
1258
1259/* XReply is the union of all the replies above whose "fixed part"
1260fits in 32 bytes. It does NOT include GetWindowAttributesReply,
1261QueryFontReply, QueryKeymapReply, or GetKeyboardControlReply
1262ListFontsWithInfoReply */
1263
1264typedef union {
1265 xGenericReply generic;
1266 xGetGeometryReply geom;
1267 xQueryTreeReply tree;
1268 xInternAtomReply atom;
1269 xGetAtomNameReply atomName;
1270 xGetPropertyReply property;
1271 xListPropertiesReply listProperties;
1272 xGetSelectionOwnerReply selection;
1273 xGrabPointerReply grabPointer;
1274 xGrabKeyboardReply grabKeyboard;
1275 xQueryPointerReply pointer;
1276 xGetMotionEventsReply motionEvents;
1277 xTranslateCoordsReply coords;
1278 xGetInputFocusReply inputFocus;
1279 xQueryTextExtentsReply textExtents;
1280 xListFontsReply fonts;
1281 xGetFontPathReply fontPath;
1282 xGetImageReply image;
1283 xListInstalledColormapsReply colormaps;
1284 xAllocColorReply allocColor;
1285 xAllocNamedColorReply allocNamedColor;
1286 xAllocColorCellsReply colorCells;
1287 xAllocColorPlanesReply colorPlanes;
1288 xQueryColorsReply colors;
1289 xLookupColorReply lookupColor;
1290 xQueryBestSizeReply bestSize;
1291 xQueryExtensionReply extension;
1292 xListExtensionsReply extensions;
1293 xSetModifierMappingReply setModifierMapping;
1294 xGetModifierMappingReply getModifierMapping;
1295 xSetPointerMappingReply setPointerMapping;
1296 xGetKeyboardMappingReply getKeyboardMapping;
1297 xGetPointerMappingReply getPointerMapping;
1298 xGetPointerControlReply pointerControl;
1299 xGetScreenSaverReply screenSaver;
1300 xListHostsReply hosts;
1301 xError error;
1302 xEvent event;
1303} xReply;
1304
1305
1306
1307/*****************************************************************
1308 * REQUESTS
1309 *****************************************************************/
1310
1311
1312/* Request structure */
1313
1314typedef struct _xReq {
1315 CARD8 reqType;
1316 CARD8 data; /* meaning depends on request type */
1317 CARD16 length; /* length in 4 bytes quantities
1318 of whole request, including this header */
1319} xReq;
1320
1321/*****************************************************************
1322 * structures that follow request.
1323 *****************************************************************/
1324
1325/* ResourceReq is used for any request which has a resource ID
1326 (or Atom or Time) as its one and only argument. */
1327
1328typedef struct {
1329 CARD8 reqType;
1330 BYTE pad;
1331 CARD16 length;
1332 CARD32 id; /* a Window, Drawable, Font, GContext, Pixmap, etc. */
1333 } xResourceReq;
1334
1335typedef struct {
1336 CARD8 reqType;
1337 CARD8 depth;
1338 CARD16 length;
1339 Window wid, parent;
1340 INT16 x, y;
1341 CARD16 width, height, borderWidth;
1342#if defined(__cplusplus) || defined(c_plusplus)
1343 CARD16 c_class;
1344#else
1345 CARD16 class;
1346#endif
1347 VisualID visual;
1348 CARD32 mask;
1349} xCreateWindowReq;
1350
1351typedef struct {
1352 CARD8 reqType;
1353 BYTE pad;
1354 CARD16 length;
1355 Window window;
1356 CARD32 valueMask;
1357} xChangeWindowAttributesReq;
1358
1359typedef struct {
1360 CARD8 reqType;
1361 BYTE mode;
1362 CARD16 length;
1363 Window window;
1364} xChangeSaveSetReq;
1365
1366typedef struct {
1367 CARD8 reqType;
1368 BYTE pad;
1369 CARD16 length;
1370 Window window, parent;
1371 INT16 x, y;
1372} xReparentWindowReq;
1373
1374typedef struct {
1375 CARD8 reqType;
1376 CARD8 pad;
1377 CARD16 length;
1378 Window window;
1379 CARD16 mask;
1380 CARD16 pad2;
1381} xConfigureWindowReq;
1382
1383typedef struct {
1384 CARD8 reqType;
1385 CARD8 direction;
1386 CARD16 length;
1387 Window window;
1388} xCirculateWindowReq;
1389
1390typedef struct { /* followed by padded string */
1391 CARD8 reqType;
1392 BOOL onlyIfExists;
1393 CARD16 length;
1394 CARD16 nbytes; /* number of bytes in string */
1395 CARD16 pad;
1396} xInternAtomReq;
1397
1398typedef struct {
1399 CARD8 reqType;
1400 CARD8 mode;
1401 CARD16 length;
1402 Window window;
1403 Atom property, type;
1404 CARD8 format;
1405 BYTE pad[3];
1406 CARD32 nUnits; /* length of stuff following, depends on format */
1407} xChangePropertyReq;
1408
1409typedef struct {
1410 CARD8 reqType;
1411 BYTE pad;
1412 CARD16 length;
1413 Window window;
1414 Atom property;
1415} xDeletePropertyReq;
1416
1417typedef struct {
1418 CARD8 reqType;
1419#if defined(__cplusplus) || defined(c_plusplus)
1420 BOOL c_delete;
1421#else
1422 BOOL delete;
1423#endif
1424 CARD16 length;
1425 Window window;
1426 Atom property, type;
1427 CARD32 longOffset;
1428 CARD32 longLength;
1429} xGetPropertyReq;
1430
1431typedef struct {
1432 CARD8 reqType;
1433 BYTE pad;
1434 CARD16 length;
1435 Window window;
1436 Atom selection;
1437 Time time;
1438} xSetSelectionOwnerReq;
1439
1440typedef struct {
1441 CARD8 reqType;
1442 BYTE pad;
1443 CARD16 length;
1444 Window requestor;
1445 Atom selection, target, property;
1446 Time time;
1447 } xConvertSelectionReq;
1448
1449typedef struct {
1450 CARD8 reqType;
1451 BOOL propagate;
1452 CARD16 length;
1453 Window destination;
1454 CARD32 eventMask;
1455 xEvent event;
1456} xSendEventReq;
1457
1458typedef struct {
1459 CARD8 reqType;
1460 BOOL ownerEvents;
1461 CARD16 length;
1462 Window grabWindow;
1463 CARD16 eventMask;
1464 BYTE pointerMode, keyboardMode;
1465 Window confineTo;
1466 Cursor cursor;
1467 Time time;
1468} xGrabPointerReq;
1469
1470typedef struct {
1471 CARD8 reqType;
1472 BOOL ownerEvents;
1473 CARD16 length;
1474 Window grabWindow;
1475 CARD16 eventMask;
1476 BYTE pointerMode, keyboardMode;
1477 Window confineTo;
1478 Cursor cursor;
1479 CARD8 button;
1480 BYTE pad;
1481 CARD16 modifiers;
1482} xGrabButtonReq;
1483
1484typedef struct {
1485 CARD8 reqType;
1486 CARD8 button;
1487 CARD16 length;
1488 Window grabWindow;
1489 CARD16 modifiers;
1490 CARD16 pad;
1491} xUngrabButtonReq;
1492
1493typedef struct {
1494 CARD8 reqType;
1495 BYTE pad;
1496 CARD16 length;
1497 Cursor cursor;
1498 Time time;
1499 CARD16 eventMask;
1500 CARD16 pad2;
1501} xChangeActivePointerGrabReq;
1502
1503typedef struct {
1504 CARD8 reqType;
1505 BOOL ownerEvents;
1506 CARD16 length;
1507 Window grabWindow;
1508 Time time;
1509 BYTE pointerMode, keyboardMode;
1510 CARD16 pad;
1511} xGrabKeyboardReq;
1512
1513typedef struct {
1514 CARD8 reqType;
1515 BOOL ownerEvents;
1516 CARD16 length;
1517 Window grabWindow;
1518 CARD16 modifiers;
1519 CARD8 key;
1520 BYTE pointerMode, keyboardMode;
1521 BYTE pad1, pad2, pad3;
1522} xGrabKeyReq;
1523
1524typedef struct {
1525 CARD8 reqType;
1526 CARD8 key;
1527 CARD16 length;
1528 Window grabWindow;
1529 CARD16 modifiers;
1530 CARD16 pad;
1531} xUngrabKeyReq;
1532
1533typedef struct {
1534 CARD8 reqType;
1535 CARD8 mode;
1536 CARD16 length;
1537 Time time;
1538} xAllowEventsReq;
1539
1540typedef struct {
1541 CARD8 reqType;
1542 BYTE pad;
1543 CARD16 length;
1544 Window window;
1545 Time start, stop;
1546} xGetMotionEventsReq;
1547
1548typedef struct {
1549 CARD8 reqType;
1550 BYTE pad;
1551 CARD16 length;
1552 Window srcWid, dstWid;
1553 INT16 srcX, srcY;
1554} xTranslateCoordsReq;
1555
1556typedef struct {
1557 CARD8 reqType;
1558 BYTE pad;
1559 CARD16 length;
1560 Window srcWid, dstWid;
1561 INT16 srcX, srcY;
1562 CARD16 srcWidth, srcHeight;
1563 INT16 dstX, dstY;
1564} xWarpPointerReq;
1565
1566typedef struct {
1567 CARD8 reqType;
1568 CARD8 revertTo;
1569 CARD16 length;
1570 Window focus;
1571 Time time;
1572} xSetInputFocusReq;
1573
1574typedef struct {
1575 CARD8 reqType;
1576 BYTE pad;
1577 CARD16 length;
1578 Font fid;
1579 CARD16 nbytes;
1580 BYTE pad1, pad2; /* string follows on word boundary */
1581} xOpenFontReq;
1582
1583typedef struct {
1584 CARD8 reqType;
1585 BOOL oddLength;
1586 CARD16 length;
1587 Font fid;
1588 } xQueryTextExtentsReq;
1589
1590typedef struct {
1591 CARD8 reqType;
1592 BYTE pad;
1593 CARD16 length;
1594 CARD16 maxNames;
1595 CARD16 nbytes; /* followed immediately by string bytes */
1596} xListFontsReq;
1597
1598typedef xListFontsReq xListFontsWithInfoReq;
1599
1600typedef struct {
1601 CARD8 reqType;
1602 BYTE pad;
1603 CARD16 length;
1604 CARD16 nFonts;
1605 BYTE pad1, pad2; /* LISTofSTRING8 follows on word boundary */
1606} xSetFontPathReq;
1607
1608typedef struct {
1609 CARD8 reqType;
1610 CARD8 depth;
1611 CARD16 length;
1612 Pixmap pid;
1613 Drawable drawable;
1614 CARD16 width, height;
1615} xCreatePixmapReq;
1616
1617typedef struct {
1618 CARD8 reqType;
1619 BYTE pad;
1620 CARD16 length;
1621 GContext gc;
1622 Drawable drawable;
1623 CARD32 mask;
1624} xCreateGCReq;
1625
1626typedef struct {
1627 CARD8 reqType;
1628 BYTE pad;
1629 CARD16 length;
1630 GContext gc;
1631 CARD32 mask;
1632} xChangeGCReq;
1633
1634typedef struct {
1635 CARD8 reqType;
1636 BYTE pad;
1637 CARD16 length;
1638 GContext srcGC, dstGC;
1639 CARD32 mask;
1640} xCopyGCReq;
1641
1642typedef struct {
1643 CARD8 reqType;
1644 BYTE pad;
1645 CARD16 length;
1646 GContext gc;
1647 CARD16 dashOffset;
1648 CARD16 nDashes; /* length LISTofCARD8 of values following */
1649} xSetDashesReq;
1650
1651typedef struct {
1652 CARD8 reqType;
1653 BYTE ordering;
1654 CARD16 length;
1655 GContext gc;
1656 INT16 xOrigin, yOrigin;
1657} xSetClipRectanglesReq;
1658
1659typedef struct {
1660 CARD8 reqType;
1661 BOOL exposures;
1662 CARD16 length;
1663 Window window;
1664 INT16 x, y;
1665 CARD16 width, height;
1666} xClearAreaReq;
1667
1668typedef struct {
1669 CARD8 reqType;
1670 BYTE pad;
1671 CARD16 length;
1672 Drawable srcDrawable, dstDrawable;
1673 GContext gc;
1674 INT16 srcX, srcY, dstX, dstY;
1675 CARD16 width, height;
1676} xCopyAreaReq;
1677
1678typedef struct {
1679 CARD8 reqType;
1680 BYTE pad;
1681 CARD16 length;
1682 Drawable srcDrawable, dstDrawable;
1683 GContext gc;
1684 INT16 srcX, srcY, dstX, dstY;
1685 CARD16 width, height;
1686 CARD32 bitPlane;
1687} xCopyPlaneReq;
1688
1689typedef struct {
1690 CARD8 reqType;
1691 BYTE coordMode;
1692 CARD16 length;
1693 Drawable drawable;
1694 GContext gc;
1695} xPolyPointReq;
1696
1697typedef xPolyPointReq xPolyLineReq; /* same request structure */
1698
1699/* The following used for PolySegment, PolyRectangle, PolyArc, PolyFillRectangle, PolyFillArc */
1700
1701typedef struct {
1702 CARD8 reqType;
1703 BYTE pad;
1704 CARD16 length;
1705 Drawable drawable;
1706 GContext gc;
1707} xPolySegmentReq;
1708
1709typedef xPolySegmentReq xPolyArcReq;
1710typedef xPolySegmentReq xPolyRectangleReq;
1711typedef xPolySegmentReq xPolyFillRectangleReq;
1712typedef xPolySegmentReq xPolyFillArcReq;
1713
1714typedef struct _FillPolyReq {
1715 CARD8 reqType;
1716 BYTE pad;
1717 CARD16 length;
1718 Drawable drawable;
1719 GContext gc;
1720 BYTE shape;
1721 BYTE coordMode;
1722 CARD16 pad1;
1723} xFillPolyReq;
1724
1725
1726typedef struct _PutImageReq {
1727 CARD8 reqType;
1728 CARD8 format;
1729 CARD16 length;
1730 Drawable drawable;
1731 GContext gc;
1732 CARD16 width, height;
1733 INT16 dstX, dstY;
1734 CARD8 leftPad;
1735 CARD8 depth;
1736 CARD16 pad;
1737} xPutImageReq;
1738
1739typedef struct {
1740 CARD8 reqType;
1741 CARD8 format;
1742 CARD16 length;
1743 Drawable drawable;
1744 INT16 x, y;
1745 CARD16 width, height;
1746 CARD32 planeMask;
1747} xGetImageReq;
1748
1749/* the following used by PolyText8 and PolyText16 */
1750
1751typedef struct {
1752 CARD8 reqType;
1753 CARD8 pad;
1754 CARD16 length;
1755 Drawable drawable;
1756 GContext gc;
1757 INT16 x, y; /* items (xTextElt) start after struct */
1758} xPolyTextReq;
1759
1760typedef xPolyTextReq xPolyText8Req;
1761typedef xPolyTextReq xPolyText16Req;
1762
1763typedef struct {
1764 CARD8 reqType;
1765 BYTE nChars;
1766 CARD16 length;
1767 Drawable drawable;
1768 GContext gc;
1769 INT16 x, y;
1770} xImageTextReq;
1771
1772typedef xImageTextReq xImageText8Req;
1773typedef xImageTextReq xImageText16Req;
1774
1775typedef struct {
1776 CARD8 reqType;
1777 BYTE alloc;
1778 CARD16 length;
1779 Colormap mid;
1780 Window window;
1781 VisualID visual;
1782} xCreateColormapReq;
1783
1784typedef struct {
1785 CARD8 reqType;
1786 BYTE pad;
1787 CARD16 length;
1788 Colormap mid;
1789 Colormap srcCmap;
1790} xCopyColormapAndFreeReq;
1791
1792typedef struct {
1793 CARD8 reqType;
1794 BYTE pad;
1795 CARD16 length;
1796 Colormap cmap;
1797 CARD16 red, green, blue;
1798 CARD16 pad2;
1799} xAllocColorReq;
1800
1801typedef struct {
1802 CARD8 reqType;
1803 BYTE pad;
1804 CARD16 length;
1805 Colormap cmap;
1806 CARD16 nbytes; /* followed by structure */
1807 BYTE pad1, pad2;
1808} xAllocNamedColorReq;
1809
1810typedef struct {
1811 CARD8 reqType;
1812 BOOL contiguous;
1813 CARD16 length;
1814 Colormap cmap;
1815 CARD16 colors, planes;
1816} xAllocColorCellsReq;
1817
1818typedef struct {
1819 CARD8 reqType;
1820 BOOL contiguous;
1821 CARD16 length;
1822 Colormap cmap;
1823 CARD16 colors, red, green, blue;
1824} xAllocColorPlanesReq;
1825
1826typedef struct {
1827 CARD8 reqType;
1828 BYTE pad;
1829 CARD16 length;
1830 Colormap cmap;
1831 CARD32 planeMask;
1832} xFreeColorsReq;
1833
1834typedef struct {
1835 CARD8 reqType;
1836 BYTE pad;
1837 CARD16 length;
1838 Colormap cmap;
1839} xStoreColorsReq;
1840
1841typedef struct {
1842 CARD8 reqType;
1843 CARD8 flags; /* DoRed, DoGreen, DoBlue, as in xColorItem */
1844 CARD16 length;
1845 Colormap cmap;
1846 CARD32 pixel;
1847 CARD16 nbytes; /* number of name string bytes following structure */
1848 BYTE pad1, pad2;
1849 } xStoreNamedColorReq;
1850
1851typedef struct {
1852 CARD8 reqType;
1853 BYTE pad;
1854 CARD16 length;
1855 Colormap cmap;
1856} xQueryColorsReq;
1857
1858typedef struct { /* followed by string of length len */
1859 CARD8 reqType;
1860 BYTE pad;
1861 CARD16 length;
1862 Colormap cmap;
1863 CARD16 nbytes; /* number of string bytes following structure*/
1864 BYTE pad1, pad2;
1865} xLookupColorReq;
1866
1867typedef struct {
1868 CARD8 reqType;
1869 BYTE pad;
1870 CARD16 length;
1871 Cursor cid;
1872 Pixmap source, mask;
1873 CARD16 foreRed, foreGreen, foreBlue;
1874 CARD16 backRed, backGreen, backBlue;
1875 CARD16 x, y;
1876} xCreateCursorReq;
1877
1878typedef struct {
1879 CARD8 reqType;
1880 BYTE pad;
1881 CARD16 length;
1882 Cursor cid;
1883 Font source, mask;
1884 CARD16 sourceChar, maskChar;
1885 CARD16 foreRed, foreGreen, foreBlue;
1886 CARD16 backRed, backGreen, backBlue;
1887} xCreateGlyphCursorReq;
1888
1889typedef struct {
1890 CARD8 reqType;
1891 BYTE pad;
1892 CARD16 length;
1893 Cursor cursor;
1894 CARD16 foreRed, foreGreen, foreBlue;
1895 CARD16 backRed, backGreen, backBlue;
1896} xRecolorCursorReq;
1897
1898typedef 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;
1906 Drawable drawable;
1907 CARD16 width, height;
1908} xQueryBestSizeReq;
1909
1910typedef struct {
1911 CARD8 reqType;
1912 BYTE pad;
1913 CARD16 length;
1914 CARD16 nbytes; /* number of string bytes following structure */
1915 BYTE pad1, pad2;
1916} xQueryExtensionReq;
1917
1918typedef struct {
1919 CARD8 reqType;
1920 CARD8 numKeyPerModifier;
1921 CARD16 length;
1922} xSetModifierMappingReq;
1923
1924typedef struct {
1925 CARD8 reqType;
1926 CARD8 nElts; /* how many elements in the map */
1927 CARD16 length;
1928} xSetPointerMappingReq;
1929
1930typedef struct {
1931 CARD8 reqType;
1932 BYTE pad;
1933 CARD16 length;
1934 KeyCode firstKeyCode;
1935 CARD8 count;
1936 CARD16 pad1;
1937} xGetKeyboardMappingReq;
1938
1939typedef struct {
1940 CARD8 reqType;
1941 CARD8 keyCodes;
1942 CARD16 length;
1943 KeyCode firstKeyCode;
1944 CARD8 keySymsPerKeyCode;
1945 CARD16 pad1;
1946} xChangeKeyboardMappingReq;
1947
1948typedef struct {
1949 CARD8 reqType;
1950 BYTE pad;
1951 CARD16 length;
1952 CARD32 mask;
1953} xChangeKeyboardControlReq;
1954
1955typedef struct {
1956 CARD8 reqType;
1957 INT8 percent; /* -100 to 100 */
1958 CARD16 length;
1959} xBellReq;
1960
1961typedef struct {
1962 CARD8 reqType;
1963 BYTE pad;
1964 CARD16 length;
1965 INT16 accelNum, accelDenum;
1966 INT16 threshold;
1967 BOOL doAccel, doThresh;
1968} xChangePointerControlReq;
1969
1970typedef struct {
1971 CARD8 reqType;
1972 BYTE pad;
1973 CARD16 length;
1974 INT16 timeout, interval;
1975 BYTE preferBlank, allowExpose;
1976 CARD16 pad2;
1977} xSetScreenSaverReq;
1978
1979typedef struct {
1980 CARD8 reqType;
1981 BYTE mode;
1982 CARD16 length;
1983 CARD8 hostFamily;
1984 BYTE pad;
1985 CARD16 hostLength;
1986} xChangeHostsReq;
1987
1988typedef struct {
1989 CARD8 reqType;
1990 BYTE pad;
1991 CARD16 length;
1992 } xListHostsReq;
1993
1994typedef struct {
1995 CARD8 reqType;
1996 BYTE mode;
1997 CARD16 length;
1998 } xChangeModeReq;
1999
2000typedef xChangeModeReq xSetAccessControlReq;
2001typedef xChangeModeReq xSetCloseDownModeReq;
2002typedef xChangeModeReq xForceScreenSaverReq;
2003
2004typedef struct { /* followed by LIST of ATOM */
2005 CARD8 reqType;
2006 BYTE pad;
2007 CARD16 length;
2008 Window window;
2009 CARD16 nAtoms;
2010 INT16 nPositions;
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