summaryrefslogtreecommitdiffstats
path: root/xlib
diff options
context:
space:
mode:
authorrjohnson <rjohnson>1998-04-01 09:51:44 (GMT)
committerrjohnson <rjohnson>1998-04-01 09:51:44 (GMT)
commit066ea7fd88d49cb456f74da71dbe875e4fc0aabb (patch)
tree8fb30cb152c4dc191be47fa043d2e6f5ea38c7ba /xlib
parent13242623d2ff3ea02ab6a62bfb48a7dbb5c27e22 (diff)
downloadtk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.zip
tk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.tar.gz
tk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.tar.bz2
Initial revision
Diffstat (limited to 'xlib')
-rw-r--r--xlib/X11/X.h669
-rw-r--r--xlib/X11/Xatom.h79
-rw-r--r--xlib/X11/Xfuncproto.h60
-rw-r--r--xlib/X11/Xlib.h4311
-rw-r--r--xlib/X11/Xutil.h879
-rw-r--r--xlib/X11/cursorfont.h79
-rw-r--r--xlib/X11/keysym.h39
-rw-r--r--xlib/X11/keysymdef.h1164
-rw-r--r--xlib/xbytes.h58
-rw-r--r--xlib/xcolors.c911
-rw-r--r--xlib/xdraw.c82
-rw-r--r--xlib/xgc.c353
-rw-r--r--xlib/ximage.c115
-rw-r--r--xlib/xutil.c116
14 files changed, 8915 insertions, 0 deletions
diff --git a/xlib/X11/X.h b/xlib/X11/X.h
new file mode 100644
index 0000000..55a3133
--- /dev/null
+++ b/xlib/X11/X.h
@@ -0,0 +1,669 @@
+/*
+ * $XConsortium: X.h,v 1.66 88/09/06 15:55:56 jim Exp $
+ */
+
+/* Definitions for the X window system likely to be used by applications */
+
+#ifndef X_H
+#define X_H
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+#define X_PROTOCOL 11 /* current protocol version */
+#define X_PROTOCOL_REVISION 0 /* current minor version */
+
+#ifdef MAC_TCL
+# define Cursor XCursor
+# define Region XRegion
+#endif
+
+/* Resources */
+
+typedef unsigned long XID;
+
+typedef XID Window;
+typedef XID Drawable;
+typedef XID Font;
+typedef XID Pixmap;
+typedef XID Cursor;
+typedef XID Colormap;
+typedef XID GContext;
+typedef XID KeySym;
+
+typedef unsigned long Mask;
+
+typedef unsigned long Atom;
+
+typedef unsigned long VisualID;
+
+typedef unsigned long Time;
+
+typedef unsigned short KeyCode;
+
+/*****************************************************************
+ * RESERVED RESOURCE AND CONSTANT DEFINITIONS
+ *****************************************************************/
+
+#define None 0L /* universal null resource or null atom */
+
+#define ParentRelative 1L /* background pixmap in CreateWindow
+ and ChangeWindowAttributes */
+
+#define CopyFromParent 0L /* border pixmap in CreateWindow
+ and ChangeWindowAttributes
+ special VisualID and special window
+ class passed to CreateWindow */
+
+#define PointerWindow 0L /* destination window in SendEvent */
+#define InputFocus 1L /* destination window in SendEvent */
+
+#define PointerRoot 1L /* focus window in SetInputFocus */
+
+#define AnyPropertyType 0L /* special Atom, passed to GetProperty */
+
+#define AnyKey 0L /* special Key Code, passed to GrabKey */
+
+#define AnyButton 0L /* special Button Code, passed to GrabButton */
+
+#define AllTemporary 0L /* special Resource ID passed to KillClient */
+
+#define CurrentTime 0L /* special Time */
+
+#define NoSymbol 0L /* special KeySym */
+
+/*****************************************************************
+ * EVENT DEFINITIONS
+ *****************************************************************/
+
+/* Input Event Masks. Used as event-mask window attribute and as arguments
+ to Grab requests. Not to be confused with event names. */
+
+#define NoEventMask 0L
+#define KeyPressMask (1L<<0)
+#define KeyReleaseMask (1L<<1)
+#define ButtonPressMask (1L<<2)
+#define ButtonReleaseMask (1L<<3)
+#define EnterWindowMask (1L<<4)
+#define LeaveWindowMask (1L<<5)
+#define PointerMotionMask (1L<<6)
+#define PointerMotionHintMask (1L<<7)
+#define Button1MotionMask (1L<<8)
+#define Button2MotionMask (1L<<9)
+#define Button3MotionMask (1L<<10)
+#define Button4MotionMask (1L<<11)
+#define Button5MotionMask (1L<<12)
+#define ButtonMotionMask (1L<<13)
+#define KeymapStateMask (1L<<14)
+#define ExposureMask (1L<<15)
+#define VisibilityChangeMask (1L<<16)
+#define StructureNotifyMask (1L<<17)
+#define ResizeRedirectMask (1L<<18)
+#define SubstructureNotifyMask (1L<<19)
+#define SubstructureRedirectMask (1L<<20)
+#define FocusChangeMask (1L<<21)
+#define PropertyChangeMask (1L<<22)
+#define ColormapChangeMask (1L<<23)
+#define OwnerGrabButtonMask (1L<<24)
+
+/* Event names. Used in "type" field in XEvent structures. Not to be
+confused with event masks above. They start from 2 because 0 and 1
+are reserved in the protocol for errors and replies. */
+
+#define KeyPress 2
+#define KeyRelease 3
+#define ButtonPress 4
+#define ButtonRelease 5
+#define MotionNotify 6
+#define EnterNotify 7
+#define LeaveNotify 8
+#define FocusIn 9
+#define FocusOut 10
+#define KeymapNotify 11
+#define Expose 12
+#define GraphicsExpose 13
+#define NoExpose 14
+#define VisibilityNotify 15
+#define CreateNotify 16
+#define DestroyNotify 17
+#define UnmapNotify 18
+#define MapNotify 19
+#define MapRequest 20
+#define ReparentNotify 21
+#define ConfigureNotify 22
+#define ConfigureRequest 23
+#define GravityNotify 24
+#define ResizeRequest 25
+#define CirculateNotify 26
+#define CirculateRequest 27
+#define PropertyNotify 28
+#define SelectionClear 29
+#define SelectionRequest 30
+#define SelectionNotify 31
+#define ColormapNotify 32
+#define ClientMessage 33
+#define MappingNotify 34
+#define LASTEvent 35 /* must be bigger than any event # */
+
+
+/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
+ state in various key-, mouse-, and button-related events. */
+
+#define ShiftMask (1<<0)
+#define LockMask (1<<1)
+#define ControlMask (1<<2)
+#define Mod1Mask (1<<3)
+#define Mod2Mask (1<<4)
+#define Mod3Mask (1<<5)
+#define Mod4Mask (1<<6)
+#define Mod5Mask (1<<7)
+
+/* modifier names. Used to build a SetModifierMapping request or
+ to read a GetModifierMapping request. These correspond to the
+ masks defined above. */
+#define ShiftMapIndex 0
+#define LockMapIndex 1
+#define ControlMapIndex 2
+#define Mod1MapIndex 3
+#define Mod2MapIndex 4
+#define Mod3MapIndex 5
+#define Mod4MapIndex 6
+#define Mod5MapIndex 7
+
+
+/* button masks. Used in same manner as Key masks above. Not to be confused
+ with button names below. */
+
+#define Button1Mask (1<<8)
+#define Button2Mask (1<<9)
+#define Button3Mask (1<<10)
+#define Button4Mask (1<<11)
+#define Button5Mask (1<<12)
+
+#define AnyModifier (1<<15) /* used in GrabButton, GrabKey */
+
+
+/* button names. Used as arguments to GrabButton and as detail in ButtonPress
+ and ButtonRelease events. Not to be confused with button masks above.
+ Note that 0 is already defined above as "AnyButton". */
+
+#define Button1 1
+#define Button2 2
+#define Button3 3
+#define Button4 4
+#define Button5 5
+
+/* Notify modes */
+
+#define NotifyNormal 0
+#define NotifyGrab 1
+#define NotifyUngrab 2
+#define NotifyWhileGrabbed 3
+
+#define NotifyHint 1 /* for MotionNotify events */
+
+/* Notify detail */
+
+#define NotifyAncestor 0
+#define NotifyVirtual 1
+#define NotifyInferior 2
+#define NotifyNonlinear 3
+#define NotifyNonlinearVirtual 4
+#define NotifyPointer 5
+#define NotifyPointerRoot 6
+#define NotifyDetailNone 7
+
+/* Visibility notify */
+
+#define VisibilityUnobscured 0
+#define VisibilityPartiallyObscured 1
+#define VisibilityFullyObscured 2
+
+/* Circulation request */
+
+#define PlaceOnTop 0
+#define PlaceOnBottom 1
+
+/* protocol families */
+
+#define FamilyInternet 0
+#define FamilyDECnet 1
+#define FamilyChaos 2
+
+/* Property notification */
+
+#define PropertyNewValue 0
+#define PropertyDelete 1
+
+/* Color Map notification */
+
+#define ColormapUninstalled 0
+#define ColormapInstalled 1
+
+/* GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes */
+
+#define GrabModeSync 0
+#define GrabModeAsync 1
+
+/* GrabPointer, GrabKeyboard reply status */
+
+#define GrabSuccess 0
+#define AlreadyGrabbed 1
+#define GrabInvalidTime 2
+#define GrabNotViewable 3
+#define GrabFrozen 4
+
+/* AllowEvents modes */
+
+#define AsyncPointer 0
+#define SyncPointer 1
+#define ReplayPointer 2
+#define AsyncKeyboard 3
+#define SyncKeyboard 4
+#define ReplayKeyboard 5
+#define AsyncBoth 6
+#define SyncBoth 7
+
+/* Used in SetInputFocus, GetInputFocus */
+
+#define RevertToNone (int)None
+#define RevertToPointerRoot (int)PointerRoot
+#define RevertToParent 2
+
+/*****************************************************************
+ * ERROR CODES
+ *****************************************************************/
+
+#define Success 0 /* everything's okay */
+#define BadRequest 1 /* bad request code */
+#define BadValue 2 /* int parameter out of range */
+#define BadWindow 3 /* parameter not a Window */
+#define BadPixmap 4 /* parameter not a Pixmap */
+#define BadAtom 5 /* parameter not an Atom */
+#define BadCursor 6 /* parameter not a Cursor */
+#define BadFont 7 /* parameter not a Font */
+#define BadMatch 8 /* parameter mismatch */
+#define BadDrawable 9 /* parameter not a Pixmap or Window */
+#define BadAccess 10 /* depending on context:
+ - key/button already grabbed
+ - attempt to free an illegal
+ cmap entry
+ - attempt to store into a read-only
+ color map entry.
+ - attempt to modify the access control
+ list from other than the local host.
+ */
+#define BadAlloc 11 /* insufficient resources */
+#define BadColor 12 /* no such colormap */
+#define BadGC 13 /* parameter not a GC */
+#define BadIDChoice 14 /* choice not in range or already used */
+#define BadName 15 /* font or color name doesn't exist */
+#define BadLength 16 /* Request length incorrect */
+#define BadImplementation 17 /* server is defective */
+
+#define FirstExtensionError 128
+#define LastExtensionError 255
+
+/*****************************************************************
+ * WINDOW DEFINITIONS
+ *****************************************************************/
+
+/* Window classes used by CreateWindow */
+/* Note that CopyFromParent is already defined as 0 above */
+
+#define InputOutput 1
+#define InputOnly 2
+
+/* Window attributes for CreateWindow and ChangeWindowAttributes */
+
+#define CWBackPixmap (1L<<0)
+#define CWBackPixel (1L<<1)
+#define CWBorderPixmap (1L<<2)
+#define CWBorderPixel (1L<<3)
+#define CWBitGravity (1L<<4)
+#define CWWinGravity (1L<<5)
+#define CWBackingStore (1L<<6)
+#define CWBackingPlanes (1L<<7)
+#define CWBackingPixel (1L<<8)
+#define CWOverrideRedirect (1L<<9)
+#define CWSaveUnder (1L<<10)
+#define CWEventMask (1L<<11)
+#define CWDontPropagate (1L<<12)
+#define CWColormap (1L<<13)
+#define CWCursor (1L<<14)
+
+/* ConfigureWindow structure */
+
+#define CWX (1<<0)
+#define CWY (1<<1)
+#define CWWidth (1<<2)
+#define CWHeight (1<<3)
+#define CWBorderWidth (1<<4)
+#define CWSibling (1<<5)
+#define CWStackMode (1<<6)
+
+
+/* Bit Gravity */
+
+#define ForgetGravity 0
+#define NorthWestGravity 1
+#define NorthGravity 2
+#define NorthEastGravity 3
+#define WestGravity 4
+#define CenterGravity 5
+#define EastGravity 6
+#define SouthWestGravity 7
+#define SouthGravity 8
+#define SouthEastGravity 9
+#define StaticGravity 10
+
+/* Window gravity + bit gravity above */
+
+#define UnmapGravity 0
+
+/* Used in CreateWindow for backing-store hint */
+
+#define NotUseful 0
+#define WhenMapped 1
+#define Always 2
+
+/* Used in GetWindowAttributes reply */
+
+#define IsUnmapped 0
+#define IsUnviewable 1
+#define IsViewable 2
+
+/* Used in ChangeSaveSet */
+
+#define SetModeInsert 0
+#define SetModeDelete 1
+
+/* Used in ChangeCloseDownMode */
+
+#define DestroyAll 0
+#define RetainPermanent 1
+#define RetainTemporary 2
+
+/* Window stacking method (in configureWindow) */
+
+#define Above 0
+#define Below 1
+#define TopIf 2
+#define BottomIf 3
+#define Opposite 4
+
+/* Circulation direction */
+
+#define RaiseLowest 0
+#define LowerHighest 1
+
+/* Property modes */
+
+#define PropModeReplace 0
+#define PropModePrepend 1
+#define PropModeAppend 2
+
+/*****************************************************************
+ * GRAPHICS DEFINITIONS
+ *****************************************************************/
+
+/* graphics functions, as in GC.alu */
+
+#define GXclear 0x0 /* 0 */
+#define GXand 0x1 /* src AND dst */
+#define GXandReverse 0x2 /* src AND NOT dst */
+#define GXcopy 0x3 /* src */
+#define GXandInverted 0x4 /* NOT src AND dst */
+#define GXnoop 0x5 /* dst */
+#define GXxor 0x6 /* src XOR dst */
+#define GXor 0x7 /* src OR dst */
+#define GXnor 0x8 /* NOT src AND NOT dst */
+#define GXequiv 0x9 /* NOT src XOR dst */
+#define GXinvert 0xa /* NOT dst */
+#define GXorReverse 0xb /* src OR NOT dst */
+#define GXcopyInverted 0xc /* NOT src */
+#define GXorInverted 0xd /* NOT src OR dst */
+#define GXnand 0xe /* NOT src OR NOT dst */
+#define GXset 0xf /* 1 */
+
+/* LineStyle */
+
+#define LineSolid 0
+#define LineOnOffDash 1
+#define LineDoubleDash 2
+
+/* capStyle */
+
+#define CapNotLast 0
+#define CapButt 1
+#define CapRound 2
+#define CapProjecting 3
+
+/* joinStyle */
+
+#define JoinMiter 0
+#define JoinRound 1
+#define JoinBevel 2
+
+/* fillStyle */
+
+#define FillSolid 0
+#define FillTiled 1
+#define FillStippled 2
+#define FillOpaqueStippled 3
+
+/* fillRule */
+
+#define EvenOddRule 0
+#define WindingRule 1
+
+/* subwindow mode */
+
+#define ClipByChildren 0
+#define IncludeInferiors 1
+
+/* SetClipRectangles ordering */
+
+#define Unsorted 0
+#define YSorted 1
+#define YXSorted 2
+#define YXBanded 3
+
+/* CoordinateMode for drawing routines */
+
+#define CoordModeOrigin 0 /* relative to the origin */
+#define CoordModePrevious 1 /* relative to previous point */
+
+/* Polygon shapes */
+
+#define Complex 0 /* paths may intersect */
+#define Nonconvex 1 /* no paths intersect, but not convex */
+#define Convex 2 /* wholly convex */
+
+/* Arc modes for PolyFillArc */
+
+#define ArcChord 0 /* join endpoints of arc */
+#define ArcPieSlice 1 /* join endpoints to center of arc */
+
+/* GC components: masks used in CreateGC, CopyGC, ChangeGC, OR'ed into
+ GC.stateChanges */
+
+#define GCFunction (1L<<0)
+#define GCPlaneMask (1L<<1)
+#define GCForeground (1L<<2)
+#define GCBackground (1L<<3)
+#define GCLineWidth (1L<<4)
+#define GCLineStyle (1L<<5)
+#define GCCapStyle (1L<<6)
+#define GCJoinStyle (1L<<7)
+#define GCFillStyle (1L<<8)
+#define GCFillRule (1L<<9)
+#define GCTile (1L<<10)
+#define GCStipple (1L<<11)
+#define GCTileStipXOrigin (1L<<12)
+#define GCTileStipYOrigin (1L<<13)
+#define GCFont (1L<<14)
+#define GCSubwindowMode (1L<<15)
+#define GCGraphicsExposures (1L<<16)
+#define GCClipXOrigin (1L<<17)
+#define GCClipYOrigin (1L<<18)
+#define GCClipMask (1L<<19)
+#define GCDashOffset (1L<<20)
+#define GCDashList (1L<<21)
+#define GCArcMode (1L<<22)
+
+#define GCLastBit 22
+/*****************************************************************
+ * FONTS
+ *****************************************************************/
+
+/* used in QueryFont -- draw direction */
+
+#define FontLeftToRight 0
+#define FontRightToLeft 1
+
+#define FontChange 255
+
+/*****************************************************************
+ * IMAGING
+ *****************************************************************/
+
+/* ImageFormat -- PutImage, GetImage */
+
+#define XYBitmap 0 /* depth 1, XYFormat */
+#define XYPixmap 1 /* depth == drawable depth */
+#define ZPixmap 2 /* depth == drawable depth */
+
+/*****************************************************************
+ * COLOR MAP STUFF
+ *****************************************************************/
+
+/* For CreateColormap */
+
+#define AllocNone 0 /* create map with no entries */
+#define AllocAll 1 /* allocate entire map writeable */
+
+
+/* Flags used in StoreNamedColor, StoreColors */
+
+#define DoRed (1<<0)
+#define DoGreen (1<<1)
+#define DoBlue (1<<2)
+
+/*****************************************************************
+ * CURSOR STUFF
+ *****************************************************************/
+
+/* QueryBestSize Class */
+
+#define CursorShape 0 /* largest size that can be displayed */
+#define TileShape 1 /* size tiled fastest */
+#define StippleShape 2 /* size stippled fastest */
+
+/*****************************************************************
+ * KEYBOARD/POINTER STUFF
+ *****************************************************************/
+
+#define AutoRepeatModeOff 0
+#define AutoRepeatModeOn 1
+#define AutoRepeatModeDefault 2
+
+#define LedModeOff 0
+#define LedModeOn 1
+
+/* masks for ChangeKeyboardControl */
+
+#define KBKeyClickPercent (1L<<0)
+#define KBBellPercent (1L<<1)
+#define KBBellPitch (1L<<2)
+#define KBBellDuration (1L<<3)
+#define KBLed (1L<<4)
+#define KBLedMode (1L<<5)
+#define KBKey (1L<<6)
+#define KBAutoRepeatMode (1L<<7)
+
+#define MappingSuccess 0
+#define MappingBusy 1
+#define MappingFailed 2
+
+#define MappingModifier 0
+#define MappingKeyboard 1
+#define MappingPointer 2
+
+/*****************************************************************
+ * SCREEN SAVER STUFF
+ *****************************************************************/
+
+#define DontPreferBlanking 0
+#define PreferBlanking 1
+#define DefaultBlanking 2
+
+#define DisableScreenSaver 0
+#define DisableScreenInterval 0
+
+#define DontAllowExposures 0
+#define AllowExposures 1
+#define DefaultExposures 2
+
+/* for ForceScreenSaver */
+
+#define ScreenSaverReset 0
+#define ScreenSaverActive 1
+
+/*****************************************************************
+ * HOSTS AND CONNECTIONS
+ *****************************************************************/
+
+/* for ChangeHosts */
+
+#define HostInsert 0
+#define HostDelete 1
+
+/* for ChangeAccessControl */
+
+#define EnableAccess 1
+#define DisableAccess 0
+
+/* Display classes used in opening the connection
+ * Note that the statically allocated ones are even numbered and the
+ * dynamically changeable ones are odd numbered */
+
+#define StaticGray 0
+#define GrayScale 1
+#define StaticColor 2
+#define PseudoColor 3
+#define TrueColor 4
+#define DirectColor 5
+
+
+/* Byte order used in imageByteOrder and bitmapBitOrder */
+
+#define LSBFirst 0
+#define MSBFirst 1
+
+#ifdef MAC_TCL
+# undef Cursor
+# undef Region
+#endif
+
+#endif /* X_H */
diff --git a/xlib/X11/Xatom.h b/xlib/X11/Xatom.h
new file mode 100644
index 0000000..485a423
--- /dev/null
+++ b/xlib/X11/Xatom.h
@@ -0,0 +1,79 @@
+#ifndef XATOM_H
+#define XATOM_H 1
+
+/* THIS IS A GENERATED FILE
+ *
+ * Do not change! Changing this file implies a protocol change!
+ */
+
+#define XA_PRIMARY ((Atom) 1)
+#define XA_SECONDARY ((Atom) 2)
+#define XA_ARC ((Atom) 3)
+#define XA_ATOM ((Atom) 4)
+#define XA_BITMAP ((Atom) 5)
+#define XA_CARDINAL ((Atom) 6)
+#define XA_COLORMAP ((Atom) 7)
+#define XA_CURSOR ((Atom) 8)
+#define XA_CUT_BUFFER0 ((Atom) 9)
+#define XA_CUT_BUFFER1 ((Atom) 10)
+#define XA_CUT_BUFFER2 ((Atom) 11)
+#define XA_CUT_BUFFER3 ((Atom) 12)
+#define XA_CUT_BUFFER4 ((Atom) 13)
+#define XA_CUT_BUFFER5 ((Atom) 14)
+#define XA_CUT_BUFFER6 ((Atom) 15)
+#define XA_CUT_BUFFER7 ((Atom) 16)
+#define XA_DRAWABLE ((Atom) 17)
+#define XA_FONT ((Atom) 18)
+#define XA_INTEGER ((Atom) 19)
+#define XA_PIXMAP ((Atom) 20)
+#define XA_POINT ((Atom) 21)
+#define XA_RECTANGLE ((Atom) 22)
+#define XA_RESOURCE_MANAGER ((Atom) 23)
+#define XA_RGB_COLOR_MAP ((Atom) 24)
+#define XA_RGB_BEST_MAP ((Atom) 25)
+#define XA_RGB_BLUE_MAP ((Atom) 26)
+#define XA_RGB_DEFAULT_MAP ((Atom) 27)
+#define XA_RGB_GRAY_MAP ((Atom) 28)
+#define XA_RGB_GREEN_MAP ((Atom) 29)
+#define XA_RGB_RED_MAP ((Atom) 30)
+#define XA_STRING ((Atom) 31)
+#define XA_VISUALID ((Atom) 32)
+#define XA_WINDOW ((Atom) 33)
+#define XA_WM_COMMAND ((Atom) 34)
+#define XA_WM_HINTS ((Atom) 35)
+#define XA_WM_CLIENT_MACHINE ((Atom) 36)
+#define XA_WM_ICON_NAME ((Atom) 37)
+#define XA_WM_ICON_SIZE ((Atom) 38)
+#define XA_WM_NAME ((Atom) 39)
+#define XA_WM_NORMAL_HINTS ((Atom) 40)
+#define XA_WM_SIZE_HINTS ((Atom) 41)
+#define XA_WM_ZOOM_HINTS ((Atom) 42)
+#define XA_MIN_SPACE ((Atom) 43)
+#define XA_NORM_SPACE ((Atom) 44)
+#define XA_MAX_SPACE ((Atom) 45)
+#define XA_END_SPACE ((Atom) 46)
+#define XA_SUPERSCRIPT_X ((Atom) 47)
+#define XA_SUPERSCRIPT_Y ((Atom) 48)
+#define XA_SUBSCRIPT_X ((Atom) 49)
+#define XA_SUBSCRIPT_Y ((Atom) 50)
+#define XA_UNDERLINE_POSITION ((Atom) 51)
+#define XA_UNDERLINE_THICKNESS ((Atom) 52)
+#define XA_STRIKEOUT_ASCENT ((Atom) 53)
+#define XA_STRIKEOUT_DESCENT ((Atom) 54)
+#define XA_ITALIC_ANGLE ((Atom) 55)
+#define XA_X_HEIGHT ((Atom) 56)
+#define XA_QUAD_WIDTH ((Atom) 57)
+#define XA_WEIGHT ((Atom) 58)
+#define XA_POINT_SIZE ((Atom) 59)
+#define XA_RESOLUTION ((Atom) 60)
+#define XA_COPYRIGHT ((Atom) 61)
+#define XA_NOTICE ((Atom) 62)
+#define XA_FONT_NAME ((Atom) 63)
+#define XA_FAMILY_NAME ((Atom) 64)
+#define XA_FULL_NAME ((Atom) 65)
+#define XA_CAP_HEIGHT ((Atom) 66)
+#define XA_WM_CLASS ((Atom) 67)
+#define XA_WM_TRANSIENT_FOR ((Atom) 68)
+
+#define XA_LAST_PREDEFINED ((Atom) 68)
+#endif /* XATOM_H */
diff --git a/xlib/X11/Xfuncproto.h b/xlib/X11/Xfuncproto.h
new file mode 100644
index 0000000..a59379b
--- /dev/null
+++ b/xlib/X11/Xfuncproto.h
@@ -0,0 +1,60 @@
+/* $XConsortium: Xfuncproto.h,v 1.7 91/05/13 20:49:21 rws Exp $ */
+/*
+ * Copyright 1989, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ */
+
+/* Definitions to make function prototypes manageable */
+
+#ifndef _XFUNCPROTO_H_
+#define _XFUNCPROTO_H_
+
+#ifndef NeedFunctionPrototypes
+#define NeedFunctionPrototypes 1
+#endif /* NeedFunctionPrototypes */
+
+#ifndef NeedVarargsPrototypes
+#define NeedVarargsPrototypes 0
+#endif /* NeedVarargsPrototypes */
+
+#if NeedFunctionPrototypes
+
+#ifndef NeedNestedPrototypes
+#define NeedNestedPrototypes 1
+#endif /* NeedNestedPrototypes */
+
+#ifndef _Xconst
+#define _Xconst const
+#endif /* _Xconst */
+
+#ifndef NeedWidePrototypes
+#ifdef NARROWPROTO
+#define NeedWidePrototypes 0
+#else
+#define NeedWidePrototypes 1 /* default to make interropt. easier */
+#endif
+#endif /* NeedWidePrototypes */
+
+#endif /* NeedFunctionPrototypes */
+
+#ifdef __cplusplus
+#define _XFUNCPROTOBEGIN extern "C" {
+#define _XFUNCPROTOEND }
+#endif
+
+#ifndef _XFUNCPROTOBEGIN
+#define _XFUNCPROTOBEGIN
+#define _XFUNCPROTOEND
+#endif /* _XFUNCPROTOBEGIN */
+
+#endif /* _XFUNCPROTO_H_ */
diff --git a/xlib/X11/Xlib.h b/xlib/X11/Xlib.h
new file mode 100644
index 0000000..397bb03
--- /dev/null
+++ b/xlib/X11/Xlib.h
@@ -0,0 +1,4311 @@
+/* $XConsortium: Xlib.h,v 11.221 93/07/02 14:13:28 gildea Exp $ */
+/*
+ * Copyright 1985, 1986, 1987, 1991 by the Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, provided
+ * that the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of M.I.T. not be used in advertising
+ * or publicity pertaining to distribution of the software without specific,
+ * written prior permission. M.I.T. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * X Window System is a Trademark of MIT.
+ *
+ */
+
+
+/*
+ * Xlib.h - Header definition and support file for the C subroutine
+ * interface library (Xlib) to the X Window System Protocol (V11).
+ * Structures and symbols starting with "_" are private to the library.
+ */
+#ifndef _XLIB_H_
+#define _XLIB_H_
+
+#define XlibSpecificationRelease 5
+
+#ifdef MAC_TCL
+# include <X.h>
+# define Cursor XCursor
+# define Region XRegion
+#else
+# include <X11/X.h>
+#endif
+
+/* applications should not depend on these two headers being included! */
+#ifdef MAC_TCL
+#include <Xfuncproto.h>
+#else
+#include <X11/Xfuncproto.h>
+#endif
+
+#ifndef X_WCHAR
+#ifdef X_NOT_STDC_ENV
+#define X_WCHAR
+#endif
+#endif
+
+#ifndef X_WCHAR
+#include <stddef.h>
+#else
+/* replace this with #include or typedef appropriate for your system */
+typedef unsigned long wchar_t;
+#endif
+
+typedef char *XPointer;
+
+#define Bool int
+#define Status int
+#define True 1
+#define False 0
+
+#define QueuedAlready 0
+#define QueuedAfterReading 1
+#define QueuedAfterFlush 2
+
+#define ConnectionNumber(dpy) ((dpy)->fd)
+#define RootWindow(dpy, scr) (((dpy)->screens[(scr)]).root)
+#define DefaultScreen(dpy) ((dpy)->default_screen)
+#define DefaultRootWindow(dpy) (((dpy)->screens[(dpy)->default_screen]).root)
+#define DefaultVisual(dpy, scr) (((dpy)->screens[(scr)]).root_visual)
+#define DefaultGC(dpy, scr) (((dpy)->screens[(scr)]).default_gc)
+#define BlackPixel(dpy, scr) (((dpy)->screens[(scr)]).black_pixel)
+#define WhitePixel(dpy, scr) (((dpy)->screens[(scr)]).white_pixel)
+#define AllPlanes ((unsigned long)~0L)
+#define QLength(dpy) ((dpy)->qlen)
+#define DisplayWidth(dpy, scr) (((dpy)->screens[(scr)]).width)
+#define DisplayHeight(dpy, scr) (((dpy)->screens[(scr)]).height)
+#define DisplayWidthMM(dpy, scr)(((dpy)->screens[(scr)]).mwidth)
+#define DisplayHeightMM(dpy, scr)(((dpy)->screens[(scr)]).mheight)
+#define DisplayPlanes(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
+#define DisplayCells(dpy, scr) (DefaultVisual((dpy), (scr))->map_entries)
+#define ScreenCount(dpy) ((dpy)->nscreens)
+#define ServerVendor(dpy) ((dpy)->vendor)
+#define ProtocolVersion(dpy) ((dpy)->proto_major_version)
+#define ProtocolRevision(dpy) ((dpy)->proto_minor_version)
+#define VendorRelease(dpy) ((dpy)->release)
+#define DisplayString(dpy) ((dpy)->display_name)
+#define DefaultDepth(dpy, scr) (((dpy)->screens[(scr)]).root_depth)
+#define DefaultColormap(dpy, scr)(((dpy)->screens[(scr)]).cmap)
+#define BitmapUnit(dpy) ((dpy)->bitmap_unit)
+#define BitmapBitOrder(dpy) ((dpy)->bitmap_bit_order)
+#define BitmapPad(dpy) ((dpy)->bitmap_pad)
+#define ImageByteOrder(dpy) ((dpy)->byte_order)
+#define NextRequest(dpy) ((dpy)->request + 1)
+#define LastKnownRequestProcessed(dpy) ((dpy)->request)
+
+/* macros for screen oriented applications (toolkit) */
+#define ScreenOfDisplay(dpy, scr)(&((dpy)->screens[(scr)]))
+#define DefaultScreenOfDisplay(dpy) (&((dpy)->screens[(dpy)->default_screen]))
+#define DisplayOfScreen(s) ((s)->display)
+#define RootWindowOfScreen(s) ((s)->root)
+#define BlackPixelOfScreen(s) ((s)->black_pixel)
+#define WhitePixelOfScreen(s) ((s)->white_pixel)
+#define DefaultColormapOfScreen(s)((s)->cmap)
+#define DefaultDepthOfScreen(s) ((s)->root_depth)
+#define DefaultGCOfScreen(s) ((s)->default_gc)
+#define DefaultVisualOfScreen(s)((s)->root_visual)
+#define WidthOfScreen(s) ((s)->width)
+#define HeightOfScreen(s) ((s)->height)
+#define WidthMMOfScreen(s) ((s)->mwidth)
+#define HeightMMOfScreen(s) ((s)->mheight)
+#define PlanesOfScreen(s) ((s)->root_depth)
+#define CellsOfScreen(s) (DefaultVisualOfScreen((s))->map_entries)
+#define MinCmapsOfScreen(s) ((s)->min_maps)
+#define MaxCmapsOfScreen(s) ((s)->max_maps)
+#define DoesSaveUnders(s) ((s)->save_unders)
+#define DoesBackingStore(s) ((s)->backing_store)
+#define EventMaskOfScreen(s) ((s)->root_input_mask)
+
+/*
+ * Extensions need a way to hang private data on some structures.
+ */
+typedef struct _XExtData {
+ int number; /* number returned by XRegisterExtension */
+ struct _XExtData *next; /* next item on list of data for structure */
+ int (*free_private)(); /* called to free private storage */
+ XPointer private_data; /* data private to this extension. */
+} XExtData;
+
+/*
+ * This file contains structures used by the extension mechanism.
+ */
+typedef struct { /* public to extension, cannot be changed */
+ int extension; /* extension number */
+ int major_opcode; /* major op-code assigned by server */
+ int first_event; /* first event number for the extension */
+ int first_error; /* first error number for the extension */
+} XExtCodes;
+
+/*
+ * Data structure for retrieving info about pixmap formats.
+ */
+
+typedef struct {
+ int depth;
+ int bits_per_pixel;
+ int scanline_pad;
+} XPixmapFormatValues;
+
+
+/*
+ * Data structure for setting graphics context.
+ */
+typedef struct {
+ int function; /* logical operation */
+ unsigned long plane_mask;/* plane mask */
+ unsigned long foreground;/* foreground pixel */
+ unsigned long background;/* background pixel */
+ int line_width; /* line width */
+ int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */
+ int cap_style; /* CapNotLast, CapButt,
+ CapRound, CapProjecting */
+ int join_style; /* JoinMiter, JoinRound, JoinBevel */
+ int fill_style; /* FillSolid, FillTiled,
+ FillStippled, FillOpaeueStippled */
+ int fill_rule; /* EvenOddRule, WindingRule */
+ int arc_mode; /* ArcChord, ArcPieSlice */
+ Pixmap tile; /* tile pixmap for tiling operations */
+ Pixmap stipple; /* stipple 1 plane pixmap for stipping */
+ int ts_x_origin; /* offset for tile or stipple operations */
+ int ts_y_origin;
+ Font font; /* default text font for text operations */
+ int subwindow_mode; /* ClipByChildren, IncludeInferiors */
+ Bool graphics_exposures;/* boolean, should exposures be generated */
+ int clip_x_origin; /* origin for clipping */
+ int clip_y_origin;
+ Pixmap clip_mask; /* bitmap clipping; other calls for rects */
+ int dash_offset; /* patterned/dashed line information */
+ char dashes;
+} XGCValues;
+
+/*
+ * Graphics context. The contents of this structure are implementation
+ * dependent. A GC should be treated as opaque by application code.
+ */
+
+typedef XGCValues *GC;
+
+/*
+ * Visual structure; contains information about colormapping possible.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ VisualID visualid; /* visual id of this visual */
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ class of screen (monochrome, etc.) */
+#else
+ int class; /* class of screen (monochrome, etc.) */
+#endif
+ unsigned long red_mask, green_mask, blue_mask; /* mask values */
+ int bits_per_rgb; /* log base 2 of distinct color values */
+ int map_entries; /* color map entries */
+} Visual;
+
+/*
+ * Depth structure; contains information for each possible depth.
+ */
+typedef struct {
+ int depth; /* this depth (Z) of the depth */
+ int nvisuals; /* number of Visual types at this depth */
+ Visual *visuals; /* list of visuals possible at this depth */
+} Depth;
+
+/*
+ * Information about the screen. The contents of this structure are
+ * implementation dependent. A Screen should be treated as opaque
+ * by application code.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XDisplay *display;/* back pointer to display structure */
+ Window root; /* Root window id. */
+ int width, height; /* width and height of screen */
+ int mwidth, mheight; /* width and height of in millimeters */
+ int ndepths; /* number of depths possible */
+ Depth *depths; /* list of allowable depths on the screen */
+ int root_depth; /* bits per pixel */
+ Visual *root_visual; /* root visual */
+ GC default_gc; /* GC for the root root visual */
+ Colormap cmap; /* default color map */
+ unsigned long white_pixel;
+ unsigned long black_pixel; /* White and Black pixel values */
+ int max_maps, min_maps; /* max and min color maps */
+ int backing_store; /* Never, WhenMapped, Always */
+ Bool save_unders;
+ long root_input_mask; /* initial root input mask */
+} Screen;
+
+/*
+ * Format structure; describes ZFormat data the screen will understand.
+ */
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ int depth; /* depth of this image format */
+ int bits_per_pixel; /* bits/pixel at this depth */
+ int scanline_pad; /* scanline must padded to this multiple */
+} ScreenFormat;
+
+/*
+ * Data structure for setting window attributes.
+ */
+typedef struct {
+ Pixmap background_pixmap; /* background or None or ParentRelative */
+ unsigned long background_pixel; /* background pixel */
+ Pixmap border_pixmap; /* border of the window */
+ unsigned long border_pixel; /* border pixel value */
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preseved if possible */
+ unsigned long backing_pixel;/* value to use in restoring planes */
+ Bool save_under; /* should bits under be saved? (popups) */
+ long event_mask; /* set of events that should be saved */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Colormap colormap; /* color map to be associated with window */
+ Cursor cursor; /* cursor to be displayed (or None) */
+} XSetWindowAttributes;
+
+typedef struct {
+ int x, y; /* location of window */
+ int width, height; /* width and height of window */
+ int border_width; /* border width of window */
+ int depth; /* depth of window */
+ Visual *visual; /* the associated visual structure */
+ Window root; /* root of screen containing window */
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ InputOutput, InputOnly*/
+#else
+ int class; /* InputOutput, InputOnly*/
+#endif
+ int bit_gravity; /* one of bit gravity values */
+ int win_gravity; /* one of the window gravity values */
+ int backing_store; /* NotUseful, WhenMapped, Always */
+ unsigned long backing_planes;/* planes to be preserved if possible */
+ unsigned long backing_pixel;/* value to be used when restoring planes */
+ Bool save_under; /* boolean, should bits under be saved? */
+ Colormap colormap; /* color map to be associated with window */
+ Bool map_installed; /* boolean, is color map currently installed*/
+ int map_state; /* IsUnmapped, IsUnviewable, IsViewable */
+ long all_event_masks; /* set of events all people have interest in*/
+ long your_event_mask; /* my event mask */
+ long do_not_propagate_mask; /* set of events that should not propagate */
+ Bool override_redirect; /* boolean value for override-redirect */
+ Screen *screen; /* back pointer to correct screen */
+} XWindowAttributes;
+
+/*
+ * Data structure for host setting; getting routines.
+ *
+ */
+
+typedef struct {
+ int family; /* for example FamilyInternet */
+ int length; /* length of address, in bytes */
+ char *address; /* pointer to where to find the bytes */
+} XHostAddress;
+
+/*
+ * Data structure for "image" data, used by image manipulation routines.
+ */
+typedef struct _XImage {
+ int width, height; /* size of image */
+ int xoffset; /* number of pixels offset in X direction */
+ int format; /* XYBitmap, XYPixmap, ZPixmap */
+ char *data; /* pointer to image data */
+ int byte_order; /* data byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* quant. of scanline 8, 16, 32 */
+ int bitmap_bit_order; /* LSBFirst, MSBFirst */
+ int bitmap_pad; /* 8, 16, 32 either XY or ZPixmap */
+ int depth; /* depth of image */
+ int bytes_per_line; /* accelarator to next line */
+ int bits_per_pixel; /* bits per pixel (ZPixmap) */
+ unsigned long red_mask; /* bits in z arrangment */
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ XPointer obdata; /* hook for the object routines to hang on */
+ struct funcs { /* image manipulation routines */
+ struct _XImage *(*create_image)();
+#if NeedFunctionPrototypes
+ int (*destroy_image) (struct _XImage *);
+ unsigned long (*get_pixel) (struct _XImage *, int, int);
+ int (*put_pixel) (struct _XImage *, int, int, unsigned long);
+ struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
+ int (*add_pixel) (struct _XImage *, long);
+#else
+ int (*destroy_image)();
+ unsigned long (*get_pixel)();
+ int (*put_pixel)();
+ struct _XImage *(*sub_image)();
+ int (*add_pixel)();
+#endif
+ } f;
+} XImage;
+
+/*
+ * Data structure for XReconfigureWindow
+ */
+typedef struct {
+ int x, y;
+ int width, height;
+ int border_width;
+ Window sibling;
+ int stack_mode;
+} XWindowChanges;
+
+/*
+ * Data structure used by color operations
+ */
+typedef struct {
+ unsigned long pixel;
+ unsigned short red, green, blue;
+ char flags; /* do_red, do_green, do_blue */
+ char pad;
+} XColor;
+
+/*
+ * Data structures for graphics operations. On most machines, these are
+ * congruent with the wire protocol structures, so reformatting the data
+ * can be avoided on these architectures.
+ */
+typedef struct {
+ short x1, y1, x2, y2;
+} XSegment;
+
+typedef struct {
+ short x, y;
+} XPoint;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+} XRectangle;
+
+typedef struct {
+ short x, y;
+ unsigned short width, height;
+ short angle1, angle2;
+} XArc;
+
+
+/* Data structure for XChangeKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ int bell_pitch;
+ int bell_duration;
+ int led;
+ int led_mode;
+ int key;
+ int auto_repeat_mode; /* On, Off, Default */
+} XKeyboardControl;
+
+/* Data structure for XGetKeyboardControl */
+
+typedef struct {
+ int key_click_percent;
+ int bell_percent;
+ unsigned int bell_pitch, bell_duration;
+ unsigned long led_mask;
+ int global_auto_repeat;
+ char auto_repeats[32];
+} XKeyboardState;
+
+/* Data structure for XGetMotionEvents. */
+
+typedef struct {
+ Time time;
+ short x, y;
+} XTimeCoord;
+
+/* Data structure for X{Set,Get}ModifierMapping */
+
+typedef struct {
+ int max_keypermod; /* The server's max # of keys per modifier */
+ KeyCode *modifiermap; /* An 8 by max_keypermod array of modifiers */
+} XModifierKeymap;
+
+
+/*
+ * Display datatype maintaining display specific data.
+ * The contents of this structure are implementation dependent.
+ * A Display should be treated as opaque by application code.
+ */
+typedef struct _XDisplay {
+ XExtData *ext_data; /* hook for extension to hang data */
+ struct _XFreeFuncs *free_funcs; /* internal free functions */
+ int fd; /* Network socket. */
+ int conn_checker; /* ugly thing used by _XEventsQueued */
+ int proto_major_version;/* maj. version of server's X protocol */
+ int proto_minor_version;/* minor version of servers X protocol */
+ char *vendor; /* vendor of the server hardware */
+ XID resource_base; /* resource ID base */
+ XID resource_mask; /* resource ID mask bits */
+ XID resource_id; /* allocator current ID */
+ int resource_shift; /* allocator shift to correct bits */
+ XID (*resource_alloc)(); /* allocator function */
+ int byte_order; /* screen byte order, LSBFirst, MSBFirst */
+ int bitmap_unit; /* padding and data requirements */
+ int bitmap_pad; /* padding requirements on bitmaps */
+ int bitmap_bit_order; /* LeastSignificant or MostSignificant */
+ int nformats; /* number of pixmap formats in list */
+ ScreenFormat *pixmap_format; /* pixmap format list */
+ int vnumber; /* Xlib's X protocol version number. */
+ int release; /* release of the server */
+ struct _XSQEvent *head, *tail; /* Input event queue. */
+ int qlen; /* Length of input event queue */
+ unsigned long request; /* sequence number of last request. */
+ char *last_req; /* beginning of last request, or dummy */
+ char *buffer; /* Output buffer starting address. */
+ char *bufptr; /* Output buffer index pointer. */
+ char *bufmax; /* Output buffer maximum+1 address. */
+ unsigned max_request_size; /* maximum number 32 bit words in request*/
+ struct _XrmHashBucketRec *db;
+ int (*synchandler)(); /* Synchronization handler */
+ char *display_name; /* "host:display" string used on this connect*/
+ int default_screen; /* default screen for operations */
+ int nscreens; /* number of screens on this server*/
+ Screen *screens; /* pointer to list of screens */
+ unsigned long motion_buffer; /* size of motion buffer */
+ unsigned long flags; /* internal connection flags */
+ int min_keycode; /* minimum defined keycode */
+ int max_keycode; /* maximum defined keycode */
+ KeySym *keysyms; /* This server's keysyms */
+ XModifierKeymap *modifiermap; /* This server's modifier keymap */
+ int keysyms_per_keycode;/* number of rows */
+ char *xdefaults; /* contents of defaults from server */
+ char *scratch_buffer; /* place to hang scratch buffer */
+ unsigned long scratch_length; /* length of scratch buffer */
+ int ext_number; /* extension number on this display */
+ struct _XExten *ext_procs; /* extensions initialized on this display */
+ /*
+ * the following can be fixed size, as the protocol defines how
+ * much address space is available.
+ * While this could be done using the extension vector, there
+ * may be MANY events processed, so a search through the extension
+ * list to find the right procedure for each event might be
+ * expensive if many extensions are being used.
+ */
+ Bool (*event_vec[128])(); /* vector for wire to event */
+ Status (*wire_vec[128])(); /* vector for event to wire */
+ KeySym lock_meaning; /* for XLookupString */
+ struct _XLockInfo *lock; /* multi-thread state, display lock */
+ struct _XInternalAsync *async_handlers; /* for internal async */
+ unsigned long bigreq_size; /* max size of big requests */
+ struct _XLockPtrs *lock_fns; /* pointers to threads functions */
+ /* things above this line should not move, for binary compatibility */
+ struct _XKeytrans *key_bindings; /* for XLookupString */
+ Font cursor_font; /* for XCreateFontCursor */
+ struct _XDisplayAtoms *atoms; /* for XInternAtom */
+ unsigned int mode_switch; /* keyboard group modifiers */
+ struct _XContextDB *context_db; /* context database */
+ Bool (**error_vec)(); /* vector for wire to error */
+ /*
+ * Xcms information
+ */
+ struct {
+ XPointer defaultCCCs; /* pointer to an array of default XcmsCCC */
+ XPointer clientCmaps; /* pointer to linked list of XcmsCmapRec */
+ XPointer perVisualIntensityMaps;
+ /* linked list of XcmsIntensityMap */
+ } cms;
+ struct _XIMFilter *im_filters;
+ struct _XSQEvent *qfree; /* unallocated event queue elements */
+ unsigned long next_event_serial_num; /* inserted into next queue elt */
+ int (*savedsynchandler)(); /* user synchandler when Xlib usurps */
+} Display;
+
+#if NeedFunctionPrototypes /* prototypes require event type definitions */
+#undef _XEVENT_
+#endif
+#ifndef _XEVENT_
+
+#define XMaxTransChars 4
+
+/*
+ * Definitions of specific events.
+ */
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int keycode; /* detail */
+ Bool same_screen; /* same screen flag */
+ char trans_chars[XMaxTransChars];
+ /* translated characters */
+ int nchars;
+} XKeyEvent;
+typedef XKeyEvent XKeyPressedEvent;
+typedef XKeyEvent XKeyReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window it is reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ unsigned int button; /* detail */
+ Bool same_screen; /* same screen flag */
+} XButtonEvent;
+typedef XButtonEvent XButtonPressedEvent;
+typedef XButtonEvent XButtonReleasedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ unsigned int state; /* key or button mask */
+ char is_hint; /* detail */
+ Bool same_screen; /* same screen flag */
+} XMotionEvent;
+typedef XMotionEvent XPointerMovedEvent;
+
+typedef struct {
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* "event" window reported relative to */
+ Window root; /* root window that the event occured on */
+ Window subwindow; /* child window */
+ Time time; /* milliseconds */
+ int x, y; /* pointer x, y coordinates in event window */
+ int x_root, y_root; /* coordinates relative to root */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual
+ */
+ Bool same_screen; /* same screen flag */
+ Bool focus; /* boolean focus */
+ unsigned int state; /* key or button mask */
+} XCrossingEvent;
+typedef XCrossingEvent XEnterWindowEvent;
+typedef XCrossingEvent XLeaveWindowEvent;
+
+typedef struct {
+ int type; /* FocusIn or FocusOut */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ int mode; /* NotifyNormal, NotifyGrab, NotifyUngrab */
+ int detail;
+ /*
+ * NotifyAncestor, NotifyVirtual, NotifyInferior,
+ * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
+ * NotifyPointerRoot, NotifyDetailNone
+ */
+} XFocusChangeEvent;
+typedef XFocusChangeEvent XFocusInEvent;
+typedef XFocusChangeEvent XFocusOutEvent;
+
+/* generated on EnterWindow and FocusIn when KeyMapState selected */
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ char key_vector[32];
+} XKeymapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+} XExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int x, y;
+ int width, height;
+ int count; /* if non-zero, at least this many more */
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XGraphicsExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Drawable drawable;
+ int major_code; /* core is CopyArea or CopyPlane */
+ int minor_code; /* not defined in the core */
+} XNoExposeEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int state; /* Visibility state */
+} XVisibilityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent; /* parent of the window */
+ Window window; /* window id of window created */
+ int x, y; /* window location */
+ int width, height; /* size of window */
+ int border_width; /* border width */
+ Bool override_redirect; /* creation should be overridden */
+} XCreateWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+} XDestroyWindowEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool from_configure;
+} XUnmapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Bool override_redirect; /* boolean, is override set... */
+} XMapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+} XMapRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ Window parent;
+ int x, y;
+ Bool override_redirect;
+} XReparentEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ Bool override_redirect;
+} XConfigureEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int x, y;
+} XGravityEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ int width, height;
+} XResizeRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int x, y;
+ int width, height;
+ int border_width;
+ Window above;
+ int detail; /* Above, Below, TopIf, BottomIf, Opposite */
+ unsigned long value_mask;
+} XConfigureRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window event;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window parent;
+ Window window;
+ int place; /* PlaceOnTop, PlaceOnBottom */
+} XCirculateRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom atom;
+ Time time;
+ int state; /* NewValue, Deleted */
+} XPropertyEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom selection;
+ Time time;
+} XSelectionClearEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window owner;
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property;
+ Time time;
+} XSelectionRequestEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window requestor;
+ Atom selection;
+ Atom target;
+ Atom property; /* ATOM or None */
+ Time time;
+} XSelectionEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Colormap colormap; /* COLORMAP or None */
+#if defined(__cplusplus) || defined(c_plusplus)
+ Bool c_new; /* C++ */
+#else
+ Bool new;
+#endif
+ int state; /* ColormapInstalled, ColormapUninstalled */
+} XColormapEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window;
+ Atom message_type;
+ int format;
+ union {
+ char b[20];
+ short s[10];
+ long l[5];
+ } data;
+} XClientMessageEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* unused */
+ int request; /* one of MappingModifier, MappingKeyboard,
+ MappingPointer */
+ int first_keycode; /* first keycode */
+ int count; /* defines range of change w. first_keycode*/
+} XMappingEvent;
+
+typedef struct {
+ int type;
+ Display *display; /* Display the event was read from */
+ XID resourceid; /* resource id */
+ unsigned long serial; /* serial number of failed request */
+ unsigned char error_code; /* error code of failed request */
+ unsigned char request_code; /* Major op-code of failed request */
+ unsigned char minor_code; /* Minor op-code of failed request */
+} XErrorEvent;
+
+typedef struct {
+ int type;
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came from a SendEvent request */
+ Display *display;/* Display the event was read from */
+ Window window; /* window on which event was requested in event mask */
+} XAnyEvent;
+
+/*
+ * this union is defined so Xlib can always use the same sized
+ * event structure internally, to avoid memory fragmentation.
+ */
+typedef union _XEvent {
+ int type; /* must not be changed; first element */
+ XAnyEvent xany;
+ XKeyEvent xkey;
+ XButtonEvent xbutton;
+ XMotionEvent xmotion;
+ XCrossingEvent xcrossing;
+ XFocusChangeEvent xfocus;
+ XExposeEvent xexpose;
+ XGraphicsExposeEvent xgraphicsexpose;
+ XNoExposeEvent xnoexpose;
+ XVisibilityEvent xvisibility;
+ XCreateWindowEvent xcreatewindow;
+ XDestroyWindowEvent xdestroywindow;
+ XUnmapEvent xunmap;
+ XMapEvent xmap;
+ XMapRequestEvent xmaprequest;
+ XReparentEvent xreparent;
+ XConfigureEvent xconfigure;
+ XGravityEvent xgravity;
+ XResizeRequestEvent xresizerequest;
+ XConfigureRequestEvent xconfigurerequest;
+ XCirculateEvent xcirculate;
+ XCirculateRequestEvent xcirculaterequest;
+ XPropertyEvent xproperty;
+ XSelectionClearEvent xselectionclear;
+ XSelectionRequestEvent xselectionrequest;
+ XSelectionEvent xselection;
+ XColormapEvent xcolormap;
+ XClientMessageEvent xclient;
+ XMappingEvent xmapping;
+ XErrorEvent xerror;
+ XKeymapEvent xkeymap;
+ long pad[24];
+} XEvent;
+#endif
+
+#define XAllocID(dpy) ((*(dpy)->resource_alloc)((dpy)))
+
+/*
+ * per character font metric information.
+ */
+typedef struct {
+ short lbearing; /* origin to left edge of raster */
+ short rbearing; /* origin to right edge of raster */
+ short width; /* advance to next char's origin */
+ short ascent; /* baseline to top edge of raster */
+ short descent; /* baseline to bottom edge of raster */
+ unsigned short attributes; /* per char flags (not predefined) */
+} XCharStruct;
+
+/*
+ * To allow arbitrary information with fonts, there are additional properties
+ * returned.
+ */
+typedef struct {
+ Atom name;
+ unsigned long card32;
+} XFontProp;
+
+typedef struct {
+ XExtData *ext_data; /* hook for extension to hang data */
+ Font fid; /* Font id for this font */
+ unsigned direction; /* hint about direction the font is painted */
+ unsigned min_char_or_byte2;/* first character */
+ unsigned max_char_or_byte2;/* last character */
+ unsigned min_byte1; /* first row that exists */
+ unsigned max_byte1; /* last row that exists */
+ Bool all_chars_exist;/* flag if all characters have non-zero size*/
+ unsigned default_char; /* char to print for undefined character */
+ int n_properties; /* how many properties there are */
+ XFontProp *properties; /* pointer to array of additional properties*/
+ XCharStruct min_bounds; /* minimum bounds over all existing char*/
+ XCharStruct max_bounds; /* maximum bounds over all existing char*/
+ XCharStruct *per_char; /* first_char to last_char information */
+ int ascent; /* log. extent above baseline for spacing */
+ int descent; /* log. descent below baseline for spacing */
+} XFontStruct;
+
+/*
+ * PolyText routines take these as arguments.
+ */
+typedef struct {
+ char *chars; /* pointer to string */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem;
+
+typedef struct { /* normal 16 bit characters are two bytes */
+ unsigned char byte1;
+ unsigned char byte2;
+} XChar2b;
+
+typedef struct {
+ XChar2b *chars; /* two byte characters */
+ int nchars; /* number of characters */
+ int delta; /* delta between strings */
+ Font font; /* font to print it in, None don't change */
+} XTextItem16;
+
+
+typedef union { Display *display;
+ GC gc;
+ Visual *visual;
+ Screen *screen;
+ ScreenFormat *pixmap_format;
+ XFontStruct *font; } XEDataObject;
+
+typedef struct {
+ XRectangle max_ink_extent;
+ XRectangle max_logical_extent;
+} XFontSetExtents;
+
+typedef struct _XFontSet *XFontSet;
+
+typedef struct {
+ char *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XmbTextItem;
+
+typedef struct {
+ wchar_t *chars;
+ int nchars;
+ int delta;
+ XFontSet font_set;
+} XwcTextItem;
+
+typedef void (*XIMProc)();
+
+typedef struct _XIM *XIM;
+typedef struct _XIC *XIC;
+
+typedef unsigned long XIMStyle;
+
+typedef struct {
+ unsigned short count_styles;
+ XIMStyle *supported_styles;
+} XIMStyles;
+
+#define XIMPreeditArea 0x0001L
+#define XIMPreeditCallbacks 0x0002L
+#define XIMPreeditPosition 0x0004L
+#define XIMPreeditNothing 0x0008L
+#define XIMPreeditNone 0x0010L
+#define XIMStatusArea 0x0100L
+#define XIMStatusCallbacks 0x0200L
+#define XIMStatusNothing 0x0400L
+#define XIMStatusNone 0x0800L
+
+#define XNVaNestedList "XNVaNestedList"
+#define XNClientWindow "clientWindow"
+#define XNInputStyle "inputStyle"
+#define XNFocusWindow "focusWindow"
+#define XNResourceName "resourceName"
+#define XNResourceClass "resourceClass"
+#define XNGeometryCallback "geometryCallback"
+#define XNFilterEvents "filterEvents"
+#define XNPreeditStartCallback "preeditStartCallback"
+#define XNPreeditDoneCallback "preeditDoneCallback"
+#define XNPreeditDrawCallback "preeditDrawCallback"
+#define XNPreeditCaretCallback "preeditCaretCallback"
+#define XNPreeditAttributes "preeditAttributes"
+#define XNStatusStartCallback "statusStartCallback"
+#define XNStatusDoneCallback "statusDoneCallback"
+#define XNStatusDrawCallback "statusDrawCallback"
+#define XNStatusAttributes "statusAttributes"
+#define XNArea "area"
+#define XNAreaNeeded "areaNeeded"
+#define XNSpotLocation "spotLocation"
+#define XNColormap "colorMap"
+#define XNStdColormap "stdColorMap"
+#define XNForeground "foreground"
+#define XNBackground "background"
+#define XNBackgroundPixmap "backgroundPixmap"
+#define XNFontSet "fontSet"
+#define XNLineSpace "lineSpace"
+#define XNCursor "cursor"
+
+#define XBufferOverflow -1
+#define XLookupNone 1
+#define XLookupChars 2
+#define XLookupKeySym 3
+#define XLookupBoth 4
+
+#if NeedFunctionPrototypes
+typedef void *XVaNestedList;
+#else
+typedef XPointer XVaNestedList;
+#endif
+
+typedef struct {
+ XPointer client_data;
+ XIMProc callback;
+} XIMCallback;
+
+typedef unsigned long XIMFeedback;
+
+#define XIMReverse 1
+#define XIMUnderline (1<<1)
+#define XIMHighlight (1<<2)
+#define XIMPrimary (1<<5)
+#define XIMSecondary (1<<6)
+#define XIMTertiary (1<<7)
+
+typedef struct _XIMText {
+ unsigned short length;
+ XIMFeedback *feedback;
+ Bool encoding_is_wchar;
+ union {
+ char *multi_byte;
+ wchar_t *wide_char;
+ } string;
+} XIMText;
+
+typedef struct _XIMPreeditDrawCallbackStruct {
+ int caret; /* Cursor offset within pre-edit string */
+ int chg_first; /* Starting change position */
+ int chg_length; /* Length of the change in character count */
+ XIMText *text;
+} XIMPreeditDrawCallbackStruct;
+
+typedef enum {
+ XIMForwardChar, XIMBackwardChar,
+ XIMForwardWord, XIMBackwardWord,
+ XIMCaretUp, XIMCaretDown,
+ XIMNextLine, XIMPreviousLine,
+ XIMLineStart, XIMLineEnd,
+ XIMAbsolutePosition,
+ XIMDontChange
+} XIMCaretDirection;
+
+typedef enum {
+ XIMIsInvisible, /* Disable caret feedback */
+ XIMIsPrimary, /* UI defined caret feedback */
+ XIMIsSecondary /* UI defined caret feedback */
+} XIMCaretStyle;
+
+typedef struct _XIMPreeditCaretCallbackStruct {
+ int position; /* Caret offset within pre-edit string */
+ XIMCaretDirection direction; /* Caret moves direction */
+ XIMCaretStyle style; /* Feedback of the caret */
+} XIMPreeditCaretCallbackStruct;
+
+typedef enum {
+ XIMTextType,
+ XIMBitmapType
+} XIMStatusDataType;
+
+typedef struct _XIMStatusDrawCallbackStruct {
+ XIMStatusDataType type;
+ union {
+ XIMText *text;
+ Pixmap bitmap;
+ } data;
+} XIMStatusDrawCallbackStruct;
+
+_XFUNCPROTOBEGIN
+
+extern XFontStruct *XLoadQueryFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */
+#endif
+);
+
+extern XFontStruct *XQueryFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* font_ID */
+#endif
+);
+
+
+extern XTimeCoord *XGetMotionEvents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Time /* start */,
+ Time /* stop */,
+ int* /* nevents_return */
+#endif
+);
+
+extern XModifierKeymap *XDeleteModifiermapEntry(
+#if NeedFunctionPrototypes
+ XModifierKeymap* /* modmap */,
+#if NeedWidePrototypes
+ unsigned int /* keycode_entry */,
+#else
+ KeyCode /* keycode_entry */,
+#endif
+ int /* modifier */
+#endif
+);
+
+extern XModifierKeymap *XGetModifierMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern XModifierKeymap *XInsertModifiermapEntry(
+#if NeedFunctionPrototypes
+ XModifierKeymap* /* modmap */,
+#if NeedWidePrototypes
+ unsigned int /* keycode_entry */,
+#else
+ KeyCode /* keycode_entry */,
+#endif
+ int /* modifier */
+#endif
+);
+
+extern XModifierKeymap *XNewModifiermap(
+#if NeedFunctionPrototypes
+ int /* max_keys_per_mod */
+#endif
+);
+
+extern XImage *XCreateImage(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Visual* /* visual */,
+ unsigned int /* depth */,
+ int /* format */,
+ int /* offset */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* bitmap_pad */,
+ int /* bytes_per_line */
+#endif
+);
+extern XImage *XGetImage(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* plane_mask */,
+ int /* format */
+#endif
+);
+extern XImage *XGetSubImage(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* plane_mask */,
+ int /* format */,
+ XImage* /* dest_image */,
+ int /* dest_x */,
+ int /* dest_y */
+#endif
+);
+
+/*
+ * X function declarations.
+ */
+extern Display *XOpenDisplay(
+#if NeedFunctionPrototypes
+ _Xconst char* /* display_name */
+#endif
+);
+
+extern void XrmInitialize(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern char *XFetchBytes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* nbytes_return */
+#endif
+);
+extern char *XFetchBuffer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* nbytes_return */,
+ int /* buffer */
+#endif
+);
+extern char *XGetAtomName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Atom /* atom */
+#endif
+);
+extern char *XGetDefault(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* program */,
+ _Xconst char* /* option */
+#endif
+);
+extern char *XDisplayName(
+#if NeedFunctionPrototypes
+ _Xconst char* /* string */
+#endif
+);
+extern char *XKeysymToString(
+#if NeedFunctionPrototypes
+ KeySym /* keysym */
+#endif
+);
+
+extern int (*XSynchronize(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Bool /* onoff */
+#endif
+))();
+extern int (*XSetAfterFunction(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int (*) (
+#if NeedNestedPrototypes
+ Display* /* display */
+#endif
+ ) /* procedure */
+#endif
+))();
+extern Atom XInternAtom(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* atom_name */,
+ Bool /* only_if_exists */
+#endif
+);
+extern Colormap XCopyColormapAndFree(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */
+#endif
+);
+extern Colormap XCreateColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Visual* /* visual */,
+ int /* alloc */
+#endif
+);
+extern Cursor XCreatePixmapCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Pixmap /* source */,
+ Pixmap /* mask */,
+ XColor* /* foreground_color */,
+ XColor* /* background_color */,
+ unsigned int /* x */,
+ unsigned int /* y */
+#endif
+);
+extern Cursor XCreateGlyphCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Font /* source_font */,
+ Font /* mask_font */,
+ unsigned int /* source_char */,
+ unsigned int /* mask_char */,
+ XColor* /* foreground_color */,
+ XColor* /* background_color */
+#endif
+);
+extern Cursor XCreateFontCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned int /* shape */
+#endif
+);
+extern Font XLoadFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */
+#endif
+);
+extern GC XCreateGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values */
+#endif
+);
+extern GContext XGContextFromGC(
+#if NeedFunctionPrototypes
+ GC /* gc */
+#endif
+);
+extern void XFlushGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */
+#endif
+);
+extern Pixmap XCreatePixmap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* depth */
+#endif
+);
+extern Pixmap XCreateBitmapFromData(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ _Xconst char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+extern Pixmap XCreatePixmapFromBitmapData(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ char* /* data */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned long /* fg */,
+ unsigned long /* bg */,
+ unsigned int /* depth */
+#endif
+);
+extern Window XCreateSimpleWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ unsigned long /* border */,
+ unsigned long /* background */
+#endif
+);
+extern Window XGetSelectionOwner(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Atom /* selection */
+#endif
+);
+extern Window XCreateWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int /* border_width */,
+ int /* depth */,
+ unsigned int /* class */,
+ Visual* /* visual */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attributes */
+#endif
+);
+extern Colormap *XListInstalledColormaps(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int* /* num_return */
+#endif
+);
+extern char **XListFonts(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* pattern */,
+ int /* maxnames */,
+ int* /* actual_count_return */
+#endif
+);
+extern char **XListFontsWithInfo(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* pattern */,
+ int /* maxnames */,
+ int* /* count_return */,
+ XFontStruct** /* info_return */
+#endif
+);
+extern char **XGetFontPath(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* npaths_return */
+#endif
+);
+extern char **XListExtensions(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* nextensions_return */
+#endif
+);
+extern Atom *XListProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int* /* num_prop_return */
+#endif
+);
+extern XHostAddress *XListHosts(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* nhosts_return */,
+ Bool* /* state_return */
+#endif
+);
+extern KeySym XKeycodeToKeysym(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+#if NeedWidePrototypes
+ unsigned int /* keycode */,
+#else
+ KeyCode /* keycode */,
+#endif
+ int /* index */
+#endif
+);
+extern KeySym XLookupKeysym(
+#if NeedFunctionPrototypes
+ XKeyEvent* /* key_event */,
+ int /* index */
+#endif
+);
+extern KeySym *XGetKeyboardMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+#if NeedWidePrototypes
+ unsigned int /* first_keycode */,
+#else
+ KeyCode /* first_keycode */,
+#endif
+ int /* keycode_count */,
+ int* /* keysyms_per_keycode_return */
+#endif
+);
+extern KeySym XStringToKeysym(
+#if NeedFunctionPrototypes
+ _Xconst char* /* string */
+#endif
+);
+extern long XMaxRequestSize(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern long XExtendedMaxRequestSize(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern char *XResourceManagerString(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern char *XScreenResourceString(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern unsigned long XDisplayMotionBufferSize(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern VisualID XVisualIDFromVisual(
+#if NeedFunctionPrototypes
+ Visual* /* visual */
+#endif
+);
+
+/* routines for dealing with extensions */
+
+extern XExtCodes *XInitExtension(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */
+#endif
+);
+
+extern XExtCodes *XAddExtension(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern XExtData *XFindOnExtensionList(
+#if NeedFunctionPrototypes
+ XExtData** /* structure */,
+ int /* number */
+#endif
+);
+extern XExtData **XEHeadOfExtensionList(
+#if NeedFunctionPrototypes
+ XEDataObject /* object */
+#endif
+);
+
+/* these are routines for which there are also macros */
+extern Window XRootWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern Window XDefaultRootWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern Window XRootWindowOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern Visual *XDefaultVisual(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern Visual *XDefaultVisualOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern GC XDefaultGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern GC XDefaultGCOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern unsigned long XBlackPixel(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern unsigned long XWhitePixel(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern unsigned long XAllPlanes(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+extern unsigned long XBlackPixelOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern unsigned long XWhitePixelOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern unsigned long XNextRequest(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern unsigned long XLastKnownRequestProcessed(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern char *XServerVendor(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern char *XDisplayString(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern Colormap XDefaultColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern Colormap XDefaultColormapOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern Display *XDisplayOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+extern Screen *XScreenOfDisplay(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+extern Screen *XDefaultScreenOfDisplay(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+extern long XEventMaskOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern int XScreenNumberOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+typedef int (*XErrorHandler) ( /* WARNING, this type not in Xlib spec */
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XErrorEvent* /* error_event */
+#endif
+);
+
+extern XErrorHandler XSetErrorHandler (
+#if NeedFunctionPrototypes
+ XErrorHandler /* handler */
+#endif
+);
+
+
+typedef int (*XIOErrorHandler) ( /* WARNING, this type not in Xlib spec */
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern XIOErrorHandler XSetIOErrorHandler (
+#if NeedFunctionPrototypes
+ XIOErrorHandler /* handler */
+#endif
+);
+
+
+extern XPixmapFormatValues *XListPixmapFormats(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* count_return */
+#endif
+);
+extern int *XListDepths(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */,
+ int* /* count_return */
+#endif
+);
+
+/* ICCCM routines for things that don't require special include files; */
+/* other declarations are given in Xutil.h */
+extern Status XReconfigureWMWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */,
+ unsigned int /* mask */,
+ XWindowChanges* /* changes */
+#endif
+);
+
+extern Status XGetWMProtocols(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom** /* protocols_return */,
+ int* /* count_return */
+#endif
+);
+extern Status XSetWMProtocols(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom* /* protocols */,
+ int /* count */
+#endif
+);
+extern Status XIconifyWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */
+#endif
+);
+extern Status XWithdrawWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* screen_number */
+#endif
+);
+extern Status XGetCommand(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ char*** /* argv_return */,
+ int* /* argc_return */
+#endif
+);
+extern Status XGetWMColormapWindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window** /* windows_return */,
+ int* /* count_return */
+#endif
+);
+extern Status XSetWMColormapWindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window* /* colormap_windows */,
+ int /* count */
+#endif
+);
+extern void XFreeStringList(
+#if NeedFunctionPrototypes
+ char** /* list */
+#endif
+);
+extern void XSetTransientForHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window /* prop_window */
+#endif
+);
+
+/* The following are given in alphabetical order */
+
+extern void XActivateScreenSaver(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XAddHost(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XHostAddress* /* host */
+#endif
+);
+
+extern void XAddHosts(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XHostAddress* /* hosts */,
+ int /* num_hosts */
+#endif
+);
+
+extern void XAddToExtensionList(
+#if NeedFunctionPrototypes
+ struct _XExtData** /* structure */,
+ XExtData* /* ext_data */
+#endif
+);
+
+extern void XAddToSaveSet(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern Status XAllocColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* screen_in_out */
+#endif
+);
+
+extern Status XAllocColorCells(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ Bool /* contig */,
+ unsigned long* /* plane_masks_return */,
+ unsigned int /* nplanes */,
+ unsigned long* /* pixels_return */,
+ unsigned int /* npixels */
+#endif
+);
+
+extern Status XAllocColorPlanes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ Bool /* contig */,
+ unsigned long* /* pixels_return */,
+ int /* ncolors */,
+ int /* nreds */,
+ int /* ngreens */,
+ int /* nblues */,
+ unsigned long* /* rmask_return */,
+ unsigned long* /* gmask_return */,
+ unsigned long* /* bmask_return */
+#endif
+);
+
+extern Status XAllocNamedColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ _Xconst char* /* color_name */,
+ XColor* /* screen_def_return */,
+ XColor* /* exact_def_return */
+#endif
+);
+
+extern void XAllowEvents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* event_mode */,
+ Time /* time */
+#endif
+);
+
+extern void XAutoRepeatOff(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XAutoRepeatOn(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XBell(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* percent */
+#endif
+);
+
+extern int XBitmapBitOrder(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XBitmapPad(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XBitmapUnit(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XCellsOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern void XChangeActivePointerGrab(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned int /* event_mask */,
+ Cursor /* cursor */,
+ Time /* time */
+#endif
+);
+
+extern void XChangeGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values */
+#endif
+);
+
+extern void XChangeKeyboardControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned long /* value_mask */,
+ XKeyboardControl* /* values */
+#endif
+);
+
+extern void XChangeKeyboardMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* first_keycode */,
+ int /* keysyms_per_keycode */,
+ KeySym* /* keysyms */,
+ int /* num_codes */
+#endif
+);
+
+extern void XChangePointerControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Bool /* do_accel */,
+ Bool /* do_threshold */,
+ int /* accel_numerator */,
+ int /* accel_denominator */,
+ int /* threshold */
+#endif
+);
+
+extern void XChangeProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */,
+ Atom /* type */,
+ int /* format */,
+ int /* mode */,
+ _Xconst unsigned char* /* data */,
+ int /* nelements */
+#endif
+);
+
+extern void XChangeSaveSet(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* change_mode */
+#endif
+);
+
+extern void XChangeWindowAttributes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* valuemask */,
+ XSetWindowAttributes* /* attributes */
+#endif
+);
+
+extern Bool XCheckIfEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event_return */,
+ Bool (*) (
+#if NeedNestedPrototypes
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+#endif
+ ) /* predicate */,
+ XPointer /* arg */
+#endif
+);
+
+extern Bool XCheckMaskEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern Bool XCheckTypedEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* event_type */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern Bool XCheckTypedWindowEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* event_type */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern Bool XCheckWindowEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern void XCirculateSubwindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* direction */
+#endif
+);
+
+extern void XCirculateSubwindowsDown(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XCirculateSubwindowsUp(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XClearArea(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ Bool /* exposures */
+#endif
+);
+
+extern void XClearWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XCloseDisplay(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XConfigureWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* value_mask */,
+ XWindowChanges* /* values */
+#endif
+);
+
+extern int XConnectionNumber(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XConvertSelection(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Atom /* selection */,
+ Atom /* target */,
+ Atom /* property */,
+ Window /* requestor */,
+ Time /* time */
+#endif
+);
+
+extern void XCopyArea(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* src */,
+ Drawable /* dest */,
+ GC /* gc */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* dest_x */,
+ int /* dest_y */
+#endif
+);
+
+extern void XCopyGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* src */,
+ unsigned long /* valuemask */,
+ GC /* dest */
+#endif
+);
+
+extern void XCopyPlane(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* src */,
+ Drawable /* dest */,
+ GC /* gc */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* dest_x */,
+ int /* dest_y */,
+ unsigned long /* plane */
+#endif
+);
+
+extern int XDefaultDepth(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern int XDefaultDepthOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern int XDefaultScreen(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XDefineCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Cursor /* cursor */
+#endif
+);
+
+extern void XDeleteProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */
+#endif
+);
+
+extern void XDestroyWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XDestroySubwindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern int XDoesBackingStore(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern Bool XDoesSaveUnders(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern void XDisableAccessControl(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+
+extern int XDisplayCells(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern int XDisplayHeight(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern int XDisplayHeightMM(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern void XDisplayKeycodes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* min_keycodes_return */,
+ int* /* max_keycodes_return */
+#endif
+);
+
+extern int XDisplayPlanes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern int XDisplayWidth(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern int XDisplayWidthMM(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */
+#endif
+);
+
+extern void XDrawArc(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* angle1 */,
+ int /* angle2 */
+#endif
+);
+
+extern void XDrawArcs(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XArc* /* arcs */,
+ int /* narcs */
+#endif
+);
+
+extern void XDrawImageString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* string */,
+ int /* length */
+#endif
+);
+
+extern void XDrawImageString16(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst XChar2b* /* string */,
+ int /* length */
+#endif
+);
+
+extern void XDrawLine(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x1 */,
+ int /* y1 */,
+ int /* x2 */,
+ int /* y2 */
+#endif
+);
+
+extern void XDrawLines(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* mode */
+#endif
+);
+
+extern void XDrawPoint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */
+#endif
+);
+
+extern void XDrawPoints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* mode */
+#endif
+);
+
+extern void XDrawRectangle(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern void XDrawRectangles(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XRectangle* /* rectangles */,
+ int /* nrectangles */
+#endif
+);
+
+extern void XDrawSegments(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XSegment* /* segments */,
+ int /* nsegments */
+#endif
+);
+
+extern void XDrawString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* string */,
+ int /* length */
+#endif
+);
+
+extern void XDrawString16(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst XChar2b* /* string */,
+ int /* length */
+#endif
+);
+
+extern void XDrawText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XTextItem* /* items */,
+ int /* nitems */
+#endif
+);
+
+extern void XDrawText16(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XTextItem16* /* items */,
+ int /* nitems */
+#endif
+);
+
+extern void XEnableAccessControl(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XEventsQueued(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* mode */
+#endif
+);
+
+extern Status XFetchName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ char** /* window_name_return */
+#endif
+);
+
+extern void XFillArc(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* angle1 */,
+ int /* angle2 */
+#endif
+);
+
+extern void XFillArcs(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XArc* /* arcs */,
+ int /* narcs */
+#endif
+);
+
+extern void XFillPolygon(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XPoint* /* points */,
+ int /* npoints */,
+ int /* shape */,
+ int /* mode */
+#endif
+);
+
+extern void XFillRectangle(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern void XFillRectangles(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XRectangle* /* rectangles */,
+ int /* nrectangles */
+#endif
+);
+
+extern void XFlush(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XForceScreenSaver(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* mode */
+#endif
+);
+
+extern void XFree(
+#if NeedFunctionPrototypes
+ void* /* data */
+#endif
+);
+
+extern void XFreeColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */
+#endif
+);
+
+extern void XFreeColors(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ unsigned long* /* pixels */,
+ int /* npixels */,
+ unsigned long /* planes */
+#endif
+);
+
+extern void XFreeCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Cursor /* cursor */
+#endif
+);
+
+extern void XFreeExtensionList(
+#if NeedFunctionPrototypes
+ char** /* list */
+#endif
+);
+
+extern void XFreeFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XFontStruct* /* font_struct */
+#endif
+);
+
+extern void XFreeFontInfo(
+#if NeedFunctionPrototypes
+ char** /* names */,
+ XFontStruct* /* free_info */,
+ int /* actual_count */
+#endif
+);
+
+extern void XFreeFontNames(
+#if NeedFunctionPrototypes
+ char** /* list */
+#endif
+);
+
+extern void XFreeFontPath(
+#if NeedFunctionPrototypes
+ char** /* list */
+#endif
+);
+
+extern void XFreeGC(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */
+#endif
+);
+
+extern void XFreeModifiermap(
+#if NeedFunctionPrototypes
+ XModifierKeymap* /* modmap */
+#endif
+);
+
+extern void XFreePixmap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Pixmap /* pixmap */
+#endif
+);
+
+extern int XGeometry(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen */,
+ _Xconst char* /* position */,
+ _Xconst char* /* default_position */,
+ unsigned int /* bwidth */,
+ unsigned int /* fwidth */,
+ unsigned int /* fheight */,
+ int /* xadder */,
+ int /* yadder */,
+ int* /* x_return */,
+ int* /* y_return */,
+ int* /* width_return */,
+ int* /* height_return */
+#endif
+);
+
+extern void XGetErrorDatabaseText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */,
+ _Xconst char* /* message */,
+ _Xconst char* /* default_string */,
+ char* /* buffer_return */,
+ int /* length */
+#endif
+);
+
+extern void XGetErrorText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* code */,
+ char* /* buffer_return */,
+ int /* length */
+#endif
+);
+
+extern Bool XGetFontProperty(
+#if NeedFunctionPrototypes
+ XFontStruct* /* font_struct */,
+ Atom /* atom */,
+ unsigned long* /* value_return */
+#endif
+);
+
+extern Status XGetGCValues(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* valuemask */,
+ XGCValues* /* values_return */
+#endif
+);
+
+extern Status XGetGeometry(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ Window* /* root_return */,
+ int* /* x_return */,
+ int* /* y_return */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */,
+ unsigned int* /* border_width_return */,
+ unsigned int* /* depth_return */
+#endif
+);
+
+extern Status XGetIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ char** /* icon_name_return */
+#endif
+);
+
+extern void XGetInputFocus(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window* /* focus_return */,
+ int* /* revert_to_return */
+#endif
+);
+
+extern void XGetKeyboardControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XKeyboardState* /* values_return */
+#endif
+);
+
+extern void XGetPointerControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* accel_numerator_return */,
+ int* /* accel_denominator_return */,
+ int* /* threshold_return */
+#endif
+);
+
+extern int XGetPointerMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned char* /* map_return */,
+ int /* nmap */
+#endif
+);
+
+extern void XGetScreenSaver(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int* /* timeout_return */,
+ int* /* interval_return */,
+ int* /* prefer_blanking_return */,
+ int* /* allow_exposures_return */
+#endif
+);
+
+extern Status XGetTransientForHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window* /* prop_window_return */
+#endif
+);
+
+extern int XGetWindowProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom /* property */,
+ long /* long_offset */,
+ long /* long_length */,
+ Bool /* delete */,
+ Atom /* req_type */,
+ Atom* /* actual_type_return */,
+ int* /* actual_format_return */,
+ unsigned long* /* nitems_return */,
+ unsigned long* /* bytes_after_return */,
+ unsigned char** /* prop_return */
+#endif
+);
+
+extern Status XGetWindowAttributes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XWindowAttributes* /* window_attributes_return */
+#endif
+);
+
+extern void XGrabButton(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ unsigned int /* event_mask */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Window /* confine_to */,
+ Cursor /* cursor */
+#endif
+);
+
+extern void XGrabKey(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* keycode */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */
+#endif
+);
+
+extern int XGrabKeyboard(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Time /* time */
+#endif
+);
+
+extern int XGrabPointer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* grab_window */,
+ Bool /* owner_events */,
+ unsigned int /* event_mask */,
+ int /* pointer_mode */,
+ int /* keyboard_mode */,
+ Window /* confine_to */,
+ Cursor /* cursor */,
+ Time /* time */
+#endif
+);
+
+extern void XGrabServer(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XHeightMMOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern int XHeightOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern void XIfEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event_return */,
+ Bool (*) (
+#if NeedNestedPrototypes
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+#endif
+ ) /* predicate */,
+ XPointer /* arg */
+#endif
+);
+
+extern int XImageByteOrder(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XInstallColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */
+#endif
+);
+
+extern KeyCode XKeysymToKeycode(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ KeySym /* keysym */
+#endif
+);
+
+extern void XKillClient(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* resource */
+#endif
+);
+
+extern unsigned long XLastKnownRequestProcessed(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern Status XLookupColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ _Xconst char* /* color_name */,
+ XColor* /* exact_def_return */,
+ XColor* /* screen_def_return */
+#endif
+);
+
+extern void XLowerWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XMapRaised(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XMapSubwindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XMapWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XMaskEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern int XMaxCmapsOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern int XMinCmapsOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern void XMoveResizeWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern void XMoveWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ int /* x */,
+ int /* y */
+#endif
+);
+
+extern void XNextEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern void XNoOp(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern Status XParseColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ _Xconst char* /* spec */,
+ XColor* /* exact_def_return */
+#endif
+);
+
+extern int XParseGeometry(
+#if NeedFunctionPrototypes
+ _Xconst char* /* parsestring */,
+ int* /* x_return */,
+ int* /* y_return */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+#endif
+);
+
+extern void XPeekEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern void XPeekIfEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event_return */,
+ Bool (*) (
+#if NeedNestedPrototypes
+ Display* /* display */,
+ XEvent* /* event */,
+ XPointer /* arg */
+#endif
+ ) /* predicate */,
+ XPointer /* arg */
+#endif
+);
+
+extern int XPending(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XPlanesOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+
+#endif
+);
+
+extern int XProtocolRevision(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern int XProtocolVersion(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+
+extern void XPutBackEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XEvent* /* event */
+#endif
+);
+
+extern void XPutImage(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ XImage* /* image */,
+ int /* src_x */,
+ int /* src_y */,
+ int /* dest_x */,
+ int /* dest_y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern int XQLength(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern Status XQueryBestCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+#endif
+);
+
+extern Status XQueryBestSize(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* class */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+#endif
+);
+
+extern Status XQueryBestStipple(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+#endif
+);
+
+extern Status XQueryBestTile(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* which_screen */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */
+#endif
+);
+
+extern void XQueryColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* def_in_out */
+#endif
+);
+
+extern void XQueryColors(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* defs_in_out */,
+ int /* ncolors */
+#endif
+);
+
+extern Bool XQueryExtension(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* name */,
+ int* /* major_opcode_return */,
+ int* /* first_event_return */,
+ int* /* first_error_return */
+#endif
+);
+
+extern void XQueryKeymap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ char [32] /* keys_return */
+#endif
+);
+
+extern Bool XQueryPointer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window* /* root_return */,
+ Window* /* child_return */,
+ int* /* root_x_return */,
+ int* /* root_y_return */,
+ int* /* win_x_return */,
+ int* /* win_y_return */,
+ unsigned int* /* mask_return */
+#endif
+);
+
+extern void XQueryTextExtents(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* font_ID */,
+ _Xconst char* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+#endif
+);
+
+extern void XQueryTextExtents16(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* font_ID */,
+ _Xconst XChar2b* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+#endif
+);
+
+extern Status XQueryTree(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window* /* root_return */,
+ Window* /* parent_return */,
+ Window** /* children_return */,
+ unsigned int* /* nchildren_return */
+#endif
+);
+
+extern void XRaiseWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern int XReadBitmapFile(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ _Xconst char* /* filename */,
+ unsigned int* /* width_return */,
+ unsigned int* /* height_return */,
+ Pixmap* /* bitmap_return */,
+ int* /* x_hot_return */,
+ int* /* y_hot_return */
+#endif
+);
+
+extern void XRebindKeysym(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ KeySym /* keysym */,
+ KeySym* /* list */,
+ int /* mod_count */,
+ _Xconst unsigned char* /* string */,
+ int /* bytes_string */
+#endif
+);
+
+extern void XRecolorCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Cursor /* cursor */,
+ XColor* /* foreground_color */,
+ XColor* /* background_color */
+#endif
+);
+
+extern void XRefreshKeyboardMapping(
+#if NeedFunctionPrototypes
+ XMappingEvent* /* event_map */
+#endif
+);
+
+extern void XRemoveFromSaveSet(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XRemoveHost(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XHostAddress* /* host */
+#endif
+);
+
+extern void XRemoveHosts(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XHostAddress* /* hosts */,
+ int /* num_hosts */
+#endif
+);
+
+extern void XReparentWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Window /* parent */,
+ int /* x */,
+ int /* y */
+#endif
+);
+
+extern void XResetScreenSaver(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XResizeWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern void XRestackWindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window* /* windows */,
+ int /* nwindows */
+#endif
+);
+
+extern void XRotateBuffers(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* rotate */
+#endif
+);
+
+extern void XRotateWindowProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Atom* /* properties */,
+ int /* num_prop */,
+ int /* npositions */
+#endif
+);
+
+extern int XScreenCount(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XSelectInput(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */
+#endif
+);
+
+extern Status XSendEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Bool /* propagate */,
+ long /* event_mask */,
+ XEvent* /* event_send */
+#endif
+);
+
+extern void XSetAccessControl(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* mode */
+#endif
+);
+
+extern void XSetArcMode(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* arc_mode */
+#endif
+);
+
+extern void XSetBackground(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* background */
+#endif
+);
+
+extern void XSetClipMask(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* pixmap */
+#endif
+);
+
+extern void XSetClipOrigin(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* clip_x_origin */,
+ int /* clip_y_origin */
+#endif
+);
+
+extern void XSetClipRectangles(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* clip_x_origin */,
+ int /* clip_y_origin */,
+ XRectangle* /* rectangles */,
+ int /* n */,
+ int /* ordering */
+#endif
+);
+
+extern void XSetCloseDownMode(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* close_mode */
+#endif
+);
+
+extern void XSetCommand(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ char** /* argv */,
+ int /* argc */
+#endif
+);
+
+extern void XSetDashes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* dash_offset */,
+ _Xconst char* /* dash_list */,
+ int /* n */
+#endif
+);
+
+extern void XSetFillRule(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* fill_rule */
+#endif
+);
+
+extern void XSetFillStyle(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* fill_style */
+#endif
+);
+
+extern void XSetFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Font /* font */
+#endif
+);
+
+extern void XSetFontPath(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ char** /* directories */,
+ int /* ndirs */
+#endif
+);
+
+extern void XSetForeground(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* foreground */
+#endif
+);
+
+extern void XSetFunction(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* function */
+#endif
+);
+
+extern void XSetGraphicsExposures(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Bool /* graphics_exposures */
+#endif
+);
+
+extern void XSetIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* icon_name */
+#endif
+);
+
+extern void XSetInputFocus(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* focus */,
+ int /* revert_to */,
+ Time /* time */
+#endif
+);
+
+extern void XSetLineAttributes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned int /* line_width */,
+ int /* line_style */,
+ int /* cap_style */,
+ int /* join_style */
+#endif
+);
+
+extern int XSetModifierMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XModifierKeymap* /* modmap */
+#endif
+);
+
+extern void XSetPlaneMask(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* plane_mask */
+#endif
+);
+
+extern int XSetPointerMapping(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst unsigned char* /* map */,
+ int /* nmap */
+#endif
+);
+
+extern void XSetScreenSaver(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* timeout */,
+ int /* interval */,
+ int /* prefer_blanking */,
+ int /* allow_exposures */
+#endif
+);
+
+extern void XSetSelectionOwner(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Atom /* selection */,
+ Window /* owner */,
+ Time /* time */
+#endif
+);
+
+extern void XSetState(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ unsigned long /* foreground */,
+ unsigned long /* background */,
+ int /* function */,
+ unsigned long /* plane_mask */
+#endif
+);
+
+extern void XSetStipple(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* stipple */
+#endif
+);
+
+extern void XSetSubwindowMode(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* subwindow_mode */
+#endif
+);
+
+extern void XSetTSOrigin(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ int /* ts_x_origin */,
+ int /* ts_y_origin */
+#endif
+);
+
+extern void XSetTile(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Pixmap /* tile */
+#endif
+);
+
+extern void XSetWindowBackground(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* background_pixel */
+#endif
+);
+
+extern void XSetWindowBackgroundPixmap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Pixmap /* background_pixmap */
+#endif
+);
+
+extern void XSetWindowBorder(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned long /* border_pixel */
+#endif
+);
+
+extern void XSetWindowBorderPixmap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Pixmap /* border_pixmap */
+#endif
+);
+
+extern void XSetWindowBorderWidth(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ unsigned int /* width */
+#endif
+);
+
+extern void XSetWindowColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ Colormap /* colormap */
+#endif
+);
+
+extern void XStoreBuffer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* bytes */,
+ int /* nbytes */,
+ int /* buffer */
+#endif
+);
+
+extern void XStoreBytes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* bytes */,
+ int /* nbytes */
+#endif
+);
+
+extern void XStoreColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* color */
+#endif
+);
+
+extern void XStoreColors(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ XColor* /* color */,
+ int /* ncolors */
+#endif
+);
+
+extern void XStoreName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */
+#endif
+);
+
+extern void XStoreNamedColor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */,
+ _Xconst char* /* color */,
+ unsigned long /* pixel */,
+ int /* flags */
+#endif
+);
+
+extern void XSync(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Bool /* discard */
+#endif
+);
+
+extern void XTextExtents(
+#if NeedFunctionPrototypes
+ XFontStruct* /* font_struct */,
+ _Xconst char* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+#endif
+);
+
+extern void XTextExtents16(
+#if NeedFunctionPrototypes
+ XFontStruct* /* font_struct */,
+ _Xconst XChar2b* /* string */,
+ int /* nchars */,
+ int* /* direction_return */,
+ int* /* font_ascent_return */,
+ int* /* font_descent_return */,
+ XCharStruct* /* overall_return */
+#endif
+);
+
+extern int XTextWidth(
+#if NeedFunctionPrototypes
+ XFontStruct* /* font_struct */,
+ _Xconst char* /* string */,
+ int /* count */
+#endif
+);
+
+extern int XTextWidth16(
+#if NeedFunctionPrototypes
+ XFontStruct* /* font_struct */,
+ _Xconst XChar2b* /* string */,
+ int /* count */
+#endif
+);
+
+extern Bool XTranslateCoordinates(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* src_w */,
+ Window /* dest_w */,
+ int /* src_x */,
+ int /* src_y */,
+ int* /* dest_x_return */,
+ int* /* dest_y_return */,
+ Window* /* child_return */
+#endif
+);
+
+extern void XUndefineCursor(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XUngrabButton(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ unsigned int /* button */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */
+#endif
+);
+
+extern void XUngrabKey(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* keycode */,
+ unsigned int /* modifiers */,
+ Window /* grab_window */
+#endif
+);
+
+extern void XUngrabKeyboard(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Time /* time */
+#endif
+);
+
+extern void XUngrabPointer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Time /* time */
+#endif
+);
+
+extern void XUngrabServer(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XUninstallColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Colormap /* colormap */
+#endif
+);
+
+extern void XUnloadFont(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Font /* font */
+#endif
+);
+
+extern void XUnmapSubwindows(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern void XUnmapWindow(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern int XVendorRelease(
+#if NeedFunctionPrototypes
+ Display* /* display */
+#endif
+);
+
+extern void XWarpPointer(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* src_w */,
+ Window /* dest_w */,
+ int /* src_x */,
+ int /* src_y */,
+ unsigned int /* src_width */,
+ unsigned int /* src_height */,
+ int /* dest_x */,
+ int /* dest_y */
+#endif
+);
+
+extern int XWidthMMOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern int XWidthOfScreen(
+#if NeedFunctionPrototypes
+ Screen* /* screen */
+#endif
+);
+
+extern void XWindowEvent(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ long /* event_mask */,
+ XEvent* /* event_return */
+#endif
+);
+
+extern int XWriteBitmapFile(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* filename */,
+ Pixmap /* bitmap */,
+ unsigned int /* width */,
+ unsigned int /* height */,
+ int /* x_hot */,
+ int /* y_hot */
+#endif
+);
+
+extern Bool XSupportsLocale(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern char *XSetLocaleModifiers(
+#if NeedFunctionPrototypes
+ _Xconst char* /* modifier_list */
+#endif
+);
+
+extern XFontSet XCreateFontSet(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ _Xconst char* /* base_font_name_list */,
+ char*** /* missing_charset_list */,
+ int* /* missing_charset_count */,
+ char** /* def_string */
+#endif
+);
+
+extern void XFreeFontSet(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XFontSet /* font_set */
+#endif
+);
+
+extern int XFontsOfFontSet(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ XFontStruct*** /* font_struct_list */,
+ char*** /* font_name_list */
+#endif
+);
+
+extern char *XBaseFontNameListOfFontSet(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */
+#endif
+);
+
+extern char *XLocaleOfFontSet(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */
+#endif
+);
+
+extern Bool XContextDependentDrawing(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */
+#endif
+);
+
+extern XFontSetExtents *XExtentsOfFontSet(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */
+#endif
+);
+
+extern int XmbTextEscapement(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
+extern int XwcTextEscapement(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ wchar_t* /* text */,
+ int /* num_wchars */
+#endif
+);
+
+extern int XmbTextExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
+extern int XwcTextExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ wchar_t* /* text */,
+ int /* num_wchars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
+extern Status XmbTextPerCharExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ _Xconst char* /* text */,
+ int /* bytes_text */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
+extern Status XwcTextPerCharExtents(
+#if NeedFunctionPrototypes
+ XFontSet /* font_set */,
+ wchar_t* /* text */,
+ int /* num_wchars */,
+ XRectangle* /* ink_extents_buffer */,
+ XRectangle* /* logical_extents_buffer */,
+ int /* buffer_size */,
+ int* /* num_chars */,
+ XRectangle* /* overall_ink_return */,
+ XRectangle* /* overall_logical_return */
+#endif
+);
+
+extern void XmbDrawText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XmbTextItem* /* text_items */,
+ int /* nitems */
+#endif
+);
+
+extern void XwcDrawText(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ XwcTextItem* /* text_items */,
+ int /* nitems */
+#endif
+);
+
+extern void XmbDrawString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
+extern void XwcDrawString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ wchar_t* /* text */,
+ int /* num_wchars */
+#endif
+);
+
+extern void XmbDrawImageString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ _Xconst char* /* text */,
+ int /* bytes_text */
+#endif
+);
+
+extern void XwcDrawImageString(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Drawable /* d */,
+ XFontSet /* font_set */,
+ GC /* gc */,
+ int /* x */,
+ int /* y */,
+ wchar_t* /* text */,
+ int /* num_wchars */
+#endif
+);
+
+extern XIM XOpenIM(
+#if NeedFunctionPrototypes
+ Display* /* dpy */,
+ struct _XrmHashBucketRec* /* rdb */,
+ char* /* res_name */,
+ char* /* res_class */
+#endif
+);
+
+extern Status XCloseIM(
+#if NeedFunctionPrototypes
+ XIM /* im */
+#endif
+);
+
+extern char *XGetIMValues(
+#if NeedVarargsPrototypes
+ XIM /* im */, ...
+#endif
+);
+
+extern Display *XDisplayOfIM(
+#if NeedFunctionPrototypes
+ XIM /* im */
+#endif
+);
+
+extern char *XLocaleOfIM(
+#if NeedFunctionPrototypes
+ XIM /* im*/
+#endif
+);
+
+extern XIC XCreateIC(
+#if NeedVarargsPrototypes
+ XIM /* im */, ...
+#endif
+);
+
+extern void XDestroyIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern void XSetICFocus(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern void XUnsetICFocus(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern wchar_t *XwcResetIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern char *XmbResetIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern char *XSetICValues(
+#if NeedVarargsPrototypes
+ XIC /* ic */, ...
+#endif
+);
+
+extern char *XGetICValues(
+#if NeedVarargsPrototypes
+ XIC /* ic */, ...
+#endif
+);
+
+extern XIM XIMOfIC(
+#if NeedFunctionPrototypes
+ XIC /* ic */
+#endif
+);
+
+extern Bool XFilterEvent(
+#if NeedFunctionPrototypes
+ XEvent* /* event */,
+ Window /* window */
+#endif
+);
+
+extern int XmbLookupString(
+#if NeedFunctionPrototypes
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ Status* /* status_return */
+#endif
+);
+
+extern int XwcLookupString(
+#if NeedFunctionPrototypes
+ XIC /* ic */,
+ XKeyPressedEvent* /* event */,
+ wchar_t* /* buffer_return */,
+ int /* wchars_buffer */,
+ KeySym* /* keysym_return */,
+ Status* /* status_return */
+#endif
+);
+
+extern XVaNestedList XVaCreateNestedList(
+#if NeedVarargsPrototypes
+ int /*unused*/, ...
+#endif
+);
+
+_XFUNCPROTOEND
+
+#ifdef MAC_TCL
+# undef Cursor
+# undef Region
+#endif
+
+#endif /* _XLIB_H_ */
diff --git a/xlib/X11/Xutil.h b/xlib/X11/Xutil.h
new file mode 100644
index 0000000..6332850
--- /dev/null
+++ b/xlib/X11/Xutil.h
@@ -0,0 +1,879 @@
+/* $XConsortium: Xutil.h,v 11.73 91/07/30 16:21:37 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#ifndef _XUTIL_H_
+#define _XUTIL_H_
+
+/* You must include <X11/Xlib.h> before including this file */
+
+#ifdef MAC_TCL
+# define Region XRegion
+#endif
+
+/*
+ * Bitmask returned by XParseGeometry(). Each bit tells if the corresponding
+ * value (x, y, width, height) was found in the parsed string.
+ */
+#define NoValue 0x0000
+#define XValue 0x0001
+#define YValue 0x0002
+#define WidthValue 0x0004
+#define HeightValue 0x0008
+#define AllValues 0x000F
+#define XNegative 0x0010
+#define YNegative 0x0020
+
+/*
+ * new version containing base_width, base_height, and win_gravity fields;
+ * used with WM_NORMAL_HINTS.
+ */
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ int x, y; /* obsolete for new window mgrs, but clients */
+ int width, height; /* should set so old wm's don't mess up */
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+ struct {
+ int x; /* numerator */
+ int y; /* denominator */
+ } min_aspect, max_aspect;
+ int base_width, base_height; /* added by ICCCM version 1 */
+ int win_gravity; /* added by ICCCM version 1 */
+} XSizeHints;
+
+/*
+ * The next block of definitions are for window manager properties that
+ * clients and applications use for communication.
+ */
+
+/* flags argument in size hints */
+#define USPosition (1L << 0) /* user specified x, y */
+#define USSize (1L << 1) /* user specified width, height */
+
+#define PPosition (1L << 2) /* program specified position */
+#define PSize (1L << 3) /* program specified size */
+#define PMinSize (1L << 4) /* program specified minimum size */
+#define PMaxSize (1L << 5) /* program specified maximum size */
+#define PResizeInc (1L << 6) /* program specified resize increments */
+#define PAspect (1L << 7) /* program specified min and max aspect ratios */
+#define PBaseSize (1L << 8) /* program specified base for incrementing */
+#define PWinGravity (1L << 9) /* program specified window gravity */
+
+/* obsolete */
+#define PAllHints (PPosition|PSize|PMinSize|PMaxSize|PResizeInc|PAspect)
+
+
+
+typedef struct {
+ long flags; /* marks which fields in this structure are defined */
+ Bool input; /* does this application rely on the window manager to
+ get keyboard input? */
+ int initial_state; /* see below */
+ Pixmap icon_pixmap; /* pixmap to be used as icon */
+ Window icon_window; /* window to be used as icon */
+ int icon_x, icon_y; /* initial position of icon */
+ Pixmap icon_mask; /* icon mask bitmap */
+ XID window_group; /* id of related window group */
+ /* this structure may be extended in the future */
+} XWMHints;
+
+/* definition for flags of XWMHints */
+
+#define InputHint (1L << 0)
+#define StateHint (1L << 1)
+#define IconPixmapHint (1L << 2)
+#define IconWindowHint (1L << 3)
+#define IconPositionHint (1L << 4)
+#define IconMaskHint (1L << 5)
+#define WindowGroupHint (1L << 6)
+#define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint| \
+IconPositionHint|IconMaskHint|WindowGroupHint)
+
+/* definitions for initial window state */
+#define WithdrawnState 0 /* for windows that are not mapped */
+#define NormalState 1 /* most applications want to start this way */
+#define IconicState 3 /* application wants to start as an icon */
+
+/*
+ * Obsolete states no longer defined by ICCCM
+ */
+#define DontCareState 0 /* don't know or care */
+#define ZoomState 2 /* application wants to start zoomed */
+#define InactiveState 4 /* application believes it is seldom used; */
+ /* some wm's may put it on inactive menu */
+
+
+/*
+ * new structure for manipulating TEXT properties; used with WM_NAME,
+ * WM_ICON_NAME, WM_CLIENT_MACHINE, and WM_COMMAND.
+ */
+typedef struct {
+ unsigned char *value; /* same as Property routines */
+ Atom encoding; /* prop type */
+ int format; /* prop data format: 8, 16, or 32 */
+ unsigned long nitems; /* number of data items in value */
+} XTextProperty;
+
+#define XNoMemory -1
+#define XLocaleNotSupported -2
+#define XConverterNotFound -3
+
+typedef enum {
+ XStringStyle, /* STRING */
+ XCompoundTextStyle, /* COMPOUND_TEXT */
+ XTextStyle, /* text in owner's encoding (current locale)*/
+ XStdICCTextStyle /* STRING, else COMPOUND_TEXT */
+} XICCEncodingStyle;
+
+typedef struct {
+ int min_width, min_height;
+ int max_width, max_height;
+ int width_inc, height_inc;
+} XIconSize;
+
+typedef struct {
+ char *res_name;
+ char *res_class;
+} XClassHint;
+
+/*
+ * These macros are used to give some sugar to the image routines so that
+ * naive people are more comfortable with them.
+ */
+#define XDestroyImage(ximage) \
+ ((*((ximage)->f.destroy_image))((ximage)))
+#define XGetPixel(ximage, x, y) \
+ ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
+#define XPutPixel(ximage, x, y, pixel) \
+ ((*((ximage)->f.put_pixel))((ximage), (x), (y), (pixel)))
+#define XSubImage(ximage, x, y, width, height) \
+ ((*((ximage)->f.sub_image))((ximage), (x), (y), (width), (height)))
+#define XAddPixel(ximage, value) \
+ ((*((ximage)->f.add_pixel))((ximage), (value)))
+
+/*
+ * Compose sequence status structure, used in calling XLookupString.
+ */
+typedef struct _XComposeStatus {
+ XPointer compose_ptr; /* state table pointer */
+ int chars_matched; /* match state */
+} XComposeStatus;
+
+/*
+ * Keysym macros, used on Keysyms to test for classes of symbols
+ */
+#define IsKeypadKey(keysym) \
+ (((unsigned)(keysym) >= XK_KP_Space) && ((unsigned)(keysym) <= XK_KP_Equal))
+
+#define IsCursorKey(keysym) \
+ (((unsigned)(keysym) >= XK_Home) && ((unsigned)(keysym) < XK_Select))
+
+#define IsPFKey(keysym) \
+ (((unsigned)(keysym) >= XK_KP_F1) && ((unsigned)(keysym) <= XK_KP_F4))
+
+#define IsFunctionKey(keysym) \
+ (((unsigned)(keysym) >= XK_F1) && ((unsigned)(keysym) <= XK_F35))
+
+#define IsMiscFunctionKey(keysym) \
+ (((unsigned)(keysym) >= XK_Select) && ((unsigned)(keysym) <= XK_Break))
+
+#define IsModifierKey(keysym) \
+ ((((unsigned)(keysym) >= XK_Shift_L) && ((unsigned)(keysym) <= XK_Hyper_R)) \
+ || ((unsigned)(keysym) == XK_Mode_switch) \
+ || ((unsigned)(keysym) == XK_Num_Lock))
+/*
+ * opaque reference to Region data type
+ */
+typedef struct _XRegion *Region;
+
+/* Return values from XRectInRegion() */
+
+#define RectangleOut 0
+#define RectangleIn 1
+#define RectanglePart 2
+
+
+/*
+ * Information used by the visual utility routines to find desired visual
+ * type from the many visuals a display may support.
+ */
+
+typedef struct {
+ Visual *visual;
+ VisualID visualid;
+ int screen;
+ int depth;
+#if defined(__cplusplus) || defined(c_plusplus)
+ int c_class; /* C++ */
+#else
+ int class;
+#endif
+ unsigned long red_mask;
+ unsigned long green_mask;
+ unsigned long blue_mask;
+ int colormap_size;
+ int bits_per_rgb;
+} XVisualInfo;
+
+#define VisualNoMask 0x0
+#define VisualIDMask 0x1
+#define VisualScreenMask 0x2
+#define VisualDepthMask 0x4
+#define VisualClassMask 0x8
+#define VisualRedMaskMask 0x10
+#define VisualGreenMaskMask 0x20
+#define VisualBlueMaskMask 0x40
+#define VisualColormapSizeMask 0x80
+#define VisualBitsPerRGBMask 0x100
+#define VisualAllMask 0x1FF
+
+/*
+ * This defines a window manager property that clients may use to
+ * share standard color maps of type RGB_COLOR_MAP:
+ */
+typedef struct {
+ Colormap colormap;
+ unsigned long red_max;
+ unsigned long red_mult;
+ unsigned long green_max;
+ unsigned long green_mult;
+ unsigned long blue_max;
+ unsigned long blue_mult;
+ unsigned long base_pixel;
+ VisualID visualid; /* added by ICCCM version 1 */
+ XID killid; /* added by ICCCM version 1 */
+} XStandardColormap;
+
+#define ReleaseByFreeingColormap ((XID) 1L) /* for killid field above */
+
+
+/*
+ * return codes for XReadBitmapFile and XWriteBitmapFile
+ */
+#define BitmapSuccess 0
+#define BitmapOpenFailed 1
+#define BitmapFileInvalid 2
+#define BitmapNoMemory 3
+
+/****************************************************************
+ *
+ * Context Management
+ *
+ ****************************************************************/
+
+
+/* Associative lookup table return codes */
+
+#define XCSUCCESS 0 /* No error. */
+#define XCNOMEM 1 /* Out of memory */
+#define XCNOENT 2 /* No entry in table */
+
+typedef int XContext;
+
+#define XUniqueContext() ((XContext) XrmUniqueQuark())
+#define XStringToContext(string) ((XContext) XrmStringToQuark(string))
+
+_XFUNCPROTOBEGIN
+
+/* The following declarations are alphabetized. */
+
+extern XClassHint *XAllocClassHint (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XIconSize *XAllocIconSize (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XSizeHints *XAllocSizeHints (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XStandardColormap *XAllocStandardColormap (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern XWMHints *XAllocWMHints (
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern void XClipBox(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ XRectangle* /* rect_return */
+#endif
+);
+
+extern Region XCreateRegion(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern char *XDefaultString(
+#if NeedFunctionPrototypes
+ void
+#endif
+);
+
+extern int XDeleteContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */
+#endif
+);
+
+extern void XDestroyRegion(
+#if NeedFunctionPrototypes
+ Region /* r */
+#endif
+);
+
+extern void XEmptyRegion(
+#if NeedFunctionPrototypes
+ Region /* r */
+#endif
+);
+
+extern void XEqualRegion(
+#if NeedFunctionPrototypes
+ Region /* r1 */,
+ Region /* r2 */
+#endif
+);
+
+extern int XFindContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ XPointer* /* data_return */
+#endif
+);
+
+extern Status XGetClassHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints_return */
+#endif
+);
+
+extern Status XGetIconSizes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XIconSize** /* size_list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern Status XGetNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */
+#endif
+);
+
+extern Status XGetRGBColormaps(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap** /* stdcmap_return */,
+ int* /* count_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetStandardColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* window */,
+ XTextProperty* /* text_prop_return */,
+ Atom /* property */
+#endif
+);
+
+extern XVisualInfo *XGetVisualInfo(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ long /* vinfo_mask */,
+ XVisualInfo* /* vinfo_template */,
+ int* /* nitems_return */
+#endif
+);
+
+extern Status XGetWMClientMachine(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern XWMHints *XGetWMHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */
+#endif
+);
+
+extern Status XGetWMIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern Status XGetWMName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern Status XGetWMNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */
+#endif
+);
+
+extern Status XGetWMSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints_return */,
+ long* /* supplied_return */,
+ Atom /* property */
+#endif
+);
+
+extern Status XGetZoomHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints_return */
+#endif
+);
+
+extern void XIntersectRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XLookupString(
+#if NeedFunctionPrototypes
+ XKeyEvent* /* event_struct */,
+ char* /* buffer_return */,
+ int /* bytes_buffer */,
+ KeySym* /* keysym_return */,
+ XComposeStatus* /* status_in_out */
+#endif
+);
+
+extern Status XMatchVisualInfo(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen */,
+ int /* depth */,
+ int /* class */,
+ XVisualInfo* /* vinfo_return */
+#endif
+);
+
+extern void XOffsetRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+#endif
+);
+
+extern Bool XPointInRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* x */,
+ int /* y */
+#endif
+);
+
+extern Region XPolygonRegion(
+#if NeedFunctionPrototypes
+ XPoint* /* points */,
+ int /* n */,
+ int /* fill_rule */
+#endif
+);
+
+extern int XRectInRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* x */,
+ int /* y */,
+ unsigned int /* width */,
+ unsigned int /* height */
+#endif
+);
+
+extern int XSaveContext(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XID /* rid */,
+ XContext /* context */,
+ _Xconst char* /* data */
+#endif
+);
+
+extern void XSetClassHint(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XSetIconSizes(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XIconSize* /* size_list */,
+ int /* count */
+#endif
+);
+
+extern void XSetNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetRGBColormaps(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* stdcmaps */,
+ int /* count */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetStandardProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ Pixmap /* icon_pixmap */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetWMClientMachine(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
+extern void XSetWMHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XWMHints* /* wm_hints */
+#endif
+);
+
+extern void XSetWMIconName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
+extern void XSetWMName(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* text_prop */
+#endif
+);
+
+extern void XSetWMNormalHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */
+#endif
+);
+
+extern void XSetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XTextProperty* /* window_name */,
+ XTextProperty* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XmbSetWMProperties(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ _Xconst char* /* window_name */,
+ _Xconst char* /* icon_name */,
+ char** /* argv */,
+ int /* argc */,
+ XSizeHints* /* normal_hints */,
+ XWMHints* /* wm_hints */,
+ XClassHint* /* class_hints */
+#endif
+);
+
+extern void XSetWMSizeHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* hints */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetRegion(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ GC /* gc */,
+ Region /* r */
+#endif
+);
+
+extern void XSetStandardColormap(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XStandardColormap* /* colormap */,
+ Atom /* property */
+#endif
+);
+
+extern void XSetZoomHints(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ Window /* w */,
+ XSizeHints* /* zhints */
+#endif
+);
+
+extern void XShrinkRegion(
+#if NeedFunctionPrototypes
+ Region /* r */,
+ int /* dx */,
+ int /* dy */
+#endif
+);
+
+extern Status XStringListToTextProperty(
+#if NeedFunctionPrototypes
+ char** /* list */,
+ int /* count */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern void XSubtractRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XmbTextListToTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ char** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern int XwcTextListToTextProperty(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ wchar_t** /* list */,
+ int /* count */,
+ XICCEncodingStyle /* style */,
+ XTextProperty* /* text_prop_return */
+#endif
+);
+
+extern void XwcFreeStringList(
+#if NeedFunctionPrototypes
+ wchar_t** /* list */
+#endif
+);
+
+extern Status XTextPropertyToStringList(
+#if NeedFunctionPrototypes
+ XTextProperty* /* text_prop */,
+ char*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern int XmbTextPropertyToTextList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XTextProperty* /* text_prop */,
+ char*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern int XwcTextPropertyToTextList(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ XTextProperty* /* text_prop */,
+ wchar_t*** /* list_return */,
+ int* /* count_return */
+#endif
+);
+
+extern void XUnionRectWithRegion(
+#if NeedFunctionPrototypes
+ XRectangle* /* rectangle */,
+ Region /* src_region */,
+ Region /* dest_region_return */
+#endif
+);
+
+extern void XUnionRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+extern int XWMGeometry(
+#if NeedFunctionPrototypes
+ Display* /* display */,
+ int /* screen_number */,
+ _Xconst char* /* user_geometry */,
+ _Xconst char* /* default_geometry */,
+ unsigned int /* border_width */,
+ XSizeHints* /* hints */,
+ int* /* x_return */,
+ int* /* y_return */,
+ int* /* width_return */,
+ int* /* height_return */,
+ int* /* gravity_return */
+#endif
+);
+
+extern void XXorRegion(
+#if NeedFunctionPrototypes
+ Region /* sra */,
+ Region /* srb */,
+ Region /* dr_return */
+#endif
+);
+
+_XFUNCPROTOEND
+
+#ifdef MAC_TCL
+# undef Region
+#endif
+
+#endif /* _XUTIL_H_ */
diff --git a/xlib/X11/cursorfont.h b/xlib/X11/cursorfont.h
new file mode 100644
index 0000000..617274f
--- /dev/null
+++ b/xlib/X11/cursorfont.h
@@ -0,0 +1,79 @@
+/* $XConsortium: cursorfont.h,v 1.2 88/09/06 16:44:27 jim Exp $ */
+#define XC_num_glyphs 154
+#define XC_X_cursor 0
+#define XC_arrow 2
+#define XC_based_arrow_down 4
+#define XC_based_arrow_up 6
+#define XC_boat 8
+#define XC_bogosity 10
+#define XC_bottom_left_corner 12
+#define XC_bottom_right_corner 14
+#define XC_bottom_side 16
+#define XC_bottom_tee 18
+#define XC_box_spiral 20
+#define XC_center_ptr 22
+#define XC_circle 24
+#define XC_clock 26
+#define XC_coffee_mug 28
+#define XC_cross 30
+#define XC_cross_reverse 32
+#define XC_crosshair 34
+#define XC_diamond_cross 36
+#define XC_dot 38
+#define XC_dotbox 40
+#define XC_double_arrow 42
+#define XC_draft_large 44
+#define XC_draft_small 46
+#define XC_draped_box 48
+#define XC_exchange 50
+#define XC_fleur 52
+#define XC_gobbler 54
+#define XC_gumby 56
+#define XC_hand1 58
+#define XC_hand2 60
+#define XC_heart 62
+#define XC_icon 64
+#define XC_iron_cross 66
+#define XC_left_ptr 68
+#define XC_left_side 70
+#define XC_left_tee 72
+#define XC_leftbutton 74
+#define XC_ll_angle 76
+#define XC_lr_angle 78
+#define XC_man 80
+#define XC_middlebutton 82
+#define XC_mouse 84
+#define XC_pencil 86
+#define XC_pirate 88
+#define XC_plus 90
+#define XC_question_arrow 92
+#define XC_right_ptr 94
+#define XC_right_side 96
+#define XC_right_tee 98
+#define XC_rightbutton 100
+#define XC_rtl_logo 102
+#define XC_sailboat 104
+#define XC_sb_down_arrow 106
+#define XC_sb_h_double_arrow 108
+#define XC_sb_left_arrow 110
+#define XC_sb_right_arrow 112
+#define XC_sb_up_arrow 114
+#define XC_sb_v_double_arrow 116
+#define XC_shuttle 118
+#define XC_sizing 120
+#define XC_spider 122
+#define XC_spraycan 124
+#define XC_star 126
+#define XC_target 128
+#define XC_tcross 130
+#define XC_top_left_arrow 132
+#define XC_top_left_corner 134
+#define XC_top_right_corner 136
+#define XC_top_side 138
+#define XC_top_tee 140
+#define XC_trek 142
+#define XC_ul_angle 144
+#define XC_umbrella 146
+#define XC_ur_angle 148
+#define XC_watch 150
+#define XC_xterm 152
diff --git a/xlib/X11/keysym.h b/xlib/X11/keysym.h
new file mode 100644
index 0000000..027afe0
--- /dev/null
+++ b/xlib/X11/keysym.h
@@ -0,0 +1,39 @@
+/* $XConsortium: keysym.h,v 1.13 91/03/13 20:09:49 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+/* default keysyms */
+#define XK_MISCELLANY
+#define XK_LATIN1
+#define XK_LATIN2
+#define XK_LATIN3
+#define XK_LATIN4
+#define XK_GREEK
+
+#ifdef MAC_TCL
+#include <keysymdef.h>
+#else
+#include <X11/keysymdef.h>
+#endif
diff --git a/xlib/X11/keysymdef.h b/xlib/X11/keysymdef.h
new file mode 100644
index 0000000..2c6d4a7
--- /dev/null
+++ b/xlib/X11/keysymdef.h
@@ -0,0 +1,1164 @@
+/* $XConsortium: keysymdef.h,v 1.15 93/04/02 10:57:36 rws Exp $ */
+
+/***********************************************************
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital or MIT not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+
+#define XK_VoidSymbol 0xFFFFFF /* void symbol */
+
+#ifdef XK_MISCELLANY
+/*
+ * TTY Functions, cleverly chosen to map to ascii, for convenience of
+ * programming, but could have been arbitrary (at the cost of lookup
+ * tables in client code.
+ */
+
+#define XK_BackSpace 0xFF08 /* back space, back char */
+#define XK_Tab 0xFF09
+#define XK_Linefeed 0xFF0A /* Linefeed, LF */
+#define XK_Clear 0xFF0B
+#define XK_Return 0xFF0D /* Return, enter */
+#define XK_Pause 0xFF13 /* Pause, hold */
+#define XK_Scroll_Lock 0xFF14
+#define XK_Sys_Req 0xFF15
+#define XK_Escape 0xFF1B
+#define XK_Delete 0xFFFF /* Delete, rubout */
+
+
+
+/* International & multi-key character composition */
+
+#define XK_Multi_key 0xFF20 /* Multi-key character compose */
+
+/* Japanese keyboard support */
+
+#define XK_Kanji 0xFF21 /* Kanji, Kanji convert */
+#define XK_Muhenkan 0xFF22 /* Cancel Conversion */
+#define XK_Henkan_Mode 0xFF23 /* Start/Stop Conversion */
+#define XK_Henkan 0xFF23 /* Alias for Henkan_Mode */
+#define XK_Romaji 0xFF24 /* to Romaji */
+#define XK_Hiragana 0xFF25 /* to Hiragana */
+#define XK_Katakana 0xFF26 /* to Katakana */
+#define XK_Hiragana_Katakana 0xFF27 /* Hiragana/Katakana toggle */
+#define XK_Zenkaku 0xFF28 /* to Zenkaku */
+#define XK_Hankaku 0xFF29 /* to Hankaku */
+#define XK_Zenkaku_Hankaku 0xFF2A /* Zenkaku/Hankaku toggle */
+#define XK_Touroku 0xFF2B /* Add to Dictionary */
+#define XK_Massyo 0xFF2C /* Delete from Dictionary */
+#define XK_Kana_Lock 0xFF2D /* Kana Lock */
+#define XK_Kana_Shift 0xFF2E /* Kana Shift */
+#define XK_Eisu_Shift 0xFF2F /* Alphanumeric Shift */
+#define XK_Eisu_toggle 0xFF30 /* Alphanumeric toggle */
+
+/* Cursor control & motion */
+
+#define XK_Home 0xFF50
+#define XK_Left 0xFF51 /* Move left, left arrow */
+#define XK_Up 0xFF52 /* Move up, up arrow */
+#define XK_Right 0xFF53 /* Move right, right arrow */
+#define XK_Down 0xFF54 /* Move down, down arrow */
+#define XK_Prior 0xFF55 /* Prior, previous */
+#define XK_Page_Up 0xFF55
+#define XK_Next 0xFF56 /* Next */
+#define XK_Page_Down 0xFF56
+#define XK_End 0xFF57 /* EOL */
+#define XK_Begin 0xFF58 /* BOL */
+
+
+/* Misc Functions */
+
+#define XK_Select 0xFF60 /* Select, mark */
+#define XK_Print 0xFF61
+#define XK_Execute 0xFF62 /* Execute, run, do */
+#define XK_Insert 0xFF63 /* Insert, insert here */
+#define XK_Undo 0xFF65 /* Undo, oops */
+#define XK_Redo 0xFF66 /* redo, again */
+#define XK_Menu 0xFF67
+#define XK_Find 0xFF68 /* Find, search */
+#define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */
+#define XK_Help 0xFF6A /* Help, ? */
+#define XK_Break 0xFF6B
+#define XK_Mode_switch 0xFF7E /* Character set switch */
+#define XK_script_switch 0xFF7E /* Alias for mode_switch */
+#define XK_Num_Lock 0xFF7F
+
+/* Keypad Functions, keypad numbers cleverly chosen to map to ascii */
+
+#define XK_KP_Space 0xFF80 /* space */
+#define XK_KP_Tab 0xFF89
+#define XK_KP_Enter 0xFF8D /* enter */
+#define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */
+#define XK_KP_F2 0xFF92
+#define XK_KP_F3 0xFF93
+#define XK_KP_F4 0xFF94
+#define XK_KP_Home 0xFF95
+#define XK_KP_Left 0xFF96
+#define XK_KP_Up 0xFF97
+#define XK_KP_Right 0xFF98
+#define XK_KP_Down 0xFF99
+#define XK_KP_Prior 0xFF9A
+#define XK_KP_Page_Up 0xFF9A
+#define XK_KP_Next 0xFF9B
+#define XK_KP_Page_Down 0xFF9B
+#define XK_KP_End 0xFF9C
+#define XK_KP_Begin 0xFF9D
+#define XK_KP_Insert 0xFF9E
+#define XK_KP_Delete 0xFF9F
+#define XK_KP_Equal 0xFFBD /* equals */
+#define XK_KP_Multiply 0xFFAA
+#define XK_KP_Add 0xFFAB
+#define XK_KP_Separator 0xFFAC /* separator, often comma */
+#define XK_KP_Subtract 0xFFAD
+#define XK_KP_Decimal 0xFFAE
+#define XK_KP_Divide 0xFFAF
+
+#define XK_KP_0 0xFFB0
+#define XK_KP_1 0xFFB1
+#define XK_KP_2 0xFFB2
+#define XK_KP_3 0xFFB3
+#define XK_KP_4 0xFFB4
+#define XK_KP_5 0xFFB5
+#define XK_KP_6 0xFFB6
+#define XK_KP_7 0xFFB7
+#define XK_KP_8 0xFFB8
+#define XK_KP_9 0xFFB9
+
+
+
+/*
+ * Auxilliary Functions; note the duplicate definitions for left and right
+ * function keys; Sun keyboards and a few other manufactures have such
+ * function key groups on the left and/or right sides of the keyboard.
+ * We've not found a keyboard with more than 35 function keys total.
+ */
+
+#define XK_F1 0xFFBE
+#define XK_F2 0xFFBF
+#define XK_F3 0xFFC0
+#define XK_F4 0xFFC1
+#define XK_F5 0xFFC2
+#define XK_F6 0xFFC3
+#define XK_F7 0xFFC4
+#define XK_F8 0xFFC5
+#define XK_F9 0xFFC6
+#define XK_F10 0xFFC7
+#define XK_F11 0xFFC8
+#define XK_L1 0xFFC8
+#define XK_F12 0xFFC9
+#define XK_L2 0xFFC9
+#define XK_F13 0xFFCA
+#define XK_L3 0xFFCA
+#define XK_F14 0xFFCB
+#define XK_L4 0xFFCB
+#define XK_F15 0xFFCC
+#define XK_L5 0xFFCC
+#define XK_F16 0xFFCD
+#define XK_L6 0xFFCD
+#define XK_F17 0xFFCE
+#define XK_L7 0xFFCE
+#define XK_F18 0xFFCF
+#define XK_L8 0xFFCF
+#define XK_F19 0xFFD0
+#define XK_L9 0xFFD0
+#define XK_F20 0xFFD1
+#define XK_L10 0xFFD1
+#define XK_F21 0xFFD2
+#define XK_R1 0xFFD2
+#define XK_F22 0xFFD3
+#define XK_R2 0xFFD3
+#define XK_F23 0xFFD4
+#define XK_R3 0xFFD4
+#define XK_F24 0xFFD5
+#define XK_R4 0xFFD5
+#define XK_F25 0xFFD6
+#define XK_R5 0xFFD6
+#define XK_F26 0xFFD7
+#define XK_R6 0xFFD7
+#define XK_F27 0xFFD8
+#define XK_R7 0xFFD8
+#define XK_F28 0xFFD9
+#define XK_R8 0xFFD9
+#define XK_F29 0xFFDA
+#define XK_R9 0xFFDA
+#define XK_F30 0xFFDB
+#define XK_R10 0xFFDB
+#define XK_F31 0xFFDC
+#define XK_R11 0xFFDC
+#define XK_F32 0xFFDD
+#define XK_R12 0xFFDD
+#define XK_F33 0xFFDE
+#define XK_R13 0xFFDE
+#define XK_F34 0xFFDF
+#define XK_R14 0xFFDF
+#define XK_F35 0xFFE0
+#define XK_R15 0xFFE0
+
+/* Modifiers */
+
+#define XK_Shift_L 0xFFE1 /* Left shift */
+#define XK_Shift_R 0xFFE2 /* Right shift */
+#define XK_Control_L 0xFFE3 /* Left control */
+#define XK_Control_R 0xFFE4 /* Right control */
+#define XK_Caps_Lock 0xFFE5 /* Caps lock */
+#define XK_Shift_Lock 0xFFE6 /* Shift lock */
+
+#define XK_Meta_L 0xFFE7 /* Left meta */
+#define XK_Meta_R 0xFFE8 /* Right meta */
+#define XK_Alt_L 0xFFE9 /* Left alt */
+#define XK_Alt_R 0xFFEA /* Right alt */
+#define XK_Super_L 0xFFEB /* Left super */
+#define XK_Super_R 0xFFEC /* Right super */
+#define XK_Hyper_L 0xFFED /* Left hyper */
+#define XK_Hyper_R 0xFFEE /* Right hyper */
+#endif /* XK_MISCELLANY */
+
+/*
+ * Latin 1
+ * Byte 3 = 0
+ */
+#ifdef XK_LATIN1
+#define XK_space 0x020
+#define XK_exclam 0x021
+#define XK_quotedbl 0x022
+#define XK_numbersign 0x023
+#define XK_dollar 0x024
+#define XK_percent 0x025
+#define XK_ampersand 0x026
+#define XK_apostrophe 0x027
+#define XK_quoteright 0x027 /* deprecated */
+#define XK_parenleft 0x028
+#define XK_parenright 0x029
+#define XK_asterisk 0x02a
+#define XK_plus 0x02b
+#define XK_comma 0x02c
+#define XK_minus 0x02d
+#define XK_period 0x02e
+#define XK_slash 0x02f
+#define XK_0 0x030
+#define XK_1 0x031
+#define XK_2 0x032
+#define XK_3 0x033
+#define XK_4 0x034
+#define XK_5 0x035
+#define XK_6 0x036
+#define XK_7 0x037
+#define XK_8 0x038
+#define XK_9 0x039
+#define XK_colon 0x03a
+#define XK_semicolon 0x03b
+#define XK_less 0x03c
+#define XK_equal 0x03d
+#define XK_greater 0x03e
+#define XK_question 0x03f
+#define XK_at 0x040
+#define XK_A 0x041
+#define XK_B 0x042
+#define XK_C 0x043
+#define XK_D 0x044
+#define XK_E 0x045
+#define XK_F 0x046
+#define XK_G 0x047
+#define XK_H 0x048
+#define XK_I 0x049
+#define XK_J 0x04a
+#define XK_K 0x04b
+#define XK_L 0x04c
+#define XK_M 0x04d
+#define XK_N 0x04e
+#define XK_O 0x04f
+#define XK_P 0x050
+#define XK_Q 0x051
+#define XK_R 0x052
+#define XK_S 0x053
+#define XK_T 0x054
+#define XK_U 0x055
+#define XK_V 0x056
+#define XK_W 0x057
+#define XK_X 0x058
+#define XK_Y 0x059
+#define XK_Z 0x05a
+#define XK_bracketleft 0x05b
+#define XK_backslash 0x05c
+#define XK_bracketright 0x05d
+#define XK_asciicircum 0x05e
+#define XK_underscore 0x05f
+#define XK_grave 0x060
+#define XK_quoteleft 0x060 /* deprecated */
+#define XK_a 0x061
+#define XK_b 0x062
+#define XK_c 0x063
+#define XK_d 0x064
+#define XK_e 0x065
+#define XK_f 0x066
+#define XK_g 0x067
+#define XK_h 0x068
+#define XK_i 0x069
+#define XK_j 0x06a
+#define XK_k 0x06b
+#define XK_l 0x06c
+#define XK_m 0x06d
+#define XK_n 0x06e
+#define XK_o 0x06f
+#define XK_p 0x070
+#define XK_q 0x071
+#define XK_r 0x072
+#define XK_s 0x073
+#define XK_t 0x074
+#define XK_u 0x075
+#define XK_v 0x076
+#define XK_w 0x077
+#define XK_x 0x078
+#define XK_y 0x079
+#define XK_z 0x07a
+#define XK_braceleft 0x07b
+#define XK_bar 0x07c
+#define XK_braceright 0x07d
+#define XK_asciitilde 0x07e
+
+#define XK_nobreakspace 0x0a0
+#define XK_exclamdown 0x0a1
+#define XK_cent 0x0a2
+#define XK_sterling 0x0a3
+#define XK_currency 0x0a4
+#define XK_yen 0x0a5
+#define XK_brokenbar 0x0a6
+#define XK_section 0x0a7
+#define XK_diaeresis 0x0a8
+#define XK_copyright 0x0a9
+#define XK_ordfeminine 0x0aa
+#define XK_guillemotleft 0x0ab /* left angle quotation mark */
+#define XK_notsign 0x0ac
+#define XK_hyphen 0x0ad
+#define XK_registered 0x0ae
+#define XK_macron 0x0af
+#define XK_degree 0x0b0
+#define XK_plusminus 0x0b1
+#define XK_twosuperior 0x0b2
+#define XK_threesuperior 0x0b3
+#define XK_acute 0x0b4
+#define XK_mu 0x0b5
+#define XK_paragraph 0x0b6
+#define XK_periodcentered 0x0b7
+#define XK_cedilla 0x0b8
+#define XK_onesuperior 0x0b9
+#define XK_masculine 0x0ba
+#define XK_guillemotright 0x0bb /* right angle quotation mark */
+#define XK_onequarter 0x0bc
+#define XK_onehalf 0x0bd
+#define XK_threequarters 0x0be
+#define XK_questiondown 0x0bf
+#define XK_Agrave 0x0c0
+#define XK_Aacute 0x0c1
+#define XK_Acircumflex 0x0c2
+#define XK_Atilde 0x0c3
+#define XK_Adiaeresis 0x0c4
+#define XK_Aring 0x0c5
+#define XK_AE 0x0c6
+#define XK_Ccedilla 0x0c7
+#define XK_Egrave 0x0c8
+#define XK_Eacute 0x0c9
+#define XK_Ecircumflex 0x0ca
+#define XK_Ediaeresis 0x0cb
+#define XK_Igrave 0x0cc
+#define XK_Iacute 0x0cd
+#define XK_Icircumflex 0x0ce
+#define XK_Idiaeresis 0x0cf
+#define XK_ETH 0x0d0
+#define XK_Eth 0x0d0 /* deprecated */
+#define XK_Ntilde 0x0d1
+#define XK_Ograve 0x0d2
+#define XK_Oacute 0x0d3
+#define XK_Ocircumflex 0x0d4
+#define XK_Otilde 0x0d5
+#define XK_Odiaeresis 0x0d6
+#define XK_multiply 0x0d7
+#define XK_Ooblique 0x0d8
+#define XK_Ugrave 0x0d9
+#define XK_Uacute 0x0da
+#define XK_Ucircumflex 0x0db
+#define XK_Udiaeresis 0x0dc
+#define XK_Yacute 0x0dd
+#define XK_THORN 0x0de
+#define XK_Thorn 0x0de /* deprecated */
+#define XK_ssharp 0x0df
+#define XK_agrave 0x0e0
+#define XK_aacute 0x0e1
+#define XK_acircumflex 0x0e2
+#define XK_atilde 0x0e3
+#define XK_adiaeresis 0x0e4
+#define XK_aring 0x0e5
+#define XK_ae 0x0e6
+#define XK_ccedilla 0x0e7
+#define XK_egrave 0x0e8
+#define XK_eacute 0x0e9
+#define XK_ecircumflex 0x0ea
+#define XK_ediaeresis 0x0eb
+#define XK_igrave 0x0ec
+#define XK_iacute 0x0ed
+#define XK_icircumflex 0x0ee
+#define XK_idiaeresis 0x0ef
+#define XK_eth 0x0f0
+#define XK_ntilde 0x0f1
+#define XK_ograve 0x0f2
+#define XK_oacute 0x0f3
+#define XK_ocircumflex 0x0f4
+#define XK_otilde 0x0f5
+#define XK_odiaeresis 0x0f6
+#define XK_division 0x0f7
+#define XK_oslash 0x0f8
+#define XK_ugrave 0x0f9
+#define XK_uacute 0x0fa
+#define XK_ucircumflex 0x0fb
+#define XK_udiaeresis 0x0fc
+#define XK_yacute 0x0fd
+#define XK_thorn 0x0fe
+#define XK_ydiaeresis 0x0ff
+#endif /* XK_LATIN1 */
+
+/*
+ * Latin 2
+ * Byte 3 = 1
+ */
+
+#ifdef XK_LATIN2
+#define XK_Aogonek 0x1a1
+#define XK_breve 0x1a2
+#define XK_Lstroke 0x1a3
+#define XK_Lcaron 0x1a5
+#define XK_Sacute 0x1a6
+#define XK_Scaron 0x1a9
+#define XK_Scedilla 0x1aa
+#define XK_Tcaron 0x1ab
+#define XK_Zacute 0x1ac
+#define XK_Zcaron 0x1ae
+#define XK_Zabovedot 0x1af
+#define XK_aogonek 0x1b1
+#define XK_ogonek 0x1b2
+#define XK_lstroke 0x1b3
+#define XK_lcaron 0x1b5
+#define XK_sacute 0x1b6
+#define XK_caron 0x1b7
+#define XK_scaron 0x1b9
+#define XK_scedilla 0x1ba
+#define XK_tcaron 0x1bb
+#define XK_zacute 0x1bc
+#define XK_doubleacute 0x1bd
+#define XK_zcaron 0x1be
+#define XK_zabovedot 0x1bf
+#define XK_Racute 0x1c0
+#define XK_Abreve 0x1c3
+#define XK_Lacute 0x1c5
+#define XK_Cacute 0x1c6
+#define XK_Ccaron 0x1c8
+#define XK_Eogonek 0x1ca
+#define XK_Ecaron 0x1cc
+#define XK_Dcaron 0x1cf
+#define XK_Dstroke 0x1d0
+#define XK_Nacute 0x1d1
+#define XK_Ncaron 0x1d2
+#define XK_Odoubleacute 0x1d5
+#define XK_Rcaron 0x1d8
+#define XK_Uring 0x1d9
+#define XK_Udoubleacute 0x1db
+#define XK_Tcedilla 0x1de
+#define XK_racute 0x1e0
+#define XK_abreve 0x1e3
+#define XK_lacute 0x1e5
+#define XK_cacute 0x1e6
+#define XK_ccaron 0x1e8
+#define XK_eogonek 0x1ea
+#define XK_ecaron 0x1ec
+#define XK_dcaron 0x1ef
+#define XK_dstroke 0x1f0
+#define XK_nacute 0x1f1
+#define XK_ncaron 0x1f2
+#define XK_odoubleacute 0x1f5
+#define XK_udoubleacute 0x1fb
+#define XK_rcaron 0x1f8
+#define XK_uring 0x1f9
+#define XK_tcedilla 0x1fe
+#define XK_abovedot 0x1ff
+#endif /* XK_LATIN2 */
+
+/*
+ * Latin 3
+ * Byte 3 = 2
+ */
+
+#ifdef XK_LATIN3
+#define XK_Hstroke 0x2a1
+#define XK_Hcircumflex 0x2a6
+#define XK_Iabovedot 0x2a9
+#define XK_Gbreve 0x2ab
+#define XK_Jcircumflex 0x2ac
+#define XK_hstroke 0x2b1
+#define XK_hcircumflex 0x2b6
+#define XK_idotless 0x2b9
+#define XK_gbreve 0x2bb
+#define XK_jcircumflex 0x2bc
+#define XK_Cabovedot 0x2c5
+#define XK_Ccircumflex 0x2c6
+#define XK_Gabovedot 0x2d5
+#define XK_Gcircumflex 0x2d8
+#define XK_Ubreve 0x2dd
+#define XK_Scircumflex 0x2de
+#define XK_cabovedot 0x2e5
+#define XK_ccircumflex 0x2e6
+#define XK_gabovedot 0x2f5
+#define XK_gcircumflex 0x2f8
+#define XK_ubreve 0x2fd
+#define XK_scircumflex 0x2fe
+#endif /* XK_LATIN3 */
+
+
+/*
+ * Latin 4
+ * Byte 3 = 3
+ */
+
+#ifdef XK_LATIN4
+#define XK_kra 0x3a2
+#define XK_kappa 0x3a2 /* deprecated */
+#define XK_Rcedilla 0x3a3
+#define XK_Itilde 0x3a5
+#define XK_Lcedilla 0x3a6
+#define XK_Emacron 0x3aa
+#define XK_Gcedilla 0x3ab
+#define XK_Tslash 0x3ac
+#define XK_rcedilla 0x3b3
+#define XK_itilde 0x3b5
+#define XK_lcedilla 0x3b6
+#define XK_emacron 0x3ba
+#define XK_gcedilla 0x3bb
+#define XK_tslash 0x3bc
+#define XK_ENG 0x3bd
+#define XK_eng 0x3bf
+#define XK_Amacron 0x3c0
+#define XK_Iogonek 0x3c7
+#define XK_Eabovedot 0x3cc
+#define XK_Imacron 0x3cf
+#define XK_Ncedilla 0x3d1
+#define XK_Omacron 0x3d2
+#define XK_Kcedilla 0x3d3
+#define XK_Uogonek 0x3d9
+#define XK_Utilde 0x3dd
+#define XK_Umacron 0x3de
+#define XK_amacron 0x3e0
+#define XK_iogonek 0x3e7
+#define XK_eabovedot 0x3ec
+#define XK_imacron 0x3ef
+#define XK_ncedilla 0x3f1
+#define XK_omacron 0x3f2
+#define XK_kcedilla 0x3f3
+#define XK_uogonek 0x3f9
+#define XK_utilde 0x3fd
+#define XK_umacron 0x3fe
+#endif /* XK_LATIN4 */
+
+/*
+ * Katakana
+ * Byte 3 = 4
+ */
+
+#ifdef XK_KATAKANA
+#define XK_overline 0x47e
+#define XK_kana_fullstop 0x4a1
+#define XK_kana_openingbracket 0x4a2
+#define XK_kana_closingbracket 0x4a3
+#define XK_kana_comma 0x4a4
+#define XK_kana_conjunctive 0x4a5
+#define XK_kana_middledot 0x4a5 /* deprecated */
+#define XK_kana_WO 0x4a6
+#define XK_kana_a 0x4a7
+#define XK_kana_i 0x4a8
+#define XK_kana_u 0x4a9
+#define XK_kana_e 0x4aa
+#define XK_kana_o 0x4ab
+#define XK_kana_ya 0x4ac
+#define XK_kana_yu 0x4ad
+#define XK_kana_yo 0x4ae
+#define XK_kana_tsu 0x4af
+#define XK_kana_tu 0x4af /* deprecated */
+#define XK_prolongedsound 0x4b0
+#define XK_kana_A 0x4b1
+#define XK_kana_I 0x4b2
+#define XK_kana_U 0x4b3
+#define XK_kana_E 0x4b4
+#define XK_kana_O 0x4b5
+#define XK_kana_KA 0x4b6
+#define XK_kana_KI 0x4b7
+#define XK_kana_KU 0x4b8
+#define XK_kana_KE 0x4b9
+#define XK_kana_KO 0x4ba
+#define XK_kana_SA 0x4bb
+#define XK_kana_SHI 0x4bc
+#define XK_kana_SU 0x4bd
+#define XK_kana_SE 0x4be
+#define XK_kana_SO 0x4bf
+#define XK_kana_TA 0x4c0
+#define XK_kana_CHI 0x4c1
+#define XK_kana_TI 0x4c1 /* deprecated */
+#define XK_kana_TSU 0x4c2
+#define XK_kana_TU 0x4c2 /* deprecated */
+#define XK_kana_TE 0x4c3
+#define XK_kana_TO 0x4c4
+#define XK_kana_NA 0x4c5
+#define XK_kana_NI 0x4c6
+#define XK_kana_NU 0x4c7
+#define XK_kana_NE 0x4c8
+#define XK_kana_NO 0x4c9
+#define XK_kana_HA 0x4ca
+#define XK_kana_HI 0x4cb
+#define XK_kana_FU 0x4cc
+#define XK_kana_HU 0x4cc /* deprecated */
+#define XK_kana_HE 0x4cd
+#define XK_kana_HO 0x4ce
+#define XK_kana_MA 0x4cf
+#define XK_kana_MI 0x4d0
+#define XK_kana_MU 0x4d1
+#define XK_kana_ME 0x4d2
+#define XK_kana_MO 0x4d3
+#define XK_kana_YA 0x4d4
+#define XK_kana_YU 0x4d5
+#define XK_kana_YO 0x4d6
+#define XK_kana_RA 0x4d7
+#define XK_kana_RI 0x4d8
+#define XK_kana_RU 0x4d9
+#define XK_kana_RE 0x4da
+#define XK_kana_RO 0x4db
+#define XK_kana_WA 0x4dc
+#define XK_kana_N 0x4dd
+#define XK_voicedsound 0x4de
+#define XK_semivoicedsound 0x4df
+#define XK_kana_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_KATAKANA */
+
+/*
+ * Arabic
+ * Byte 3 = 5
+ */
+
+#ifdef XK_ARABIC
+#define XK_Arabic_comma 0x5ac
+#define XK_Arabic_semicolon 0x5bb
+#define XK_Arabic_question_mark 0x5bf
+#define XK_Arabic_hamza 0x5c1
+#define XK_Arabic_maddaonalef 0x5c2
+#define XK_Arabic_hamzaonalef 0x5c3
+#define XK_Arabic_hamzaonwaw 0x5c4
+#define XK_Arabic_hamzaunderalef 0x5c5
+#define XK_Arabic_hamzaonyeh 0x5c6
+#define XK_Arabic_alef 0x5c7
+#define XK_Arabic_beh 0x5c8
+#define XK_Arabic_tehmarbuta 0x5c9
+#define XK_Arabic_teh 0x5ca
+#define XK_Arabic_theh 0x5cb
+#define XK_Arabic_jeem 0x5cc
+#define XK_Arabic_hah 0x5cd
+#define XK_Arabic_khah 0x5ce
+#define XK_Arabic_dal 0x5cf
+#define XK_Arabic_thal 0x5d0
+#define XK_Arabic_ra 0x5d1
+#define XK_Arabic_zain 0x5d2
+#define XK_Arabic_seen 0x5d3
+#define XK_Arabic_sheen 0x5d4
+#define XK_Arabic_sad 0x5d5
+#define XK_Arabic_dad 0x5d6
+#define XK_Arabic_tah 0x5d7
+#define XK_Arabic_zah 0x5d8
+#define XK_Arabic_ain 0x5d9
+#define XK_Arabic_ghain 0x5da
+#define XK_Arabic_tatweel 0x5e0
+#define XK_Arabic_feh 0x5e1
+#define XK_Arabic_qaf 0x5e2
+#define XK_Arabic_kaf 0x5e3
+#define XK_Arabic_lam 0x5e4
+#define XK_Arabic_meem 0x5e5
+#define XK_Arabic_noon 0x5e6
+#define XK_Arabic_ha 0x5e7
+#define XK_Arabic_heh 0x5e7 /* deprecated */
+#define XK_Arabic_waw 0x5e8
+#define XK_Arabic_alefmaksura 0x5e9
+#define XK_Arabic_yeh 0x5ea
+#define XK_Arabic_fathatan 0x5eb
+#define XK_Arabic_dammatan 0x5ec
+#define XK_Arabic_kasratan 0x5ed
+#define XK_Arabic_fatha 0x5ee
+#define XK_Arabic_damma 0x5ef
+#define XK_Arabic_kasra 0x5f0
+#define XK_Arabic_shadda 0x5f1
+#define XK_Arabic_sukun 0x5f2
+#define XK_Arabic_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_ARABIC */
+
+/*
+ * Cyrillic
+ * Byte 3 = 6
+ */
+#ifdef XK_CYRILLIC
+#define XK_Serbian_dje 0x6a1
+#define XK_Macedonia_gje 0x6a2
+#define XK_Cyrillic_io 0x6a3
+#define XK_Ukrainian_ie 0x6a4
+#define XK_Ukranian_je 0x6a4 /* deprecated */
+#define XK_Macedonia_dse 0x6a5
+#define XK_Ukrainian_i 0x6a6
+#define XK_Ukranian_i 0x6a6 /* deprecated */
+#define XK_Ukrainian_yi 0x6a7
+#define XK_Ukranian_yi 0x6a7 /* deprecated */
+#define XK_Cyrillic_je 0x6a8
+#define XK_Serbian_je 0x6a8 /* deprecated */
+#define XK_Cyrillic_lje 0x6a9
+#define XK_Serbian_lje 0x6a9 /* deprecated */
+#define XK_Cyrillic_nje 0x6aa
+#define XK_Serbian_nje 0x6aa /* deprecated */
+#define XK_Serbian_tshe 0x6ab
+#define XK_Macedonia_kje 0x6ac
+#define XK_Byelorussian_shortu 0x6ae
+#define XK_Cyrillic_dzhe 0x6af
+#define XK_Serbian_dze 0x6af /* deprecated */
+#define XK_numerosign 0x6b0
+#define XK_Serbian_DJE 0x6b1
+#define XK_Macedonia_GJE 0x6b2
+#define XK_Cyrillic_IO 0x6b3
+#define XK_Ukrainian_IE 0x6b4
+#define XK_Ukranian_JE 0x6b4 /* deprecated */
+#define XK_Macedonia_DSE 0x6b5
+#define XK_Ukrainian_I 0x6b6
+#define XK_Ukranian_I 0x6b6 /* deprecated */
+#define XK_Ukrainian_YI 0x6b7
+#define XK_Ukranian_YI 0x6b7 /* deprecated */
+#define XK_Cyrillic_JE 0x6b8
+#define XK_Serbian_JE 0x6b8 /* deprecated */
+#define XK_Cyrillic_LJE 0x6b9
+#define XK_Serbian_LJE 0x6b9 /* deprecated */
+#define XK_Cyrillic_NJE 0x6ba
+#define XK_Serbian_NJE 0x6ba /* deprecated */
+#define XK_Serbian_TSHE 0x6bb
+#define XK_Macedonia_KJE 0x6bc
+#define XK_Byelorussian_SHORTU 0x6be
+#define XK_Cyrillic_DZHE 0x6bf
+#define XK_Serbian_DZE 0x6bf /* deprecated */
+#define XK_Cyrillic_yu 0x6c0
+#define XK_Cyrillic_a 0x6c1
+#define XK_Cyrillic_be 0x6c2
+#define XK_Cyrillic_tse 0x6c3
+#define XK_Cyrillic_de 0x6c4
+#define XK_Cyrillic_ie 0x6c5
+#define XK_Cyrillic_ef 0x6c6
+#define XK_Cyrillic_ghe 0x6c7
+#define XK_Cyrillic_ha 0x6c8
+#define XK_Cyrillic_i 0x6c9
+#define XK_Cyrillic_shorti 0x6ca
+#define XK_Cyrillic_ka 0x6cb
+#define XK_Cyrillic_el 0x6cc
+#define XK_Cyrillic_em 0x6cd
+#define XK_Cyrillic_en 0x6ce
+#define XK_Cyrillic_o 0x6cf
+#define XK_Cyrillic_pe 0x6d0
+#define XK_Cyrillic_ya 0x6d1
+#define XK_Cyrillic_er 0x6d2
+#define XK_Cyrillic_es 0x6d3
+#define XK_Cyrillic_te 0x6d4
+#define XK_Cyrillic_u 0x6d5
+#define XK_Cyrillic_zhe 0x6d6
+#define XK_Cyrillic_ve 0x6d7
+#define XK_Cyrillic_softsign 0x6d8
+#define XK_Cyrillic_yeru 0x6d9
+#define XK_Cyrillic_ze 0x6da
+#define XK_Cyrillic_sha 0x6db
+#define XK_Cyrillic_e 0x6dc
+#define XK_Cyrillic_shcha 0x6dd
+#define XK_Cyrillic_che 0x6de
+#define XK_Cyrillic_hardsign 0x6df
+#define XK_Cyrillic_YU 0x6e0
+#define XK_Cyrillic_A 0x6e1
+#define XK_Cyrillic_BE 0x6e2
+#define XK_Cyrillic_TSE 0x6e3
+#define XK_Cyrillic_DE 0x6e4
+#define XK_Cyrillic_IE 0x6e5
+#define XK_Cyrillic_EF 0x6e6
+#define XK_Cyrillic_GHE 0x6e7
+#define XK_Cyrillic_HA 0x6e8
+#define XK_Cyrillic_I 0x6e9
+#define XK_Cyrillic_SHORTI 0x6ea
+#define XK_Cyrillic_KA 0x6eb
+#define XK_Cyrillic_EL 0x6ec
+#define XK_Cyrillic_EM 0x6ed
+#define XK_Cyrillic_EN 0x6ee
+#define XK_Cyrillic_O 0x6ef
+#define XK_Cyrillic_PE 0x6f0
+#define XK_Cyrillic_YA 0x6f1
+#define XK_Cyrillic_ER 0x6f2
+#define XK_Cyrillic_ES 0x6f3
+#define XK_Cyrillic_TE 0x6f4
+#define XK_Cyrillic_U 0x6f5
+#define XK_Cyrillic_ZHE 0x6f6
+#define XK_Cyrillic_VE 0x6f7
+#define XK_Cyrillic_SOFTSIGN 0x6f8
+#define XK_Cyrillic_YERU 0x6f9
+#define XK_Cyrillic_ZE 0x6fa
+#define XK_Cyrillic_SHA 0x6fb
+#define XK_Cyrillic_E 0x6fc
+#define XK_Cyrillic_SHCHA 0x6fd
+#define XK_Cyrillic_CHE 0x6fe
+#define XK_Cyrillic_HARDSIGN 0x6ff
+#endif /* XK_CYRILLIC */
+
+/*
+ * Greek
+ * Byte 3 = 7
+ */
+
+#ifdef XK_GREEK
+#define XK_Greek_ALPHAaccent 0x7a1
+#define XK_Greek_EPSILONaccent 0x7a2
+#define XK_Greek_ETAaccent 0x7a3
+#define XK_Greek_IOTAaccent 0x7a4
+#define XK_Greek_IOTAdiaeresis 0x7a5
+#define XK_Greek_OMICRONaccent 0x7a7
+#define XK_Greek_UPSILONaccent 0x7a8
+#define XK_Greek_UPSILONdieresis 0x7a9
+#define XK_Greek_OMEGAaccent 0x7ab
+#define XK_Greek_accentdieresis 0x7ae
+#define XK_Greek_horizbar 0x7af
+#define XK_Greek_alphaaccent 0x7b1
+#define XK_Greek_epsilonaccent 0x7b2
+#define XK_Greek_etaaccent 0x7b3
+#define XK_Greek_iotaaccent 0x7b4
+#define XK_Greek_iotadieresis 0x7b5
+#define XK_Greek_iotaaccentdieresis 0x7b6
+#define XK_Greek_omicronaccent 0x7b7
+#define XK_Greek_upsilonaccent 0x7b8
+#define XK_Greek_upsilondieresis 0x7b9
+#define XK_Greek_upsilonaccentdieresis 0x7ba
+#define XK_Greek_omegaaccent 0x7bb
+#define XK_Greek_ALPHA 0x7c1
+#define XK_Greek_BETA 0x7c2
+#define XK_Greek_GAMMA 0x7c3
+#define XK_Greek_DELTA 0x7c4
+#define XK_Greek_EPSILON 0x7c5
+#define XK_Greek_ZETA 0x7c6
+#define XK_Greek_ETA 0x7c7
+#define XK_Greek_THETA 0x7c8
+#define XK_Greek_IOTA 0x7c9
+#define XK_Greek_KAPPA 0x7ca
+#define XK_Greek_LAMDA 0x7cb
+#define XK_Greek_LAMBDA 0x7cb
+#define XK_Greek_MU 0x7cc
+#define XK_Greek_NU 0x7cd
+#define XK_Greek_XI 0x7ce
+#define XK_Greek_OMICRON 0x7cf
+#define XK_Greek_PI 0x7d0
+#define XK_Greek_RHO 0x7d1
+#define XK_Greek_SIGMA 0x7d2
+#define XK_Greek_TAU 0x7d4
+#define XK_Greek_UPSILON 0x7d5
+#define XK_Greek_PHI 0x7d6
+#define XK_Greek_CHI 0x7d7
+#define XK_Greek_PSI 0x7d8
+#define XK_Greek_OMEGA 0x7d9
+#define XK_Greek_alpha 0x7e1
+#define XK_Greek_beta 0x7e2
+#define XK_Greek_gamma 0x7e3
+#define XK_Greek_delta 0x7e4
+#define XK_Greek_epsilon 0x7e5
+#define XK_Greek_zeta 0x7e6
+#define XK_Greek_eta 0x7e7
+#define XK_Greek_theta 0x7e8
+#define XK_Greek_iota 0x7e9
+#define XK_Greek_kappa 0x7ea
+#define XK_Greek_lamda 0x7eb
+#define XK_Greek_lambda 0x7eb
+#define XK_Greek_mu 0x7ec
+#define XK_Greek_nu 0x7ed
+#define XK_Greek_xi 0x7ee
+#define XK_Greek_omicron 0x7ef
+#define XK_Greek_pi 0x7f0
+#define XK_Greek_rho 0x7f1
+#define XK_Greek_sigma 0x7f2
+#define XK_Greek_finalsmallsigma 0x7f3
+#define XK_Greek_tau 0x7f4
+#define XK_Greek_upsilon 0x7f5
+#define XK_Greek_phi 0x7f6
+#define XK_Greek_chi 0x7f7
+#define XK_Greek_psi 0x7f8
+#define XK_Greek_omega 0x7f9
+#define XK_Greek_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_GREEK */
+
+/*
+ * Technical
+ * Byte 3 = 8
+ */
+
+#ifdef XK_TECHNICAL
+#define XK_leftradical 0x8a1
+#define XK_topleftradical 0x8a2
+#define XK_horizconnector 0x8a3
+#define XK_topintegral 0x8a4
+#define XK_botintegral 0x8a5
+#define XK_vertconnector 0x8a6
+#define XK_topleftsqbracket 0x8a7
+#define XK_botleftsqbracket 0x8a8
+#define XK_toprightsqbracket 0x8a9
+#define XK_botrightsqbracket 0x8aa
+#define XK_topleftparens 0x8ab
+#define XK_botleftparens 0x8ac
+#define XK_toprightparens 0x8ad
+#define XK_botrightparens 0x8ae
+#define XK_leftmiddlecurlybrace 0x8af
+#define XK_rightmiddlecurlybrace 0x8b0
+#define XK_topleftsummation 0x8b1
+#define XK_botleftsummation 0x8b2
+#define XK_topvertsummationconnector 0x8b3
+#define XK_botvertsummationconnector 0x8b4
+#define XK_toprightsummation 0x8b5
+#define XK_botrightsummation 0x8b6
+#define XK_rightmiddlesummation 0x8b7
+#define XK_lessthanequal 0x8bc
+#define XK_notequal 0x8bd
+#define XK_greaterthanequal 0x8be
+#define XK_integral 0x8bf
+#define XK_therefore 0x8c0
+#define XK_variation 0x8c1
+#define XK_infinity 0x8c2
+#define XK_nabla 0x8c5
+#define XK_approximate 0x8c8
+#define XK_similarequal 0x8c9
+#define XK_ifonlyif 0x8cd
+#define XK_implies 0x8ce
+#define XK_identical 0x8cf
+#define XK_radical 0x8d6
+#define XK_includedin 0x8da
+#define XK_includes 0x8db
+#define XK_intersection 0x8dc
+#define XK_union 0x8dd
+#define XK_logicaland 0x8de
+#define XK_logicalor 0x8df
+#define XK_partialderivative 0x8ef
+#define XK_function 0x8f6
+#define XK_leftarrow 0x8fb
+#define XK_uparrow 0x8fc
+#define XK_rightarrow 0x8fd
+#define XK_downarrow 0x8fe
+#endif /* XK_TECHNICAL */
+
+/*
+ * Special
+ * Byte 3 = 9
+ */
+
+#ifdef XK_SPECIAL
+#define XK_blank 0x9df
+#define XK_soliddiamond 0x9e0
+#define XK_checkerboard 0x9e1
+#define XK_ht 0x9e2
+#define XK_ff 0x9e3
+#define XK_cr 0x9e4
+#define XK_lf 0x9e5
+#define XK_nl 0x9e8
+#define XK_vt 0x9e9
+#define XK_lowrightcorner 0x9ea
+#define XK_uprightcorner 0x9eb
+#define XK_upleftcorner 0x9ec
+#define XK_lowleftcorner 0x9ed
+#define XK_crossinglines 0x9ee
+#define XK_horizlinescan1 0x9ef
+#define XK_horizlinescan3 0x9f0
+#define XK_horizlinescan5 0x9f1
+#define XK_horizlinescan7 0x9f2
+#define XK_horizlinescan9 0x9f3
+#define XK_leftt 0x9f4
+#define XK_rightt 0x9f5
+#define XK_bott 0x9f6
+#define XK_topt 0x9f7
+#define XK_vertbar 0x9f8
+#endif /* XK_SPECIAL */
+
+/*
+ * Publishing
+ * Byte 3 = a
+ */
+
+#ifdef XK_PUBLISHING
+#define XK_emspace 0xaa1
+#define XK_enspace 0xaa2
+#define XK_em3space 0xaa3
+#define XK_em4space 0xaa4
+#define XK_digitspace 0xaa5
+#define XK_punctspace 0xaa6
+#define XK_thinspace 0xaa7
+#define XK_hairspace 0xaa8
+#define XK_emdash 0xaa9
+#define XK_endash 0xaaa
+#define XK_signifblank 0xaac
+#define XK_ellipsis 0xaae
+#define XK_doubbaselinedot 0xaaf
+#define XK_onethird 0xab0
+#define XK_twothirds 0xab1
+#define XK_onefifth 0xab2
+#define XK_twofifths 0xab3
+#define XK_threefifths 0xab4
+#define XK_fourfifths 0xab5
+#define XK_onesixth 0xab6
+#define XK_fivesixths 0xab7
+#define XK_careof 0xab8
+#define XK_figdash 0xabb
+#define XK_leftanglebracket 0xabc
+#define XK_decimalpoint 0xabd
+#define XK_rightanglebracket 0xabe
+#define XK_marker 0xabf
+#define XK_oneeighth 0xac3
+#define XK_threeeighths 0xac4
+#define XK_fiveeighths 0xac5
+#define XK_seveneighths 0xac6
+#define XK_trademark 0xac9
+#define XK_signaturemark 0xaca
+#define XK_trademarkincircle 0xacb
+#define XK_leftopentriangle 0xacc
+#define XK_rightopentriangle 0xacd
+#define XK_emopencircle 0xace
+#define XK_emopenrectangle 0xacf
+#define XK_leftsinglequotemark 0xad0
+#define XK_rightsinglequotemark 0xad1
+#define XK_leftdoublequotemark 0xad2
+#define XK_rightdoublequotemark 0xad3
+#define XK_prescription 0xad4
+#define XK_minutes 0xad6
+#define XK_seconds 0xad7
+#define XK_latincross 0xad9
+#define XK_hexagram 0xada
+#define XK_filledrectbullet 0xadb
+#define XK_filledlefttribullet 0xadc
+#define XK_filledrighttribullet 0xadd
+#define XK_emfilledcircle 0xade
+#define XK_emfilledrect 0xadf
+#define XK_enopencircbullet 0xae0
+#define XK_enopensquarebullet 0xae1
+#define XK_openrectbullet 0xae2
+#define XK_opentribulletup 0xae3
+#define XK_opentribulletdown 0xae4
+#define XK_openstar 0xae5
+#define XK_enfilledcircbullet 0xae6
+#define XK_enfilledsqbullet 0xae7
+#define XK_filledtribulletup 0xae8
+#define XK_filledtribulletdown 0xae9
+#define XK_leftpointer 0xaea
+#define XK_rightpointer 0xaeb
+#define XK_club 0xaec
+#define XK_diamond 0xaed
+#define XK_heart 0xaee
+#define XK_maltesecross 0xaf0
+#define XK_dagger 0xaf1
+#define XK_doubledagger 0xaf2
+#define XK_checkmark 0xaf3
+#define XK_ballotcross 0xaf4
+#define XK_musicalsharp 0xaf5
+#define XK_musicalflat 0xaf6
+#define XK_malesymbol 0xaf7
+#define XK_femalesymbol 0xaf8
+#define XK_telephone 0xaf9
+#define XK_telephonerecorder 0xafa
+#define XK_phonographcopyright 0xafb
+#define XK_caret 0xafc
+#define XK_singlelowquotemark 0xafd
+#define XK_doublelowquotemark 0xafe
+#define XK_cursor 0xaff
+#endif /* XK_PUBLISHING */
+
+/*
+ * APL
+ * Byte 3 = b
+ */
+
+#ifdef XK_APL
+#define XK_leftcaret 0xba3
+#define XK_rightcaret 0xba6
+#define XK_downcaret 0xba8
+#define XK_upcaret 0xba9
+#define XK_overbar 0xbc0
+#define XK_downtack 0xbc2
+#define XK_upshoe 0xbc3
+#define XK_downstile 0xbc4
+#define XK_underbar 0xbc6
+#define XK_jot 0xbca
+#define XK_quad 0xbcc
+#define XK_uptack 0xbce
+#define XK_circle 0xbcf
+#define XK_upstile 0xbd3
+#define XK_downshoe 0xbd6
+#define XK_rightshoe 0xbd8
+#define XK_leftshoe 0xbda
+#define XK_lefttack 0xbdc
+#define XK_righttack 0xbfc
+#endif /* XK_APL */
+
+/*
+ * Hebrew
+ * Byte 3 = c
+ */
+
+#ifdef XK_HEBREW
+#define XK_hebrew_doublelowline 0xcdf
+#define XK_hebrew_aleph 0xce0
+#define XK_hebrew_bet 0xce1
+#define XK_hebrew_beth 0xce1 /* deprecated */
+#define XK_hebrew_gimel 0xce2
+#define XK_hebrew_gimmel 0xce2 /* deprecated */
+#define XK_hebrew_dalet 0xce3
+#define XK_hebrew_daleth 0xce3 /* deprecated */
+#define XK_hebrew_he 0xce4
+#define XK_hebrew_waw 0xce5
+#define XK_hebrew_zain 0xce6
+#define XK_hebrew_zayin 0xce6 /* deprecated */
+#define XK_hebrew_chet 0xce7
+#define XK_hebrew_het 0xce7 /* deprecated */
+#define XK_hebrew_tet 0xce8
+#define XK_hebrew_teth 0xce8 /* deprecated */
+#define XK_hebrew_yod 0xce9
+#define XK_hebrew_finalkaph 0xcea
+#define XK_hebrew_kaph 0xceb
+#define XK_hebrew_lamed 0xcec
+#define XK_hebrew_finalmem 0xced
+#define XK_hebrew_mem 0xcee
+#define XK_hebrew_finalnun 0xcef
+#define XK_hebrew_nun 0xcf0
+#define XK_hebrew_samech 0xcf1
+#define XK_hebrew_samekh 0xcf1 /* deprecated */
+#define XK_hebrew_ayin 0xcf2
+#define XK_hebrew_finalpe 0xcf3
+#define XK_hebrew_pe 0xcf4
+#define XK_hebrew_finalzade 0xcf5
+#define XK_hebrew_finalzadi 0xcf5 /* deprecated */
+#define XK_hebrew_zade 0xcf6
+#define XK_hebrew_zadi 0xcf6 /* deprecated */
+#define XK_hebrew_qoph 0xcf7
+#define XK_hebrew_kuf 0xcf7 /* deprecated */
+#define XK_hebrew_resh 0xcf8
+#define XK_hebrew_shin 0xcf9
+#define XK_hebrew_taw 0xcfa
+#define XK_hebrew_taf 0xcfa /* deprecated */
+#define XK_Hebrew_switch 0xFF7E /* Alias for mode_switch */
+#endif /* XK_HEBREW */
+
diff --git a/xlib/xbytes.h b/xlib/xbytes.h
new file mode 100644
index 0000000..6cf3d56
--- /dev/null
+++ b/xlib/xbytes.h
@@ -0,0 +1,58 @@
+/*
+ * xbytes.h --
+ *
+ * Declaration of table to reverse bit order of bytes.
+ *
+ * Copyright (c) 1995 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xbytes.h 1.1 95/05/09 17:32:51
+ */
+
+#ifndef _XBYTES
+#define _XBYTES
+
+/*
+ * The bits in a byte can be reversed so the least significant becomes
+ * the most significant by indexing xBitReverseTable with the byte
+ * to be reversed.
+ */
+
+static unsigned char xBitReverseTable[256] = {
+ 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+ 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+ 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+ 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+ 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+ 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+ 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+ 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+ 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+ 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+ 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+ 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+ 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+ 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+ 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+ 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+ 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+ 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+ 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+ 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+ 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+ 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+ 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+ 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+ 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+ 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+ 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+ 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+ 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+ 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+ 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+ 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
+};
+
+#endif /* _XBYTES */
diff --git a/xlib/xcolors.c b/xlib/xcolors.c
new file mode 100644
index 0000000..800d688
--- /dev/null
+++ b/xlib/xcolors.c
@@ -0,0 +1,911 @@
+/*
+ * xcolors.c --
+ *
+ * This file contains the routines used to map from X color
+ * names to RGB and pixel values.
+ *
+ * Copyright (c) 1996 by Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xcolors.c 1.6 97/09/02 09:41:50
+ */
+
+#include <tkInt.h>
+
+/*
+ * Define an array that defines the mapping from color names to RGB values.
+ * Note that this array must be kept sorted alphabetically so that the
+ * binary search used in XParseColor will succeed.
+ */
+
+typedef struct {
+ char *name;
+ unsigned char red;
+ unsigned char green;
+ unsigned char blue;
+} XColorEntry;
+
+static XColorEntry xColors[] = {
+ "alice blue", 240, 248, 255,
+ "AliceBlue", 240, 248, 255,
+ "antique white", 250, 235, 215,
+ "AntiqueWhite", 250, 235, 215,
+ "AntiqueWhite1", 255, 239, 219,
+ "AntiqueWhite2", 238, 223, 204,
+ "AntiqueWhite3", 205, 192, 176,
+ "AntiqueWhite4", 139, 131, 120,
+ "aquamarine", 127, 255, 212,
+ "aquamarine1", 127, 255, 212,
+ "aquamarine2", 118, 238, 198,
+ "aquamarine3", 102, 205, 170,
+ "aquamarine4", 69, 139, 116,
+ "azure", 240, 255, 255,
+ "azure1", 240, 255, 255,
+ "azure2", 224, 238, 238,
+ "azure3", 193, 205, 205,
+ "azure4", 131, 139, 139,
+ "beige", 245, 245, 220,
+ "bisque", 255, 228, 196,
+ "bisque1", 255, 228, 196,
+ "bisque2", 238, 213, 183,
+ "bisque3", 205, 183, 158,
+ "bisque4", 139, 125, 107,
+ "black", 0, 0, 0,
+ "blanched almond", 255, 235, 205,
+ "BlanchedAlmond", 255, 235, 205,
+ "blue", 0, 0, 255,
+ "blue violet", 138, 43, 226,
+ "blue1", 0, 0, 255,
+ "blue2", 0, 0, 238,
+ "blue3", 0, 0, 205,
+ "blue4", 0, 0, 139,
+ "BlueViolet", 138, 43, 226,
+ "brown", 165, 42, 42,
+ "brown1", 255, 64, 64,
+ "brown2", 238, 59, 59,
+ "brown3", 205, 51, 51,
+ "brown4", 139, 35, 35,
+ "burlywood", 222, 184, 135,
+ "burlywood1", 255, 211, 155,
+ "burlywood2", 238, 197, 145,
+ "burlywood3", 205, 170, 125,
+ "burlywood4", 139, 115, 85,
+ "cadet blue", 95, 158, 160,
+ "CadetBlue", 95, 158, 160,
+ "CadetBlue1", 152, 245, 255,
+ "CadetBlue2", 142, 229, 238,
+ "CadetBlue3", 122, 197, 205,
+ "CadetBlue4", 83, 134, 139,
+ "chartreuse", 127, 255, 0,
+ "chartreuse1", 127, 255, 0,
+ "chartreuse2", 118, 238, 0,
+ "chartreuse3", 102, 205, 0,
+ "chartreuse4", 69, 139, 0,
+ "chocolate", 210, 105, 30,
+ "chocolate1", 255, 127, 36,
+ "chocolate2", 238, 118, 33,
+ "chocolate3", 205, 102, 29,
+ "chocolate4", 139, 69, 19,
+ "coral", 255, 127, 80,
+ "coral1", 255, 114, 86,
+ "coral2", 238, 106, 80,
+ "coral3", 205, 91, 69,
+ "coral4", 139, 62, 47,
+ "cornflower blue", 100, 149, 237,
+ "CornflowerBlue", 100, 149, 237,
+ "cornsilk", 255, 248, 220,
+ "cornsilk1", 255, 248, 220,
+ "cornsilk2", 238, 232, 205,
+ "cornsilk3", 205, 200, 177,
+ "cornsilk4", 139, 136, 120,
+ "cyan", 0, 255, 255,
+ "cyan1", 0, 255, 255,
+ "cyan2", 0, 238, 238,
+ "cyan3", 0, 205, 205,
+ "cyan4", 0, 139, 139,
+ "dark blue", 0, 0, 139,
+ "dark cyan", 0, 139, 139,
+ "dark goldenrod", 184, 134, 11,
+ "dark gray", 169, 169, 169,
+ "dark green", 0, 100, 0,
+ "dark grey", 169, 169, 169,
+ "dark khaki", 189, 183, 107,
+ "dark magenta", 139, 0, 139,
+ "dark olive green", 85, 107, 47,
+ "dark orange", 255, 140, 0,
+ "dark orchid", 153, 50, 204,
+ "dark red", 139, 0, 0,
+ "dark salmon", 233, 150, 122,
+ "dark sea green", 143, 188, 143,
+ "dark slate blue", 72, 61, 139,
+ "dark slate gray", 47, 79, 79,
+ "dark slate grey", 47, 79, 79,
+ "dark turquoise", 0, 206, 209,
+ "dark violet", 148, 0, 211,
+ "DarkBlue", 0, 0, 139,
+ "DarkCyan", 0, 139, 139,
+ "DarkGoldenrod", 184, 134, 11,
+ "DarkGoldenrod1", 255, 185, 15,
+ "DarkGoldenrod2", 238, 173, 14,
+ "DarkGoldenrod3", 205, 149, 12,
+ "DarkGoldenrod4", 139, 101, 8,
+ "DarkGray", 169, 169, 169,
+ "DarkGreen", 0, 100, 0,
+ "DarkGrey", 169, 169, 169,
+ "DarkKhaki", 189, 183, 107,
+ "DarkMagenta", 139, 0, 139,
+ "DarkOliveGreen", 85, 107, 47,
+ "DarkOliveGreen1", 202, 255, 112,
+ "DarkOliveGreen2", 188, 238, 104,
+ "DarkOliveGreen3", 162, 205, 90,
+ "DarkOliveGreen4", 110, 139, 61,
+ "DarkOrange", 255, 140, 0,
+ "DarkOrange1", 255, 127, 0,
+ "DarkOrange2", 238, 118, 0,
+ "DarkOrange3", 205, 102, 0,
+ "DarkOrange4", 139, 69, 0,
+ "DarkOrchid", 153, 50, 204,
+ "DarkOrchid1", 191, 62, 255,
+ "DarkOrchid2", 178, 58, 238,
+ "DarkOrchid3", 154, 50, 205,
+ "DarkOrchid4", 104, 34, 139,
+ "DarkRed", 139, 0, 0,
+ "DarkSalmon", 233, 150, 122,
+ "DarkSeaGreen", 143, 188, 143,
+ "DarkSeaGreen1", 193, 255, 193,
+ "DarkSeaGreen2", 180, 238, 180,
+ "DarkSeaGreen3", 155, 205, 155,
+ "DarkSeaGreen4", 105, 139, 105,
+ "DarkSlateBlue", 72, 61, 139,
+ "DarkSlateGray", 47, 79, 79,
+ "DarkSlateGray1", 151, 255, 255,
+ "DarkSlateGray2", 141, 238, 238,
+ "DarkSlateGray3", 121, 205, 205,
+ "DarkSlateGray4", 82, 139, 139,
+ "DarkSlateGrey", 47, 79, 79,
+ "DarkTurquoise", 0, 206, 209,
+ "DarkViolet", 148, 0, 211,
+ "deep pink", 255, 20, 147,
+ "deep sky blue", 0, 191, 255,
+ "DeepPink", 255, 20, 147,
+ "DeepPink1", 255, 20, 147,
+ "DeepPink2", 238, 18, 137,
+ "DeepPink3", 205, 16, 118,
+ "DeepPink4", 139, 10, 80,
+ "DeepSkyBlue", 0, 191, 255,
+ "DeepSkyBlue1", 0, 191, 255,
+ "DeepSkyBlue2", 0, 178, 238,
+ "DeepSkyBlue3", 0, 154, 205,
+ "DeepSkyBlue4", 0, 104, 139,
+ "dim gray", 105, 105, 105,
+ "dim grey", 105, 105, 105,
+ "DimGray", 105, 105, 105,
+ "DimGrey", 105, 105, 105,
+ "dodger blue", 30, 144, 255,
+ "DodgerBlue", 30, 144, 255,
+ "DodgerBlue1", 30, 144, 255,
+ "DodgerBlue2", 28, 134, 238,
+ "DodgerBlue3", 24, 116, 205,
+ "DodgerBlue4", 16, 78, 139,
+ "firebrick", 178, 34, 34,
+ "firebrick1", 255, 48, 48,
+ "firebrick2", 238, 44, 44,
+ "firebrick3", 205, 38, 38,
+ "firebrick4", 139, 26, 26,
+ "floral white", 255, 250, 240,
+ "FloralWhite", 255, 250, 240,
+ "forest green", 34, 139, 34,
+ "ForestGreen", 34, 139, 34,
+ "gainsboro", 220, 220, 220,
+ "ghost white", 248, 248, 255,
+ "GhostWhite", 248, 248, 255,
+ "gold", 255, 215, 0,
+ "gold1", 255, 215, 0,
+ "gold2", 238, 201, 0,
+ "gold3", 205, 173, 0,
+ "gold4", 139, 117, 0,
+ "goldenrod", 218, 165, 32,
+ "goldenrod1", 255, 193, 37,
+ "goldenrod2", 238, 180, 34,
+ "goldenrod3", 205, 155, 29,
+ "goldenrod4", 139, 105, 20,
+ "gray", 190, 190, 190,
+ "gray0", 0, 0, 0,
+ "gray1", 3, 3, 3,
+ "gray10", 26, 26, 26,
+ "gray100", 255, 255, 255,
+ "gray11", 28, 28, 28,
+ "gray12", 31, 31, 31,
+ "gray13", 33, 33, 33,
+ "gray14", 36, 36, 36,
+ "gray15", 38, 38, 38,
+ "gray16", 41, 41, 41,
+ "gray17", 43, 43, 43,
+ "gray18", 46, 46, 46,
+ "gray19", 48, 48, 48,
+ "gray2", 5, 5, 5,
+ "gray20", 51, 51, 51,
+ "gray21", 54, 54, 54,
+ "gray22", 56, 56, 56,
+ "gray23", 59, 59, 59,
+ "gray24", 61, 61, 61,
+ "gray25", 64, 64, 64,
+ "gray26", 66, 66, 66,
+ "gray27", 69, 69, 69,
+ "gray28", 71, 71, 71,
+ "gray29", 74, 74, 74,
+ "gray3", 8, 8, 8,
+ "gray30", 77, 77, 77,
+ "gray31", 79, 79, 79,
+ "gray32", 82, 82, 82,
+ "gray33", 84, 84, 84,
+ "gray34", 87, 87, 87,
+ "gray35", 89, 89, 89,
+ "gray36", 92, 92, 92,
+ "gray37", 94, 94, 94,
+ "gray38", 97, 97, 97,
+ "gray39", 99, 99, 99,
+ "gray4", 10, 10, 10,
+ "gray40", 102, 102, 102,
+ "gray41", 105, 105, 105,
+ "gray42", 107, 107, 107,
+ "gray43", 110, 110, 110,
+ "gray44", 112, 112, 112,
+ "gray45", 115, 115, 115,
+ "gray46", 117, 117, 117,
+ "gray47", 120, 120, 120,
+ "gray48", 122, 122, 122,
+ "gray49", 125, 125, 125,
+ "gray5", 13, 13, 13,
+ "gray50", 127, 127, 127,
+ "gray51", 130, 130, 130,
+ "gray52", 133, 133, 133,
+ "gray53", 135, 135, 135,
+ "gray54", 138, 138, 138,
+ "gray55", 140, 140, 140,
+ "gray56", 143, 143, 143,
+ "gray57", 145, 145, 145,
+ "gray58", 148, 148, 148,
+ "gray59", 150, 150, 150,
+ "gray6", 15, 15, 15,
+ "gray60", 153, 153, 153,
+ "gray61", 156, 156, 156,
+ "gray62", 158, 158, 158,
+ "gray63", 161, 161, 161,
+ "gray64", 163, 163, 163,
+ "gray65", 166, 166, 166,
+ "gray66", 168, 168, 168,
+ "gray67", 171, 171, 171,
+ "gray68", 173, 173, 173,
+ "gray69", 176, 176, 176,
+ "gray7", 18, 18, 18,
+ "gray70", 179, 179, 179,
+ "gray71", 181, 181, 181,
+ "gray72", 184, 184, 184,
+ "gray73", 186, 186, 186,
+ "gray74", 189, 189, 189,
+ "gray75", 191, 191, 191,
+ "gray76", 194, 194, 194,
+ "gray77", 196, 196, 196,
+ "gray78", 199, 199, 199,
+ "gray79", 201, 201, 201,
+ "gray8", 20, 20, 20,
+ "gray80", 204, 204, 204,
+ "gray81", 207, 207, 207,
+ "gray82", 209, 209, 209,
+ "gray83", 212, 212, 212,
+ "gray84", 214, 214, 214,
+ "gray85", 217, 217, 217,
+ "gray86", 219, 219, 219,
+ "gray87", 222, 222, 222,
+ "gray88", 224, 224, 224,
+ "gray89", 227, 227, 227,
+ "gray9", 23, 23, 23,
+ "gray90", 229, 229, 229,
+ "gray91", 232, 232, 232,
+ "gray92", 235, 235, 235,
+ "gray93", 237, 237, 237,
+ "gray94", 240, 240, 240,
+ "gray95", 242, 242, 242,
+ "gray96", 245, 245, 245,
+ "gray97", 247, 247, 247,
+ "gray98", 250, 250, 250,
+ "gray99", 252, 252, 252,
+ "green", 0, 255, 0,
+ "green yellow", 173, 255, 47,
+ "green1", 0, 255, 0,
+ "green2", 0, 238, 0,
+ "green3", 0, 205, 0,
+ "green4", 0, 139, 0,
+ "GreenYellow", 173, 255, 47,
+ "grey", 190, 190, 190,
+ "grey0", 0, 0, 0,
+ "grey1", 3, 3, 3,
+ "grey10", 26, 26, 26,
+ "grey100", 255, 255, 255,
+ "grey11", 28, 28, 28,
+ "grey12", 31, 31, 31,
+ "grey13", 33, 33, 33,
+ "grey14", 36, 36, 36,
+ "grey15", 38, 38, 38,
+ "grey16", 41, 41, 41,
+ "grey17", 43, 43, 43,
+ "grey18", 46, 46, 46,
+ "grey19", 48, 48, 48,
+ "grey2", 5, 5, 5,
+ "grey20", 51, 51, 51,
+ "grey21", 54, 54, 54,
+ "grey22", 56, 56, 56,
+ "grey23", 59, 59, 59,
+ "grey24", 61, 61, 61,
+ "grey25", 64, 64, 64,
+ "grey26", 66, 66, 66,
+ "grey27", 69, 69, 69,
+ "grey28", 71, 71, 71,
+ "grey29", 74, 74, 74,
+ "grey3", 8, 8, 8,
+ "grey30", 77, 77, 77,
+ "grey31", 79, 79, 79,
+ "grey32", 82, 82, 82,
+ "grey33", 84, 84, 84,
+ "grey34", 87, 87, 87,
+ "grey35", 89, 89, 89,
+ "grey36", 92, 92, 92,
+ "grey37", 94, 94, 94,
+ "grey38", 97, 97, 97,
+ "grey39", 99, 99, 99,
+ "grey4", 10, 10, 10,
+ "grey40", 102, 102, 102,
+ "grey41", 105, 105, 105,
+ "grey42", 107, 107, 107,
+ "grey43", 110, 110, 110,
+ "grey44", 112, 112, 112,
+ "grey45", 115, 115, 115,
+ "grey46", 117, 117, 117,
+ "grey47", 120, 120, 120,
+ "grey48", 122, 122, 122,
+ "grey49", 125, 125, 125,
+ "grey5", 13, 13, 13,
+ "grey50", 127, 127, 127,
+ "grey51", 130, 130, 130,
+ "grey52", 133, 133, 133,
+ "grey53", 135, 135, 135,
+ "grey54", 138, 138, 138,
+ "grey55", 140, 140, 140,
+ "grey56", 143, 143, 143,
+ "grey57", 145, 145, 145,
+ "grey58", 148, 148, 148,
+ "grey59", 150, 150, 150,
+ "grey6", 15, 15, 15,
+ "grey60", 153, 153, 153,
+ "grey61", 156, 156, 156,
+ "grey62", 158, 158, 158,
+ "grey63", 161, 161, 161,
+ "grey64", 163, 163, 163,
+ "grey65", 166, 166, 166,
+ "grey66", 168, 168, 168,
+ "grey67", 171, 171, 171,
+ "grey68", 173, 173, 173,
+ "grey69", 176, 176, 176,
+ "grey7", 18, 18, 18,
+ "grey70", 179, 179, 179,
+ "grey71", 181, 181, 181,
+ "grey72", 184, 184, 184,
+ "grey73", 186, 186, 186,
+ "grey74", 189, 189, 189,
+ "grey75", 191, 191, 191,
+ "grey76", 194, 194, 194,
+ "grey77", 196, 196, 196,
+ "grey78", 199, 199, 199,
+ "grey79", 201, 201, 201,
+ "grey8", 20, 20, 20,
+ "grey80", 204, 204, 204,
+ "grey81", 207, 207, 207,
+ "grey82", 209, 209, 209,
+ "grey83", 212, 212, 212,
+ "grey84", 214, 214, 214,
+ "grey85", 217, 217, 217,
+ "grey86", 219, 219, 219,
+ "grey87", 222, 222, 222,
+ "grey88", 224, 224, 224,
+ "grey89", 227, 227, 227,
+ "grey9", 23, 23, 23,
+ "grey90", 229, 229, 229,
+ "grey91", 232, 232, 232,
+ "grey92", 235, 235, 235,
+ "grey93", 237, 237, 237,
+ "grey94", 240, 240, 240,
+ "grey95", 242, 242, 242,
+ "grey96", 245, 245, 245,
+ "grey97", 247, 247, 247,
+ "grey98", 250, 250, 250,
+ "grey99", 252, 252, 252,
+ "honeydew", 240, 255, 240,
+ "honeydew1", 240, 255, 240,
+ "honeydew2", 224, 238, 224,
+ "honeydew3", 193, 205, 193,
+ "honeydew4", 131, 139, 131,
+ "hot pink", 255, 105, 180,
+ "HotPink", 255, 105, 180,
+ "HotPink1", 255, 110, 180,
+ "HotPink2", 238, 106, 167,
+ "HotPink3", 205, 96, 144,
+ "HotPink4", 139, 58, 98,
+ "indian red", 205, 92, 92,
+ "IndianRed", 205, 92, 92,
+ "IndianRed1", 255, 106, 106,
+ "IndianRed2", 238, 99, 99,
+ "IndianRed3", 205, 85, 85,
+ "IndianRed4", 139, 58, 58,
+ "ivory", 255, 255, 240,
+ "ivory1", 255, 255, 240,
+ "ivory2", 238, 238, 224,
+ "ivory3", 205, 205, 193,
+ "ivory4", 139, 139, 131,
+ "khaki", 240, 230, 140,
+ "khaki1", 255, 246, 143,
+ "khaki2", 238, 230, 133,
+ "khaki3", 205, 198, 115,
+ "khaki4", 139, 134, 78,
+ "lavender", 230, 230, 250,
+ "lavender blush", 255, 240, 245,
+ "LavenderBlush", 255, 240, 245,
+ "LavenderBlush1", 255, 240, 245,
+ "LavenderBlush2", 238, 224, 229,
+ "LavenderBlush3", 205, 193, 197,
+ "LavenderBlush4", 139, 131, 134,
+ "lawn green", 124, 252, 0,
+ "LawnGreen", 124, 252, 0,
+ "lemon chiffon", 255, 250, 205,
+ "LemonChiffon", 255, 250, 205,
+ "LemonChiffon1", 255, 250, 205,
+ "LemonChiffon2", 238, 233, 191,
+ "LemonChiffon3", 205, 201, 165,
+ "LemonChiffon4", 139, 137, 112,
+ "light blue", 173, 216, 230,
+ "light coral", 240, 128, 128,
+ "light cyan", 224, 255, 255,
+ "light goldenrod", 238, 221, 130,
+ "light goldenrod yellow", 250, 250, 210,
+ "light gray", 211, 211, 211,
+ "light green", 144, 238, 144,
+ "light grey", 211, 211, 211,
+ "light pink", 255, 182, 193,
+ "light salmon", 255, 160, 122,
+ "light sea green", 32, 178, 170,
+ "light sky blue", 135, 206, 250,
+ "light slate blue", 132, 112, 255,
+ "light slate gray", 119, 136, 153,
+ "light slate grey", 119, 136, 153,
+ "light steel blue", 176, 196, 222,
+ "light yellow", 255, 255, 224,
+ "LightBlue", 173, 216, 230,
+ "LightBlue1", 191, 239, 255,
+ "LightBlue2", 178, 223, 238,
+ "LightBlue3", 154, 192, 205,
+ "LightBlue4", 104, 131, 139,
+ "LightCoral", 240, 128, 128,
+ "LightCyan", 224, 255, 255,
+ "LightCyan1", 224, 255, 255,
+ "LightCyan2", 209, 238, 238,
+ "LightCyan3", 180, 205, 205,
+ "LightCyan4", 122, 139, 139,
+ "LightGoldenrod", 238, 221, 130,
+ "LightGoldenrod1", 255, 236, 139,
+ "LightGoldenrod2", 238, 220, 130,
+ "LightGoldenrod3", 205, 190, 112,
+ "LightGoldenrod4", 139, 129, 76,
+ "LightGoldenrodYellow", 250, 250, 210,
+ "LightGray", 211, 211, 211,
+ "LightGreen", 144, 238, 144,
+ "LightGrey", 211, 211, 211,
+ "LightPink", 255, 182, 193,
+ "LightPink1", 255, 174, 185,
+ "LightPink2", 238, 162, 173,
+ "LightPink3", 205, 140, 149,
+ "LightPink4", 139, 95, 101,
+ "LightSalmon", 255, 160, 122,
+ "LightSalmon1", 255, 160, 122,
+ "LightSalmon2", 238, 149, 114,
+ "LightSalmon3", 205, 129, 98,
+ "LightSalmon4", 139, 87, 66,
+ "LightSeaGreen", 32, 178, 170,
+ "LightSkyBlue", 135, 206, 250,
+ "LightSkyBlue1", 176, 226, 255,
+ "LightSkyBlue2", 164, 211, 238,
+ "LightSkyBlue3", 141, 182, 205,
+ "LightSkyBlue4", 96, 123, 139,
+ "LightSlateBlue", 132, 112, 255,
+ "LightSlateGray", 119, 136, 153,
+ "LightSlateGrey", 119, 136, 153,
+ "LightSteelBlue", 176, 196, 222,
+ "LightSteelBlue1", 202, 225, 255,
+ "LightSteelBlue2", 188, 210, 238,
+ "LightSteelBlue3", 162, 181, 205,
+ "LightSteelBlue4", 110, 123, 139,
+ "LightYellow", 255, 255, 224,
+ "LightYellow1", 255, 255, 224,
+ "LightYellow2", 238, 238, 209,
+ "LightYellow3", 205, 205, 180,
+ "LightYellow4", 139, 139, 122,
+ "lime green", 50, 205, 50,
+ "LimeGreen", 50, 205, 50,
+ "linen", 250, 240, 230,
+ "magenta", 255, 0, 255,
+ "magenta1", 255, 0, 255,
+ "magenta2", 238, 0, 238,
+ "magenta3", 205, 0, 205,
+ "magenta4", 139, 0, 139,
+ "maroon", 176, 48, 96,
+ "maroon1", 255, 52, 179,
+ "maroon2", 238, 48, 167,
+ "maroon3", 205, 41, 144,
+ "maroon4", 139, 28, 98,
+ "medium aquamarine", 102, 205, 170,
+ "medium blue", 0, 0, 205,
+ "medium orchid", 186, 85, 211,
+ "medium purple", 147, 112, 219,
+ "medium sea green", 60, 179, 113,
+ "medium slate blue", 123, 104, 238,
+ "medium spring green", 0, 250, 154,
+ "medium turquoise", 72, 209, 204,
+ "medium violet red", 199, 21, 133,
+ "MediumAquamarine", 102, 205, 170,
+ "MediumBlue", 0, 0, 205,
+ "MediumOrchid", 186, 85, 211,
+ "MediumOrchid1", 224, 102, 255,
+ "MediumOrchid2", 209, 95, 238,
+ "MediumOrchid3", 180, 82, 205,
+ "MediumOrchid4", 122, 55, 139,
+ "MediumPurple", 147, 112, 219,
+ "MediumPurple1", 171, 130, 255,
+ "MediumPurple2", 159, 121, 238,
+ "MediumPurple3", 137, 104, 205,
+ "MediumPurple4", 93, 71, 139,
+ "MediumSeaGreen", 60, 179, 113,
+ "MediumSlateBlue", 123, 104, 238,
+ "MediumSpringGreen", 0, 250, 154,
+ "MediumTurquoise", 72, 209, 204,
+ "MediumVioletRed", 199, 21, 133,
+ "midnight blue", 25, 25, 112,
+ "MidnightBlue", 25, 25, 112,
+ "mint cream", 245, 255, 250,
+ "MintCream", 245, 255, 250,
+ "misty rose", 255, 228, 225,
+ "MistyRose", 255, 228, 225,
+ "MistyRose1", 255, 228, 225,
+ "MistyRose2", 238, 213, 210,
+ "MistyRose3", 205, 183, 181,
+ "MistyRose4", 139, 125, 123,
+ "moccasin", 255, 228, 181,
+ "navajo white", 255, 222, 173,
+ "NavajoWhite", 255, 222, 173,
+ "NavajoWhite1", 255, 222, 173,
+ "NavajoWhite2", 238, 207, 161,
+ "NavajoWhite3", 205, 179, 139,
+ "NavajoWhite4", 139, 121, 94,
+ "navy", 0, 0, 128,
+ "navy blue", 0, 0, 128,
+ "NavyBlue", 0, 0, 128,
+ "old lace", 253, 245, 230,
+ "OldLace", 253, 245, 230,
+ "olive drab", 107, 142, 35,
+ "OliveDrab", 107, 142, 35,
+ "OliveDrab1", 192, 255, 62,
+ "OliveDrab2", 179, 238, 58,
+ "OliveDrab3", 154, 205, 50,
+ "OliveDrab4", 105, 139, 34,
+ "orange", 255, 165, 0,
+ "orange red", 255, 69, 0,
+ "orange1", 255, 165, 0,
+ "orange2", 238, 154, 0,
+ "orange3", 205, 133, 0,
+ "orange4", 139, 90, 0,
+ "OrangeRed", 255, 69, 0,
+ "OrangeRed1", 255, 69, 0,
+ "OrangeRed2", 238, 64, 0,
+ "OrangeRed3", 205, 55, 0,
+ "OrangeRed4", 139, 37, 0,
+ "orchid", 218, 112, 214,
+ "orchid1", 255, 131, 250,
+ "orchid2", 238, 122, 233,
+ "orchid3", 205, 105, 201,
+ "orchid4", 139, 71, 137,
+ "pale goldenrod", 238, 232, 170,
+ "pale green", 152, 251, 152,
+ "pale turquoise", 175, 238, 238,
+ "pale violet red", 219, 112, 147,
+ "PaleGoldenrod", 238, 232, 170,
+ "PaleGreen", 152, 251, 152,
+ "PaleGreen1", 154, 255, 154,
+ "PaleGreen2", 144, 238, 144,
+ "PaleGreen3", 124, 205, 124,
+ "PaleGreen4", 84, 139, 84,
+ "PaleTurquoise", 175, 238, 238,
+ "PaleTurquoise1", 187, 255, 255,
+ "PaleTurquoise2", 174, 238, 238,
+ "PaleTurquoise3", 150, 205, 205,
+ "PaleTurquoise4", 102, 139, 139,
+ "PaleVioletRed", 219, 112, 147,
+ "PaleVioletRed1", 255, 130, 171,
+ "PaleVioletRed2", 238, 121, 159,
+ "PaleVioletRed3", 205, 104, 137,
+ "PaleVioletRed4", 139, 71, 93,
+ "papaya whip", 255, 239, 213,
+ "PapayaWhip", 255, 239, 213,
+ "peach puff", 255, 218, 185,
+ "PeachPuff", 255, 218, 185,
+ "PeachPuff1", 255, 218, 185,
+ "PeachPuff2", 238, 203, 173,
+ "PeachPuff3", 205, 175, 149,
+ "PeachPuff4", 139, 119, 101,
+ "peru", 205, 133, 63,
+ "pink", 255, 192, 203,
+ "pink1", 255, 181, 197,
+ "pink2", 238, 169, 184,
+ "pink3", 205, 145, 158,
+ "pink4", 139, 99, 108,
+ "plum", 221, 160, 221,
+ "plum1", 255, 187, 255,
+ "plum2", 238, 174, 238,
+ "plum3", 205, 150, 205,
+ "plum4", 139, 102, 139,
+ "powder blue", 176, 224, 230,
+ "PowderBlue", 176, 224, 230,
+ "purple", 160, 32, 240,
+ "purple1", 155, 48, 255,
+ "purple2", 145, 44, 238,
+ "purple3", 125, 38, 205,
+ "purple4", 85, 26, 139,
+ "red", 255, 0, 0,
+ "red1", 255, 0, 0,
+ "red2", 238, 0, 0,
+ "red3", 205, 0, 0,
+ "red4", 139, 0, 0,
+ "rosy brown", 188, 143, 143,
+ "RosyBrown", 188, 143, 143,
+ "RosyBrown1", 255, 193, 193,
+ "RosyBrown2", 238, 180, 180,
+ "RosyBrown3", 205, 155, 155,
+ "RosyBrown4", 139, 105, 105,
+ "royal blue", 65, 105, 225,
+ "RoyalBlue", 65, 105, 225,
+ "RoyalBlue1", 72, 118, 255,
+ "RoyalBlue2", 67, 110, 238,
+ "RoyalBlue3", 58, 95, 205,
+ "RoyalBlue4", 39, 64, 139,
+ "saddle brown", 139, 69, 19,
+ "SaddleBrown", 139, 69, 19,
+ "salmon", 250, 128, 114,
+ "salmon1", 255, 140, 105,
+ "salmon2", 238, 130, 98,
+ "salmon3", 205, 112, 84,
+ "salmon4", 139, 76, 57,
+ "sandy brown", 244, 164, 96,
+ "SandyBrown", 244, 164, 96,
+ "sea green", 46, 139, 87,
+ "SeaGreen", 46, 139, 87,
+ "SeaGreen1", 84, 255, 159,
+ "SeaGreen2", 78, 238, 148,
+ "SeaGreen3", 67, 205, 128,
+ "SeaGreen4", 46, 139, 87,
+ "seashell", 255, 245, 238,
+ "seashell1", 255, 245, 238,
+ "seashell2", 238, 229, 222,
+ "seashell3", 205, 197, 191,
+ "seashell4", 139, 134, 130,
+ "sienna", 160, 82, 45,
+ "sienna1", 255, 130, 71,
+ "sienna2", 238, 121, 66,
+ "sienna3", 205, 104, 57,
+ "sienna4", 139, 71, 38,
+ "sky blue", 135, 206, 235,
+ "SkyBlue", 135, 206, 235,
+ "SkyBlue1", 135, 206, 255,
+ "SkyBlue2", 126, 192, 238,
+ "SkyBlue3", 108, 166, 205,
+ "SkyBlue4", 74, 112, 139,
+ "slate blue", 106, 90, 205,
+ "slate gray", 112, 128, 144,
+ "slate grey", 112, 128, 144,
+ "SlateBlue", 106, 90, 205,
+ "SlateBlue1", 131, 111, 255,
+ "SlateBlue2", 122, 103, 238,
+ "SlateBlue3", 105, 89, 205,
+ "SlateBlue4", 71, 60, 139,
+ "SlateGray", 112, 128, 144,
+ "SlateGray1", 198, 226, 255,
+ "SlateGray2", 185, 211, 238,
+ "SlateGray3", 159, 182, 205,
+ "SlateGray4", 108, 123, 139,
+ "SlateGrey", 112, 128, 144,
+ "snow", 255, 250, 250,
+ "snow1", 255, 250, 250,
+ "snow2", 238, 233, 233,
+ "snow3", 205, 201, 201,
+ "snow4", 139, 137, 137,
+ "spring green", 0, 255, 127,
+ "SpringGreen", 0, 255, 127,
+ "SpringGreen1", 0, 255, 127,
+ "SpringGreen2", 0, 238, 118,
+ "SpringGreen3", 0, 205, 102,
+ "SpringGreen4", 0, 139, 69,
+ "steel blue", 70, 130, 180,
+ "SteelBlue", 70, 130, 180,
+ "SteelBlue1", 99, 184, 255,
+ "SteelBlue2", 92, 172, 238,
+ "SteelBlue3", 79, 148, 205,
+ "SteelBlue4", 54, 100, 139,
+ "tan", 210, 180, 140,
+ "tan1", 255, 165, 79,
+ "tan2", 238, 154, 73,
+ "tan3", 205, 133, 63,
+ "tan4", 139, 90, 43,
+ "thistle", 216, 191, 216,
+ "thistle1", 255, 225, 255,
+ "thistle2", 238, 210, 238,
+ "thistle3", 205, 181, 205,
+ "thistle4", 139, 123, 139,
+ "tomato", 255, 99, 71,
+ "tomato1", 255, 99, 71,
+ "tomato2", 238, 92, 66,
+ "tomato3", 205, 79, 57,
+ "tomato4", 139, 54, 38,
+ "turquoise", 64, 224, 208,
+ "turquoise1", 0, 245, 255,
+ "turquoise2", 0, 229, 238,
+ "turquoise3", 0, 197, 205,
+ "turquoise4", 0, 134, 139,
+ "violet", 238, 130, 238,
+ "violet red", 208, 32, 144,
+ "VioletRed", 208, 32, 144,
+ "VioletRed1", 255, 62, 150,
+ "VioletRed2", 238, 58, 140,
+ "VioletRed3", 205, 50, 120,
+ "VioletRed4", 139, 34, 82,
+ "wheat", 245, 222, 179,
+ "wheat1", 255, 231, 186,
+ "wheat2", 238, 216, 174,
+ "wheat3", 205, 186, 150,
+ "wheat4", 139, 126, 102,
+ "white", 255, 255, 255,
+ "white smoke", 245, 245, 245,
+ "WhiteSmoke", 245, 245, 245,
+ "yellow", 255, 255, 0,
+ "yellow green", 154, 205, 50,
+ "yellow1", 255, 255, 0,
+ "yellow2", 238, 238, 0,
+ "yellow3", 205, 205, 0,
+ "yellow4", 139, 139, 0,
+ "YellowGreen", 154, 205, 50,
+ NULL, 0, 0, 0
+};
+
+
+/*
+ * This value will be set to the number of colors in the color table
+ * the first time it is needed.
+ */
+
+static int numXColors = 0;
+
+/*
+ * Forward declarations for functions used only in this file.
+ */
+
+static int FindColor _ANSI_ARGS_((const char *name, XColor *colorPtr));
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * FindColor --
+ *
+ * This routine finds the color entry that corresponds to the
+ * specified color.
+ *
+ * Results:
+ * Returns non-zero on success. The RGB values of the XColor
+ * will be initialized to the proper values on success.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+static int
+FindColor(name, colorPtr)
+ const char *name;
+ XColor *colorPtr;
+{
+ int l, u, r, i;
+
+ /*
+ * Count the number of elements in the color array if we haven't
+ * done so yet.
+ */
+
+ if (numXColors == 0) {
+ XColorEntry *ePtr;
+ for (ePtr = xColors; ePtr->name != NULL; ePtr++) {
+ numXColors++;
+ }
+ }
+
+ /*
+ * Perform a binary search on the sorted array of colors.
+ */
+
+ l = 0;
+ u = numXColors - 1;
+ while (l <= u) {
+ i = (l + u) / 2;
+ r = strcasecmp(name, xColors[i].name);
+ if (r == 0) {
+ break;
+ } else if (r < 0) {
+ u = i-1;
+ } else {
+ l = i+1;
+ }
+ }
+ if (l > u) {
+ return 0;
+ }
+ colorPtr->red = xColors[i].red << 8;
+ colorPtr->green = xColors[i].green << 8;
+ colorPtr->blue = xColors[i].blue << 8;
+ return 1;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XParseColor --
+ *
+ * Partial implementation of X color name parsing interface.
+ *
+ * Results:
+ * Returns non-zero on success.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+Status
+XParseColor(display, map, spec, colorPtr)
+ Display *display;
+ Colormap map;
+ const char* spec;
+ XColor *colorPtr;
+{
+ if (spec[0] == '#') {
+ char fmt[16];
+ int i, red, green, blue;
+
+ if ((i = strlen(spec+1))%3) {
+ return 0;
+ }
+ i /= 3;
+
+ sprintf(fmt, "%%%dx%%%dx%%%dx", i, i, i);
+ if (sscanf(spec+1, fmt, &red, &green, &blue) != 3) {
+ return 0;
+ }
+ colorPtr->red = ((unsigned short) red) << (4 * (4 - i));
+ colorPtr->green = ((unsigned short) green) << (4 * (4 - i));
+ colorPtr->blue = ((unsigned short) blue) << (4 * (4 - i));
+ } else {
+ if (!FindColor(spec, colorPtr)) {
+ return 0;
+ }
+ }
+ colorPtr->pixel = TkpGetPixel(colorPtr);
+ colorPtr->flags = DoRed|DoGreen|DoBlue;
+ colorPtr->pad = 0;
+ return 1;
+}
diff --git a/xlib/xdraw.c b/xlib/xdraw.c
new file mode 100644
index 0000000..8e78011
--- /dev/null
+++ b/xlib/xdraw.c
@@ -0,0 +1,82 @@
+/*
+ * xdraw.c --
+ *
+ * This file contains generic procedures related to X drawing
+ * primitives.
+ *
+ * Copyright (c) 1995 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xdraw.c 1.2 96/02/15 18:55:46
+ */
+
+#include "tk.h"
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XDrawLine --
+ *
+ * Draw a single line between two points in a given drawable.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Draws a single line segment.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+XDrawLine(display, d, gc, x1, y1, x2, y2)
+ Display* display;
+ Drawable d;
+ GC gc;
+ int x1, y1, x2, y2; /* Coordinates of line segment. */
+{
+ XPoint points[2];
+
+ points[0].x = x1;
+ points[0].y = y1;
+ points[1].x = x2;
+ points[1].y = y2;
+ XDrawLines(display, d, gc, points, 2, CoordModeOrigin);
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XFillRectangle --
+ *
+ * Fills a rectangular area in the given drawable. This procedure
+ * is implemented as a call to XFillRectangles.
+ *
+ * Results:
+ * None
+ *
+ * Side effects:
+ * Fills the specified rectangle.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+XFillRectangle(display, d, gc, x, y, width, height)
+ Display* display;
+ Drawable d;
+ GC gc;
+ int x;
+ int y;
+ unsigned int width;
+ unsigned int height;
+{
+ XRectangle rectangle;
+ rectangle.x = x;
+ rectangle.y = y;
+ rectangle.width = width;
+ rectangle.height = height;
+ XFillRectangles(display, d, gc, &rectangle, 1);
+}
diff --git a/xlib/xgc.c b/xlib/xgc.c
new file mode 100644
index 0000000..cdd1021
--- /dev/null
+++ b/xlib/xgc.c
@@ -0,0 +1,353 @@
+/*
+ * xgc.c --
+ *
+ * This file contains generic routines for manipulating X graphics
+ * contexts.
+ *
+ * Copyright (c) 1995-1996 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xgc.c 1.8 96/10/11 14:59:39
+ */
+
+#include <tkInt.h>
+
+#ifdef MAC_TCL
+# include <Xlib.h>
+#else
+# include <X11/Xlib.h>
+#endif
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XCreateGC --
+ *
+ * Allocate a new GC, and initialize the specified fields.
+ *
+ * Results:
+ * Returns a newly allocated GC.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+GC
+XCreateGC(display, d, mask, values)
+ Display* display;
+ Drawable d;
+ unsigned long mask;
+ XGCValues* values;
+{
+ GC gp;
+
+ gp = (XGCValues *)ckalloc(sizeof(XGCValues));
+ if (!gp) {
+ return None;
+ }
+
+ gp->function = (mask & GCFunction) ?values->function :GXcopy;
+ gp->plane_mask = (mask & GCPlaneMask) ?values->plane_mask :~0;
+ gp->foreground = (mask & GCForeground) ?values->foreground :0;
+ gp->background = (mask & GCBackground) ?values->background :0xffffff;
+ gp->line_width = (mask & GCLineWidth) ?values->line_width :0;
+ gp->line_style = (mask & GCLineStyle) ?values->line_style :LineSolid;
+ gp->cap_style = (mask & GCCapStyle) ?values->cap_style :0;
+ gp->join_style = (mask & GCJoinStyle) ?values->join_style :0;
+ gp->fill_style = (mask & GCFillStyle) ?values->fill_style :FillSolid;
+ gp->fill_rule = (mask & GCFillRule) ?values->fill_rule :WindingRule;
+ gp->arc_mode = (mask & GCArcMode) ?values->arc_mode :ArcPieSlice;
+ gp->tile = (mask & GCTile) ?values->tile :None;
+ gp->stipple = (mask & GCStipple) ?values->stipple :None;
+ gp->ts_x_origin = (mask & GCTileStipXOrigin) ?values->ts_x_origin:0;
+ gp->ts_y_origin = (mask & GCTileStipYOrigin) ?values->ts_y_origin:0;
+ gp->font = (mask & GCFont) ?values->font :None;
+ gp->subwindow_mode = (mask & GCSubwindowMode)?values->subwindow_mode:ClipByChildren;
+ gp->graphics_exposures = (mask & GCGraphicsExposures)?values->graphics_exposures:True;
+ gp->clip_x_origin = (mask & GCClipXOrigin) ?values->clip_x_origin :0;
+ gp->clip_y_origin = (mask & GCClipYOrigin) ?values->clip_y_origin :0;
+ gp->dash_offset = (mask & GCDashOffset) ?values->dash_offset :0;
+ gp->dashes = (mask & GCDashList) ?values->dashes :4;
+
+ if (mask & GCClipMask) {
+ gp->clip_mask = (Pixmap)ckalloc(sizeof(TkpClipMask));
+ ((TkpClipMask*)gp->clip_mask)->type = TKP_CLIP_PIXMAP;
+ ((TkpClipMask*)gp->clip_mask)->value.pixmap = values->clip_mask;
+ } else {
+ gp->clip_mask = None;
+ }
+
+ return gp;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XChangeGC --
+ *
+ * Changes the GC components specified by valuemask for the
+ * specified GC.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Updates the specified GC.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+XChangeGC(d, gc, mask, values)
+ Display * d;
+ GC gc;
+ unsigned long mask;
+ XGCValues *values;
+{
+ if (mask & GCFunction) { gc->function = values->function; }
+ if (mask & GCPlaneMask) { gc->plane_mask = values->plane_mask; }
+ if (mask & GCForeground) { gc->foreground = values->foreground; }
+ if (mask & GCBackground) { gc->background = values->background; }
+ if (mask & GCLineWidth) { gc->line_width = values->line_width; }
+ if (mask & GCLineStyle) { gc->line_style = values->line_style; }
+ if (mask & GCCapStyle) { gc->cap_style = values->cap_style; }
+ if (mask & GCJoinStyle) { gc->join_style = values->join_style; }
+ if (mask & GCFillStyle) { gc->fill_style = values->fill_style; }
+ if (mask & GCFillRule) { gc->fill_rule = values->fill_rule; }
+ if (mask & GCArcMode) { gc->arc_mode = values->arc_mode; }
+ if (mask & GCTile) { gc->tile = values->tile; }
+ if (mask & GCStipple) { gc->stipple = values->stipple; }
+ if (mask & GCTileStipXOrigin) { gc->ts_x_origin = values->ts_x_origin; }
+ if (mask & GCTileStipYOrigin) { gc->ts_y_origin = values->ts_y_origin; }
+ if (mask & GCFont) { gc->font = values->font; }
+ if (mask & GCSubwindowMode) { gc->subwindow_mode = values->subwindow_mode; }
+ if (mask & GCGraphicsExposures) { gc->graphics_exposures = values->graphics_exposures; }
+ if (mask & GCClipXOrigin) { gc->clip_x_origin = values->clip_x_origin; }
+ if (mask & GCClipYOrigin) { gc->clip_y_origin = values->clip_y_origin; }
+ if (mask & GCClipMask) { XSetClipMask(d, gc, values->clip_mask); }
+ if (mask & GCDashOffset) { gc->dash_offset = values->dash_offset; }
+ if (mask & GCDashList) { gc->dashes = values->dashes; }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XFreeGC --
+ *
+ * Deallocates the specified graphics context.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+XFreeGC(d, gc)
+ Display * d;
+ GC gc;
+{
+ if (gc != None) {
+ if (gc->clip_mask != None) {
+ ckfree((char*) gc->clip_mask);
+ }
+ ckfree((char *) gc);
+ }
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XSetForeground, etc. --
+ *
+ * The following functions are simply accessor functions for
+ * the GC slots.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Each function sets some slot in the GC.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+XSetForeground(display, gc, foreground)
+ Display *display;
+ GC gc;
+ unsigned long foreground;
+{
+ gc->foreground = foreground;
+}
+
+void
+XSetBackground(display, gc, background)
+ Display *display;
+ GC gc;
+ unsigned long background;
+{
+ gc->background = background;
+}
+
+void
+XSetFunction(display, gc, function)
+ Display *display;
+ GC gc;
+ int function;
+{
+ gc->function = function;
+}
+
+void
+XSetFillRule(display, gc, fill_rule)
+ Display *display;
+ GC gc;
+ int fill_rule;
+{
+ gc->fill_rule = fill_rule;
+}
+
+void
+XSetFillStyle(display, gc, fill_style)
+ Display *display;
+ GC gc;
+ int fill_style;
+{
+ gc->fill_style = fill_style;
+}
+
+void
+XSetTSOrigin(display, gc, x, y)
+ Display *display;
+ GC gc;
+ int x, y;
+{
+ gc->ts_x_origin = x;
+ gc->ts_y_origin = y;
+}
+
+void
+XSetFont(display, gc, font)
+ Display *display;
+ GC gc;
+ Font font;
+{
+ gc->font = font;
+}
+
+void
+XSetArcMode(display, gc, arc_mode)
+ Display *display;
+ GC gc;
+ int arc_mode;
+{
+ gc->arc_mode = arc_mode;
+}
+
+void
+XSetStipple(display, gc, stipple)
+ Display *display;
+ GC gc;
+ Pixmap stipple;
+{
+ gc->stipple = stipple;
+}
+
+void
+XSetLineAttributes(display, gc, line_width, line_style, cap_style,
+ join_style)
+ Display *display;
+ GC gc;
+ unsigned int line_width;
+ int line_style;
+ int cap_style;
+ int join_style;
+{
+ gc->line_width = line_width;
+ gc->line_style = line_style;
+ gc->cap_style = cap_style;
+ gc->join_style = join_style;
+}
+
+void
+XSetClipOrigin(display, gc, clip_x_origin, clip_y_origin)
+ Display* display;
+ GC gc;
+ int clip_x_origin;
+ int clip_y_origin;
+{
+ gc->clip_x_origin = clip_x_origin;
+ gc->clip_y_origin = clip_y_origin;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * TkSetRegion, XSetClipMask --
+ *
+ * Sets the clipping region/pixmap for a GC.
+ *
+ * Note that unlike the Xlib equivalent, it is not safe to delete
+ * the region after setting it into the GC. The only use of
+ * TkSetRegion is currently in ImgPhotoDisplay, which uses the GC
+ * immediately.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * Allocates or dealloates a TkpClipMask.
+ *
+ *----------------------------------------------------------------------
+ */
+
+void
+TkSetRegion(display, gc, r)
+ Display* display;
+ GC gc;
+ TkRegion r;
+{
+ if (r == None) {
+ if (gc->clip_mask) {
+ ckfree((char*) gc->clip_mask);
+ gc->clip_mask = None;
+ }
+ return;
+ }
+
+ if (gc->clip_mask == None) {
+ gc->clip_mask = (Pixmap)ckalloc(sizeof(TkpClipMask));
+ }
+ ((TkpClipMask*)gc->clip_mask)->type = TKP_CLIP_REGION;
+ ((TkpClipMask*)gc->clip_mask)->value.region = r;
+}
+
+void
+XSetClipMask(display, gc, pixmap)
+ Display* display;
+ GC gc;
+ Pixmap pixmap;
+{
+ if (pixmap == None) {
+ if (gc->clip_mask) {
+ ckfree((char*) gc->clip_mask);
+ gc->clip_mask = None;
+ }
+ return;
+ }
+
+ if (gc->clip_mask == None) {
+ gc->clip_mask = (Pixmap)ckalloc(sizeof(TkpClipMask));
+ }
+ ((TkpClipMask*)gc->clip_mask)->type = TKP_CLIP_PIXMAP;
+ ((TkpClipMask*)gc->clip_mask)->value.pixmap = pixmap;
+}
diff --git a/xlib/ximage.c b/xlib/ximage.c
new file mode 100644
index 0000000..057e973
--- /dev/null
+++ b/xlib/ximage.c
@@ -0,0 +1,115 @@
+/*
+ * ximage.c --
+ *
+ * X bitmap and image routines.
+ *
+ * Copyright (c) 1995 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) ximage.c 1.6 96/07/23 16:59:10
+ */
+
+#include "tkInt.h"
+
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XCreateBitmapFromData --
+ *
+ * Construct a single plane pixmap from bitmap data.
+ *
+ * Results:
+ * Returns a new Pixmap.
+ *
+ * Side effects:
+ * Allocates a new bitmap and drawable.
+ *
+ *----------------------------------------------------------------------
+ */
+
+Pixmap
+XCreateBitmapFromData(display, d, data, width, height)
+ Display* display;
+ Drawable d;
+ _Xconst char* data;
+ unsigned int width;
+ unsigned int height;
+{
+ XImage ximage;
+ GC gc;
+ Pixmap pix;
+
+ pix = Tk_GetPixmap(display, d, width, height, 1);
+ gc = XCreateGC(display, pix, 0, NULL);
+ if (gc == NULL) {
+ return None;
+ }
+ ximage.height = height;
+ ximage.width = width;
+ ximage.depth = 1;
+ ximage.bits_per_pixel = 1;
+ ximage.xoffset = 0;
+ ximage.format = XYBitmap;
+ ximage.data = (char *)data;
+ ximage.byte_order = LSBFirst;
+ ximage.bitmap_unit = 8;
+ ximage.bitmap_bit_order = LSBFirst;
+ ximage.bitmap_pad = 8;
+ ximage.bytes_per_line = (width+7)/8;
+
+ TkPutImage(NULL, 0, display, pix, gc, &ximage, 0, 0, 0, 0, width, height);
+ XFreeGC(display, gc);
+ return pix;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XReadBitmapFile --
+ *
+ * Loads a bitmap image in X bitmap format into the specified
+ * drawable.
+ *
+ * Results:
+ * Sets the size, hotspot, and bitmap on success.
+ *
+ * Side effects:
+ * Creates a new bitmap from the file data.
+ *
+ *----------------------------------------------------------------------
+ */
+
+int
+XReadBitmapFile(display, d, filename, width_return, height_return,
+ bitmap_return, x_hot_return, y_hot_return)
+ Display* display;
+ Drawable d;
+ _Xconst char* filename;
+ unsigned int* width_return;
+ unsigned int* height_return;
+ Pixmap* bitmap_return;
+ int* x_hot_return;
+ int* y_hot_return;
+{
+ Tcl_Interp *dummy;
+ char *data;
+
+ dummy = Tcl_CreateInterp();
+
+ data = TkGetBitmapData(dummy, NULL, (char *) filename,
+ (int *) width_return, (int *) height_return, x_hot_return,
+ y_hot_return);
+ if (data == NULL) {
+ return BitmapFileInvalid;
+ }
+
+ *bitmap_return = XCreateBitmapFromData(display, d, data, *width_return,
+ *height_return);
+
+ Tcl_DeleteInterp(dummy);
+ ckfree(data);
+ return BitmapSuccess;
+}
diff --git a/xlib/xutil.c b/xlib/xutil.c
new file mode 100644
index 0000000..1080ff9
--- /dev/null
+++ b/xlib/xutil.c
@@ -0,0 +1,116 @@
+/*
+ * xutil.c --
+ *
+ * This function contains generic X emulation routines.
+ *
+ * Copyright (c) 1995-1996 Sun Microsystems, Inc.
+ *
+ * See the file "license.terms" for information on usage and redistribution
+ * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+ *
+ * SCCS: @(#) xutil.c 1.10 96/04/09 23:26:21
+ */
+
+#include <stdlib.h>
+#include <tk.h>
+
+#ifdef MAC_TCL
+# include <Xutil.h>
+# include <Xatom.h>
+#else
+# include <X11/Xutil.h>
+# include <X11/Xatom.h>
+#endif
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XInternAtom --
+ *
+ * This procedure simulates the XInternAtom function by calling
+ * Tk_Uid to get a unique id for every atom. This is only a
+ * partial implementation, since it doesn't work across
+ * applications.
+ *
+ * Results:
+ * A new Atom.
+ *
+ * Side effects:
+ * None.
+ *
+ *----------------------------------------------------------------------
+ */
+
+Atom
+XInternAtom(display, atom_name, only_if_exists)
+ Display* display;
+ _Xconst char* atom_name;
+ Bool only_if_exists;
+{
+ static Atom atom = XA_LAST_PREDEFINED;
+
+ display->request++;
+ return ++atom;
+}
+
+/*
+ *----------------------------------------------------------------------
+ *
+ * XGetVisualInfo --
+ *
+ * Returns information about the specified visual.
+ *
+ * Results:
+ * Returns a newly allocated XVisualInfo structure.
+ *
+ * Side effects:
+ * Allocates storage.
+ *
+ *----------------------------------------------------------------------
+ */
+
+XVisualInfo *
+XGetVisualInfo(display, vinfo_mask, vinfo_template, nitems_return)
+ Display* display;
+ long vinfo_mask;
+ XVisualInfo* vinfo_template;
+ int* nitems_return;
+{
+ XVisualInfo *info = (XVisualInfo *)ckalloc(sizeof(XVisualInfo));
+ info->visual = DefaultVisual(display, 0);
+ info->visualid = info->visual->visualid;
+ info->screen = 0;
+ info->depth = info->visual->bits_per_rgb;
+ info->class = info->visual->class;
+ info->colormap_size = info->visual->map_entries;
+ info->bits_per_rgb = info->visual->bits_per_rgb;
+ info->red_mask = info->visual->red_mask;
+ info->green_mask = info->visual->green_mask;
+ info->blue_mask = info->visual->blue_mask;
+
+ if (((vinfo_mask & VisualIDMask)
+ && (vinfo_template->visualid != info->visualid))
+ || ((vinfo_mask & VisualScreenMask)
+ && (vinfo_template->screen != info->screen))
+ || ((vinfo_mask & VisualDepthMask)
+ && (vinfo_template->depth != info->depth))
+ || ((vinfo_mask & VisualClassMask)
+ && (vinfo_template->class != info->class))
+ || ((vinfo_mask & VisualColormapSizeMask)
+ && (vinfo_template->colormap_size != info->colormap_size))
+ || ((vinfo_mask & VisualBitsPerRGBMask)
+ && (vinfo_template->bits_per_rgb != info->bits_per_rgb))
+ || ((vinfo_mask & VisualRedMaskMask)
+ && (vinfo_template->red_mask != info->red_mask))
+ || ((vinfo_mask & VisualGreenMaskMask)
+ && (vinfo_template->green_mask != info->green_mask))
+ || ((vinfo_mask & VisualBlueMaskMask)
+ && (vinfo_template->blue_mask != info->blue_mask))
+ ) {
+ ckfree((char *) info);
+ return NULL;
+ }
+
+ *nitems_return = 1;
+ return info;
+}