1 /* 2 * $Xorg: X.h,v 1.4 2001/02/09 02:03:22 xorgcvs Exp $ 3 */ 4 5 /* Definitions for the X window system likely to be used by applications */ 6 7 #ifndef X_H 8 #define X_H 9 10 /*********************************************************** 11 12 Copyright 1987, 1998 The Open Group 13 14 Permission to use, copy, modify, distribute, and sell this software and its 15 documentation for any purpose is hereby granted without fee, provided that 16 the above copyright notice appear in all copies and that both that 17 copyright notice and this permission notice appear in supporting 18 documentation. 19 20 The above copyright notice and this permission notice shall be included in 21 all copies or substantial portions of the Software. 22 23 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 25 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 26 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 27 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 28 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 30 Except as contained in this notice, the name of The Open Group shall not be 31 used in advertising or otherwise to promote the sale, use or other dealings 32 in this Software without prior written authorization from The Open Group. 33 34 35 Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. 36 37 All Rights Reserved 38 39 Permission to use, copy, modify, and distribute this software and its 40 documentation for any purpose and without fee is hereby granted, 41 provided that the above copyright notice appear in all copies and that 42 both that copyright notice and this permission notice appear in 43 supporting documentation, and that the name of Digital not be 44 used in advertising or publicity pertaining to distribution of the 45 software without specific, written prior permission. 46 47 DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 48 ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL 49 DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR 50 ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, 51 WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 52 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS 53 SOFTWARE. 54 55 ******************************************************************/ 56 /* $XFree86: xc/include/X.h,v 1.6 2003/07/09 15:27:28 tsi Exp $ */ 57 58 #define X_PROTOCOL 11 /* current protocol version */ 59 #define X_PROTOCOL_REVISION 0 /* current minor version */ 60 61 /* Resources */ 62 63 /* 64 * _XSERVER64 must ONLY be defined when compiling X server sources on 65 * systems where unsigned long is not 32 bits, must NOT be used in 66 * client or library code. 67 */ 68 #ifndef _XSERVER64 69 # ifndef _XTYPEDEF_XID 70 # define _XTYPEDEF_XID 71 typedef unsigned long XID; 72 # endif 73 # ifndef _XTYPEDEF_MASK 74 # define _XTYPEDEF_MASK 75 typedef unsigned long Mask; 76 # endif 77 # ifndef _XTYPEDEF_ATOM 78 # define _XTYPEDEF_ATOM 79 typedef unsigned long Atom; /* Also in Xdefs.h */ 80 # endif 81 typedef unsigned long VisualID; 82 typedef unsigned long Time; 83 #else 84 # include <X11/Xmd.h> 85 # ifndef _XTYPEDEF_XID 86 # define _XTYPEDEF_XID 87 typedef CARD32 XID; 88 # endif 89 # ifndef _XTYPEDEF_MASK 90 # define _XTYPEDEF_MASK 91 typedef CARD32 Mask; 92 # endif 93 # ifndef _XTYPEDEF_ATOM 94 # define _XTYPEDEF_ATOM 95 typedef CARD32 Atom; 96 # endif 97 typedef CARD32 VisualID; 98 typedef CARD32 Time; 99 #endif 100 101 typedef XID Window; 102 typedef XID Drawable; 103 #ifndef _XTYPEDEF_FONT 104 # define _XTYPEDEF_FONT 105 typedef XID Font; 106 #endif 107 typedef XID Pixmap; 108 typedef XID Cursor; 109 typedef XID Colormap; 110 typedef XID GContext; 111 typedef XID KeySym; 112 113 typedef unsigned char KeyCode; 114 115 /***************************************************************** 116 * RESERVED RESOURCE AND CONSTANT DEFINITIONS 117 *****************************************************************/ 118 119 #ifndef None 120 #define None 0L /* universal null resource or null atom */ 121 #endif 122 123 #define ParentRelative 1L /* background pixmap in CreateWindow 124 and ChangeWindowAttributes */ 125 126 #define CopyFromParent 0L /* border pixmap in CreateWindow 127 and ChangeWindowAttributes 128 special VisualID and special window 129 class passed to CreateWindow */ 130 131 #define PointerWindow 0L /* destination window in SendEvent */ 132 #define InputFocus 1L /* destination window in SendEvent */ 133 134 #define PointerRoot 1L /* focus window in SetInputFocus */ 135 136 #define AnyPropertyType 0L /* special Atom, passed to GetProperty */ 137 138 #define AnyKey 0L /* special Key Code, passed to GrabKey */ 139 140 #define AnyButton 0L /* special Button Code, passed to GrabButton */ 141 142 #define AllTemporary 0L /* special Resource ID passed to KillClient */ 143 144 #define CurrentTime 0L /* special Time */ 145 146 #define NoSymbol 0L /* special KeySym */ 147 148 /***************************************************************** 149 * EVENT DEFINITIONS 150 *****************************************************************/ 151 152 /* Input Event Masks. Used as event-mask window attribute and as arguments 153 to Grab requests. Not to be confused with event names. */ 154 155 #define NoEventMask 0L 156 #define KeyPressMask (1L<<0) 157 #define KeyReleaseMask (1L<<1) 158 #define ButtonPressMask (1L<<2) 159 #define ButtonReleaseMask (1L<<3) 160 #define EnterWindowMask (1L<<4) 161 #define LeaveWindowMask (1L<<5) 162 #define PointerMotionMask (1L<<6) 163 #define PointerMotionHintMask (1L<<7) 164 #define Button1MotionMask (1L<<8) 165 #define Button2MotionMask (1L<<9) 166 #define Button3MotionMask (1L<<10) 167 #define Button4MotionMask (1L<<11) 168 #define Button5MotionMask (1L<<12) 169 #define ButtonMotionMask (1L<<13) 170 #define KeymapStateMask (1L<<14) 171 #define ExposureMask (1L<<15) 172 #define VisibilityChangeMask (1L<<16) 173 #define StructureNotifyMask (1L<<17) 174 #define ResizeRedirectMask (1L<<18) 175 #define SubstructureNotifyMask (1L<<19) 176 #define SubstructureRedirectMask (1L<<20) 177 #define FocusChangeMask (1L<<21) 178 #define PropertyChangeMask (1L<<22) 179 #define ColormapChangeMask (1L<<23) 180 #define OwnerGrabButtonMask (1L<<24) 181 182 /* Event names. Used in "type" field in XEvent structures. Not to be 183 confused with event masks above. They start from 2 because 0 and 1 184 are reserved in the protocol for errors and replies. */ 185 186 #define KeyPress 2 187 #define KeyRelease 3 188 #define ButtonPress 4 189 #define ButtonRelease 5 190 #define MotionNotify 6 191 #define EnterNotify 7 192 #define LeaveNotify 8 193 #define FocusIn 9 194 #define FocusOut 10 195 #define KeymapNotify 11 196 #define Expose 12 197 #define GraphicsExpose 13 198 #define NoExpose 14 199 #define VisibilityNotify 15 200 #define CreateNotify 16 201 #define DestroyNotify 17 202 #define UnmapNotify 18 203 #define MapNotify 19 204 #define MapRequest 20 205 #define ReparentNotify 21 206 #define ConfigureNotify 22 207 #define ConfigureRequest 23 208 #define GravityNotify 24 209 #define ResizeRequest 25 210 #define CirculateNotify 26 211 #define CirculateRequest 27 212 #define PropertyNotify 28 213 #define SelectionClear 29 214 #define SelectionRequest 30 215 #define SelectionNotify 31 216 #define ColormapNotify 32 217 #define ClientMessage 33 218 #define MappingNotify 34 219 #define LASTEvent 35 /* must be bigger than any event # */ 220 221 222 /* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer, 223 state in various key-, mouse-, and button-related events. */ 224 225 #define ShiftMask (1<<0) 226 #define LockMask (1<<1) 227 #define ControlMask (1<<2) 228 #define Mod1Mask (1<<3) 229 #define Mod2Mask (1<<4) 230 #define Mod3Mask (1<<5) 231 #define Mod4Mask (1<<6) 232 #define Mod5Mask (1<<7) 233 234 /* modifier names. Used to build a SetModifierMapping request or 235 to read a GetModifierMapping request. These correspond to the 236 masks defined above. */ 237 #define ShiftMapIndex 0 238 #define LockMapIndex 1 239 #define ControlMapIndex 2 240 #define Mod1MapIndex 3 241 #define Mod2MapIndex 4 242 #define Mod3MapIndex 5 243 #define Mod4MapIndex 6 244 #define Mod5MapIndex 7 245 246 247 /* button masks. Used in same manner as Key masks above. Not to be confused 248 with button names below. */ 249 250 #define Button1Mask (1<<8) 251 #define Button2Mask (1<<9) 252 #define Button3Mask (1<<10) 253 #define Button4Mask (1<<11) 254 #define Button5Mask (1<<12) 255 256 #define AnyModifier (1<<15) /* used in GrabButton, GrabKey */ 257 258 259 /* button names. Used as arguments to GrabButton and as detail in ButtonPress 260 and ButtonRelease events. Not to be confused with button masks above. 261 Note that 0 is already defined above as "AnyButton". */ 262 263 #define Button1 1 264 #define Button2 2 265 #define Button3 3 266 #define Button4 4 267 #define Button5 5 268 269 /* Notify modes */ 270 271 #define NotifyNormal 0 272 #define NotifyGrab 1 273 #define NotifyUngrab 2 274 #define NotifyWhileGrabbed 3 275 276 #define NotifyHint 1 /* for MotionNotify events */ 277 278 /* Notify detail */ 279 280 #define NotifyAncestor 0 281 #define NotifyVirtual 1 282 #define NotifyInferior 2 283 #define NotifyNonlinear 3 284 #define NotifyNonlinearVirtual 4 285 #define NotifyPointer 5 286 #define NotifyPointerRoot 6 287 #define NotifyDetailNone 7 288 289 /* Visibility notify */ 290 291 #define VisibilityUnobscured 0 292 #define VisibilityPartiallyObscured 1 293 #define VisibilityFullyObscured 2 294 295 /* Circulation request */ 296 297 #define PlaceOnTop 0 298 #define PlaceOnBottom 1 299 300 /* protocol families */ 301 302 #define FamilyInternet 0 /* IPv4 */ 303 #define FamilyDECnet 1 304 #define FamilyChaos 2 305 #define FamilyInternet6 6 /* IPv6 */ 306 307 /* authentication families not tied to a specific protocol */ 308 #define FamilyServerInterpreted 5 309 310 /* Property notification */ 311 312 #define PropertyNewValue 0 313 #define PropertyDelete 1 314 315 /* Color Map notification */ 316 317 #define ColormapUninstalled 0 318 #define ColormapInstalled 1 319 320 /* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */ 321 322 #define GrabModeSync 0 323 #define GrabModeAsync 1 324 325 /* GrabPointer, GrabKeyboard reply status */ 326 327 #define GrabSuccess 0 328 #define AlreadyGrabbed 1 329 #define GrabInvalidTime 2 330 #define GrabNotViewable 3 331 #define GrabFrozen 4 332 333 /* AllowEvents modes */ 334 335 #define AsyncPointer 0 336 #define SyncPointer 1 337 #define ReplayPointer 2 338 #define AsyncKeyboard 3 339 #define SyncKeyboard 4 340 #define ReplayKeyboard 5 341 #define AsyncBoth 6 342 #define SyncBoth 7 343 344 /* Used in SetInputFocus, GetInputFocus */ 345 346 #define RevertToNone (int)None 347 #define RevertToPointerRoot (int)PointerRoot 348 #define RevertToParent 2 349 350 /***************************************************************** 351 * ERROR CODES 352 *****************************************************************/ 353 354 #define Success 0 /* everything's okay */ 355 #define BadRequest 1 /* bad request code */ 356 #define BadValue 2 /* int parameter out of range */ 357 #define BadWindow 3 /* parameter not a Window */ 358 #define BadPixmap 4 /* parameter not a Pixmap */ 359 #define BadAtom 5 /* parameter not an Atom */ 360 #define BadCursor 6 /* parameter not a Cursor */ 361 #define BadFont 7 /* parameter not a Font */ 362 #define BadMatch 8 /* parameter mismatch */ 363 #define BadDrawable 9 /* parameter not a Pixmap or Window */ 364 #define BadAccess 10 /* depending on context: 365 - key/button already grabbed 366 - attempt to free an illegal 367 cmap entry 368 - attempt to store into a read-only 369 color map entry. 370 - attempt to modify the access control 371 list from other than the local host. 372 */ 373 #define BadAlloc 11 /* insufficient resources */ 374 #define BadColor 12 /* no such colormap */ 375 #define BadGC 13 /* parameter not a GC */ 376 #define BadIDChoice 14 /* choice not in range or already used */ 377 #define BadName 15 /* font or color name doesn't exist */ 378 #define BadLength 16 /* Request length incorrect */ 379 #define BadImplementation 17 /* server is defective */ 380 381 #define FirstExtensionError 128 382 #define LastExtensionError 255 383 384 /***************************************************************** 385 * WINDOW DEFINITIONS 386 *****************************************************************/ 387 388 /* Window classes used by CreateWindow */ 389 /* Note that CopyFromParent is already defined as 0 above */ 390 391 #define InputOutput 1 392 #define InputOnly 2 393 394 /* Window attributes for CreateWindow and ChangeWindowAttributes */ 395 396 #define CWBackPixmap (1L<<0) 397 #define CWBackPixel (1L<<1) 398 #define CWBorderPixmap (1L<<2) 399 #define CWBorderPixel (1L<<3) 400 #define CWBitGravity (1L<<4) 401 #define CWWinGravity (1L<<5) 402 #define CWBackingStore (1L<<6) 403 #define CWBackingPlanes (1L<<7) 404 #define CWBackingPixel (1L<<8) 405 #define CWOverrideRedirect (1L<<9) 406 #define CWSaveUnder (1L<<10) 407 #define CWEventMask (1L<<11) 408 #define CWDontPropagate (1L<<12) 409 #define CWColormap (1L<<13) 410 #define CWCursor (1L<<14) 411 412 /* ConfigureWindow structure */ 413 414 #define CWX (1<<0) 415 #define CWY (1<<1) 416 #define CWWidth (1<<2) 417 #define CWHeight (1<<3) 418 #define CWBorderWidth (1<<4) 419 #define CWSibling (1<<5) 420 #define CWStackMode (1<<6) 421 422 423 /* Bit Gravity */ 424 425 #define ForgetGravity 0 426 #define NorthWestGravity 1 427 #define NorthGravity 2 428 #define NorthEastGravity 3 429 #define WestGravity 4 430 #define CenterGravity 5 431 #define EastGravity 6 432 #define SouthWestGravity 7 433 #define SouthGravity 8 434 #define SouthEastGravity 9 435 #define StaticGravity 10 436 437 /* Window gravity + bit gravity above */ 438 439 #define UnmapGravity 0 440 441 /* Used in CreateWindow for backing-store hint */ 442 443 #define NotUseful 0 444 #define WhenMapped 1 445 #define Always 2 446 447 /* Used in GetWindowAttributes reply */ 448 449 #define IsUnmapped 0 450 #define IsUnviewable 1 451 #define IsViewable 2 452 453 /* Used in ChangeSaveSet */ 454 455 #define SetModeInsert 0 456 #define SetModeDelete 1 457 458 /* Used in ChangeCloseDownMode */ 459 460 #define DestroyAll 0 461 #define RetainPermanent 1 462 #define RetainTemporary 2 463 464 /* Window stacking method (in configureWindow) */ 465 466 #define Above 0 467 #define Below 1 468 #define TopIf 2 469 #define BottomIf 3 470 #define Opposite 4 471 472 /* Circulation direction */ 473 474 #define RaiseLowest 0 475 #define LowerHighest 1 476 477 /* Property modes */ 478 479 #define PropModeReplace 0 480 #define PropModePrepend 1 481 #define PropModeAppend 2 482 483 /***************************************************************** 484 * GRAPHICS DEFINITIONS 485 *****************************************************************/ 486 487 /* graphics functions, as in GC.alu */ 488 489 #define GXclear 0x0 /* 0 */ 490 #define GXand 0x1 /* src AND dst */ 491 #define GXandReverse 0x2 /* src AND NOT dst */ 492 #define GXcopy 0x3 /* src */ 493 #define GXandInverted 0x4 /* NOT src AND dst */ 494 #define GXnoop 0x5 /* dst */ 495 #define GXxor 0x6 /* src XOR dst */ 496 #define GXor 0x7 /* src OR dst */ 497 #define GXnor 0x8 /* NOT src AND NOT dst */ 498 #define GXequiv 0x9 /* NOT src XOR dst */ 499 #define GXinvert 0xa /* NOT dst */ 500 #define GXorReverse 0xb /* src OR NOT dst */ 501 #define GXcopyInverted 0xc /* NOT src */ 502 #define GXorInverted 0xd /* NOT src OR dst */ 503 #define GXnand 0xe /* NOT src OR NOT dst */ 504 #define GXset 0xf /* 1 */ 505 506 /* LineStyle */ 507 508 #define LineSolid 0 509 #define LineOnOffDash 1 510 #define LineDoubleDash 2 511 512 /* capStyle */ 513 514 #define CapNotLast 0 515 #define CapButt 1 516 #define CapRound 2 517 #define CapProjecting 3 518 519 /* joinStyle */ 520 521 #define JoinMiter 0 522 #define JoinRound 1 523 #define JoinBevel 2 524 525 /* fillStyle */ 526 527 #define FillSolid 0 528 #define FillTiled 1 529 #define FillStippled 2 530 #define FillOpaqueStippled 3 531 532 /* fillRule */ 533 534 #define EvenOddRule 0 535 #define WindingRule 1 536 537 /* subwindow mode */ 538 539 #define ClipByChildren 0 540 #define IncludeInferiors 1 541 542 /* SetClipRectangles ordering */ 543 544 #define Unsorted 0 545 #define YSorted 1 546 #define YXSorted 2 547 #define YXBanded 3 548 549 /* CoordinateMode for drawing routines */ 550 551 #define CoordModeOrigin 0 /* relative to the origin */ 552 #define CoordModePrevious 1 /* relative to previous point */ 553 554 /* Polygon shapes */ 555 556 #define Complex 0 /* paths may intersect */ 557 #define Nonconvex 1 /* no paths intersect, but not convex */ 558 #define Convex 2 /* wholly convex */ 559 560 /* Arc modes for PolyFillArc */ 561 562 #define ArcChord 0 /* join endpoints of arc */ 563 #define ArcPieSlice 1 /* join endpoints to center of arc */ 564 565 /* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into 566 GC.stateChanges */ 567 568 #define GCFunction (1L<<0) 569 #define GCPlaneMask (1L<<1) 570 #define GCForeground (1L<<2) 571 #define GCBackground (1L<<3) 572 #define GCLineWidth (1L<<4) 573 #define GCLineStyle (1L<<5) 574 #define GCCapStyle (1L<<6) 575 #define GCJoinStyle (1L<<7) 576 #define GCFillStyle (1L<<8) 577 #define GCFillRule (1L<<9) 578 #define GCTile (1L<<10) 579 #define GCStipple (1L<<11) 580 #define GCTileStipXOrigin (1L<<12) 581 #define GCTileStipYOrigin (1L<<13) 582 #define GCFont (1L<<14) 583 #define GCSubwindowMode (1L<<15) 584 #define GCGraphicsExposures (1L<<16) 585 #define GCClipXOrigin (1L<<17) 586 #define GCClipYOrigin (1L<<18) 587 #define GCClipMask (1L<<19) 588 #define GCDashOffset (1L<<20) 589 #define GCDashList (1L<<21) 590 #define GCArcMode (1L<<22) 591 592 #define GCLastBit 22 593 /***************************************************************** 594 * FONTS 595 *****************************************************************/ 596 597 /* used in QueryFont -- draw direction */ 598 599 #define FontLeftToRight 0 600 #define FontRightToLeft 1 601 602 #define FontChange 255 603 604 /***************************************************************** 605 * IMAGING 606 *****************************************************************/ 607 608 /* ImageFormat -- PutImage, GetImage */ 609 610 #define XYBitmap 0 /* depth 1, XYFormat */ 611 #define XYPixmap 1 /* depth == drawable depth */ 612 #define ZPixmap 2 /* depth == drawable depth */ 613 614 /***************************************************************** 615 * COLOR MAP STUFF 616 *****************************************************************/ 617 618 /* For CreateColormap */ 619 620 #define AllocNone 0 /* create map with no entries */ 621 #define AllocAll 1 /* allocate entire map writeable */ 622 623 624 /* Flags used in StoreNamedColor, StoreColors */ 625 626 #define DoRed (1<<0) 627 #define DoGreen (1<<1) 628 #define DoBlue (1<<2) 629 630 /***************************************************************** 631 * CURSOR STUFF 632 *****************************************************************/ 633 634 /* QueryBestSize Class */ 635 636 #define CursorShape 0 /* largest size that can be displayed */ 637 #define TileShape 1 /* size tiled fastest */ 638 #define StippleShape 2 /* size stippled fastest */ 639 640 /***************************************************************** 641 * KEYBOARD/POINTER STUFF 642 *****************************************************************/ 643 644 #define AutoRepeatModeOff 0 645 #define AutoRepeatModeOn 1 646 #define AutoRepeatModeDefault 2 647 648 #define LedModeOff 0 649 #define LedModeOn 1 650 651 /* masks for ChangeKeyboardControl */ 652 653 #define KBKeyClickPercent (1L<<0) 654 #define KBBellPercent (1L<<1) 655 #define KBBellPitch (1L<<2) 656 #define KBBellDuration (1L<<3) 657 #define KBLed (1L<<4) 658 #define KBLedMode (1L<<5) 659 #define KBKey (1L<<6) 660 #define KBAutoRepeatMode (1L<<7) 661 662 #define MappingSuccess 0 663 #define MappingBusy 1 664 #define MappingFailed 2 665 666 #define MappingModifier 0 667 #define MappingKeyboard 1 668 #define MappingPointer 2 669 670 /***************************************************************** 671 * SCREEN SAVER STUFF 672 *****************************************************************/ 673 674 #define DontPreferBlanking 0 675 #define PreferBlanking 1 676 #define DefaultBlanking 2 677 678 #define DisableScreenSaver 0 679 #define DisableScreenInterval 0 680 681 #define DontAllowExposures 0 682 #define AllowExposures 1 683 #define DefaultExposures 2 684 685 /* for ForceScreenSaver */ 686 687 #define ScreenSaverReset 0 688 #define ScreenSaverActive 1 689 690 /***************************************************************** 691 * HOSTS AND CONNECTIONS 692 *****************************************************************/ 693 694 /* for ChangeHosts */ 695 696 #define HostInsert 0 697 #define HostDelete 1 698 699 /* for ChangeAccessControl */ 700 701 #define EnableAccess 1 702 #define DisableAccess 0 703 704 /* Display classes used in opening the connection 705 * Note that the statically allocated ones are even numbered and the 706 * dynamically changeable ones are odd numbered */ 707 708 #define StaticGray 0 709 #define GrayScale 1 710 #define StaticColor 2 711 #define PseudoColor 3 712 #define TrueColor 4 713 #define DirectColor 5 714 715 716 /* Byte order used in imageByteOrder and bitmapBitOrder */ 717 718 #define LSBFirst 0 719 #define MSBFirst 1 720 721 #endif /* X_H */ 722