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