Home | History | Annotate | Download | only in X11
      1 /* $XdotOrg: lib/X11/include/X11/Xlib.h,v 1.6 2005-11-08 06:33:25 jkj Exp $ */
      2 /* $Xorg: Xlib.h,v 1.6 2001/02/09 02:03:38 xorgcvs Exp $ */
      3 /*
      4 
      5 Copyright 1985, 1986, 1987, 1991, 1998  The Open Group
      6 
      7 Permission to use, copy, modify, distribute, and sell this software and its
      8 documentation for any purpose is hereby granted without fee, provided that
      9 the above copyright notice appear in all copies and that both that
     10 copyright notice and this permission notice appear in supporting
     11 documentation.
     12 
     13 The above copyright notice and this permission notice shall be included in
     14 all copies or substantial portions of the Software.
     15 
     16 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     17 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     18 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
     19 OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
     20 AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     21 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     22 
     23 Except as contained in this notice, the name of The Open Group shall not be
     24 used in advertising or otherwise to promote the sale, use or other dealings
     25 in this Software without prior written authorization from The Open Group.
     26 
     27 */
     28 /* $XFree86: xc/lib/X11/Xlib.h,v 3.25 2003/11/17 22:20:10 dawes Exp $ */
     29 
     30 
     31 /*
     32  *	Xlib.h - Header definition and support file for the C subroutine
     33  *	interface library (Xlib) to the X Window System Protocol (V11).
     34  *	Structures and symbols starting with "_" are private to the library.
     35  */
     36 #ifndef _XLIB_H_
     37 #define _XLIB_H_
     38 
     39 #define XlibSpecificationRelease 6
     40 
     41 #include <sys/types.h>
     42 
     43 #if defined(__SCO__) || defined(__UNIXWARE__)
     44 #include <stdint.h>
     45 #endif
     46 
     47 #include <X11/X.h>
     48 
     49 /* applications should not depend on these two headers being included! */
     50 #include <X11/Xfuncproto.h>
     51 #include <X11/Xosdefs.h>
     52 
     53 #ifndef X_WCHAR
     54 #include <stddef.h>
     55 #else
     56 #ifdef __UNIXOS2__
     57 #include <stdlib.h>
     58 #else
     59 /* replace this with #include or typedef appropriate for your system */
     60 typedef unsigned long wchar_t;
     61 #endif
     62 #endif
     63 
     64 #if defined(ISC) && defined(USE_XMBTOWC)
     65 #define wctomb(a,b)	_Xwctomb(a,b)
     66 #define mblen(a,b)	_Xmblen(a,b)
     67 #ifndef USE_XWCHAR_STRING
     68 #define mbtowc(a,b,c)	_Xmbtowc(a,b,c)
     69 #endif
     70 #endif
     71 
     72 extern int
     73 _Xmblen(
     74 #ifdef ISC
     75     char const *str,
     76     size_t len
     77 #else
     78     char *str,
     79     int len
     80 #endif
     81     );
     82 
     83 /* API mentioning "UTF8" or "utf8" is an XFree86 extension, introduced in
     84    November 2000. Its presence is indicated through the following macro. */
     85 #define X_HAVE_UTF8_STRING 1
     86 
     87 typedef char *XPointer;
     88 
     89 #define Bool int
     90 #define Status int
     91 #define True 1
     92 #define False 0
     93 
     94 #define QueuedAlready 0
     95 #define QueuedAfterReading 1
     96 #define QueuedAfterFlush 2
     97 
     98 #define ConnectionNumber(dpy) 	(((_XPrivDisplay)dpy)->fd)
     99 #define RootWindow(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root)
    100 #define DefaultScreen(dpy) 	(((_XPrivDisplay)dpy)->default_screen)
    101 #define DefaultRootWindow(dpy) 	(ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
    102 #define DefaultVisual(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_visual)
    103 #define DefaultGC(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->default_gc)
    104 #define BlackPixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->black_pixel)
    105 #define WhitePixel(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->white_pixel)
    106 #define AllPlanes 		((unsigned long)~0L)
    107 #define QLength(dpy) 		(((_XPrivDisplay)dpy)->qlen)
    108 #define DisplayWidth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->width)
    109 #define DisplayHeight(dpy, scr) (ScreenOfDisplay(dpy,scr)->height)
    110 #define DisplayWidthMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mwidth)
    111 #define DisplayHeightMM(dpy, scr)(ScreenOfDisplay(dpy,scr)->mheight)
    112 #define DisplayPlanes(dpy, scr) (ScreenOfDisplay(dpy,scr)->root_depth)
    113 #define DisplayCells(dpy, scr) 	(DefaultVisual(dpy,scr)->map_entries)
    114 #define ScreenCount(dpy) 	(((_XPrivDisplay)dpy)->nscreens)
    115 #define ServerVendor(dpy) 	(((_XPrivDisplay)dpy)->vendor)
    116 #define ProtocolVersion(dpy) 	(((_XPrivDisplay)dpy)->proto_major_version)
    117 #define ProtocolRevision(dpy) 	(((_XPrivDisplay)dpy)->proto_minor_version)
    118 #define VendorRelease(dpy) 	(((_XPrivDisplay)dpy)->release)
    119 #define DisplayString(dpy) 	(((_XPrivDisplay)dpy)->display_name)
    120 #define DefaultDepth(dpy, scr) 	(ScreenOfDisplay(dpy,scr)->root_depth)
    121 #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
    122 #define BitmapUnit(dpy) 	(((_XPrivDisplay)dpy)->bitmap_unit)
    123 #define BitmapBitOrder(dpy) 	(((_XPrivDisplay)dpy)->bitmap_bit_order)
    124 #define BitmapPad(dpy) 		(((_XPrivDisplay)dpy)->bitmap_pad)
    125 #define ImageByteOrder(dpy) 	(((_XPrivDisplay)dpy)->byte_order)
    126 #ifdef CRAY /* unable to get WORD64 without pulling in other symbols */
    127 #define NextRequest(dpy)	XNextRequest(dpy)
    128 #else
    129 #define NextRequest(dpy)	(((_XPrivDisplay)dpy)->request + 1)
    130 #endif
    131 #define LastKnownRequestProcessed(dpy)	(((_XPrivDisplay)dpy)->last_request_read)
    132 
    133 /* macros for screen oriented applications (toolkit) */
    134 #define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
    135 #define DefaultScreenOfDisplay(dpy) ScreenOfDisplay(dpy,DefaultScreen(dpy))
    136 #define DisplayOfScreen(s)	((s)->display)
    137 #define RootWindowOfScreen(s)	((s)->root)
    138 #define BlackPixelOfScreen(s)	((s)->black_pixel)
    139 #define WhitePixelOfScreen(s)	((s)->white_pixel)
    140 #define DefaultColormapOfScreen(s)((s)->cmap)
    141 #define DefaultDepthOfScreen(s)	((s)->root_depth)
    142 #define DefaultGCOfScreen(s)	((s)->default_gc)
    143 #define DefaultVisualOfScreen(s)((s)->root_visual)
    144 #define WidthOfScreen(s)	((s)->width)
    145 #define HeightOfScreen(s)	((s)->height)
    146 #define WidthMMOfScreen(s)	((s)->mwidth)
    147 #define HeightMMOfScreen(s)	((s)->mheight)
    148 #define PlanesOfScreen(s)	((s)->root_depth)
    149 #define CellsOfScreen(s)	(DefaultVisualOfScreen((s))->map_entries)
    150 #define MinCmapsOfScreen(s)	((s)->min_maps)
    151 #define MaxCmapsOfScreen(s)	((s)->max_maps)
    152 #define DoesSaveUnders(s)	((s)->save_unders)
    153 #define DoesBackingStore(s)	((s)->backing_store)
    154 #define EventMaskOfScreen(s)	((s)->root_input_mask)
    155 
    156 /*
    157  * Extensions need a way to hang private data on some structures.
    158  */
    159 typedef struct _XExtData {
    160 	int number;		/* number returned by XRegisterExtension */
    161 	struct _XExtData *next;	/* next item on list of data for structure */
    162 	int (*free_private)(	/* called to free private storage */
    163 	struct _XExtData *extension
    164 	);
    165 	XPointer private_data;	/* data private to this extension. */
    166 } XExtData;
    167 
    168 /*
    169  * This file contains structures used by the extension mechanism.
    170  */
    171 typedef struct {		/* public to extension, cannot be changed */
    172 	int extension;		/* extension number */
    173 	int major_opcode;	/* major op-code assigned by server */
    174 	int first_event;	/* first event number for the extension */
    175 	int first_error;	/* first error number for the extension */
    176 } XExtCodes;
    177 
    178 /*
    179  * Data structure for retrieving info about pixmap formats.
    180  */
    181 
    182 typedef struct {
    183     int depth;
    184     int bits_per_pixel;
    185     int scanline_pad;
    186 } XPixmapFormatValues;
    187 
    188 
    189 /*
    190  * Data structure for setting graphics context.
    191  */
    192 typedef struct {
    193 	int function;		/* logical operation */
    194 	unsigned long plane_mask;/* plane mask */
    195 	unsigned long foreground;/* foreground pixel */
    196 	unsigned long background;/* background pixel */
    197 	int line_width;		/* line width */
    198 	int line_style;	 	/* LineSolid, LineOnOffDash, LineDoubleDash */
    199 	int cap_style;	  	/* CapNotLast, CapButt,
    200 				   CapRound, CapProjecting */
    201 	int join_style;	 	/* JoinMiter, JoinRound, JoinBevel */
    202 	int fill_style;	 	/* FillSolid, FillTiled,
    203 				   FillStippled, FillOpaeueStippled */
    204 	int fill_rule;	  	/* EvenOddRule, WindingRule */
    205 	int arc_mode;		/* ArcChord, ArcPieSlice */
    206 	Pixmap tile;		/* tile pixmap for tiling operations */
    207 	Pixmap stipple;		/* stipple 1 plane pixmap for stipping */
    208 	int ts_x_origin;	/* offset for tile or stipple operations */
    209 	int ts_y_origin;
    210         Font font;	        /* default text font for text operations */
    211 	int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
    212 	Bool graphics_exposures;/* boolean, should exposures be generated */
    213 	int clip_x_origin;	/* origin for clipping */
    214 	int clip_y_origin;
    215 	Pixmap clip_mask;	/* bitmap clipping; other calls for rects */
    216 	int dash_offset;	/* patterned/dashed line information */
    217 	char dashes;
    218 } XGCValues;
    219 
    220 /*
    221  * Graphics context.  The contents of this structure are implementation
    222  * dependent.  A GC should be treated as opaque by application code.
    223  */
    224 
    225 typedef struct _XGC
    226 #ifdef XLIB_ILLEGAL_ACCESS
    227 {
    228     XExtData *ext_data;	/* hook for extension to hang data */
    229     GContext gid;	/* protocol ID for graphics context */
    230     /* there is more to this structure, but it is private to Xlib */
    231 }
    232 #endif
    233 *GC;
    234 
    235 /*
    236  * Visual structure; contains information about colormapping possible.
    237  */
    238 typedef struct {
    239 	XExtData *ext_data;	/* hook for extension to hang data */
    240 	VisualID visualid;	/* visual id of this visual */
    241 #if defined(__cplusplus) || defined(c_plusplus)
    242 	int c_class;		/* C++ class of screen (monochrome, etc.) */
    243 #else
    244 	int class;		/* class of screen (monochrome, etc.) */
    245 #endif
    246 	unsigned long red_mask, green_mask, blue_mask;	/* mask values */
    247 	int bits_per_rgb;	/* log base 2 of distinct color values */
    248 	int map_entries;	/* color map entries */
    249 } Visual;
    250 
    251 /*
    252  * Depth structure; contains information for each possible depth.
    253  */
    254 typedef struct {
    255 	int depth;		/* this depth (Z) of the depth */
    256 	int nvisuals;		/* number of Visual types at this depth */
    257 	Visual *visuals;	/* list of visuals possible at this depth */
    258 } Depth;
    259 
    260 /*
    261  * Information about the screen.  The contents of this structure are
    262  * implementation dependent.  A Screen should be treated as opaque
    263  * by application code.
    264  */
    265 
    266 struct _XDisplay;		/* Forward declare before use for C++ */
    267 
    268 typedef struct {
    269 	XExtData *ext_data;	/* hook for extension to hang data */
    270 	struct _XDisplay *display;/* back pointer to display structure */
    271 	Window root;		/* Root window id. */
    272 	int width, height;	/* width and height of screen */
    273 	int mwidth, mheight;	/* width and height of  in millimeters */
    274 	int ndepths;		/* number of depths possible */
    275 	Depth *depths;		/* list of allowable depths on the screen */
    276 	int root_depth;		/* bits per pixel */
    277 	Visual *root_visual;	/* root visual */
    278 	GC default_gc;		/* GC for the root root visual */
    279 	Colormap cmap;		/* default color map */
    280 	unsigned long white_pixel;
    281 	unsigned long black_pixel;	/* White and Black pixel values */
    282 	int max_maps, min_maps;	/* max and min color maps */
    283 	int backing_store;	/* Never, WhenMapped, Always */
    284 	Bool save_unders;
    285 	long root_input_mask;	/* initial root input mask */
    286 } Screen;
    287 
    288 /*
    289  * Format structure; describes ZFormat data the screen will understand.
    290  */
    291 typedef struct {
    292 	XExtData *ext_data;	/* hook for extension to hang data */
    293 	int depth;		/* depth of this image format */
    294 	int bits_per_pixel;	/* bits/pixel at this depth */
    295 	int scanline_pad;	/* scanline must padded to this multiple */
    296 } ScreenFormat;
    297 
    298 /*
    299  * Data structure for setting window attributes.
    300  */
    301 typedef struct {
    302     Pixmap background_pixmap;	/* background or None or ParentRelative */
    303     unsigned long background_pixel;	/* background pixel */
    304     Pixmap border_pixmap;	/* border of the window */
    305     unsigned long border_pixel;	/* border pixel value */
    306     int bit_gravity;		/* one of bit gravity values */
    307     int win_gravity;		/* one of the window gravity values */
    308     int backing_store;		/* NotUseful, WhenMapped, Always */
    309     unsigned long backing_planes;/* planes to be preseved if possible */
    310     unsigned long backing_pixel;/* value to use in restoring planes */
    311     Bool save_under;		/* should bits under be saved? (popups) */
    312     long event_mask;		/* set of events that should be saved */
    313     long do_not_propagate_mask;	/* set of events that should not propagate */
    314     Bool override_redirect;	/* boolean value for override-redirect */
    315     Colormap colormap;		/* color map to be associated with window */
    316     Cursor cursor;		/* cursor to be displayed (or None) */
    317 } XSetWindowAttributes;
    318 
    319 typedef struct {
    320     int x, y;			/* location of window */
    321     int width, height;		/* width and height of window */
    322     int border_width;		/* border width of window */
    323     int depth;          	/* depth of window */
    324     Visual *visual;		/* the associated visual structure */
    325     Window root;        	/* root of screen containing window */
    326 #if defined(__cplusplus) || defined(c_plusplus)
    327     int c_class;		/* C++ InputOutput, InputOnly*/
    328 #else
    329     int class;			/* InputOutput, InputOnly*/
    330 #endif
    331     int bit_gravity;		/* one of bit gravity values */
    332     int win_gravity;		/* one of the window gravity values */
    333     int backing_store;		/* NotUseful, WhenMapped, Always */
    334     unsigned long backing_planes;/* planes to be preserved if possible */
    335     unsigned long backing_pixel;/* value to be used when restoring planes */
    336     Bool save_under;		/* boolean, should bits under be saved? */
    337     Colormap colormap;		/* color map to be associated with window */
    338     Bool map_installed;		/* boolean, is color map currently installed*/
    339     int map_state;		/* IsUnmapped, IsUnviewable, IsViewable */
    340     long all_event_masks;	/* set of events all people have interest in*/
    341     long your_event_mask;	/* my event mask */
    342     long do_not_propagate_mask; /* set of events that should not propagate */
    343     Bool override_redirect;	/* boolean value for override-redirect */
    344     Screen *screen;		/* back pointer to correct screen */
    345 } XWindowAttributes;
    346 
    347 /*
    348  * Data structure for host setting; getting routines.
    349  *
    350  */
    351 
    352 typedef struct {
    353 	int family;		/* for example FamilyInternet */
    354 	int length;		/* length of address, in bytes */
    355 	char *address;		/* pointer to where to find the bytes */
    356 } XHostAddress;
    357 
    358 /*
    359  * Data structure for ServerFamilyInterpreted addresses in host routines
    360  */
    361 typedef struct {
    362 	int typelength;		/* length of type string, in bytes */
    363 	int valuelength;	/* length of value string, in bytes */
    364 	char *type;		/* pointer to where to find the type string */
    365 	char *value;		/* pointer to where to find the address */
    366 } XServerInterpretedAddress;
    367 
    368 /*
    369  * Data structure for "image" data, used by image manipulation routines.
    370  */
    371 typedef struct _XImage {
    372     int width, height;		/* size of image */
    373     int xoffset;		/* number of pixels offset in X direction */
    374     int format;			/* XYBitmap, XYPixmap, ZPixmap */
    375     char *data;			/* pointer to image data */
    376     int byte_order;		/* data byte order, LSBFirst, MSBFirst */
    377     int bitmap_unit;		/* quant. of scanline 8, 16, 32 */
    378     int bitmap_bit_order;	/* LSBFirst, MSBFirst */
    379     int bitmap_pad;		/* 8, 16, 32 either XY or ZPixmap */
    380     int depth;			/* depth of image */
    381     int bytes_per_line;		/* accelarator to next line */
    382     int bits_per_pixel;		/* bits per pixel (ZPixmap) */
    383     unsigned long red_mask;	/* bits in z arrangment */
    384     unsigned long green_mask;
    385     unsigned long blue_mask;
    386     XPointer obdata;		/* hook for the object routines to hang on */
    387     struct funcs {		/* image manipulation routines */
    388 	struct _XImage *(*create_image)(
    389 		struct _XDisplay* /* display */,
    390 		Visual*		/* visual */,
    391 		unsigned int	/* depth */,
    392 		int		/* format */,
    393 		int		/* offset */,
    394 		char*		/* data */,
    395 		unsigned int	/* width */,
    396 		unsigned int	/* height */,
    397 		int		/* bitmap_pad */,
    398 		int		/* bytes_per_line */);
    399 	int (*destroy_image)        (struct _XImage *);
    400 	unsigned long (*get_pixel)  (struct _XImage *, int, int);
    401 	int (*put_pixel)            (struct _XImage *, int, int, unsigned long);
    402 	struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
    403 	int (*add_pixel)            (struct _XImage *, long);
    404 	} f;
    405 } XImage;
    406 
    407 /*
    408  * Data structure for XReconfigureWindow
    409  */
    410 typedef struct {
    411     int x, y;
    412     int width, height;
    413     int border_width;
    414     Window sibling;
    415     int stack_mode;
    416 } XWindowChanges;
    417 
    418 /*
    419  * Data structure used by color operations
    420  */
    421 typedef struct {
    422 	unsigned long pixel;
    423 	unsigned short red, green, blue;
    424 	char flags;  /* do_red, do_green, do_blue */
    425 	char pad;
    426 } XColor;
    427 
    428 /*
    429  * Data structures for graphics operations.  On most machines, these are
    430  * congruent with the wire protocol structures, so reformatting the data
    431  * can be avoided on these architectures.
    432  */
    433 typedef struct {
    434     short x1, y1, x2, y2;
    435 } XSegment;
    436 
    437 typedef struct {
    438     short x, y;
    439 } XPoint;
    440 
    441 typedef struct {
    442     short x, y;
    443     unsigned short width, height;
    444 } XRectangle;
    445 
    446 typedef struct {
    447     short x, y;
    448     unsigned short width, height;
    449     short angle1, angle2;
    450 } XArc;
    451 
    452 
    453 /* Data structure for XChangeKeyboardControl */
    454 
    455 typedef struct {
    456         int key_click_percent;
    457         int bell_percent;
    458         int bell_pitch;
    459         int bell_duration;
    460         int led;
    461         int led_mode;
    462         int key;
    463         int auto_repeat_mode;   /* On, Off, Default */
    464 } XKeyboardControl;
    465 
    466 /* Data structure for XGetKeyboardControl */
    467 
    468 typedef struct {
    469         int key_click_percent;
    470 	int bell_percent;
    471 	unsigned int bell_pitch, bell_duration;
    472 	unsigned long led_mask;
    473 	int global_auto_repeat;
    474 	char auto_repeats[32];
    475 } XKeyboardState;
    476 
    477 /* Data structure for XGetMotionEvents.  */
    478 
    479 typedef struct {
    480         Time time;
    481 	short x, y;
    482 } XTimeCoord;
    483 
    484 /* Data structure for X{Set,Get}ModifierMapping */
    485 
    486 typedef struct {
    487  	int max_keypermod;	/* The server's max # of keys per modifier */
    488  	KeyCode *modifiermap;	/* An 8 by max_keypermod array of modifiers */
    489 } XModifierKeymap;
    490 
    491 
    492 /*
    493  * Display datatype maintaining display specific data.
    494  * The contents of this structure are implementation dependent.
    495  * A Display should be treated as opaque by application code.
    496  */
    497 #ifndef XLIB_ILLEGAL_ACCESS
    498 typedef struct _XDisplay Display;
    499 #endif
    500 
    501 struct _XPrivate;		/* Forward declare before use for C++ */
    502 struct _XrmHashBucketRec;
    503 
    504 typedef struct
    505 #ifdef XLIB_ILLEGAL_ACCESS
    506 _XDisplay
    507 #endif
    508 {
    509 	XExtData *ext_data;	/* hook for extension to hang data */
    510 	struct _XPrivate *private1;
    511 	int fd;			/* Network socket. */
    512 	int private2;
    513 	int proto_major_version;/* major version of server's X protocol */
    514 	int proto_minor_version;/* minor version of servers X protocol */
    515 	char *vendor;		/* vendor of the server hardware */
    516         XID private3;
    517 	XID private4;
    518 	XID private5;
    519 	int private6;
    520 	XID (*resource_alloc)(	/* allocator function */
    521 		struct _XDisplay*
    522 	);
    523 	int byte_order;		/* screen byte order, LSBFirst, MSBFirst */
    524 	int bitmap_unit;	/* padding and data requirements */
    525 	int bitmap_pad;		/* padding requirements on bitmaps */
    526 	int bitmap_bit_order;	/* LeastSignificant or MostSignificant */
    527 	int nformats;		/* number of pixmap formats in list */
    528 	ScreenFormat *pixmap_format;	/* pixmap format list */
    529 	int private8;
    530 	int release;		/* release of the server */
    531 	struct _XPrivate *private9, *private10;
    532 	int qlen;		/* Length of input event queue */
    533 	unsigned long last_request_read; /* seq number of last event read */
    534 	unsigned long request;	/* sequence number of last request. */
    535 	XPointer private11;
    536 	XPointer private12;
    537 	XPointer private13;
    538 	XPointer private14;
    539 	unsigned max_request_size; /* maximum number 32 bit words in request*/
    540 	struct _XrmHashBucketRec *db;
    541 	int (*private15)(
    542 		struct _XDisplay*
    543 		);
    544 	char *display_name;	/* "host:display" string used on this connect*/
    545 	int default_screen;	/* default screen for operations */
    546 	int nscreens;		/* number of screens on this server*/
    547 	Screen *screens;	/* pointer to list of screens */
    548 	unsigned long motion_buffer;	/* size of motion buffer */
    549 	unsigned long private16;
    550 	int min_keycode;	/* minimum defined keycode */
    551 	int max_keycode;	/* maximum defined keycode */
    552 	XPointer private17;
    553 	XPointer private18;
    554 	int private19;
    555 	char *xdefaults;	/* contents of defaults from server */
    556 	/* there is more to this structure, but it is private to Xlib */
    557 }
    558 #ifdef XLIB_ILLEGAL_ACCESS
    559 Display,
    560 #endif
    561 *_XPrivDisplay;
    562 
    563 #undef _XEVENT_
    564 #ifndef _XEVENT_
    565 /*
    566  * Definitions of specific events.
    567  */
    568 typedef struct {
    569 	int type;		/* of event */
    570 	unsigned long serial;	/* # of last request processed by server */
    571 	Bool send_event;	/* true if this came from a SendEvent request */
    572 	Display *display;	/* Display the event was read from */
    573 	Window window;	        /* "event" window it is reported relative to */
    574 	Window root;	        /* root window that the event occurred on */
    575 	Window subwindow;	/* child window */
    576 	Time time;		/* milliseconds */
    577 	int x, y;		/* pointer x, y coordinates in event window */
    578 	int x_root, y_root;	/* coordinates relative to root */
    579 	unsigned int state;	/* key or button mask */
    580 	unsigned int keycode;	/* detail */
    581 	Bool same_screen;	/* same screen flag */
    582 } XKeyEvent;
    583 typedef XKeyEvent XKeyPressedEvent;
    584 typedef XKeyEvent XKeyReleasedEvent;
    585 
    586 typedef struct {
    587 	int type;		/* of event */
    588 	unsigned long serial;	/* # of last request processed by server */
    589 	Bool send_event;	/* true if this came from a SendEvent request */
    590 	Display *display;	/* Display the event was read from */
    591 	Window window;	        /* "event" window it is reported relative to */
    592 	Window root;	        /* root window that the event occurred on */
    593 	Window subwindow;	/* child window */
    594 	Time time;		/* milliseconds */
    595 	int x, y;		/* pointer x, y coordinates in event window */
    596 	int x_root, y_root;	/* coordinates relative to root */
    597 	unsigned int state;	/* key or button mask */
    598 	unsigned int button;	/* detail */
    599 	Bool same_screen;	/* same screen flag */
    600 } XButtonEvent;
    601 typedef XButtonEvent XButtonPressedEvent;
    602 typedef XButtonEvent XButtonReleasedEvent;
    603 
    604 typedef struct {
    605 	int type;		/* of event */
    606 	unsigned long serial;	/* # of last request processed by server */
    607 	Bool send_event;	/* true if this came from a SendEvent request */
    608 	Display *display;	/* Display the event was read from */
    609 	Window window;	        /* "event" window reported relative to */
    610 	Window root;	        /* root window that the event occurred on */
    611 	Window subwindow;	/* child window */
    612 	Time time;		/* milliseconds */
    613 	int x, y;		/* pointer x, y coordinates in event window */
    614 	int x_root, y_root;	/* coordinates relative to root */
    615 	unsigned int state;	/* key or button mask */
    616 	char is_hint;		/* detail */
    617 	Bool same_screen;	/* same screen flag */
    618 } XMotionEvent;
    619 typedef XMotionEvent XPointerMovedEvent;
    620 
    621 typedef struct {
    622 	int type;		/* of event */
    623 	unsigned long serial;	/* # of last request processed by server */
    624 	Bool send_event;	/* true if this came from a SendEvent request */
    625 	Display *display;	/* Display the event was read from */
    626 	Window window;	        /* "event" window reported relative to */
    627 	Window root;	        /* root window that the event occurred on */
    628 	Window subwindow;	/* child window */
    629 	Time time;		/* milliseconds */
    630 	int x, y;		/* pointer x, y coordinates in event window */
    631 	int x_root, y_root;	/* coordinates relative to root */
    632 	int mode;		/* NotifyNormal, NotifyGrab, NotifyUngrab */
    633 	int detail;
    634 	/*
    635 	 * NotifyAncestor, NotifyVirtual, NotifyInferior,
    636 	 * NotifyNonlinear,NotifyNonlinearVirtual
    637 	 */
    638 	Bool same_screen;	/* same screen flag */
    639 	Bool focus;		/* boolean focus */
    640 	unsigned int state;	/* key or button mask */
    641 } XCrossingEvent;
    642 typedef XCrossingEvent XEnterWindowEvent;
    643 typedef XCrossingEvent XLeaveWindowEvent;
    644 
    645 typedef struct {
    646 	int type;		/* FocusIn or FocusOut */
    647 	unsigned long serial;	/* # of last request processed by server */
    648 	Bool send_event;	/* true if this came from a SendEvent request */
    649 	Display *display;	/* Display the event was read from */
    650 	Window window;		/* window of event */
    651 	int mode;		/* NotifyNormal, NotifyWhileGrabbed,
    652 				   NotifyGrab, NotifyUngrab */
    653 	int detail;
    654 	/*
    655 	 * NotifyAncestor, NotifyVirtual, NotifyInferior,
    656 	 * NotifyNonlinear,NotifyNonlinearVirtual, NotifyPointer,
    657 	 * NotifyPointerRoot, NotifyDetailNone
    658 	 */
    659 } XFocusChangeEvent;
    660 typedef XFocusChangeEvent XFocusInEvent;
    661 typedef XFocusChangeEvent XFocusOutEvent;
    662 
    663 /* generated on EnterWindow and FocusIn  when KeyMapState selected */
    664 typedef struct {
    665 	int type;
    666 	unsigned long serial;	/* # of last request processed by server */
    667 	Bool send_event;	/* true if this came from a SendEvent request */
    668 	Display *display;	/* Display the event was read from */
    669 	Window window;
    670 	char key_vector[32];
    671 } XKeymapEvent;
    672 
    673 typedef struct {
    674 	int type;
    675 	unsigned long serial;	/* # of last request processed by server */
    676 	Bool send_event;	/* true if this came from a SendEvent request */
    677 	Display *display;	/* Display the event was read from */
    678 	Window window;
    679 	int x, y;
    680 	int width, height;
    681 	int count;		/* if non-zero, at least this many more */
    682 } XExposeEvent;
    683 
    684 typedef struct {
    685 	int type;
    686 	unsigned long serial;	/* # of last request processed by server */
    687 	Bool send_event;	/* true if this came from a SendEvent request */
    688 	Display *display;	/* Display the event was read from */
    689 	Drawable drawable;
    690 	int x, y;
    691 	int width, height;
    692 	int count;		/* if non-zero, at least this many more */
    693 	int major_code;		/* core is CopyArea or CopyPlane */
    694 	int minor_code;		/* not defined in the core */
    695 } XGraphicsExposeEvent;
    696 
    697 typedef struct {
    698 	int type;
    699 	unsigned long serial;	/* # of last request processed by server */
    700 	Bool send_event;	/* true if this came from a SendEvent request */
    701 	Display *display;	/* Display the event was read from */
    702 	Drawable drawable;
    703 	int major_code;		/* core is CopyArea or CopyPlane */
    704 	int minor_code;		/* not defined in the core */
    705 } XNoExposeEvent;
    706 
    707 typedef struct {
    708 	int type;
    709 	unsigned long serial;	/* # of last request processed by server */
    710 	Bool send_event;	/* true if this came from a SendEvent request */
    711 	Display *display;	/* Display the event was read from */
    712 	Window window;
    713 	int state;		/* Visibility state */
    714 } XVisibilityEvent;
    715 
    716 typedef struct {
    717 	int type;
    718 	unsigned long serial;	/* # of last request processed by server */
    719 	Bool send_event;	/* true if this came from a SendEvent request */
    720 	Display *display;	/* Display the event was read from */
    721 	Window parent;		/* parent of the window */
    722 	Window window;		/* window id of window created */
    723 	int x, y;		/* window location */
    724 	int width, height;	/* size of window */
    725 	int border_width;	/* border width */
    726 	Bool override_redirect;	/* creation should be overridden */
    727 } XCreateWindowEvent;
    728 
    729 typedef struct {
    730 	int type;
    731 	unsigned long serial;	/* # of last request processed by server */
    732 	Bool send_event;	/* true if this came from a SendEvent request */
    733 	Display *display;	/* Display the event was read from */
    734 	Window event;
    735 	Window window;
    736 } XDestroyWindowEvent;
    737 
    738 typedef struct {
    739 	int type;
    740 	unsigned long serial;	/* # of last request processed by server */
    741 	Bool send_event;	/* true if this came from a SendEvent request */
    742 	Display *display;	/* Display the event was read from */
    743 	Window event;
    744 	Window window;
    745 	Bool from_configure;
    746 } XUnmapEvent;
    747 
    748 typedef struct {
    749 	int type;
    750 	unsigned long serial;	/* # of last request processed by server */
    751 	Bool send_event;	/* true if this came from a SendEvent request */
    752 	Display *display;	/* Display the event was read from */
    753 	Window event;
    754 	Window window;
    755 	Bool override_redirect;	/* boolean, is override set... */
    756 } XMapEvent;
    757 
    758 typedef struct {
    759 	int type;
    760 	unsigned long serial;	/* # of last request processed by server */
    761 	Bool send_event;	/* true if this came from a SendEvent request */
    762 	Display *display;	/* Display the event was read from */
    763 	Window parent;
    764 	Window window;
    765 } XMapRequestEvent;
    766 
    767 typedef struct {
    768 	int type;
    769 	unsigned long serial;	/* # of last request processed by server */
    770 	Bool send_event;	/* true if this came from a SendEvent request */
    771 	Display *display;	/* Display the event was read from */
    772 	Window event;
    773 	Window window;
    774 	Window parent;
    775 	int x, y;
    776 	Bool override_redirect;
    777 } XReparentEvent;
    778 
    779 typedef struct {
    780 	int type;
    781 	unsigned long serial;	/* # of last request processed by server */
    782 	Bool send_event;	/* true if this came from a SendEvent request */
    783 	Display *display;	/* Display the event was read from */
    784 	Window event;
    785 	Window window;
    786 	int x, y;
    787 	int width, height;
    788 	int border_width;
    789 	Window above;
    790 	Bool override_redirect;
    791 } XConfigureEvent;
    792 
    793 typedef struct {
    794 	int type;
    795 	unsigned long serial;	/* # of last request processed by server */
    796 	Bool send_event;	/* true if this came from a SendEvent request */
    797 	Display *display;	/* Display the event was read from */
    798 	Window event;
    799 	Window window;
    800 	int x, y;
    801 } XGravityEvent;
    802 
    803 typedef struct {
    804 	int type;
    805 	unsigned long serial;	/* # of last request processed by server */
    806 	Bool send_event;	/* true if this came from a SendEvent request */
    807 	Display *display;	/* Display the event was read from */
    808 	Window window;
    809 	int width, height;
    810 } XResizeRequestEvent;
    811 
    812 typedef struct {
    813 	int type;
    814 	unsigned long serial;	/* # of last request processed by server */
    815 	Bool send_event;	/* true if this came from a SendEvent request */
    816 	Display *display;	/* Display the event was read from */
    817 	Window parent;
    818 	Window window;
    819 	int x, y;
    820 	int width, height;
    821 	int border_width;
    822 	Window above;
    823 	int detail;		/* Above, Below, TopIf, BottomIf, Opposite */
    824 	unsigned long value_mask;
    825 } XConfigureRequestEvent;
    826 
    827 typedef struct {
    828 	int type;
    829 	unsigned long serial;	/* # of last request processed by server */
    830 	Bool send_event;	/* true if this came from a SendEvent request */
    831 	Display *display;	/* Display the event was read from */
    832 	Window event;
    833 	Window window;
    834 	int place;		/* PlaceOnTop, PlaceOnBottom */
    835 } XCirculateEvent;
    836 
    837 typedef struct {
    838 	int type;
    839 	unsigned long serial;	/* # of last request processed by server */
    840 	Bool send_event;	/* true if this came from a SendEvent request */
    841 	Display *display;	/* Display the event was read from */
    842 	Window parent;
    843 	Window window;
    844 	int place;		/* PlaceOnTop, PlaceOnBottom */
    845 } XCirculateRequestEvent;
    846 
    847 typedef struct {
    848 	int type;
    849 	unsigned long serial;	/* # of last request processed by server */
    850 	Bool send_event;	/* true if this came from a SendEvent request */
    851 	Display *display;	/* Display the event was read from */
    852 	Window window;
    853 	Atom atom;
    854 	Time time;
    855 	int state;		/* NewValue, Deleted */
    856 } XPropertyEvent;
    857 
    858 typedef struct {
    859 	int type;
    860 	unsigned long serial;	/* # of last request processed by server */
    861 	Bool send_event;	/* true if this came from a SendEvent request */
    862 	Display *display;	/* Display the event was read from */
    863 	Window window;
    864 	Atom selection;
    865 	Time time;
    866 } XSelectionClearEvent;
    867 
    868 typedef struct {
    869 	int type;
    870 	unsigned long serial;	/* # of last request processed by server */
    871 	Bool send_event;	/* true if this came from a SendEvent request */
    872 	Display *display;	/* Display the event was read from */
    873 	Window owner;
    874 	Window requestor;
    875 	Atom selection;
    876 	Atom target;
    877 	Atom property;
    878 	Time time;
    879 } XSelectionRequestEvent;
    880 
    881 typedef struct {
    882 	int type;
    883 	unsigned long serial;	/* # of last request processed by server */
    884 	Bool send_event;	/* true if this came from a SendEvent request */
    885 	Display *display;	/* Display the event was read from */
    886 	Window requestor;
    887 	Atom selection;
    888 	Atom target;
    889 	Atom property;		/* ATOM or None */
    890 	Time time;
    891 } XSelectionEvent;
    892 
    893 typedef struct {
    894 	int type;
    895 	unsigned long serial;	/* # of last request processed by server */
    896 	Bool send_event;	/* true if this came from a SendEvent request */
    897 	Display *display;	/* Display the event was read from */
    898 	Window window;
    899 	Colormap colormap;	/* COLORMAP or None */
    900 #if defined(__cplusplus) || defined(c_plusplus)
    901 	Bool c_new;		/* C++ */
    902 #else
    903 	Bool new;
    904 #endif
    905 	int state;		/* ColormapInstalled, ColormapUninstalled */
    906 } XColormapEvent;
    907 
    908 typedef struct {
    909 	int type;
    910 	unsigned long serial;	/* # of last request processed by server */
    911 	Bool send_event;	/* true if this came from a SendEvent request */
    912 	Display *display;	/* Display the event was read from */
    913 	Window window;
    914 	Atom message_type;
    915 	int format;
    916 	union {
    917 		char b[20];
    918 		short s[10];
    919 		long l[5];
    920 		} data;
    921 } XClientMessageEvent;
    922 
    923 typedef struct {
    924 	int type;
    925 	unsigned long serial;	/* # of last request processed by server */
    926 	Bool send_event;	/* true if this came from a SendEvent request */
    927 	Display *display;	/* Display the event was read from */
    928 	Window window;		/* unused */
    929 	int request;		/* one of MappingModifier, MappingKeyboard,
    930 				   MappingPointer */
    931 	int first_keycode;	/* first keycode */
    932 	int count;		/* defines range of change w. first_keycode*/
    933 } XMappingEvent;
    934 
    935 typedef struct {
    936 	int type;
    937 	Display *display;	/* Display the event was read from */
    938 	XID resourceid;		/* resource id */
    939 	unsigned long serial;	/* serial number of failed request */
    940 	unsigned char error_code;	/* error code of failed request */
    941 	unsigned char request_code;	/* Major op-code of failed request */
    942 	unsigned char minor_code;	/* Minor op-code of failed request */
    943 } XErrorEvent;
    944 
    945 typedef struct {
    946 	int type;
    947 	unsigned long serial;	/* # of last request processed by server */
    948 	Bool send_event;	/* true if this came from a SendEvent request */
    949 	Display *display;/* Display the event was read from */
    950 	Window window;	/* window on which event was requested in event mask */
    951 } XAnyEvent;
    952 
    953 
    954 /***************************************************************
    955  *
    956  * GenericEvent.  This event is the standard event for all newer extensions.
    957  */
    958 
    959 typedef struct
    960     {
    961     int            type;         /* of event. Always GenericEvent */
    962     unsigned long  serial;       /* # of last request processed */
    963     Bool           send_event;   /* true if from SendEvent request */
    964     Display        *display;     /* Display the event was read from */
    965     int            extension;    /* major opcode of extension that caused the event */
    966     int            evtype;       /* actual event type. */
    967     } XGenericEvent;
    968 
    969 typedef struct {
    970     int            type;         /* of event. Always GenericEvent */
    971     unsigned long  serial;       /* # of last request processed */
    972     Bool           send_event;   /* true if from SendEvent request */
    973     Display        *display;     /* Display the event was read from */
    974     int            extension;    /* major opcode of extension that caused the event */
    975     int            evtype;       /* actual event type. */
    976     unsigned int   cookie;
    977     void           *data;
    978 } XGenericEventCookie;
    979 
    980 /*
    981  * this union is defined so Xlib can always use the same sized
    982  * event structure internally, to avoid memory fragmentation.
    983  */
    984 typedef union _XEvent {
    985         int type;		/* must not be changed; first element */
    986 	XAnyEvent xany;
    987 	XKeyEvent xkey;
    988 	XButtonEvent xbutton;
    989 	XMotionEvent xmotion;
    990 	XCrossingEvent xcrossing;
    991 	XFocusChangeEvent xfocus;
    992 	XExposeEvent xexpose;
    993 	XGraphicsExposeEvent xgraphicsexpose;
    994 	XNoExposeEvent xnoexpose;
    995 	XVisibilityEvent xvisibility;
    996 	XCreateWindowEvent xcreatewindow;
    997 	XDestroyWindowEvent xdestroywindow;
    998 	XUnmapEvent xunmap;
    999 	XMapEvent xmap;
   1000 	XMapRequestEvent xmaprequest;
   1001 	XReparentEvent xreparent;
   1002 	XConfigureEvent xconfigure;
   1003 	XGravityEvent xgravity;
   1004 	XResizeRequestEvent xresizerequest;
   1005 	XConfigureRequestEvent xconfigurerequest;
   1006 	XCirculateEvent xcirculate;
   1007 	XCirculateRequestEvent xcirculaterequest;
   1008 	XPropertyEvent xproperty;
   1009 	XSelectionClearEvent xselectionclear;
   1010 	XSelectionRequestEvent xselectionrequest;
   1011 	XSelectionEvent xselection;
   1012 	XColormapEvent xcolormap;
   1013 	XClientMessageEvent xclient;
   1014 	XMappingEvent xmapping;
   1015 	XErrorEvent xerror;
   1016 	XKeymapEvent xkeymap;
   1017 	XGenericEvent xgeneric;
   1018 	XGenericEventCookie xcookie;
   1019 	long pad[24];
   1020 } XEvent;
   1021 #endif
   1022 
   1023 #define XAllocID(dpy) ((*((_XPrivDisplay)dpy)->resource_alloc)((dpy)))
   1024 
   1025 /*
   1026  * per character font metric information.
   1027  */
   1028 typedef struct {
   1029     short	lbearing;	/* origin to left edge of raster */
   1030     short	rbearing;	/* origin to right edge of raster */
   1031     short	width;		/* advance to next char's origin */
   1032     short	ascent;		/* baseline to top edge of raster */
   1033     short	descent;	/* baseline to bottom edge of raster */
   1034     unsigned short attributes;	/* per char flags (not predefined) */
   1035 } XCharStruct;
   1036 
   1037 /*
   1038  * To allow arbitrary information with fonts, there are additional properties
   1039  * returned.
   1040  */
   1041 typedef struct {
   1042     Atom name;
   1043     unsigned long card32;
   1044 } XFontProp;
   1045 
   1046 typedef struct {
   1047     XExtData	*ext_data;	/* hook for extension to hang data */
   1048     Font        fid;            /* Font id for this font */
   1049     unsigned	direction;	/* hint about direction the font is painted */
   1050     unsigned	min_char_or_byte2;/* first character */
   1051     unsigned	max_char_or_byte2;/* last character */
   1052     unsigned	min_byte1;	/* first row that exists */
   1053     unsigned	max_byte1;	/* last row that exists */
   1054     Bool	all_chars_exist;/* flag if all characters have non-zero size*/
   1055     unsigned	default_char;	/* char to print for undefined character */
   1056     int         n_properties;   /* how many properties there are */
   1057     XFontProp	*properties;	/* pointer to array of additional properties*/
   1058     XCharStruct	min_bounds;	/* minimum bounds over all existing char*/
   1059     XCharStruct	max_bounds;	/* maximum bounds over all existing char*/
   1060     XCharStruct	*per_char;	/* first_char to last_char information */
   1061     int		ascent;		/* log. extent above baseline for spacing */
   1062     int		descent;	/* log. descent below baseline for spacing */
   1063 } XFontStruct;
   1064 
   1065 /*
   1066  * PolyText routines take these as arguments.
   1067  */
   1068 typedef struct {
   1069     char *chars;		/* pointer to string */
   1070     int nchars;			/* number of characters */
   1071     int delta;			/* delta between strings */
   1072     Font font;			/* font to print it in, None don't change */
   1073 } XTextItem;
   1074 
   1075 typedef struct {		/* normal 16 bit characters are two bytes */
   1076     unsigned char byte1;
   1077     unsigned char byte2;
   1078 } XChar2b;
   1079 
   1080 typedef struct {
   1081     XChar2b *chars;		/* two byte characters */
   1082     int nchars;			/* number of characters */
   1083     int delta;			/* delta between strings */
   1084     Font font;			/* font to print it in, None don't change */
   1085 } XTextItem16;
   1086 
   1087 
   1088 typedef union { Display *display;
   1089 		GC gc;
   1090 		Visual *visual;
   1091 		Screen *screen;
   1092 		ScreenFormat *pixmap_format;
   1093 		XFontStruct *font; } XEDataObject;
   1094 
   1095 typedef struct {
   1096     XRectangle      max_ink_extent;
   1097     XRectangle      max_logical_extent;
   1098 } XFontSetExtents;
   1099 
   1100 /* unused:
   1101 typedef void (*XOMProc)();
   1102  */
   1103 
   1104 typedef struct _XOM *XOM;
   1105 typedef struct _XOC *XOC, *XFontSet;
   1106 
   1107 typedef struct {
   1108     char           *chars;
   1109     int             nchars;
   1110     int             delta;
   1111     XFontSet        font_set;
   1112 } XmbTextItem;
   1113 
   1114 typedef struct {
   1115     wchar_t        *chars;
   1116     int             nchars;
   1117     int             delta;
   1118     XFontSet        font_set;
   1119 } XwcTextItem;
   1120 
   1121 #define XNRequiredCharSet "requiredCharSet"
   1122 #define XNQueryOrientation "queryOrientation"
   1123 #define XNBaseFontName "baseFontName"
   1124 #define XNOMAutomatic "omAutomatic"
   1125 #define XNMissingCharSet "missingCharSet"
   1126 #define XNDefaultString "defaultString"
   1127 #define XNOrientation "orientation"
   1128 #define XNDirectionalDependentDrawing "directionalDependentDrawing"
   1129 #define XNContextualDrawing "contextualDrawing"
   1130 #define XNFontInfo "fontInfo"
   1131 
   1132 typedef struct {
   1133     int charset_count;
   1134     char **charset_list;
   1135 } XOMCharSetList;
   1136 
   1137 typedef enum {
   1138     XOMOrientation_LTR_TTB,
   1139     XOMOrientation_RTL_TTB,
   1140     XOMOrientation_TTB_LTR,
   1141     XOMOrientation_TTB_RTL,
   1142     XOMOrientation_Context
   1143 } XOrientation;
   1144 
   1145 typedef struct {
   1146     int num_orientation;
   1147     XOrientation *orientation;	/* Input Text description */
   1148 } XOMOrientation;
   1149 
   1150 typedef struct {
   1151     int num_font;
   1152     XFontStruct **font_struct_list;
   1153     char **font_name_list;
   1154 } XOMFontInfo;
   1155 
   1156 typedef struct _XIM *XIM;
   1157 typedef struct _XIC *XIC;
   1158 
   1159 typedef void (*XIMProc)(
   1160     XIM,
   1161     XPointer,
   1162     XPointer
   1163 );
   1164 
   1165 typedef Bool (*XICProc)(
   1166     XIC,
   1167     XPointer,
   1168     XPointer
   1169 );
   1170 
   1171 typedef void (*XIDProc)(
   1172     Display*,
   1173     XPointer,
   1174     XPointer
   1175 );
   1176 
   1177 typedef unsigned long XIMStyle;
   1178 
   1179 typedef struct {
   1180     unsigned short count_styles;
   1181     XIMStyle *supported_styles;
   1182 } XIMStyles;
   1183 
   1184 #define XIMPreeditArea		0x0001L
   1185 #define XIMPreeditCallbacks	0x0002L
   1186 #define XIMPreeditPosition	0x0004L
   1187 #define XIMPreeditNothing	0x0008L
   1188 #define XIMPreeditNone		0x0010L
   1189 #define XIMStatusArea		0x0100L
   1190 #define XIMStatusCallbacks	0x0200L
   1191 #define XIMStatusNothing	0x0400L
   1192 #define XIMStatusNone		0x0800L
   1193 
   1194 #define XNVaNestedList "XNVaNestedList"
   1195 #define XNQueryInputStyle "queryInputStyle"
   1196 #define XNClientWindow "clientWindow"
   1197 #define XNInputStyle "inputStyle"
   1198 #define XNFocusWindow "focusWindow"
   1199 #define XNResourceName "resourceName"
   1200 #define XNResourceClass "resourceClass"
   1201 #define XNGeometryCallback "geometryCallback"
   1202 #define XNDestroyCallback "destroyCallback"
   1203 #define XNFilterEvents "filterEvents"
   1204 #define XNPreeditStartCallback "preeditStartCallback"
   1205 #define XNPreeditDoneCallback "preeditDoneCallback"
   1206 #define XNPreeditDrawCallback "preeditDrawCallback"
   1207 #define XNPreeditCaretCallback "preeditCaretCallback"
   1208 #define XNPreeditStateNotifyCallback "preeditStateNotifyCallback"
   1209 #define XNPreeditAttributes "preeditAttributes"
   1210 #define XNStatusStartCallback "statusStartCallback"
   1211 #define XNStatusDoneCallback "statusDoneCallback"
   1212 #define XNStatusDrawCallback "statusDrawCallback"
   1213 #define XNStatusAttributes "statusAttributes"
   1214 #define XNArea "area"
   1215 #define XNAreaNeeded "areaNeeded"
   1216 #define XNSpotLocation "spotLocation"
   1217 #define XNColormap "colorMap"
   1218 #define XNStdColormap "stdColorMap"
   1219 #define XNForeground "foreground"
   1220 #define XNBackground "background"
   1221 #define XNBackgroundPixmap "backgroundPixmap"
   1222 #define XNFontSet "fontSet"
   1223 #define XNLineSpace "lineSpace"
   1224 #define XNCursor "cursor"
   1225 
   1226 #define XNQueryIMValuesList "queryIMValuesList"
   1227 #define XNQueryICValuesList "queryICValuesList"
   1228 #define XNVisiblePosition "visiblePosition"
   1229 #define XNR6PreeditCallback "r6PreeditCallback"
   1230 #define XNStringConversionCallback "stringConversionCallback"
   1231 #define XNStringConversion "stringConversion"
   1232 #define XNResetState "resetState"
   1233 #define XNHotKey "hotKey"
   1234 #define XNHotKeyState "hotKeyState"
   1235 #define XNPreeditState "preeditState"
   1236 #define XNSeparatorofNestedList "separatorofNestedList"
   1237 
   1238 #define XBufferOverflow		-1
   1239 #define XLookupNone		1
   1240 #define XLookupChars		2
   1241 #define XLookupKeySym		3
   1242 #define XLookupBoth		4
   1243 
   1244 typedef void *XVaNestedList;
   1245 
   1246 typedef struct {
   1247     XPointer client_data;
   1248     XIMProc callback;
   1249 } XIMCallback;
   1250 
   1251 typedef struct {
   1252     XPointer client_data;
   1253     XICProc callback;
   1254 } XICCallback;
   1255 
   1256 typedef unsigned long XIMFeedback;
   1257 
   1258 #define XIMReverse		1L
   1259 #define XIMUnderline		(1L<<1)
   1260 #define XIMHighlight		(1L<<2)
   1261 #define XIMPrimary	 	(1L<<5)
   1262 #define XIMSecondary		(1L<<6)
   1263 #define XIMTertiary	 	(1L<<7)
   1264 #define XIMVisibleToForward 	(1L<<8)
   1265 #define XIMVisibleToBackword 	(1L<<9)
   1266 #define XIMVisibleToCenter 	(1L<<10)
   1267 
   1268 typedef struct _XIMText {
   1269     unsigned short length;
   1270     XIMFeedback *feedback;
   1271     Bool encoding_is_wchar;
   1272     union {
   1273 	char *multi_byte;
   1274 	wchar_t *wide_char;
   1275     } string;
   1276 } XIMText;
   1277 
   1278 typedef	unsigned long	 XIMPreeditState;
   1279 
   1280 #define	XIMPreeditUnKnown	0L
   1281 #define	XIMPreeditEnable	1L
   1282 #define	XIMPreeditDisable	(1L<<1)
   1283 
   1284 typedef	struct	_XIMPreeditStateNotifyCallbackStruct {
   1285     XIMPreeditState state;
   1286 } XIMPreeditStateNotifyCallbackStruct;
   1287 
   1288 typedef	unsigned long	 XIMResetState;
   1289 
   1290 #define	XIMInitialState		1L
   1291 #define	XIMPreserveState	(1L<<1)
   1292 
   1293 typedef unsigned long XIMStringConversionFeedback;
   1294 
   1295 #define	XIMStringConversionLeftEdge	(0x00000001)
   1296 #define	XIMStringConversionRightEdge	(0x00000002)
   1297 #define	XIMStringConversionTopEdge	(0x00000004)
   1298 #define	XIMStringConversionBottomEdge	(0x00000008)
   1299 #define	XIMStringConversionConcealed	(0x00000010)
   1300 #define	XIMStringConversionWrapped	(0x00000020)
   1301 
   1302 typedef struct _XIMStringConversionText {
   1303     unsigned short length;
   1304     XIMStringConversionFeedback *feedback;
   1305     Bool encoding_is_wchar;
   1306     union {
   1307 	char *mbs;
   1308 	wchar_t *wcs;
   1309     } string;
   1310 } XIMStringConversionText;
   1311 
   1312 typedef	unsigned short	XIMStringConversionPosition;
   1313 
   1314 typedef	unsigned short	XIMStringConversionType;
   1315 
   1316 #define	XIMStringConversionBuffer	(0x0001)
   1317 #define	XIMStringConversionLine		(0x0002)
   1318 #define	XIMStringConversionWord		(0x0003)
   1319 #define	XIMStringConversionChar		(0x0004)
   1320 
   1321 typedef	unsigned short	XIMStringConversionOperation;
   1322 
   1323 #define	XIMStringConversionSubstitution	(0x0001)
   1324 #define	XIMStringConversionRetrieval	(0x0002)
   1325 
   1326 typedef enum {
   1327     XIMForwardChar, XIMBackwardChar,
   1328     XIMForwardWord, XIMBackwardWord,
   1329     XIMCaretUp, XIMCaretDown,
   1330     XIMNextLine, XIMPreviousLine,
   1331     XIMLineStart, XIMLineEnd,
   1332     XIMAbsolutePosition,
   1333     XIMDontChange
   1334 } XIMCaretDirection;
   1335 
   1336 typedef struct _XIMStringConversionCallbackStruct {
   1337     XIMStringConversionPosition position;
   1338     XIMCaretDirection direction;
   1339     XIMStringConversionOperation operation;
   1340     unsigned short factor;
   1341     XIMStringConversionText *text;
   1342 } XIMStringConversionCallbackStruct;
   1343 
   1344 typedef struct _XIMPreeditDrawCallbackStruct {
   1345     int caret;		/* Cursor offset within pre-edit string */
   1346     int chg_first;	/* Starting change position */
   1347     int chg_length;	/* Length of the change in character count */
   1348     XIMText *text;
   1349 } XIMPreeditDrawCallbackStruct;
   1350 
   1351 typedef enum {
   1352     XIMIsInvisible,	/* Disable caret feedback */
   1353     XIMIsPrimary,	/* UI defined caret feedback */
   1354     XIMIsSecondary	/* UI defined caret feedback */
   1355 } XIMCaretStyle;
   1356 
   1357 typedef struct _XIMPreeditCaretCallbackStruct {
   1358     int position;		 /* Caret offset within pre-edit string */
   1359     XIMCaretDirection direction; /* Caret moves direction */
   1360     XIMCaretStyle style;	 /* Feedback of the caret */
   1361 } XIMPreeditCaretCallbackStruct;
   1362 
   1363 typedef enum {
   1364     XIMTextType,
   1365     XIMBitmapType
   1366 } XIMStatusDataType;
   1367 
   1368 typedef struct _XIMStatusDrawCallbackStruct {
   1369     XIMStatusDataType type;
   1370     union {
   1371 	XIMText *text;
   1372 	Pixmap  bitmap;
   1373     } data;
   1374 } XIMStatusDrawCallbackStruct;
   1375 
   1376 typedef struct _XIMHotKeyTrigger {
   1377     KeySym	 keysym;
   1378     int		 modifier;
   1379     int		 modifier_mask;
   1380 } XIMHotKeyTrigger;
   1381 
   1382 typedef struct _XIMHotKeyTriggers {
   1383     int			 num_hot_key;
   1384     XIMHotKeyTrigger	*key;
   1385 } XIMHotKeyTriggers;
   1386 
   1387 typedef	unsigned long	 XIMHotKeyState;
   1388 
   1389 #define	XIMHotKeyStateON	(0x0001L)
   1390 #define	XIMHotKeyStateOFF	(0x0002L)
   1391 
   1392 typedef struct {
   1393     unsigned short count_values;
   1394     char **supported_values;
   1395 } XIMValuesList;
   1396 
   1397 _XFUNCPROTOBEGIN
   1398 
   1399 #if defined(WIN32) && !defined(_XLIBINT_)
   1400 #define _Xdebug (*_Xdebug_p)
   1401 #endif
   1402 
   1403 extern int _Xdebug;
   1404 
   1405 extern XFontStruct *XLoadQueryFont(
   1406     Display*		/* display */,
   1407     _Xconst char*	/* name */
   1408 );
   1409 
   1410 extern XFontStruct *XQueryFont(
   1411     Display*		/* display */,
   1412     XID			/* font_ID */
   1413 );
   1414 
   1415 
   1416 extern XTimeCoord *XGetMotionEvents(
   1417     Display*		/* display */,
   1418     Window		/* w */,
   1419     Time		/* start */,
   1420     Time		/* stop */,
   1421     int*		/* nevents_return */
   1422 );
   1423 
   1424 extern XModifierKeymap *XDeleteModifiermapEntry(
   1425     XModifierKeymap*	/* modmap */,
   1426 #if NeedWidePrototypes
   1427     unsigned int	/* keycode_entry */,
   1428 #else
   1429     KeyCode		/* keycode_entry */,
   1430 #endif
   1431     int			/* modifier */
   1432 );
   1433 
   1434 extern XModifierKeymap	*XGetModifierMapping(
   1435     Display*		/* display */
   1436 );
   1437 
   1438 extern XModifierKeymap	*XInsertModifiermapEntry(
   1439     XModifierKeymap*	/* modmap */,
   1440 #if NeedWidePrototypes
   1441     unsigned int	/* keycode_entry */,
   1442 #else
   1443     KeyCode		/* keycode_entry */,
   1444 #endif
   1445     int			/* modifier */
   1446 );
   1447 
   1448 extern XModifierKeymap *XNewModifiermap(
   1449     int			/* max_keys_per_mod */
   1450 );
   1451 
   1452 extern XImage *XCreateImage(
   1453     Display*		/* display */,
   1454     Visual*		/* visual */,
   1455     unsigned int	/* depth */,
   1456     int			/* format */,
   1457     int			/* offset */,
   1458     char*		/* data */,
   1459     unsigned int	/* width */,
   1460     unsigned int	/* height */,
   1461     int			/* bitmap_pad */,
   1462     int			/* bytes_per_line */
   1463 );
   1464 extern Status XInitImage(
   1465     XImage*		/* image */
   1466 );
   1467 extern XImage *XGetImage(
   1468     Display*		/* display */,
   1469     Drawable		/* d */,
   1470     int			/* x */,
   1471     int			/* y */,
   1472     unsigned int	/* width */,
   1473     unsigned int	/* height */,
   1474     unsigned long	/* plane_mask */,
   1475     int			/* format */
   1476 );
   1477 extern XImage *XGetSubImage(
   1478     Display*		/* display */,
   1479     Drawable		/* d */,
   1480     int			/* x */,
   1481     int			/* y */,
   1482     unsigned int	/* width */,
   1483     unsigned int	/* height */,
   1484     unsigned long	/* plane_mask */,
   1485     int			/* format */,
   1486     XImage*		/* dest_image */,
   1487     int			/* dest_x */,
   1488     int			/* dest_y */
   1489 );
   1490 
   1491 /*
   1492  * X function declarations.
   1493  */
   1494 extern Display *XOpenDisplay(
   1495     _Xconst char*	/* display_name */
   1496 );
   1497 
   1498 extern void XrmInitialize(
   1499     void
   1500 );
   1501 
   1502 extern char *XFetchBytes(
   1503     Display*		/* display */,
   1504     int*		/* nbytes_return */
   1505 );
   1506 extern char *XFetchBuffer(
   1507     Display*		/* display */,
   1508     int*		/* nbytes_return */,
   1509     int			/* buffer */
   1510 );
   1511 extern char *XGetAtomName(
   1512     Display*		/* display */,
   1513     Atom		/* atom */
   1514 );
   1515 extern Status XGetAtomNames(
   1516     Display*		/* dpy */,
   1517     Atom*		/* atoms */,
   1518     int			/* count */,
   1519     char**		/* names_return */
   1520 );
   1521 extern char *XGetDefault(
   1522     Display*		/* display */,
   1523     _Xconst char*	/* program */,
   1524     _Xconst char*	/* option */
   1525 );
   1526 extern char *XDisplayName(
   1527     _Xconst char*	/* string */
   1528 );
   1529 extern char *XKeysymToString(
   1530     KeySym		/* keysym */
   1531 );
   1532 
   1533 extern int (*XSynchronize(
   1534     Display*		/* display */,
   1535     Bool		/* onoff */
   1536 ))(
   1537     Display*		/* display */
   1538 );
   1539 extern int (*XSetAfterFunction(
   1540     Display*		/* display */,
   1541     int (*) (
   1542 	     Display*	/* display */
   1543             )		/* procedure */
   1544 ))(
   1545     Display*		/* display */
   1546 );
   1547 extern Atom XInternAtom(
   1548     Display*		/* display */,
   1549     _Xconst char*	/* atom_name */,
   1550     Bool		/* only_if_exists */
   1551 );
   1552 extern Status XInternAtoms(
   1553     Display*		/* dpy */,
   1554     char**		/* names */,
   1555     int			/* count */,
   1556     Bool		/* onlyIfExists */,
   1557     Atom*		/* atoms_return */
   1558 );
   1559 extern Colormap XCopyColormapAndFree(
   1560     Display*		/* display */,
   1561     Colormap		/* colormap */
   1562 );
   1563 extern Colormap XCreateColormap(
   1564     Display*		/* display */,
   1565     Window		/* w */,
   1566     Visual*		/* visual */,
   1567     int			/* alloc */
   1568 );
   1569 extern Cursor XCreatePixmapCursor(
   1570     Display*		/* display */,
   1571     Pixmap		/* source */,
   1572     Pixmap		/* mask */,
   1573     XColor*		/* foreground_color */,
   1574     XColor*		/* background_color */,
   1575     unsigned int	/* x */,
   1576     unsigned int	/* y */
   1577 );
   1578 extern Cursor XCreateGlyphCursor(
   1579     Display*		/* display */,
   1580     Font		/* source_font */,
   1581     Font		/* mask_font */,
   1582     unsigned int	/* source_char */,
   1583     unsigned int	/* mask_char */,
   1584     XColor _Xconst *	/* foreground_color */,
   1585     XColor _Xconst *	/* background_color */
   1586 );
   1587 extern Cursor XCreateFontCursor(
   1588     Display*		/* display */,
   1589     unsigned int	/* shape */
   1590 );
   1591 extern Font XLoadFont(
   1592     Display*		/* display */,
   1593     _Xconst char*	/* name */
   1594 );
   1595 extern GC XCreateGC(
   1596     Display*		/* display */,
   1597     Drawable		/* d */,
   1598     unsigned long	/* valuemask */,
   1599     XGCValues*		/* values */
   1600 );
   1601 extern GContext XGContextFromGC(
   1602     GC			/* gc */
   1603 );
   1604 extern void XFlushGC(
   1605     Display*		/* display */,
   1606     GC			/* gc */
   1607 );
   1608 extern Pixmap XCreatePixmap(
   1609     Display*		/* display */,
   1610     Drawable		/* d */,
   1611     unsigned int	/* width */,
   1612     unsigned int	/* height */,
   1613     unsigned int	/* depth */
   1614 );
   1615 extern Pixmap XCreateBitmapFromData(
   1616     Display*		/* display */,
   1617     Drawable		/* d */,
   1618     _Xconst char*	/* data */,
   1619     unsigned int	/* width */,
   1620     unsigned int	/* height */
   1621 );
   1622 extern Pixmap XCreatePixmapFromBitmapData(
   1623     Display*		/* display */,
   1624     Drawable		/* d */,
   1625     char*		/* data */,
   1626     unsigned int	/* width */,
   1627     unsigned int	/* height */,
   1628     unsigned long	/* fg */,
   1629     unsigned long	/* bg */,
   1630     unsigned int	/* depth */
   1631 );
   1632 extern Window XCreateSimpleWindow(
   1633     Display*		/* display */,
   1634     Window		/* parent */,
   1635     int			/* x */,
   1636     int			/* y */,
   1637     unsigned int	/* width */,
   1638     unsigned int	/* height */,
   1639     unsigned int	/* border_width */,
   1640     unsigned long	/* border */,
   1641     unsigned long	/* background */
   1642 );
   1643 extern Window XGetSelectionOwner(
   1644     Display*		/* display */,
   1645     Atom		/* selection */
   1646 );
   1647 extern Window XCreateWindow(
   1648     Display*		/* display */,
   1649     Window		/* parent */,
   1650     int			/* x */,
   1651     int			/* y */,
   1652     unsigned int	/* width */,
   1653     unsigned int	/* height */,
   1654     unsigned int	/* border_width */,
   1655     int			/* depth */,
   1656     unsigned int	/* class */,
   1657     Visual*		/* visual */,
   1658     unsigned long	/* valuemask */,
   1659     XSetWindowAttributes*	/* attributes */
   1660 );
   1661 extern Colormap *XListInstalledColormaps(
   1662     Display*		/* display */,
   1663     Window		/* w */,
   1664     int*		/* num_return */
   1665 );
   1666 extern char **XListFonts(
   1667     Display*		/* display */,
   1668     _Xconst char*	/* pattern */,
   1669     int			/* maxnames */,
   1670     int*		/* actual_count_return */
   1671 );
   1672 extern char **XListFontsWithInfo(
   1673     Display*		/* display */,
   1674     _Xconst char*	/* pattern */,
   1675     int			/* maxnames */,
   1676     int*		/* count_return */,
   1677     XFontStruct**	/* info_return */
   1678 );
   1679 extern char **XGetFontPath(
   1680     Display*		/* display */,
   1681     int*		/* npaths_return */
   1682 );
   1683 extern char **XListExtensions(
   1684     Display*		/* display */,
   1685     int*		/* nextensions_return */
   1686 );
   1687 extern Atom *XListProperties(
   1688     Display*		/* display */,
   1689     Window		/* w */,
   1690     int*		/* num_prop_return */
   1691 );
   1692 extern XHostAddress *XListHosts(
   1693     Display*		/* display */,
   1694     int*		/* nhosts_return */,
   1695     Bool*		/* state_return */
   1696 );
   1697 extern KeySym XKeycodeToKeysym(
   1698     Display*		/* display */,
   1699 #if NeedWidePrototypes
   1700     unsigned int	/* keycode */,
   1701 #else
   1702     KeyCode		/* keycode */,
   1703 #endif
   1704     int			/* index */
   1705 );
   1706 extern KeySym XLookupKeysym(
   1707     XKeyEvent*		/* key_event */,
   1708     int			/* index */
   1709 );
   1710 extern KeySym *XGetKeyboardMapping(
   1711     Display*		/* display */,
   1712 #if NeedWidePrototypes
   1713     unsigned int	/* first_keycode */,
   1714 #else
   1715     KeyCode		/* first_keycode */,
   1716 #endif
   1717     int			/* keycode_count */,
   1718     int*		/* keysyms_per_keycode_return */
   1719 );
   1720 extern KeySym XStringToKeysym(
   1721     _Xconst char*	/* string */
   1722 );
   1723 extern long XMaxRequestSize(
   1724     Display*		/* display */
   1725 );
   1726 extern long XExtendedMaxRequestSize(
   1727     Display*		/* display */
   1728 );
   1729 extern char *XResourceManagerString(
   1730     Display*		/* display */
   1731 );
   1732 extern char *XScreenResourceString(
   1733 	Screen*		/* screen */
   1734 );
   1735 extern unsigned long XDisplayMotionBufferSize(
   1736     Display*		/* display */
   1737 );
   1738 extern VisualID XVisualIDFromVisual(
   1739     Visual*		/* visual */
   1740 );
   1741 
   1742 /* multithread routines */
   1743 
   1744 extern Status XInitThreads(
   1745     void
   1746 );
   1747 
   1748 extern void XLockDisplay(
   1749     Display*		/* display */
   1750 );
   1751 
   1752 extern void XUnlockDisplay(
   1753     Display*		/* display */
   1754 );
   1755 
   1756 /* routines for dealing with extensions */
   1757 
   1758 extern XExtCodes *XInitExtension(
   1759     Display*		/* display */,
   1760     _Xconst char*	/* name */
   1761 );
   1762 
   1763 extern XExtCodes *XAddExtension(
   1764     Display*		/* display */
   1765 );
   1766 extern XExtData *XFindOnExtensionList(
   1767     XExtData**		/* structure */,
   1768     int			/* number */
   1769 );
   1770 extern XExtData **XEHeadOfExtensionList(
   1771     XEDataObject	/* object */
   1772 );
   1773 
   1774 /* these are routines for which there are also macros */
   1775 extern Window XRootWindow(
   1776     Display*		/* display */,
   1777     int			/* screen_number */
   1778 );
   1779 extern Window XDefaultRootWindow(
   1780     Display*		/* display */
   1781 );
   1782 extern Window XRootWindowOfScreen(
   1783     Screen*		/* screen */
   1784 );
   1785 extern Visual *XDefaultVisual(
   1786     Display*		/* display */,
   1787     int			/* screen_number */
   1788 );
   1789 extern Visual *XDefaultVisualOfScreen(
   1790     Screen*		/* screen */
   1791 );
   1792 extern GC XDefaultGC(
   1793     Display*		/* display */,
   1794     int			/* screen_number */
   1795 );
   1796 extern GC XDefaultGCOfScreen(
   1797     Screen*		/* screen */
   1798 );
   1799 extern unsigned long XBlackPixel(
   1800     Display*		/* display */,
   1801     int			/* screen_number */
   1802 );
   1803 extern unsigned long XWhitePixel(
   1804     Display*		/* display */,
   1805     int			/* screen_number */
   1806 );
   1807 extern unsigned long XAllPlanes(
   1808     void
   1809 );
   1810 extern unsigned long XBlackPixelOfScreen(
   1811     Screen*		/* screen */
   1812 );
   1813 extern unsigned long XWhitePixelOfScreen(
   1814     Screen*		/* screen */
   1815 );
   1816 extern unsigned long XNextRequest(
   1817     Display*		/* display */
   1818 );
   1819 extern unsigned long XLastKnownRequestProcessed(
   1820     Display*		/* display */
   1821 );
   1822 extern char *XServerVendor(
   1823     Display*		/* display */
   1824 );
   1825 extern char *XDisplayString(
   1826     Display*		/* display */
   1827 );
   1828 extern Colormap XDefaultColormap(
   1829     Display*		/* display */,
   1830     int			/* screen_number */
   1831 );
   1832 extern Colormap XDefaultColormapOfScreen(
   1833     Screen*		/* screen */
   1834 );
   1835 extern Display *XDisplayOfScreen(
   1836     Screen*		/* screen */
   1837 );
   1838 extern Screen *XScreenOfDisplay(
   1839     Display*		/* display */,
   1840     int			/* screen_number */
   1841 );
   1842 extern Screen *XDefaultScreenOfDisplay(
   1843     Display*		/* display */
   1844 );
   1845 extern long XEventMaskOfScreen(
   1846     Screen*		/* screen */
   1847 );
   1848 
   1849 extern int XScreenNumberOfScreen(
   1850     Screen*		/* screen */
   1851 );
   1852 
   1853 typedef int (*XErrorHandler) (	    /* WARNING, this type not in Xlib spec */
   1854     Display*		/* display */,
   1855     XErrorEvent*	/* error_event */
   1856 );
   1857 
   1858 extern XErrorHandler XSetErrorHandler (
   1859     XErrorHandler	/* handler */
   1860 );
   1861 
   1862 
   1863 typedef int (*XIOErrorHandler) (    /* WARNING, this type not in Xlib spec */
   1864     Display*		/* display */
   1865 );
   1866 
   1867 extern XIOErrorHandler XSetIOErrorHandler (
   1868     XIOErrorHandler	/* handler */
   1869 );
   1870 
   1871 
   1872 extern XPixmapFormatValues *XListPixmapFormats(
   1873     Display*		/* display */,
   1874     int*		/* count_return */
   1875 );
   1876 extern int *XListDepths(
   1877     Display*		/* display */,
   1878     int			/* screen_number */,
   1879     int*		/* count_return */
   1880 );
   1881 
   1882 /* ICCCM routines for things that don't require special include files; */
   1883 /* other declarations are given in Xutil.h                             */
   1884 extern Status XReconfigureWMWindow(
   1885     Display*		/* display */,
   1886     Window		/* w */,
   1887     int			/* screen_number */,
   1888     unsigned int	/* mask */,
   1889     XWindowChanges*	/* changes */
   1890 );
   1891 
   1892 extern Status XGetWMProtocols(
   1893     Display*		/* display */,
   1894     Window		/* w */,
   1895     Atom**		/* protocols_return */,
   1896     int*		/* count_return */
   1897 );
   1898 extern Status XSetWMProtocols(
   1899     Display*		/* display */,
   1900     Window		/* w */,
   1901     Atom*		/* protocols */,
   1902     int			/* count */
   1903 );
   1904 extern Status XIconifyWindow(
   1905     Display*		/* display */,
   1906     Window		/* w */,
   1907     int			/* screen_number */
   1908 );
   1909 extern Status XWithdrawWindow(
   1910     Display*		/* display */,
   1911     Window		/* w */,
   1912     int			/* screen_number */
   1913 );
   1914 extern Status XGetCommand(
   1915     Display*		/* display */,
   1916     Window		/* w */,
   1917     char***		/* argv_return */,
   1918     int*		/* argc_return */
   1919 );
   1920 extern Status XGetWMColormapWindows(
   1921     Display*		/* display */,
   1922     Window		/* w */,
   1923     Window**		/* windows_return */,
   1924     int*		/* count_return */
   1925 );
   1926 extern Status XSetWMColormapWindows(
   1927     Display*		/* display */,
   1928     Window		/* w */,
   1929     Window*		/* colormap_windows */,
   1930     int			/* count */
   1931 );
   1932 extern void XFreeStringList(
   1933     char**		/* list */
   1934 );
   1935 extern int XSetTransientForHint(
   1936     Display*		/* display */,
   1937     Window		/* w */,
   1938     Window		/* prop_window */
   1939 );
   1940 
   1941 /* The following are given in alphabetical order */
   1942 
   1943 extern int XActivateScreenSaver(
   1944     Display*		/* display */
   1945 );
   1946 
   1947 extern int XAddHost(
   1948     Display*		/* display */,
   1949     XHostAddress*	/* host */
   1950 );
   1951 
   1952 extern int XAddHosts(
   1953     Display*		/* display */,
   1954     XHostAddress*	/* hosts */,
   1955     int			/* num_hosts */
   1956 );
   1957 
   1958 extern int XAddToExtensionList(
   1959     struct _XExtData**	/* structure */,
   1960     XExtData*		/* ext_data */
   1961 );
   1962 
   1963 extern int XAddToSaveSet(
   1964     Display*		/* display */,
   1965     Window		/* w */
   1966 );
   1967 
   1968 extern Status XAllocColor(
   1969     Display*		/* display */,
   1970     Colormap		/* colormap */,
   1971     XColor*		/* screen_in_out */
   1972 );
   1973 
   1974 extern Status XAllocColorCells(
   1975     Display*		/* display */,
   1976     Colormap		/* colormap */,
   1977     Bool	        /* contig */,
   1978     unsigned long*	/* plane_masks_return */,
   1979     unsigned int	/* nplanes */,
   1980     unsigned long*	/* pixels_return */,
   1981     unsigned int 	/* npixels */
   1982 );
   1983 
   1984 extern Status XAllocColorPlanes(
   1985     Display*		/* display */,
   1986     Colormap		/* colormap */,
   1987     Bool		/* contig */,
   1988     unsigned long*	/* pixels_return */,
   1989     int			/* ncolors */,
   1990     int			/* nreds */,
   1991     int			/* ngreens */,
   1992     int			/* nblues */,
   1993     unsigned long*	/* rmask_return */,
   1994     unsigned long*	/* gmask_return */,
   1995     unsigned long*	/* bmask_return */
   1996 );
   1997 
   1998 extern Status XAllocNamedColor(
   1999     Display*		/* display */,
   2000     Colormap		/* colormap */,
   2001     _Xconst char*	/* color_name */,
   2002     XColor*		/* screen_def_return */,
   2003     XColor*		/* exact_def_return */
   2004 );
   2005 
   2006 extern int XAllowEvents(
   2007     Display*		/* display */,
   2008     int			/* event_mode */,
   2009     Time		/* time */
   2010 );
   2011 
   2012 extern int XAutoRepeatOff(
   2013     Display*		/* display */
   2014 );
   2015 
   2016 extern int XAutoRepeatOn(
   2017     Display*		/* display */
   2018 );
   2019 
   2020 extern int XBell(
   2021     Display*		/* display */,
   2022     int			/* percent */
   2023 );
   2024 
   2025 extern int XBitmapBitOrder(
   2026     Display*		/* display */
   2027 );
   2028 
   2029 extern int XBitmapPad(
   2030     Display*		/* display */
   2031 );
   2032 
   2033 extern int XBitmapUnit(
   2034     Display*		/* display */
   2035 );
   2036 
   2037 extern int XCellsOfScreen(
   2038     Screen*		/* screen */
   2039 );
   2040 
   2041 extern int XChangeActivePointerGrab(
   2042     Display*		/* display */,
   2043     unsigned int	/* event_mask */,
   2044     Cursor		/* cursor */,
   2045     Time		/* time */
   2046 );
   2047 
   2048 extern int XChangeGC(
   2049     Display*		/* display */,
   2050     GC			/* gc */,
   2051     unsigned long	/* valuemask */,
   2052     XGCValues*		/* values */
   2053 );
   2054 
   2055 extern int XChangeKeyboardControl(
   2056     Display*		/* display */,
   2057     unsigned long	/* value_mask */,
   2058     XKeyboardControl*	/* values */
   2059 );
   2060 
   2061 extern int XChangeKeyboardMapping(
   2062     Display*		/* display */,
   2063     int			/* first_keycode */,
   2064     int			/* keysyms_per_keycode */,
   2065     KeySym*		/* keysyms */,
   2066     int			/* num_codes */
   2067 );
   2068 
   2069 extern int XChangePointerControl(
   2070     Display*		/* display */,
   2071     Bool		/* do_accel */,
   2072     Bool		/* do_threshold */,
   2073     int			/* accel_numerator */,
   2074     int			/* accel_denominator */,
   2075     int			/* threshold */
   2076 );
   2077 
   2078 extern int XChangeProperty(
   2079     Display*		/* display */,
   2080     Window		/* w */,
   2081     Atom		/* property */,
   2082     Atom		/* type */,
   2083     int			/* format */,
   2084     int			/* mode */,
   2085     _Xconst unsigned char*	/* data */,
   2086     int			/* nelements */
   2087 );
   2088 
   2089 extern int XChangeSaveSet(
   2090     Display*		/* display */,
   2091     Window		/* w */,
   2092     int			/* change_mode */
   2093 );
   2094 
   2095 extern int XChangeWindowAttributes(
   2096     Display*		/* display */,
   2097     Window		/* w */,
   2098     unsigned long	/* valuemask */,
   2099     XSetWindowAttributes* /* attributes */
   2100 );
   2101 
   2102 extern Bool XCheckIfEvent(
   2103     Display*		/* display */,
   2104     XEvent*		/* event_return */,
   2105     Bool (*) (
   2106 	       Display*			/* display */,
   2107                XEvent*			/* event */,
   2108                XPointer			/* arg */
   2109              )		/* predicate */,
   2110     XPointer		/* arg */
   2111 );
   2112 
   2113 extern Bool XCheckMaskEvent(
   2114     Display*		/* display */,
   2115     long		/* event_mask */,
   2116     XEvent*		/* event_return */
   2117 );
   2118 
   2119 extern Bool XCheckTypedEvent(
   2120     Display*		/* display */,
   2121     int			/* event_type */,
   2122     XEvent*		/* event_return */
   2123 );
   2124 
   2125 extern Bool XCheckTypedWindowEvent(
   2126     Display*		/* display */,
   2127     Window		/* w */,
   2128     int			/* event_type */,
   2129     XEvent*		/* event_return */
   2130 );
   2131 
   2132 extern Bool XCheckWindowEvent(
   2133     Display*		/* display */,
   2134     Window		/* w */,
   2135     long		/* event_mask */,
   2136     XEvent*		/* event_return */
   2137 );
   2138 
   2139 extern int XCirculateSubwindows(
   2140     Display*		/* display */,
   2141     Window		/* w */,
   2142     int			/* direction */
   2143 );
   2144 
   2145 extern int XCirculateSubwindowsDown(
   2146     Display*		/* display */,
   2147     Window		/* w */
   2148 );
   2149 
   2150 extern int XCirculateSubwindowsUp(
   2151     Display*		/* display */,
   2152     Window		/* w */
   2153 );
   2154 
   2155 extern int XClearArea(
   2156     Display*		/* display */,
   2157     Window		/* w */,
   2158     int			/* x */,
   2159     int			/* y */,
   2160     unsigned int	/* width */,
   2161     unsigned int	/* height */,
   2162     Bool		/* exposures */
   2163 );
   2164 
   2165 extern int XClearWindow(
   2166     Display*		/* display */,
   2167     Window		/* w */
   2168 );
   2169 
   2170 extern int XCloseDisplay(
   2171     Display*		/* display */
   2172 );
   2173 
   2174 extern int XConfigureWindow(
   2175     Display*		/* display */,
   2176     Window		/* w */,
   2177     unsigned int	/* value_mask */,
   2178     XWindowChanges*	/* values */
   2179 );
   2180 
   2181 extern int XConnectionNumber(
   2182     Display*		/* display */
   2183 );
   2184 
   2185 extern int XConvertSelection(
   2186     Display*		/* display */,
   2187     Atom		/* selection */,
   2188     Atom 		/* target */,
   2189     Atom		/* property */,
   2190     Window		/* requestor */,
   2191     Time		/* time */
   2192 );
   2193 
   2194 extern int XCopyArea(
   2195     Display*		/* display */,
   2196     Drawable		/* src */,
   2197     Drawable		/* dest */,
   2198     GC			/* gc */,
   2199     int			/* src_x */,
   2200     int			/* src_y */,
   2201     unsigned int	/* width */,
   2202     unsigned int	/* height */,
   2203     int			/* dest_x */,
   2204     int			/* dest_y */
   2205 );
   2206 
   2207 extern int XCopyGC(
   2208     Display*		/* display */,
   2209     GC			/* src */,
   2210     unsigned long	/* valuemask */,
   2211     GC			/* dest */
   2212 );
   2213 
   2214 extern int XCopyPlane(
   2215     Display*		/* display */,
   2216     Drawable		/* src */,
   2217     Drawable		/* dest */,
   2218     GC			/* gc */,
   2219     int			/* src_x */,
   2220     int			/* src_y */,
   2221     unsigned int	/* width */,
   2222     unsigned int	/* height */,
   2223     int			/* dest_x */,
   2224     int			/* dest_y */,
   2225     unsigned long	/* plane */
   2226 );
   2227 
   2228 extern int XDefaultDepth(
   2229     Display*		/* display */,
   2230     int			/* screen_number */
   2231 );
   2232 
   2233 extern int XDefaultDepthOfScreen(
   2234     Screen*		/* screen */
   2235 );
   2236 
   2237 extern int XDefaultScreen(
   2238     Display*		/* display */
   2239 );
   2240 
   2241 extern int XDefineCursor(
   2242     Display*		/* display */,
   2243     Window		/* w */,
   2244     Cursor		/* cursor */
   2245 );
   2246 
   2247 extern int XDeleteProperty(
   2248     Display*		/* display */,
   2249     Window		/* w */,
   2250     Atom		/* property */
   2251 );
   2252 
   2253 extern int XDestroyWindow(
   2254     Display*		/* display */,
   2255     Window		/* w */
   2256 );
   2257 
   2258 extern int XDestroySubwindows(
   2259     Display*		/* display */,
   2260     Window		/* w */
   2261 );
   2262 
   2263 extern int XDoesBackingStore(
   2264     Screen*		/* screen */
   2265 );
   2266 
   2267 extern Bool XDoesSaveUnders(
   2268     Screen*		/* screen */
   2269 );
   2270 
   2271 extern int XDisableAccessControl(
   2272     Display*		/* display */
   2273 );
   2274 
   2275 
   2276 extern int XDisplayCells(
   2277     Display*		/* display */,
   2278     int			/* screen_number */
   2279 );
   2280 
   2281 extern int XDisplayHeight(
   2282     Display*		/* display */,
   2283     int			/* screen_number */
   2284 );
   2285 
   2286 extern int XDisplayHeightMM(
   2287     Display*		/* display */,
   2288     int			/* screen_number */
   2289 );
   2290 
   2291 extern int XDisplayKeycodes(
   2292     Display*		/* display */,
   2293     int*		/* min_keycodes_return */,
   2294     int*		/* max_keycodes_return */
   2295 );
   2296 
   2297 extern int XDisplayPlanes(
   2298     Display*		/* display */,
   2299     int			/* screen_number */
   2300 );
   2301 
   2302 extern int XDisplayWidth(
   2303     Display*		/* display */,
   2304     int			/* screen_number */
   2305 );
   2306 
   2307 extern int XDisplayWidthMM(
   2308     Display*		/* display */,
   2309     int			/* screen_number */
   2310 );
   2311 
   2312 extern int XDrawArc(
   2313     Display*		/* display */,
   2314     Drawable		/* d */,
   2315     GC			/* gc */,
   2316     int			/* x */,
   2317     int			/* y */,
   2318     unsigned int	/* width */,
   2319     unsigned int	/* height */,
   2320     int			/* angle1 */,
   2321     int			/* angle2 */
   2322 );
   2323 
   2324 extern int XDrawArcs(
   2325     Display*		/* display */,
   2326     Drawable		/* d */,
   2327     GC			/* gc */,
   2328     XArc*		/* arcs */,
   2329     int			/* narcs */
   2330 );
   2331 
   2332 extern int XDrawImageString(
   2333     Display*		/* display */,
   2334     Drawable		/* d */,
   2335     GC			/* gc */,
   2336     int			/* x */,
   2337     int			/* y */,
   2338     _Xconst char*	/* string */,
   2339     int			/* length */
   2340 );
   2341 
   2342 extern int XDrawImageString16(
   2343     Display*		/* display */,
   2344     Drawable		/* d */,
   2345     GC			/* gc */,
   2346     int			/* x */,
   2347     int			/* y */,
   2348     _Xconst XChar2b*	/* string */,
   2349     int			/* length */
   2350 );
   2351 
   2352 extern int XDrawLine(
   2353     Display*		/* display */,
   2354     Drawable		/* d */,
   2355     GC			/* gc */,
   2356     int			/* x1 */,
   2357     int			/* y1 */,
   2358     int			/* x2 */,
   2359     int			/* y2 */
   2360 );
   2361 
   2362 extern int XDrawLines(
   2363     Display*		/* display */,
   2364     Drawable		/* d */,
   2365     GC			/* gc */,
   2366     XPoint*		/* points */,
   2367     int			/* npoints */,
   2368     int			/* mode */
   2369 );
   2370 
   2371 extern int XDrawPoint(
   2372     Display*		/* display */,
   2373     Drawable		/* d */,
   2374     GC			/* gc */,
   2375     int			/* x */,
   2376     int			/* y */
   2377 );
   2378 
   2379 extern int XDrawPoints(
   2380     Display*		/* display */,
   2381     Drawable		/* d */,
   2382     GC			/* gc */,
   2383     XPoint*		/* points */,
   2384     int			/* npoints */,
   2385     int			/* mode */
   2386 );
   2387 
   2388 extern int XDrawRectangle(
   2389     Display*		/* display */,
   2390     Drawable		/* d */,
   2391     GC			/* gc */,
   2392     int			/* x */,
   2393     int			/* y */,
   2394     unsigned int	/* width */,
   2395     unsigned int	/* height */
   2396 );
   2397 
   2398 extern int XDrawRectangles(
   2399     Display*		/* display */,
   2400     Drawable		/* d */,
   2401     GC			/* gc */,
   2402     XRectangle*		/* rectangles */,
   2403     int			/* nrectangles */
   2404 );
   2405 
   2406 extern int XDrawSegments(
   2407     Display*		/* display */,
   2408     Drawable		/* d */,
   2409     GC			/* gc */,
   2410     XSegment*		/* segments */,
   2411     int			/* nsegments */
   2412 );
   2413 
   2414 extern int XDrawString(
   2415     Display*		/* display */,
   2416     Drawable		/* d */,
   2417     GC			/* gc */,
   2418     int			/* x */,
   2419     int			/* y */,
   2420     _Xconst char*	/* string */,
   2421     int			/* length */
   2422 );
   2423 
   2424 extern int XDrawString16(
   2425     Display*		/* display */,
   2426     Drawable		/* d */,
   2427     GC			/* gc */,
   2428     int			/* x */,
   2429     int			/* y */,
   2430     _Xconst XChar2b*	/* string */,
   2431     int			/* length */
   2432 );
   2433 
   2434 extern int XDrawText(
   2435     Display*		/* display */,
   2436     Drawable		/* d */,
   2437     GC			/* gc */,
   2438     int			/* x */,
   2439     int			/* y */,
   2440     XTextItem*		/* items */,
   2441     int			/* nitems */
   2442 );
   2443 
   2444 extern int XDrawText16(
   2445     Display*		/* display */,
   2446     Drawable		/* d */,
   2447     GC			/* gc */,
   2448     int			/* x */,
   2449     int			/* y */,
   2450     XTextItem16*	/* items */,
   2451     int			/* nitems */
   2452 );
   2453 
   2454 extern int XEnableAccessControl(
   2455     Display*		/* display */
   2456 );
   2457 
   2458 extern int XEventsQueued(
   2459     Display*		/* display */,
   2460     int			/* mode */
   2461 );
   2462 
   2463 extern Status XFetchName(
   2464     Display*		/* display */,
   2465     Window		/* w */,
   2466     char**		/* window_name_return */
   2467 );
   2468 
   2469 extern int XFillArc(
   2470     Display*		/* display */,
   2471     Drawable		/* d */,
   2472     GC			/* gc */,
   2473     int			/* x */,
   2474     int			/* y */,
   2475     unsigned int	/* width */,
   2476     unsigned int	/* height */,
   2477     int			/* angle1 */,
   2478     int			/* angle2 */
   2479 );
   2480 
   2481 extern int XFillArcs(
   2482     Display*		/* display */,
   2483     Drawable		/* d */,
   2484     GC			/* gc */,
   2485     XArc*		/* arcs */,
   2486     int			/* narcs */
   2487 );
   2488 
   2489 extern int XFillPolygon(
   2490     Display*		/* display */,
   2491     Drawable		/* d */,
   2492     GC			/* gc */,
   2493     XPoint*		/* points */,
   2494     int			/* npoints */,
   2495     int			/* shape */,
   2496     int			/* mode */
   2497 );
   2498 
   2499 extern int XFillRectangle(
   2500     Display*		/* display */,
   2501     Drawable		/* d */,
   2502     GC			/* gc */,
   2503     int			/* x */,
   2504     int			/* y */,
   2505     unsigned int	/* width */,
   2506     unsigned int	/* height */
   2507 );
   2508 
   2509 extern int XFillRectangles(
   2510     Display*		/* display */,
   2511     Drawable		/* d */,
   2512     GC			/* gc */,
   2513     XRectangle*		/* rectangles */,
   2514     int			/* nrectangles */
   2515 );
   2516 
   2517 extern int XFlush(
   2518     Display*		/* display */
   2519 );
   2520 
   2521 extern int XForceScreenSaver(
   2522     Display*		/* display */,
   2523     int			/* mode */
   2524 );
   2525 
   2526 extern int XFree(
   2527     void*		/* data */
   2528 );
   2529 
   2530 extern int XFreeColormap(
   2531     Display*		/* display */,
   2532     Colormap		/* colormap */
   2533 );
   2534 
   2535 extern int XFreeColors(
   2536     Display*		/* display */,
   2537     Colormap		/* colormap */,
   2538     unsigned long*	/* pixels */,
   2539     int			/* npixels */,
   2540     unsigned long	/* planes */
   2541 );
   2542 
   2543 extern int XFreeCursor(
   2544     Display*		/* display */,
   2545     Cursor		/* cursor */
   2546 );
   2547 
   2548 extern int XFreeExtensionList(
   2549     char**		/* list */
   2550 );
   2551 
   2552 extern int XFreeFont(
   2553     Display*		/* display */,
   2554     XFontStruct*	/* font_struct */
   2555 );
   2556 
   2557 extern int XFreeFontInfo(
   2558     char**		/* names */,
   2559     XFontStruct*	/* free_info */,
   2560     int			/* actual_count */
   2561 );
   2562 
   2563 extern int XFreeFontNames(
   2564     char**		/* list */
   2565 );
   2566 
   2567 extern int XFreeFontPath(
   2568     char**		/* list */
   2569 );
   2570 
   2571 extern int XFreeGC(
   2572     Display*		/* display */,
   2573     GC			/* gc */
   2574 );
   2575 
   2576 extern int XFreeModifiermap(
   2577     XModifierKeymap*	/* modmap */
   2578 );
   2579 
   2580 extern int XFreePixmap(
   2581     Display*		/* display */,
   2582     Pixmap		/* pixmap */
   2583 );
   2584 
   2585 extern int XGeometry(
   2586     Display*		/* display */,
   2587     int			/* screen */,
   2588     _Xconst char*	/* position */,
   2589     _Xconst char*	/* default_position */,
   2590     unsigned int	/* bwidth */,
   2591     unsigned int	/* fwidth */,
   2592     unsigned int	/* fheight */,
   2593     int			/* xadder */,
   2594     int			/* yadder */,
   2595     int*		/* x_return */,
   2596     int*		/* y_return */,
   2597     int*		/* width_return */,
   2598     int*		/* height_return */
   2599 );
   2600 
   2601 extern int XGetErrorDatabaseText(
   2602     Display*		/* display */,
   2603     _Xconst char*	/* name */,
   2604     _Xconst char*	/* message */,
   2605     _Xconst char*	/* default_string */,
   2606     char*		/* buffer_return */,
   2607     int			/* length */
   2608 );
   2609 
   2610 extern int XGetErrorText(
   2611     Display*		/* display */,
   2612     int			/* code */,
   2613     char*		/* buffer_return */,
   2614     int			/* length */
   2615 );
   2616 
   2617 extern Bool XGetFontProperty(
   2618     XFontStruct*	/* font_struct */,
   2619     Atom		/* atom */,
   2620     unsigned long*	/* value_return */
   2621 );
   2622 
   2623 extern Status XGetGCValues(
   2624     Display*		/* display */,
   2625     GC			/* gc */,
   2626     unsigned long	/* valuemask */,
   2627     XGCValues*		/* values_return */
   2628 );
   2629 
   2630 extern Status XGetGeometry(
   2631     Display*		/* display */,
   2632     Drawable		/* d */,
   2633     Window*		/* root_return */,
   2634     int*		/* x_return */,
   2635     int*		/* y_return */,
   2636     unsigned int*	/* width_return */,
   2637     unsigned int*	/* height_return */,
   2638     unsigned int*	/* border_width_return */,
   2639     unsigned int*	/* depth_return */
   2640 );
   2641 
   2642 extern Status XGetIconName(
   2643     Display*		/* display */,
   2644     Window		/* w */,
   2645     char**		/* icon_name_return */
   2646 );
   2647 
   2648 extern int XGetInputFocus(
   2649     Display*		/* display */,
   2650     Window*		/* focus_return */,
   2651     int*		/* revert_to_return */
   2652 );
   2653 
   2654 extern int XGetKeyboardControl(
   2655     Display*		/* display */,
   2656     XKeyboardState*	/* values_return */
   2657 );
   2658 
   2659 extern int XGetPointerControl(
   2660     Display*		/* display */,
   2661     int*		/* accel_numerator_return */,
   2662     int*		/* accel_denominator_return */,
   2663     int*		/* threshold_return */
   2664 );
   2665 
   2666 extern int XGetPointerMapping(
   2667     Display*		/* display */,
   2668     unsigned char*	/* map_return */,
   2669     int			/* nmap */
   2670 );
   2671 
   2672 extern int XGetScreenSaver(
   2673     Display*		/* display */,
   2674     int*		/* timeout_return */,
   2675     int*		/* interval_return */,
   2676     int*		/* prefer_blanking_return */,
   2677     int*		/* allow_exposures_return */
   2678 );
   2679 
   2680 extern Status XGetTransientForHint(
   2681     Display*		/* display */,
   2682     Window		/* w */,
   2683     Window*		/* prop_window_return */
   2684 );
   2685 
   2686 extern int XGetWindowProperty(
   2687     Display*		/* display */,
   2688     Window		/* w */,
   2689     Atom		/* property */,
   2690     long		/* long_offset */,
   2691     long		/* long_length */,
   2692     Bool		/* delete */,
   2693     Atom		/* req_type */,
   2694     Atom*		/* actual_type_return */,
   2695     int*		/* actual_format_return */,
   2696     unsigned long*	/* nitems_return */,
   2697     unsigned long*	/* bytes_after_return */,
   2698     unsigned char**	/* prop_return */
   2699 );
   2700 
   2701 extern Status XGetWindowAttributes(
   2702     Display*		/* display */,
   2703     Window		/* w */,
   2704     XWindowAttributes*	/* window_attributes_return */
   2705 );
   2706 
   2707 extern int XGrabButton(
   2708     Display*		/* display */,
   2709     unsigned int	/* button */,
   2710     unsigned int	/* modifiers */,
   2711     Window		/* grab_window */,
   2712     Bool		/* owner_events */,
   2713     unsigned int	/* event_mask */,
   2714     int			/* pointer_mode */,
   2715     int			/* keyboard_mode */,
   2716     Window		/* confine_to */,
   2717     Cursor		/* cursor */
   2718 );
   2719 
   2720 extern int XGrabKey(
   2721     Display*		/* display */,
   2722     int			/* keycode */,
   2723     unsigned int	/* modifiers */,
   2724     Window		/* grab_window */,
   2725     Bool		/* owner_events */,
   2726     int			/* pointer_mode */,
   2727     int			/* keyboard_mode */
   2728 );
   2729 
   2730 extern int XGrabKeyboard(
   2731     Display*		/* display */,
   2732     Window		/* grab_window */,
   2733     Bool		/* owner_events */,
   2734     int			/* pointer_mode */,
   2735     int			/* keyboard_mode */,
   2736     Time		/* time */
   2737 );
   2738 
   2739 extern int XGrabPointer(
   2740     Display*		/* display */,
   2741     Window		/* grab_window */,
   2742     Bool		/* owner_events */,
   2743     unsigned int	/* event_mask */,
   2744     int			/* pointer_mode */,
   2745     int			/* keyboard_mode */,
   2746     Window		/* confine_to */,
   2747     Cursor		/* cursor */,
   2748     Time		/* time */
   2749 );
   2750 
   2751 extern int XGrabServer(
   2752     Display*		/* display */
   2753 );
   2754 
   2755 extern int XHeightMMOfScreen(
   2756     Screen*		/* screen */
   2757 );
   2758 
   2759 extern int XHeightOfScreen(
   2760     Screen*		/* screen */
   2761 );
   2762 
   2763 extern int XIfEvent(
   2764     Display*		/* display */,
   2765     XEvent*		/* event_return */,
   2766     Bool (*) (
   2767 	       Display*			/* display */,
   2768                XEvent*			/* event */,
   2769                XPointer			/* arg */
   2770              )		/* predicate */,
   2771     XPointer		/* arg */
   2772 );
   2773 
   2774 extern int XImageByteOrder(
   2775     Display*		/* display */
   2776 );
   2777 
   2778 extern int XInstallColormap(
   2779     Display*		/* display */,
   2780     Colormap		/* colormap */
   2781 );
   2782 
   2783 extern KeyCode XKeysymToKeycode(
   2784     Display*		/* display */,
   2785     KeySym		/* keysym */
   2786 );
   2787 
   2788 extern int XKillClient(
   2789     Display*		/* display */,
   2790     XID			/* resource */
   2791 );
   2792 
   2793 extern Status XLookupColor(
   2794     Display*		/* display */,
   2795     Colormap		/* colormap */,
   2796     _Xconst char*	/* color_name */,
   2797     XColor*		/* exact_def_return */,
   2798     XColor*		/* screen_def_return */
   2799 );
   2800 
   2801 extern int XLowerWindow(
   2802     Display*		/* display */,
   2803     Window		/* w */
   2804 );
   2805 
   2806 extern int XMapRaised(
   2807     Display*		/* display */,
   2808     Window		/* w */
   2809 );
   2810 
   2811 extern int XMapSubwindows(
   2812     Display*		/* display */,
   2813     Window		/* w */
   2814 );
   2815 
   2816 extern int XMapWindow(
   2817     Display*		/* display */,
   2818     Window		/* w */
   2819 );
   2820 
   2821 extern int XMaskEvent(
   2822     Display*		/* display */,
   2823     long		/* event_mask */,
   2824     XEvent*		/* event_return */
   2825 );
   2826 
   2827 extern int XMaxCmapsOfScreen(
   2828     Screen*		/* screen */
   2829 );
   2830 
   2831 extern int XMinCmapsOfScreen(
   2832     Screen*		/* screen */
   2833 );
   2834 
   2835 extern int XMoveResizeWindow(
   2836     Display*		/* display */,
   2837     Window		/* w */,
   2838     int			/* x */,
   2839     int			/* y */,
   2840     unsigned int	/* width */,
   2841     unsigned int	/* height */
   2842 );
   2843 
   2844 extern int XMoveWindow(
   2845     Display*		/* display */,
   2846     Window		/* w */,
   2847     int			/* x */,
   2848     int			/* y */
   2849 );
   2850 
   2851 extern int XNextEvent(
   2852     Display*		/* display */,
   2853     XEvent*		/* event_return */
   2854 );
   2855 
   2856 extern int XNoOp(
   2857     Display*		/* display */
   2858 );
   2859 
   2860 extern Status XParseColor(
   2861     Display*		/* display */,
   2862     Colormap		/* colormap */,
   2863     _Xconst char*	/* spec */,
   2864     XColor*		/* exact_def_return */
   2865 );
   2866 
   2867 extern int XParseGeometry(
   2868     _Xconst char*	/* parsestring */,
   2869     int*		/* x_return */,
   2870     int*		/* y_return */,
   2871     unsigned int*	/* width_return */,
   2872     unsigned int*	/* height_return */
   2873 );
   2874 
   2875 extern int XPeekEvent(
   2876     Display*		/* display */,
   2877     XEvent*		/* event_return */
   2878 );
   2879 
   2880 extern int XPeekIfEvent(
   2881     Display*		/* display */,
   2882     XEvent*		/* event_return */,
   2883     Bool (*) (
   2884 	       Display*		/* display */,
   2885                XEvent*		/* event */,
   2886                XPointer		/* arg */
   2887              )		/* predicate */,
   2888     XPointer		/* arg */
   2889 );
   2890 
   2891 extern int XPending(
   2892     Display*		/* display */
   2893 );
   2894 
   2895 extern int XPlanesOfScreen(
   2896     Screen*		/* screen */
   2897 );
   2898 
   2899 extern int XProtocolRevision(
   2900     Display*		/* display */
   2901 );
   2902 
   2903 extern int XProtocolVersion(
   2904     Display*		/* display */
   2905 );
   2906 
   2907 
   2908 extern int XPutBackEvent(
   2909     Display*		/* display */,
   2910     XEvent*		/* event */
   2911 );
   2912 
   2913 extern int XPutImage(
   2914     Display*		/* display */,
   2915     Drawable		/* d */,
   2916     GC			/* gc */,
   2917     XImage*		/* image */,
   2918     int			/* src_x */,
   2919     int			/* src_y */,
   2920     int			/* dest_x */,
   2921     int			/* dest_y */,
   2922     unsigned int	/* width */,
   2923     unsigned int	/* height */
   2924 );
   2925 
   2926 extern int XQLength(
   2927     Display*		/* display */
   2928 );
   2929 
   2930 extern Status XQueryBestCursor(
   2931     Display*		/* display */,
   2932     Drawable		/* d */,
   2933     unsigned int        /* width */,
   2934     unsigned int	/* height */,
   2935     unsigned int*	/* width_return */,
   2936     unsigned int*	/* height_return */
   2937 );
   2938 
   2939 extern Status XQueryBestSize(
   2940     Display*		/* display */,
   2941     int			/* class */,
   2942     Drawable		/* which_screen */,
   2943     unsigned int	/* width */,
   2944     unsigned int	/* height */,
   2945     unsigned int*	/* width_return */,
   2946     unsigned int*	/* height_return */
   2947 );
   2948 
   2949 extern Status XQueryBestStipple(
   2950     Display*		/* display */,
   2951     Drawable		/* which_screen */,
   2952     unsigned int	/* width */,
   2953     unsigned int	/* height */,
   2954     unsigned int*	/* width_return */,
   2955     unsigned int*	/* height_return */
   2956 );
   2957 
   2958 extern Status XQueryBestTile(
   2959     Display*		/* display */,
   2960     Drawable		/* which_screen */,
   2961     unsigned int	/* width */,
   2962     unsigned int	/* height */,
   2963     unsigned int*	/* width_return */,
   2964     unsigned int*	/* height_return */
   2965 );
   2966 
   2967 extern int XQueryColor(
   2968     Display*		/* display */,
   2969     Colormap		/* colormap */,
   2970     XColor*		/* def_in_out */
   2971 );
   2972 
   2973 extern int XQueryColors(
   2974     Display*		/* display */,
   2975     Colormap		/* colormap */,
   2976     XColor*		/* defs_in_out */,
   2977     int			/* ncolors */
   2978 );
   2979 
   2980 extern Bool XQueryExtension(
   2981     Display*		/* display */,
   2982     _Xconst char*	/* name */,
   2983     int*		/* major_opcode_return */,
   2984     int*		/* first_event_return */,
   2985     int*		/* first_error_return */
   2986 );
   2987 
   2988 extern int XQueryKeymap(
   2989     Display*		/* display */,
   2990     char [32]		/* keys_return */
   2991 );
   2992 
   2993 extern Bool XQueryPointer(
   2994     Display*		/* display */,
   2995     Window		/* w */,
   2996     Window*		/* root_return */,
   2997     Window*		/* child_return */,
   2998     int*		/* root_x_return */,
   2999     int*		/* root_y_return */,
   3000     int*		/* win_x_return */,
   3001     int*		/* win_y_return */,
   3002     unsigned int*       /* mask_return */
   3003 );
   3004 
   3005 extern int XQueryTextExtents(
   3006     Display*		/* display */,
   3007     XID			/* font_ID */,
   3008     _Xconst char*	/* string */,
   3009     int			/* nchars */,
   3010     int*		/* direction_return */,
   3011     int*		/* font_ascent_return */,
   3012     int*		/* font_descent_return */,
   3013     XCharStruct*	/* overall_return */
   3014 );
   3015 
   3016 extern int XQueryTextExtents16(
   3017     Display*		/* display */,
   3018     XID			/* font_ID */,
   3019     _Xconst XChar2b*	/* string */,
   3020     int			/* nchars */,
   3021     int*		/* direction_return */,
   3022     int*		/* font_ascent_return */,
   3023     int*		/* font_descent_return */,
   3024     XCharStruct*	/* overall_return */
   3025 );
   3026 
   3027 extern Status XQueryTree(
   3028     Display*		/* display */,
   3029     Window		/* w */,
   3030     Window*		/* root_return */,
   3031     Window*		/* parent_return */,
   3032     Window**		/* children_return */,
   3033     unsigned int*	/* nchildren_return */
   3034 );
   3035 
   3036 extern int XRaiseWindow(
   3037     Display*		/* display */,
   3038     Window		/* w */
   3039 );
   3040 
   3041 extern int XReadBitmapFile(
   3042     Display*		/* display */,
   3043     Drawable 		/* d */,
   3044     _Xconst char*	/* filename */,
   3045     unsigned int*	/* width_return */,
   3046     unsigned int*	/* height_return */,
   3047     Pixmap*		/* bitmap_return */,
   3048     int*		/* x_hot_return */,
   3049     int*		/* y_hot_return */
   3050 );
   3051 
   3052 extern int XReadBitmapFileData(
   3053     _Xconst char*	/* filename */,
   3054     unsigned int*	/* width_return */,
   3055     unsigned int*	/* height_return */,
   3056     unsigned char**	/* data_return */,
   3057     int*		/* x_hot_return */,
   3058     int*		/* y_hot_return */
   3059 );
   3060 
   3061 extern int XRebindKeysym(
   3062     Display*		/* display */,
   3063     KeySym		/* keysym */,
   3064     KeySym*		/* list */,
   3065     int			/* mod_count */,
   3066     _Xconst unsigned char*	/* string */,
   3067     int			/* bytes_string */
   3068 );
   3069 
   3070 extern int XRecolorCursor(
   3071     Display*		/* display */,
   3072     Cursor		/* cursor */,
   3073     XColor*		/* foreground_color */,
   3074     XColor*		/* background_color */
   3075 );
   3076 
   3077 extern int XRefreshKeyboardMapping(
   3078     XMappingEvent*	/* event_map */
   3079 );
   3080 
   3081 extern int XRemoveFromSaveSet(
   3082     Display*		/* display */,
   3083     Window		/* w */
   3084 );
   3085 
   3086 extern int XRemoveHost(
   3087     Display*		/* display */,
   3088     XHostAddress*	/* host */
   3089 );
   3090 
   3091 extern int XRemoveHosts(
   3092     Display*		/* display */,
   3093     XHostAddress*	/* hosts */,
   3094     int			/* num_hosts */
   3095 );
   3096 
   3097 extern int XReparentWindow(
   3098     Display*		/* display */,
   3099     Window		/* w */,
   3100     Window		/* parent */,
   3101     int			/* x */,
   3102     int			/* y */
   3103 );
   3104 
   3105 extern int XResetScreenSaver(
   3106     Display*		/* display */
   3107 );
   3108 
   3109 extern int XResizeWindow(
   3110     Display*		/* display */,
   3111     Window		/* w */,
   3112     unsigned int	/* width */,
   3113     unsigned int	/* height */
   3114 );
   3115 
   3116 extern int XRestackWindows(
   3117     Display*		/* display */,
   3118     Window*		/* windows */,
   3119     int			/* nwindows */
   3120 );
   3121 
   3122 extern int XRotateBuffers(
   3123     Display*		/* display */,
   3124     int			/* rotate */
   3125 );
   3126 
   3127 extern int XRotateWindowProperties(
   3128     Display*		/* display */,
   3129     Window		/* w */,
   3130     Atom*		/* properties */,
   3131     int			/* num_prop */,
   3132     int			/* npositions */
   3133 );
   3134 
   3135 extern int XScreenCount(
   3136     Display*		/* display */
   3137 );
   3138 
   3139 extern int XSelectInput(
   3140     Display*		/* display */,
   3141     Window		/* w */,
   3142     long		/* event_mask */
   3143 );
   3144 
   3145 extern Status XSendEvent(
   3146     Display*		/* display */,
   3147     Window		/* w */,
   3148     Bool		/* propagate */,
   3149     long		/* event_mask */,
   3150     XEvent*		/* event_send */
   3151 );
   3152 
   3153 extern int XSetAccessControl(
   3154     Display*		/* display */,
   3155     int			/* mode */
   3156 );
   3157 
   3158 extern int XSetArcMode(
   3159     Display*		/* display */,
   3160     GC			/* gc */,
   3161     int			/* arc_mode */
   3162 );
   3163 
   3164 extern int XSetBackground(
   3165     Display*		/* display */,
   3166     GC			/* gc */,
   3167     unsigned long	/* background */
   3168 );
   3169 
   3170 extern int XSetClipMask(
   3171     Display*		/* display */,
   3172     GC			/* gc */,
   3173     Pixmap		/* pixmap */
   3174 );
   3175 
   3176 extern int XSetClipOrigin(
   3177     Display*		/* display */,
   3178     GC			/* gc */,
   3179     int			/* clip_x_origin */,
   3180     int			/* clip_y_origin */
   3181 );
   3182 
   3183 extern int XSetClipRectangles(
   3184     Display*		/* display */,
   3185     GC			/* gc */,
   3186     int			/* clip_x_origin */,
   3187     int			/* clip_y_origin */,
   3188     XRectangle*		/* rectangles */,
   3189     int			/* n */,
   3190     int			/* ordering */
   3191 );
   3192 
   3193 extern int XSetCloseDownMode(
   3194     Display*		/* display */,
   3195     int			/* close_mode */
   3196 );
   3197 
   3198 extern int XSetCommand(
   3199     Display*		/* display */,
   3200     Window		/* w */,
   3201     char**		/* argv */,
   3202     int			/* argc */
   3203 );
   3204 
   3205 extern int XSetDashes(
   3206     Display*		/* display */,
   3207     GC			/* gc */,
   3208     int			/* dash_offset */,
   3209     _Xconst char*	/* dash_list */,
   3210     int			/* n */
   3211 );
   3212 
   3213 extern int XSetFillRule(
   3214     Display*		/* display */,
   3215     GC			/* gc */,
   3216     int			/* fill_rule */
   3217 );
   3218 
   3219 extern int XSetFillStyle(
   3220     Display*		/* display */,
   3221     GC			/* gc */,
   3222     int			/* fill_style */
   3223 );
   3224 
   3225 extern int XSetFont(
   3226     Display*		/* display */,
   3227     GC			/* gc */,
   3228     Font		/* font */
   3229 );
   3230 
   3231 extern int XSetFontPath(
   3232     Display*		/* display */,
   3233     char**		/* directories */,
   3234     int			/* ndirs */
   3235 );
   3236 
   3237 extern int XSetForeground(
   3238     Display*		/* display */,
   3239     GC			/* gc */,
   3240     unsigned long	/* foreground */
   3241 );
   3242 
   3243 extern int XSetFunction(
   3244     Display*		/* display */,
   3245     GC			/* gc */,
   3246     int			/* function */
   3247 );
   3248 
   3249 extern int XSetGraphicsExposures(
   3250     Display*		/* display */,
   3251     GC			/* gc */,
   3252     Bool		/* graphics_exposures */
   3253 );
   3254 
   3255 extern int XSetIconName(
   3256     Display*		/* display */,
   3257     Window		/* w */,
   3258     _Xconst char*	/* icon_name */
   3259 );
   3260 
   3261 extern int XSetInputFocus(
   3262     Display*		/* display */,
   3263     Window		/* focus */,
   3264     int			/* revert_to */,
   3265     Time		/* time */
   3266 );
   3267 
   3268 extern int XSetLineAttributes(
   3269     Display*		/* display */,
   3270     GC			/* gc */,
   3271     unsigned int	/* line_width */,
   3272     int			/* line_style */,
   3273     int			/* cap_style */,
   3274     int			/* join_style */
   3275 );
   3276 
   3277 extern int XSetModifierMapping(
   3278     Display*		/* display */,
   3279     XModifierKeymap*	/* modmap */
   3280 );
   3281 
   3282 extern int XSetPlaneMask(
   3283     Display*		/* display */,
   3284     GC			/* gc */,
   3285     unsigned long	/* plane_mask */
   3286 );
   3287 
   3288 extern int XSetPointerMapping(
   3289     Display*		/* display */,
   3290     _Xconst unsigned char*	/* map */,
   3291     int			/* nmap */
   3292 );
   3293 
   3294 extern int XSetScreenSaver(
   3295     Display*		/* display */,
   3296     int			/* timeout */,
   3297     int			/* interval */,
   3298     int			/* prefer_blanking */,
   3299     int			/* allow_exposures */
   3300 );
   3301 
   3302 extern int XSetSelectionOwner(
   3303     Display*		/* display */,
   3304     Atom	        /* selection */,
   3305     Window		/* owner */,
   3306     Time		/* time */
   3307 );
   3308 
   3309 extern int XSetState(
   3310     Display*		/* display */,
   3311     GC			/* gc */,
   3312     unsigned long 	/* foreground */,
   3313     unsigned long	/* background */,
   3314     int			/* function */,
   3315     unsigned long	/* plane_mask */
   3316 );
   3317 
   3318 extern int XSetStipple(
   3319     Display*		/* display */,
   3320     GC			/* gc */,
   3321     Pixmap		/* stipple */
   3322 );
   3323 
   3324 extern int XSetSubwindowMode(
   3325     Display*		/* display */,
   3326     GC			/* gc */,
   3327     int			/* subwindow_mode */
   3328 );
   3329 
   3330 extern int XSetTSOrigin(
   3331     Display*		/* display */,
   3332     GC			/* gc */,
   3333     int			/* ts_x_origin */,
   3334     int			/* ts_y_origin */
   3335 );
   3336 
   3337 extern int XSetTile(
   3338     Display*		/* display */,
   3339     GC			/* gc */,
   3340     Pixmap		/* tile */
   3341 );
   3342 
   3343 extern int XSetWindowBackground(
   3344     Display*		/* display */,
   3345     Window		/* w */,
   3346     unsigned long	/* background_pixel */
   3347 );
   3348 
   3349 extern int XSetWindowBackgroundPixmap(
   3350     Display*		/* display */,
   3351     Window		/* w */,
   3352     Pixmap		/* background_pixmap */
   3353 );
   3354 
   3355 extern int XSetWindowBorder(
   3356     Display*		/* display */,
   3357     Window		/* w */,
   3358     unsigned long	/* border_pixel */
   3359 );
   3360 
   3361 extern int XSetWindowBorderPixmap(
   3362     Display*		/* display */,
   3363     Window		/* w */,
   3364     Pixmap		/* border_pixmap */
   3365 );
   3366 
   3367 extern int XSetWindowBorderWidth(
   3368     Display*		/* display */,
   3369     Window		/* w */,
   3370     unsigned int	/* width */
   3371 );
   3372 
   3373 extern int XSetWindowColormap(
   3374     Display*		/* display */,
   3375     Window		/* w */,
   3376     Colormap		/* colormap */
   3377 );
   3378 
   3379 extern int XStoreBuffer(
   3380     Display*		/* display */,
   3381     _Xconst char*	/* bytes */,
   3382     int			/* nbytes */,
   3383     int			/* buffer */
   3384 );
   3385 
   3386 extern int XStoreBytes(
   3387     Display*		/* display */,
   3388     _Xconst char*	/* bytes */,
   3389     int			/* nbytes */
   3390 );
   3391 
   3392 extern int XStoreColor(
   3393     Display*		/* display */,
   3394     Colormap		/* colormap */,
   3395     XColor*		/* color */
   3396 );
   3397 
   3398 extern int XStoreColors(
   3399     Display*		/* display */,
   3400     Colormap		/* colormap */,
   3401     XColor*		/* color */,
   3402     int			/* ncolors */
   3403 );
   3404 
   3405 extern int XStoreName(
   3406     Display*		/* display */,
   3407     Window		/* w */,
   3408     _Xconst char*	/* window_name */
   3409 );
   3410 
   3411 extern int XStoreNamedColor(
   3412     Display*		/* display */,
   3413     Colormap		/* colormap */,
   3414     _Xconst char*	/* color */,
   3415     unsigned long	/* pixel */,
   3416     int			/* flags */
   3417 );
   3418 
   3419 extern int XSync(
   3420     Display*		/* display */,
   3421     Bool		/* discard */
   3422 );
   3423 
   3424 extern int XTextExtents(
   3425     XFontStruct*	/* font_struct */,
   3426     _Xconst char*	/* string */,
   3427     int			/* nchars */,
   3428     int*		/* direction_return */,
   3429     int*		/* font_ascent_return */,
   3430     int*		/* font_descent_return */,
   3431     XCharStruct*	/* overall_return */
   3432 );
   3433 
   3434 extern int XTextExtents16(
   3435     XFontStruct*	/* font_struct */,
   3436     _Xconst XChar2b*	/* string */,
   3437     int			/* nchars */,
   3438     int*		/* direction_return */,
   3439     int*		/* font_ascent_return */,
   3440     int*		/* font_descent_return */,
   3441     XCharStruct*	/* overall_return */
   3442 );
   3443 
   3444 extern int XTextWidth(
   3445     XFontStruct*	/* font_struct */,
   3446     _Xconst char*	/* string */,
   3447     int			/* count */
   3448 );
   3449 
   3450 extern int XTextWidth16(
   3451     XFontStruct*	/* font_struct */,
   3452     _Xconst XChar2b*	/* string */,
   3453     int			/* count */
   3454 );
   3455 
   3456 extern Bool XTranslateCoordinates(
   3457     Display*		/* display */,
   3458     Window		/* src_w */,
   3459     Window		/* dest_w */,
   3460     int			/* src_x */,
   3461     int			/* src_y */,
   3462     int*		/* dest_x_return */,
   3463     int*		/* dest_y_return */,
   3464     Window*		/* child_return */
   3465 );
   3466 
   3467 extern int XUndefineCursor(
   3468     Display*		/* display */,
   3469     Window		/* w */
   3470 );
   3471 
   3472 extern int XUngrabButton(
   3473     Display*		/* display */,
   3474     unsigned int	/* button */,
   3475     unsigned int	/* modifiers */,
   3476     Window		/* grab_window */
   3477 );
   3478 
   3479 extern int XUngrabKey(
   3480     Display*		/* display */,
   3481     int			/* keycode */,
   3482     unsigned int	/* modifiers */,
   3483     Window		/* grab_window */
   3484 );
   3485 
   3486 extern int XUngrabKeyboard(
   3487     Display*		/* display */,
   3488     Time		/* time */
   3489 );
   3490 
   3491 extern int XUngrabPointer(
   3492     Display*		/* display */,
   3493     Time		/* time */
   3494 );
   3495 
   3496 extern int XUngrabServer(
   3497     Display*		/* display */
   3498 );
   3499 
   3500 extern int XUninstallColormap(
   3501     Display*		/* display */,
   3502     Colormap		/* colormap */
   3503 );
   3504 
   3505 extern int XUnloadFont(
   3506     Display*		/* display */,
   3507     Font		/* font */
   3508 );
   3509 
   3510 extern int XUnmapSubwindows(
   3511     Display*		/* display */,
   3512     Window		/* w */
   3513 );
   3514 
   3515 extern int XUnmapWindow(
   3516     Display*		/* display */,
   3517     Window		/* w */
   3518 );
   3519 
   3520 extern int XVendorRelease(
   3521     Display*		/* display */
   3522 );
   3523 
   3524 extern int XWarpPointer(
   3525     Display*		/* display */,
   3526     Window		/* src_w */,
   3527     Window		/* dest_w */,
   3528     int			/* src_x */,
   3529     int			/* src_y */,
   3530     unsigned int	/* src_width */,
   3531     unsigned int	/* src_height */,
   3532     int			/* dest_x */,
   3533     int			/* dest_y */
   3534 );
   3535 
   3536 extern int XWidthMMOfScreen(
   3537     Screen*		/* screen */
   3538 );
   3539 
   3540 extern int XWidthOfScreen(
   3541     Screen*		/* screen */
   3542 );
   3543 
   3544 extern int XWindowEvent(
   3545     Display*		/* display */,
   3546     Window		/* w */,
   3547     long		/* event_mask */,
   3548     XEvent*		/* event_return */
   3549 );
   3550 
   3551 extern int XWriteBitmapFile(
   3552     Display*		/* display */,
   3553     _Xconst char*	/* filename */,
   3554     Pixmap		/* bitmap */,
   3555     unsigned int	/* width */,
   3556     unsigned int	/* height */,
   3557     int			/* x_hot */,
   3558     int			/* y_hot */
   3559 );
   3560 
   3561 extern Bool XSupportsLocale (void);
   3562 
   3563 extern char *XSetLocaleModifiers(
   3564     const char*		/* modifier_list */
   3565 );
   3566 
   3567 extern XOM XOpenOM(
   3568     Display*			/* display */,
   3569     struct _XrmHashBucketRec*	/* rdb */,
   3570     _Xconst char*		/* res_name */,
   3571     _Xconst char*		/* res_class */
   3572 );
   3573 
   3574 extern Status XCloseOM(
   3575     XOM			/* om */
   3576 );
   3577 
   3578 extern char *XSetOMValues(
   3579     XOM			/* om */,
   3580     ...
   3581 ) _X_SENTINEL(0);
   3582 
   3583 extern char *XGetOMValues(
   3584     XOM			/* om */,
   3585     ...
   3586 ) _X_SENTINEL(0);
   3587 
   3588 extern Display *XDisplayOfOM(
   3589     XOM			/* om */
   3590 );
   3591 
   3592 extern char *XLocaleOfOM(
   3593     XOM			/* om */
   3594 );
   3595 
   3596 extern XOC XCreateOC(
   3597     XOM			/* om */,
   3598     ...
   3599 ) _X_SENTINEL(0);
   3600 
   3601 extern void XDestroyOC(
   3602     XOC			/* oc */
   3603 );
   3604 
   3605 extern XOM XOMOfOC(
   3606     XOC			/* oc */
   3607 );
   3608 
   3609 extern char *XSetOCValues(
   3610     XOC			/* oc */,
   3611     ...
   3612 ) _X_SENTINEL(0);
   3613 
   3614 extern char *XGetOCValues(
   3615     XOC			/* oc */,
   3616     ...
   3617 ) _X_SENTINEL(0);
   3618 
   3619 extern XFontSet XCreateFontSet(
   3620     Display*		/* display */,
   3621     _Xconst char*	/* base_font_name_list */,
   3622     char***		/* missing_charset_list */,
   3623     int*		/* missing_charset_count */,
   3624     char**		/* def_string */
   3625 );
   3626 
   3627 extern void XFreeFontSet(
   3628     Display*		/* display */,
   3629     XFontSet		/* font_set */
   3630 );
   3631 
   3632 extern int XFontsOfFontSet(
   3633     XFontSet		/* font_set */,
   3634     XFontStruct***	/* font_struct_list */,
   3635     char***		/* font_name_list */
   3636 );
   3637 
   3638 extern char *XBaseFontNameListOfFontSet(
   3639     XFontSet		/* font_set */
   3640 );
   3641 
   3642 extern char *XLocaleOfFontSet(
   3643     XFontSet		/* font_set */
   3644 );
   3645 
   3646 extern Bool XContextDependentDrawing(
   3647     XFontSet		/* font_set */
   3648 );
   3649 
   3650 extern Bool XDirectionalDependentDrawing(
   3651     XFontSet		/* font_set */
   3652 );
   3653 
   3654 extern Bool XContextualDrawing(
   3655     XFontSet		/* font_set */
   3656 );
   3657 
   3658 extern XFontSetExtents *XExtentsOfFontSet(
   3659     XFontSet		/* font_set */
   3660 );
   3661 
   3662 extern int XmbTextEscapement(
   3663     XFontSet		/* font_set */,
   3664     _Xconst char*	/* text */,
   3665     int			/* bytes_text */
   3666 );
   3667 
   3668 extern int XwcTextEscapement(
   3669     XFontSet		/* font_set */,
   3670     _Xconst wchar_t*	/* text */,
   3671     int			/* num_wchars */
   3672 );
   3673 
   3674 extern int Xutf8TextEscapement(
   3675     XFontSet		/* font_set */,
   3676     _Xconst char*	/* text */,
   3677     int			/* bytes_text */
   3678 );
   3679 
   3680 extern int XmbTextExtents(
   3681     XFontSet		/* font_set */,
   3682     _Xconst char*	/* text */,
   3683     int			/* bytes_text */,
   3684     XRectangle*		/* overall_ink_return */,
   3685     XRectangle*		/* overall_logical_return */
   3686 );
   3687 
   3688 extern int XwcTextExtents(
   3689     XFontSet		/* font_set */,
   3690     _Xconst wchar_t*	/* text */,
   3691     int			/* num_wchars */,
   3692     XRectangle*		/* overall_ink_return */,
   3693     XRectangle*		/* overall_logical_return */
   3694 );
   3695 
   3696 extern int Xutf8TextExtents(
   3697     XFontSet		/* font_set */,
   3698     _Xconst char*	/* text */,
   3699     int			/* bytes_text */,
   3700     XRectangle*		/* overall_ink_return */,
   3701     XRectangle*		/* overall_logical_return */
   3702 );
   3703 
   3704 extern Status XmbTextPerCharExtents(
   3705     XFontSet		/* font_set */,
   3706     _Xconst char*	/* text */,
   3707     int			/* bytes_text */,
   3708     XRectangle*		/* ink_extents_buffer */,
   3709     XRectangle*		/* logical_extents_buffer */,
   3710     int			/* buffer_size */,
   3711     int*		/* num_chars */,
   3712     XRectangle*		/* overall_ink_return */,
   3713     XRectangle*		/* overall_logical_return */
   3714 );
   3715 
   3716 extern Status XwcTextPerCharExtents(
   3717     XFontSet		/* font_set */,
   3718     _Xconst wchar_t*	/* text */,
   3719     int			/* num_wchars */,
   3720     XRectangle*		/* ink_extents_buffer */,
   3721     XRectangle*		/* logical_extents_buffer */,
   3722     int			/* buffer_size */,
   3723     int*		/* num_chars */,
   3724     XRectangle*		/* overall_ink_return */,
   3725     XRectangle*		/* overall_logical_return */
   3726 );
   3727 
   3728 extern Status Xutf8TextPerCharExtents(
   3729     XFontSet		/* font_set */,
   3730     _Xconst char*	/* text */,
   3731     int			/* bytes_text */,
   3732     XRectangle*		/* ink_extents_buffer */,
   3733     XRectangle*		/* logical_extents_buffer */,
   3734     int			/* buffer_size */,
   3735     int*		/* num_chars */,
   3736     XRectangle*		/* overall_ink_return */,
   3737     XRectangle*		/* overall_logical_return */
   3738 );
   3739 
   3740 extern void XmbDrawText(
   3741     Display*		/* display */,
   3742     Drawable		/* d */,
   3743     GC			/* gc */,
   3744     int			/* x */,
   3745     int			/* y */,
   3746     XmbTextItem*	/* text_items */,
   3747     int			/* nitems */
   3748 );
   3749 
   3750 extern void XwcDrawText(
   3751     Display*		/* display */,
   3752     Drawable		/* d */,
   3753     GC			/* gc */,
   3754     int			/* x */,
   3755     int			/* y */,
   3756     XwcTextItem*	/* text_items */,
   3757     int			/* nitems */
   3758 );
   3759 
   3760 extern void Xutf8DrawText(
   3761     Display*		/* display */,
   3762     Drawable		/* d */,
   3763     GC			/* gc */,
   3764     int			/* x */,
   3765     int			/* y */,
   3766     XmbTextItem*	/* text_items */,
   3767     int			/* nitems */
   3768 );
   3769 
   3770 extern void XmbDrawString(
   3771     Display*		/* display */,
   3772     Drawable		/* d */,
   3773     XFontSet		/* font_set */,
   3774     GC			/* gc */,
   3775     int			/* x */,
   3776     int			/* y */,
   3777     _Xconst char*	/* text */,
   3778     int			/* bytes_text */
   3779 );
   3780 
   3781 extern void XwcDrawString(
   3782     Display*		/* display */,
   3783     Drawable		/* d */,
   3784     XFontSet		/* font_set */,
   3785     GC			/* gc */,
   3786     int			/* x */,
   3787     int			/* y */,
   3788     _Xconst wchar_t*	/* text */,
   3789     int			/* num_wchars */
   3790 );
   3791 
   3792 extern void Xutf8DrawString(
   3793     Display*		/* display */,
   3794     Drawable		/* d */,
   3795     XFontSet		/* font_set */,
   3796     GC			/* gc */,
   3797     int			/* x */,
   3798     int			/* y */,
   3799     _Xconst char*	/* text */,
   3800     int			/* bytes_text */
   3801 );
   3802 
   3803 extern void XmbDrawImageString(
   3804     Display*		/* display */,
   3805     Drawable		/* d */,
   3806     XFontSet		/* font_set */,
   3807     GC			/* gc */,
   3808     int			/* x */,
   3809     int			/* y */,
   3810     _Xconst char*	/* text */,
   3811     int			/* bytes_text */
   3812 );
   3813 
   3814 extern void XwcDrawImageString(
   3815     Display*		/* display */,
   3816     Drawable		/* d */,
   3817     XFontSet		/* font_set */,
   3818     GC			/* gc */,
   3819     int			/* x */,
   3820     int			/* y */,
   3821     _Xconst wchar_t*	/* text */,
   3822     int			/* num_wchars */
   3823 );
   3824 
   3825 extern void Xutf8DrawImageString(
   3826     Display*		/* display */,
   3827     Drawable		/* d */,
   3828     XFontSet		/* font_set */,
   3829     GC			/* gc */,
   3830     int			/* x */,
   3831     int			/* y */,
   3832     _Xconst char*	/* text */,
   3833     int			/* bytes_text */
   3834 );
   3835 
   3836 extern XIM XOpenIM(
   3837     Display*			/* dpy */,
   3838     struct _XrmHashBucketRec*	/* rdb */,
   3839     char*			/* res_name */,
   3840     char*			/* res_class */
   3841 );
   3842 
   3843 extern Status XCloseIM(
   3844     XIM /* im */
   3845 );
   3846 
   3847 extern char *XGetIMValues(
   3848     XIM /* im */, ...
   3849 ) _X_SENTINEL(0);
   3850 
   3851 extern char *XSetIMValues(
   3852     XIM /* im */, ...
   3853 ) _X_SENTINEL(0);
   3854 
   3855 extern Display *XDisplayOfIM(
   3856     XIM /* im */
   3857 );
   3858 
   3859 extern char *XLocaleOfIM(
   3860     XIM /* im*/
   3861 );
   3862 
   3863 extern XIC XCreateIC(
   3864     XIM /* im */, ...
   3865 ) _X_SENTINEL(0);
   3866 
   3867 extern void XDestroyIC(
   3868     XIC /* ic */
   3869 );
   3870 
   3871 extern void XSetICFocus(
   3872     XIC /* ic */
   3873 );
   3874 
   3875 extern void XUnsetICFocus(
   3876     XIC /* ic */
   3877 );
   3878 
   3879 extern wchar_t *XwcResetIC(
   3880     XIC /* ic */
   3881 );
   3882 
   3883 extern char *XmbResetIC(
   3884     XIC /* ic */
   3885 );
   3886 
   3887 extern char *Xutf8ResetIC(
   3888     XIC /* ic */
   3889 );
   3890 
   3891 extern char *XSetICValues(
   3892     XIC /* ic */, ...
   3893 ) _X_SENTINEL(0);
   3894 
   3895 extern char *XGetICValues(
   3896     XIC /* ic */, ...
   3897 ) _X_SENTINEL(0);
   3898 
   3899 extern XIM XIMOfIC(
   3900     XIC /* ic */
   3901 );
   3902 
   3903 extern Bool XFilterEvent(
   3904     XEvent*	/* event */,
   3905     Window	/* window */
   3906 );
   3907 
   3908 extern int XmbLookupString(
   3909     XIC			/* ic */,
   3910     XKeyPressedEvent*	/* event */,
   3911     char*		/* buffer_return */,
   3912     int			/* bytes_buffer */,
   3913     KeySym*		/* keysym_return */,
   3914     Status*		/* status_return */
   3915 );
   3916 
   3917 extern int XwcLookupString(
   3918     XIC			/* ic */,
   3919     XKeyPressedEvent*	/* event */,
   3920     wchar_t*		/* buffer_return */,
   3921     int			/* wchars_buffer */,
   3922     KeySym*		/* keysym_return */,
   3923     Status*		/* status_return */
   3924 );
   3925 
   3926 extern int Xutf8LookupString(
   3927     XIC			/* ic */,
   3928     XKeyPressedEvent*	/* event */,
   3929     char*		/* buffer_return */,
   3930     int			/* bytes_buffer */,
   3931     KeySym*		/* keysym_return */,
   3932     Status*		/* status_return */
   3933 );
   3934 
   3935 extern XVaNestedList XVaCreateNestedList(
   3936     int /*unused*/, ...
   3937 ) _X_SENTINEL(0);
   3938 
   3939 /* internal connections for IMs */
   3940 
   3941 extern Bool XRegisterIMInstantiateCallback(
   3942     Display*			/* dpy */,
   3943     struct _XrmHashBucketRec*	/* rdb */,
   3944     char*			/* res_name */,
   3945     char*			/* res_class */,
   3946     XIDProc			/* callback */,
   3947     XPointer			/* client_data */
   3948 );
   3949 
   3950 extern Bool XUnregisterIMInstantiateCallback(
   3951     Display*			/* dpy */,
   3952     struct _XrmHashBucketRec*	/* rdb */,
   3953     char*			/* res_name */,
   3954     char*			/* res_class */,
   3955     XIDProc			/* callback */,
   3956     XPointer			/* client_data */
   3957 );
   3958 
   3959 typedef void (*XConnectionWatchProc)(
   3960     Display*			/* dpy */,
   3961     XPointer			/* client_data */,
   3962     int				/* fd */,
   3963     Bool			/* opening */,	 /* open or close flag */
   3964     XPointer*			/* watch_data */ /* open sets, close uses */
   3965 );
   3966 
   3967 
   3968 extern Status XInternalConnectionNumbers(
   3969     Display*			/* dpy */,
   3970     int**			/* fd_return */,
   3971     int*			/* count_return */
   3972 );
   3973 
   3974 extern void XProcessInternalConnection(
   3975     Display*			/* dpy */,
   3976     int				/* fd */
   3977 );
   3978 
   3979 extern Status XAddConnectionWatch(
   3980     Display*			/* dpy */,
   3981     XConnectionWatchProc	/* callback */,
   3982     XPointer			/* client_data */
   3983 );
   3984 
   3985 extern void XRemoveConnectionWatch(
   3986     Display*			/* dpy */,
   3987     XConnectionWatchProc	/* callback */,
   3988     XPointer			/* client_data */
   3989 );
   3990 
   3991 extern void XSetAuthorization(
   3992     char *			/* name */,
   3993     int				/* namelen */,
   3994     char *			/* data */,
   3995     int				/* datalen */
   3996 );
   3997 
   3998 extern int _Xmbtowc(
   3999     wchar_t *			/* wstr */,
   4000 #ifdef ISC
   4001     char const *		/* str */,
   4002     size_t			/* len */
   4003 #else
   4004     char *			/* str */,
   4005     int				/* len */
   4006 #endif
   4007 );
   4008 
   4009 extern int _Xwctomb(
   4010     char *			/* str */,
   4011     wchar_t			/* wc */
   4012 );
   4013 
   4014 extern Bool XGetEventData(
   4015     Display*			/* dpy */,
   4016     XGenericEventCookie*	/* cookie*/
   4017 );
   4018 
   4019 extern void XFreeEventData(
   4020     Display*			/* dpy */,
   4021     XGenericEventCookie*	/* cookie*/
   4022 );
   4023 
   4024 _XFUNCPROTOEND
   4025 
   4026 #endif /* _XLIB_H_ */
   4027