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