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 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 */ 269 typedef 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 */ 288 typedef 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 297 typedef 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 314 typedef struct { 315 CARD8 depth; 316 CARD8 bitsPerPixel; 317 CARD8 scanLinePad; 318 CARD8 pad1; 319 CARD32 pad2; 320 } xPixmapFormat; 321 322 /* window root */ 323 324 typedef struct { 325 CARD8 depth; 326 CARD8 pad1; 327 CARD16 nVisuals; /* number of xVisualType structures following */ 328 CARD32 pad2; 329 } xDepth; 330 331 typedef 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 344 typedef 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 367 typedef struct { 368 CARD32 time; 369 INT16 x, y; 370 } xTimecoord; 371 372 typedef struct { 373 CARD8 family; 374 BYTE pad; 375 CARD16 length; 376 } xHostEntry; 377 378 typedef struct { 379 INT16 leftSideBearing, 380 rightSideBearing, 381 characterWidth, 382 ascent, 383 descent; 384 CARD16 attributes; 385 } xCharInfo; 386 387 typedef struct { 388 Atom name; 389 CARD32 value; 390 } xFontProp; 391 392 /* 393 * non-aligned big-endian font ID follows this struct 394 */ 395 typedef 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 402 typedef struct { 403 CARD32 pixel; 404 CARD16 red, green, blue; 405 CARD8 flags; /* DoRed, DoGreen, DoBlue booleans */ 406 CARD8 pad; 407 } xColorItem; 408 409 410 typedef struct { 411 CARD16 red, green, blue, pad; 412 } xrgb; 413 414 typedef 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 425 typedef 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 440 typedef 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 466 typedef 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 480 typedef 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 493 typedef 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 506 typedef 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 520 typedef 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 533 typedef 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 547 typedef 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 560 typedef 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 573 typedef xGrabPointerReply xGrabKeyboardReply; 574 575 typedef 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 587 typedef 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 600 typedef 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 613 typedef 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 626 typedef 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 */ 635 typedef 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 654 typedef 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 665 typedef 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 */ 680 typedef 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 699 typedef 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 713 typedef 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 726 typedef 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 740 typedef 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 753 typedef 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 765 typedef 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 778 typedef 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 790 typedef 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 804 typedef 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 816 typedef 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 829 typedef 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 845 typedef 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 859 typedef 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; 871 typedef xSetMappingReply xSetPointerMappingReply; 872 typedef xSetMappingReply xSetModifierMappingReply; 873 874 typedef 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 887 typedef 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 900 typedef 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 913 typedef 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 925 typedef 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 939 typedef 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 954 typedef 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 976 typedef 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 996 typedef 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 */ 1231 typedef 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 1252 typedef 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" 1260 fits in 32 bytes. It does NOT include GetWindowAttributesReply, 1261 QueryFontReply, QueryKeymapReply, or GetKeyboardControlReply 1262 ListFontsWithInfoReply */ 1263 1264 typedef 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 1314 typedef 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 1328 typedef struct { 1329 CARD8 reqType; 1330 BYTE pad; 1331 CARD16 length; 1332 CARD32 id; /* a Window, Drawable, Font, GContext, Pixmap, etc. */ 1333 } xResourceReq; 1334 1335 typedef 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 1351 typedef struct { 1352 CARD8 reqType; 1353 BYTE pad; 1354 CARD16 length; 1355 Window window; 1356 CARD32 valueMask; 1357 } xChangeWindowAttributesReq; 1358 1359 typedef struct { 1360 CARD8 reqType; 1361 BYTE mode; 1362 CARD16 length; 1363 Window window; 1364 } xChangeSaveSetReq; 1365 1366 typedef struct { 1367 CARD8 reqType; 1368 BYTE pad; 1369 CARD16 length; 1370 Window window, parent; 1371 INT16 x, y; 1372 } xReparentWindowReq; 1373 1374 typedef struct { 1375 CARD8 reqType; 1376 CARD8 pad; 1377 CARD16 length; 1378 Window window; 1379 CARD16 mask; 1380 CARD16 pad2; 1381 } xConfigureWindowReq; 1382 1383 typedef struct { 1384 CARD8 reqType; 1385 CARD8 direction; 1386 CARD16 length; 1387 Window window; 1388 } xCirculateWindowReq; 1389 1390 typedef 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 1398 typedef 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 1409 typedef struct { 1410 CARD8 reqType; 1411 BYTE pad; 1412 CARD16 length; 1413 Window window; 1414 Atom property; 1415 } xDeletePropertyReq; 1416 1417 typedef 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 1431 typedef struct { 1432 CARD8 reqType; 1433 BYTE pad; 1434 CARD16 length; 1435 Window window; 1436 Atom selection; 1437 Time time; 1438 } xSetSelectionOwnerReq; 1439 1440 typedef struct { 1441 CARD8 reqType; 1442 BYTE pad; 1443 CARD16 length; 1444 Window requestor; 1445 Atom selection, target, property; 1446 Time time; 1447 } xConvertSelectionReq; 1448 1449 typedef struct { 1450 CARD8 reqType; 1451 BOOL propagate; 1452 CARD16 length; 1453 Window destination; 1454 CARD32 eventMask; 1455 xEvent event; 1456 } xSendEventReq; 1457 1458 typedef 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 1470 typedef 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 1484 typedef struct { 1485 CARD8 reqType; 1486 CARD8 button; 1487 CARD16 length; 1488 Window grabWindow; 1489 CARD16 modifiers; 1490 CARD16 pad; 1491 } xUngrabButtonReq; 1492 1493 typedef 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 1503 typedef 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 1513 typedef 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 1524 typedef struct { 1525 CARD8 reqType; 1526 CARD8 key; 1527 CARD16 length; 1528 Window grabWindow; 1529 CARD16 modifiers; 1530 CARD16 pad; 1531 } xUngrabKeyReq; 1532 1533 typedef struct { 1534 CARD8 reqType; 1535 CARD8 mode; 1536 CARD16 length; 1537 Time time; 1538 } xAllowEventsReq; 1539 1540 typedef struct { 1541 CARD8 reqType; 1542 BYTE pad; 1543 CARD16 length; 1544 Window window; 1545 Time start, stop; 1546 } xGetMotionEventsReq; 1547 1548 typedef struct { 1549 CARD8 reqType; 1550 BYTE pad; 1551 CARD16 length; 1552 Window srcWid, dstWid; 1553 INT16 srcX, srcY; 1554 } xTranslateCoordsReq; 1555 1556 typedef 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 1566 typedef struct { 1567 CARD8 reqType; 1568 CARD8 revertTo; 1569 CARD16 length; 1570 Window focus; 1571 Time time; 1572 } xSetInputFocusReq; 1573 1574 typedef 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 1583 typedef struct { 1584 CARD8 reqType; 1585 BOOL oddLength; 1586 CARD16 length; 1587 Font fid; 1588 } xQueryTextExtentsReq; 1589 1590 typedef struct { 1591 CARD8 reqType; 1592 BYTE pad; 1593 CARD16 length; 1594 CARD16 maxNames; 1595 CARD16 nbytes; /* 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; 1604 CARD16 nFonts; 1605 BYTE pad1, pad2; /* LISTofSTRING8 follows on word boundary */ 1606 } xSetFontPathReq; 1607 1608 typedef struct { 1609 CARD8 reqType; 1610 CARD8 depth; 1611 CARD16 length; 1612 Pixmap pid; 1613 Drawable drawable; 1614 CARD16 width, height; 1615 } xCreatePixmapReq; 1616 1617 typedef struct { 1618 CARD8 reqType; 1619 BYTE pad; 1620 CARD16 length; 1621 GContext gc; 1622 Drawable drawable; 1623 CARD32 mask; 1624 } xCreateGCReq; 1625 1626 typedef struct { 1627 CARD8 reqType; 1628 BYTE pad; 1629 CARD16 length; 1630 GContext gc; 1631 CARD32 mask; 1632 } xChangeGCReq; 1633 1634 typedef struct { 1635 CARD8 reqType; 1636 BYTE pad; 1637 CARD16 length; 1638 GContext srcGC, dstGC; 1639 CARD32 mask; 1640 } xCopyGCReq; 1641 1642 typedef 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 1651 typedef struct { 1652 CARD8 reqType; 1653 BYTE ordering; 1654 CARD16 length; 1655 GContext gc; 1656 INT16 xOrigin, yOrigin; 1657 } xSetClipRectanglesReq; 1658 1659 typedef struct { 1660 CARD8 reqType; 1661 BOOL exposures; 1662 CARD16 length; 1663 Window window; 1664 INT16 x, y; 1665 CARD16 width, height; 1666 } xClearAreaReq; 1667 1668 typedef 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 1678 typedef 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 1689 typedef struct { 1690 CARD8 reqType; 1691 BYTE coordMode; 1692 CARD16 length; 1693 Drawable drawable; 1694 GContext gc; 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; 1705 Drawable drawable; 1706 GContext gc; 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; 1718 Drawable drawable; 1719 GContext gc; 1720 BYTE shape; 1721 BYTE coordMode; 1722 CARD16 pad1; 1723 } xFillPolyReq; 1724 1725 1726 typedef 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 1739 typedef 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 1751 typedef 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 1760 typedef xPolyTextReq xPolyText8Req; 1761 typedef xPolyTextReq xPolyText16Req; 1762 1763 typedef struct { 1764 CARD8 reqType; 1765 BYTE nChars; 1766 CARD16 length; 1767 Drawable drawable; 1768 GContext gc; 1769 INT16 x, y; 1770 } xImageTextReq; 1771 1772 typedef xImageTextReq xImageText8Req; 1773 typedef xImageTextReq xImageText16Req; 1774 1775 typedef struct { 1776 CARD8 reqType; 1777 BYTE alloc; 1778 CARD16 length; 1779 Colormap mid; 1780 Window window; 1781 VisualID visual; 1782 } xCreateColormapReq; 1783 1784 typedef struct { 1785 CARD8 reqType; 1786 BYTE pad; 1787 CARD16 length; 1788 Colormap mid; 1789 Colormap srcCmap; 1790 } xCopyColormapAndFreeReq; 1791 1792 typedef struct { 1793 CARD8 reqType; 1794 BYTE pad; 1795 CARD16 length; 1796 Colormap cmap; 1797 CARD16 red, green, blue; 1798 CARD16 pad2; 1799 } xAllocColorReq; 1800 1801 typedef 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 1810 typedef struct { 1811 CARD8 reqType; 1812 BOOL contiguous; 1813 CARD16 length; 1814 Colormap cmap; 1815 CARD16 colors, planes; 1816 } xAllocColorCellsReq; 1817 1818 typedef struct { 1819 CARD8 reqType; 1820 BOOL contiguous; 1821 CARD16 length; 1822 Colormap cmap; 1823 CARD16 colors, red, green, blue; 1824 } xAllocColorPlanesReq; 1825 1826 typedef struct { 1827 CARD8 reqType; 1828 BYTE pad; 1829 CARD16 length; 1830 Colormap cmap; 1831 CARD32 planeMask; 1832 } xFreeColorsReq; 1833 1834 typedef struct { 1835 CARD8 reqType; 1836 BYTE pad; 1837 CARD16 length; 1838 Colormap cmap; 1839 } xStoreColorsReq; 1840 1841 typedef 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 1851 typedef struct { 1852 CARD8 reqType; 1853 BYTE pad; 1854 CARD16 length; 1855 Colormap cmap; 1856 } xQueryColorsReq; 1857 1858 typedef 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 1867 typedef 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 1878 typedef 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 1889 typedef 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 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; 1906 Drawable drawable; 1907 CARD16 width, height; 1908 } xQueryBestSizeReq; 1909 1910 typedef 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 1918 typedef struct { 1919 CARD8 reqType; 1920 CARD8 numKeyPerModifier; 1921 CARD16 length; 1922 } xSetModifierMappingReq; 1923 1924 typedef struct { 1925 CARD8 reqType; 1926 CARD8 nElts; /* how many elements in the map */ 1927 CARD16 length; 1928 } xSetPointerMappingReq; 1929 1930 typedef struct { 1931 CARD8 reqType; 1932 BYTE pad; 1933 CARD16 length; 1934 KeyCode firstKeyCode; 1935 CARD8 count; 1936 CARD16 pad1; 1937 } xGetKeyboardMappingReq; 1938 1939 typedef struct { 1940 CARD8 reqType; 1941 CARD8 keyCodes; 1942 CARD16 length; 1943 KeyCode firstKeyCode; 1944 CARD8 keySymsPerKeyCode; 1945 CARD16 pad1; 1946 } xChangeKeyboardMappingReq; 1947 1948 typedef struct { 1949 CARD8 reqType; 1950 BYTE pad; 1951 CARD16 length; 1952 CARD32 mask; 1953 } xChangeKeyboardControlReq; 1954 1955 typedef struct { 1956 CARD8 reqType; 1957 INT8 percent; /* -100 to 100 */ 1958 CARD16 length; 1959 } xBellReq; 1960 1961 typedef struct { 1962 CARD8 reqType; 1963 BYTE pad; 1964 CARD16 length; 1965 INT16 accelNum, accelDenum; 1966 INT16 threshold; 1967 BOOL doAccel, doThresh; 1968 } xChangePointerControlReq; 1969 1970 typedef struct { 1971 CARD8 reqType; 1972 BYTE pad; 1973 CARD16 length; 1974 INT16 timeout, interval; 1975 BYTE preferBlank, allowExpose; 1976 CARD16 pad2; 1977 } xSetScreenSaverReq; 1978 1979 typedef struct { 1980 CARD8 reqType; 1981 BYTE mode; 1982 CARD16 length; 1983 CARD8 hostFamily; 1984 BYTE pad; 1985 CARD16 hostLength; 1986 } xChangeHostsReq; 1987 1988 typedef struct { 1989 CARD8 reqType; 1990 BYTE pad; 1991 CARD16 length; 1992 } xListHostsReq; 1993 1994 typedef struct { 1995 CARD8 reqType; 1996 BYTE mode; 1997 CARD16 length; 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; 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