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 _XLIB_H_
34 #define _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 extern KeySym XKeycodeToKeysym(
1695     Display*		/* display */,
1696 #if NeedWidePrototypes
1697     unsigned int	/* keycode */,
1698 #else
1699     KeyCode		/* keycode */,
1700 #endif
1701     int			/* index */
1702 );
1703 extern KeySym XLookupKeysym(
1704     XKeyEvent*		/* key_event */,
1705     int			/* index */
1706 );
1707 extern KeySym *XGetKeyboardMapping(
1708     Display*		/* display */,
1709 #if NeedWidePrototypes
1710     unsigned int	/* first_keycode */,
1711 #else
1712     KeyCode		/* first_keycode */,
1713 #endif
1714     int			/* keycode_count */,
1715     int*		/* keysyms_per_keycode_return */
1716 );
1717 extern KeySym XStringToKeysym(
1718     _Xconst char*	/* string */
1719 );
1720 extern long XMaxRequestSize(
1721     Display*		/* display */
1722 );
1723 extern long XExtendedMaxRequestSize(
1724     Display*		/* display */
1725 );
1726 extern char *XResourceManagerString(
1727     Display*		/* display */
1728 );
1729 extern char *XScreenResourceString(
1730 	Screen*		/* screen */
1731 );
1732 extern unsigned long XDisplayMotionBufferSize(
1733     Display*		/* display */
1734 );
1735 extern VisualID XVisualIDFromVisual(
1736     Visual*		/* visual */
1737 );
1738 
1739 /* multithread routines */
1740 
1741 extern Status XInitThreads(
1742     void
1743 );
1744 
1745 extern void XLockDisplay(
1746     Display*		/* display */
1747 );
1748 
1749 extern void XUnlockDisplay(
1750     Display*		/* display */
1751 );
1752 
1753 /* routines for dealing with extensions */
1754 
1755 extern XExtCodes *XInitExtension(
1756     Display*		/* display */,
1757     _Xconst char*	/* name */
1758 );
1759 
1760 extern XExtCodes *XAddExtension(
1761     Display*		/* display */
1762 );
1763 extern XExtData *XFindOnExtensionList(
1764     XExtData**		/* structure */,
1765     int			/* number */
1766 );
1767 extern XExtData **XEHeadOfExtensionList(
1768     XEDataObject	/* object */
1769 );
1770 
1771 /* these are routines for which there are also macros */
1772 extern Window XRootWindow(
1773     Display*		/* display */,
1774     int			/* screen_number */
1775 );
1776 extern Window XDefaultRootWindow(
1777     Display*		/* display */
1778 );
1779 extern Window XRootWindowOfScreen(
1780     Screen*		/* screen */
1781 );
1782 extern Visual *XDefaultVisual(
1783     Display*		/* display */,
1784     int			/* screen_number */
1785 );
1786 extern Visual *XDefaultVisualOfScreen(
1787     Screen*		/* screen */
1788 );
1789 extern GC XDefaultGC(
1790     Display*		/* display */,
1791     int			/* screen_number */
1792 );
1793 extern GC XDefaultGCOfScreen(
1794     Screen*		/* screen */
1795 );
1796 extern unsigned long XBlackPixel(
1797     Display*		/* display */,
1798     int			/* screen_number */
1799 );
1800 extern unsigned long XWhitePixel(
1801     Display*		/* display */,
1802     int			/* screen_number */
1803 );
1804 extern unsigned long XAllPlanes(
1805     void
1806 );
1807 extern unsigned long XBlackPixelOfScreen(
1808     Screen*		/* screen */
1809 );
1810 extern unsigned long XWhitePixelOfScreen(
1811     Screen*		/* screen */
1812 );
1813 extern unsigned long XNextRequest(
1814     Display*		/* display */
1815 );
1816 extern unsigned long XLastKnownRequestProcessed(
1817     Display*		/* display */
1818 );
1819 extern char *XServerVendor(
1820     Display*		/* display */
1821 );
1822 extern char *XDisplayString(
1823     Display*		/* display */
1824 );
1825 extern Colormap XDefaultColormap(
1826     Display*		/* display */,
1827     int			/* screen_number */
1828 );
1829 extern Colormap XDefaultColormapOfScreen(
1830     Screen*		/* screen */
1831 );
1832 extern Display *XDisplayOfScreen(
1833     Screen*		/* screen */
1834 );
1835 extern Screen *XScreenOfDisplay(
1836     Display*		/* display */,
1837     int			/* screen_number */
1838 );
1839 extern Screen *XDefaultScreenOfDisplay(
1840     Display*		/* display */
1841 );
1842 extern long XEventMaskOfScreen(
1843     Screen*		/* screen */
1844 );
1845 
1846 extern int XScreenNumberOfScreen(
1847     Screen*		/* screen */
1848 );
1849 
1850 typedef int (*XErrorHandler) (	    /* WARNING, this type not in Xlib spec */
1851     Display*		/* display */,
1852     XErrorEvent*	/* error_event */
1853 );
1854 
1855 extern XErrorHandler XSetErrorHandler (
1856     XErrorHandler	/* handler */
1857 );
1858 
1859 
1860 typedef int (*XIOErrorHandler) (    /* WARNING, this type not in Xlib spec */
1861     Display*		/* display */
1862 );
1863 
1864 extern XIOErrorHandler XSetIOErrorHandler (
1865     XIOErrorHandler	/* handler */
1866 );
1867 
1868 
1869 extern XPixmapFormatValues *XListPixmapFormats(
1870     Display*		/* display */,
1871     int*		/* count_return */
1872 );
1873 extern int *XListDepths(
1874     Display*		/* display */,
1875     int			/* screen_number */,
1876     int*		/* count_return */
1877 );
1878 
1879 /* ICCCM routines for things that don't require special include files; */
1880 /* other declarations are given in Xutil.h                             */
1881 extern Status XReconfigureWMWindow(
1882     Display*		/* display */,
1883     Window		/* w */,
1884     int			/* screen_number */,
1885     unsigned int	/* mask */,
1886     XWindowChanges*	/* changes */
1887 );
1888 
1889 extern Status XGetWMProtocols(
1890     Display*		/* display */,
1891     Window		/* w */,
1892     Atom**		/* protocols_return */,
1893     int*		/* count_return */
1894 );
1895 extern Status XSetWMProtocols(
1896     Display*		/* display */,
1897     Window		/* w */,
1898     Atom*		/* protocols */,
1899     int			/* count */
1900 );
1901 extern Status XIconifyWindow(
1902     Display*		/* display */,
1903     Window		/* w */,
1904     int			/* screen_number */
1905 );
1906 extern Status XWithdrawWindow(
1907     Display*		/* display */,
1908     Window		/* w */,
1909     int			/* screen_number */
1910 );
1911 extern Status XGetCommand(
1912     Display*		/* display */,
1913     Window		/* w */,
1914     char***		/* argv_return */,
1915     int*		/* argc_return */
1916 );
1917 extern Status XGetWMColormapWindows(
1918     Display*		/* display */,
1919     Window		/* w */,
1920     Window**		/* windows_return */,
1921     int*		/* count_return */
1922 );
1923 extern Status XSetWMColormapWindows(
1924     Display*		/* display */,
1925     Window		/* w */,
1926     Window*		/* colormap_windows */,
1927     int			/* count */
1928 );
1929 extern void XFreeStringList(
1930     char**		/* list */
1931 );
1932 extern int XSetTransientForHint(
1933     Display*		/* display */,
1934     Window		/* w */,
1935     Window		/* prop_window */
1936 );
1937 
1938 /* The following are given in alphabetical order */
1939 
1940 extern int XActivateScreenSaver(
1941     Display*		/* display */
1942 );
1943 
1944 extern int XAddHost(
1945     Display*		/* display */,
1946     XHostAddress*	/* host */
1947 );
1948 
1949 extern int XAddHosts(
1950     Display*		/* display */,
1951     XHostAddress*	/* hosts */,
1952     int			/* num_hosts */
1953 );
1954 
1955 extern int XAddToExtensionList(
1956     struct _XExtData**	/* structure */,
1957     XExtData*		/* ext_data */
1958 );
1959 
1960 extern int XAddToSaveSet(
1961     Display*		/* display */,
1962     Window		/* w */
1963 );
1964 
1965 extern Status XAllocColor(
1966     Display*		/* display */,
1967     Colormap		/* colormap */,
1968     XColor*		/* screen_in_out */
1969 );
1970 
1971 extern Status XAllocColorCells(
1972     Display*		/* display */,
1973     Colormap		/* colormap */,
1974     Bool	        /* contig */,
1975     unsigned long*	/* plane_masks_return */,
1976     unsigned int	/* nplanes */,
1977     unsigned long*	/* pixels_return */,
1978     unsigned int 	/* npixels */
1979 );
1980 
1981 extern Status XAllocColorPlanes(
1982     Display*		/* display */,
1983     Colormap		/* colormap */,
1984     Bool		/* contig */,
1985     unsigned long*	/* pixels_return */,
1986     int			/* ncolors */,
1987     int			/* nreds */,
1988     int			/* ngreens */,
1989     int			/* nblues */,
1990     unsigned long*	/* rmask_return */,
1991     unsigned long*	/* gmask_return */,
1992     unsigned long*	/* bmask_return */
1993 );
1994 
1995 extern Status XAllocNamedColor(
1996     Display*		/* display */,
1997     Colormap		/* colormap */,
1998     _Xconst char*	/* color_name */,
1999     XColor*		/* screen_def_return */,
2000     XColor*		/* exact_def_return */
2001 );
2002 
2003 extern int XAllowEvents(
2004     Display*		/* display */,
2005     int			/* event_mode */,
2006     Time		/* time */
2007 );
2008 
2009 extern int XAutoRepeatOff(
2010     Display*		/* display */
2011 );
2012 
2013 extern int XAutoRepeatOn(
2014     Display*		/* display */
2015 );
2016 
2017 extern int XBell(
2018     Display*		/* display */,
2019     int			/* percent */
2020 );
2021 
2022 extern int XBitmapBitOrder(
2023     Display*		/* display */
2024 );
2025 
2026 extern int XBitmapPad(
2027     Display*		/* display */
2028 );
2029 
2030 extern int XBitmapUnit(
2031     Display*		/* display */
2032 );
2033 
2034 extern int XCellsOfScreen(
2035     Screen*		/* screen */
2036 );
2037 
2038 extern int XChangeActivePointerGrab(
2039     Display*		/* display */,
2040     unsigned int	/* event_mask */,
2041     Cursor		/* cursor */,
2042     Time		/* time */
2043 );
2044 
2045 extern int XChangeGC(
2046     Display*		/* display */,
2047     GC			/* gc */,
2048     unsigned long	/* valuemask */,
2049     XGCValues*		/* values */
2050 );
2051 
2052 extern int XChangeKeyboardControl(
2053     Display*		/* display */,
2054     unsigned long	/* value_mask */,
2055     XKeyboardControl*	/* values */
2056 );
2057 
2058 extern int XChangeKeyboardMapping(
2059     Display*		/* display */,
2060     int			/* first_keycode */,
2061     int			/* keysyms_per_keycode */,
2062     KeySym*		/* keysyms */,
2063     int			/* num_codes */
2064 );
2065 
2066 extern int XChangePointerControl(
2067     Display*		/* display */,
2068     Bool		/* do_accel */,
2069     Bool		/* do_threshold */,
2070     int			/* accel_numerator */,
2071     int			/* accel_denominator */,
2072     int			/* threshold */
2073 );
2074 
2075 extern int XChangeProperty(
2076     Display*		/* display */,
2077     Window		/* w */,
2078     Atom		/* property */,
2079     Atom		/* type */,
2080     int			/* format */,
2081     int			/* mode */,
2082     _Xconst unsigned char*	/* data */,
2083     int			/* nelements */
2084 );
2085 
2086 extern int XChangeSaveSet(
2087     Display*		/* display */,
2088     Window		/* w */,
2089     int			/* change_mode */
2090 );
2091 
2092 extern int XChangeWindowAttributes(
2093     Display*		/* display */,
2094     Window		/* w */,
2095     unsigned long	/* valuemask */,
2096     XSetWindowAttributes* /* attributes */
2097 );
2098 
2099 extern Bool XCheckIfEvent(
2100     Display*		/* display */,
2101     XEvent*		/* event_return */,
2102     Bool (*) (
2103 	       Display*			/* display */,
2104                XEvent*			/* event */,
2105                XPointer			/* arg */
2106              )		/* predicate */,
2107     XPointer		/* arg */
2108 );
2109 
2110 extern Bool XCheckMaskEvent(
2111     Display*		/* display */,
2112     long		/* event_mask */,
2113     XEvent*		/* event_return */
2114 );
2115 
2116 extern Bool XCheckTypedEvent(
2117     Display*		/* display */,
2118     int			/* event_type */,
2119     XEvent*		/* event_return */
2120 );
2121 
2122 extern Bool XCheckTypedWindowEvent(
2123     Display*		/* display */,
2124     Window		/* w */,
2125     int			/* event_type */,
2126     XEvent*		/* event_return */
2127 );
2128 
2129 extern Bool XCheckWindowEvent(
2130     Display*		/* display */,
2131     Window		/* w */,
2132     long		/* event_mask */,
2133     XEvent*		/* event_return */
2134 );
2135 
2136 extern int XCirculateSubwindows(
2137     Display*		/* display */,
2138     Window		/* w */,
2139     int			/* direction */
2140 );
2141 
2142 extern int XCirculateSubwindowsDown(
2143     Display*		/* display */,
2144     Window		/* w */
2145 );
2146 
2147 extern int XCirculateSubwindowsUp(
2148     Display*		/* display */,
2149     Window		/* w */
2150 );
2151 
2152 extern int XClearArea(
2153     Display*		/* display */,
2154     Window		/* w */,
2155     int			/* x */,
2156     int			/* y */,
2157     unsigned int	/* width */,
2158     unsigned int	/* height */,
2159     Bool		/* exposures */
2160 );
2161 
2162 extern int XClearWindow(
2163     Display*		/* display */,
2164     Window		/* w */
2165 );
2166 
2167 extern int XCloseDisplay(
2168     Display*		/* display */
2169 );
2170 
2171 extern int XConfigureWindow(
2172     Display*		/* display */,
2173     Window		/* w */,
2174     unsigned int	/* value_mask */,
2175     XWindowChanges*	/* values */
2176 );
2177 
2178 extern int XConnectionNumber(
2179     Display*		/* display */
2180 );
2181 
2182 extern int XConvertSelection(
2183     Display*		/* display */,
2184     Atom		/* selection */,
2185     Atom 		/* target */,
2186     Atom		/* property */,
2187     Window		/* requestor */,
2188     Time		/* time */
2189 );
2190 
2191 extern int XCopyArea(
2192     Display*		/* display */,
2193     Drawable		/* src */,
2194     Drawable		/* dest */,
2195     GC			/* gc */,
2196     int			/* src_x */,
2197     int			/* src_y */,
2198     unsigned int	/* width */,
2199     unsigned int	/* height */,
2200     int			/* dest_x */,
2201     int			/* dest_y */
2202 );
2203 
2204 extern int XCopyGC(
2205     Display*		/* display */,
2206     GC			/* src */,
2207     unsigned long	/* valuemask */,
2208     GC			/* dest */
2209 );
2210 
2211 extern int XCopyPlane(
2212     Display*		/* display */,
2213     Drawable		/* src */,
2214     Drawable		/* dest */,
2215     GC			/* gc */,
2216     int			/* src_x */,
2217     int			/* src_y */,
2218     unsigned int	/* width */,
2219     unsigned int	/* height */,
2220     int			/* dest_x */,
2221     int			/* dest_y */,
2222     unsigned long	/* plane */
2223 );
2224 
2225 extern int XDefaultDepth(
2226     Display*		/* display */,
2227     int			/* screen_number */
2228 );
2229 
2230 extern int XDefaultDepthOfScreen(
2231     Screen*		/* screen */
2232 );
2233 
2234 extern int XDefaultScreen(
2235     Display*		/* display */
2236 );
2237 
2238 extern int XDefineCursor(
2239     Display*		/* display */,
2240     Window		/* w */,
2241     Cursor		/* cursor */
2242 );
2243 
2244 extern int XDeleteProperty(
2245     Display*		/* display */,
2246     Window		/* w */,
2247     Atom		/* property */
2248 );
2249 
2250 extern int XDestroyWindow(
2251     Display*		/* display */,
2252     Window		/* w */
2253 );
2254 
2255 extern int XDestroySubwindows(
2256     Display*		/* display */,
2257     Window		/* w */
2258 );
2259 
2260 extern int XDoesBackingStore(
2261     Screen*		/* screen */
2262 );
2263 
2264 extern Bool XDoesSaveUnders(
2265     Screen*		/* screen */
2266 );
2267 
2268 extern int XDisableAccessControl(
2269     Display*		/* display */
2270 );
2271 
2272 
2273 extern int XDisplayCells(
2274     Display*		/* display */,
2275     int			/* screen_number */
2276 );
2277 
2278 extern int XDisplayHeight(
2279     Display*		/* display */,
2280     int			/* screen_number */
2281 );
2282 
2283 extern int XDisplayHeightMM(
2284     Display*		/* display */,
2285     int			/* screen_number */
2286 );
2287 
2288 extern int XDisplayKeycodes(
2289     Display*		/* display */,
2290     int*		/* min_keycodes_return */,
2291     int*		/* max_keycodes_return */
2292 );
2293 
2294 extern int XDisplayPlanes(
2295     Display*		/* display */,
2296     int			/* screen_number */
2297 );
2298 
2299 extern int XDisplayWidth(
2300     Display*		/* display */,
2301     int			/* screen_number */
2302 );
2303 
2304 extern int XDisplayWidthMM(
2305     Display*		/* display */,
2306     int			/* screen_number */
2307 );
2308 
2309 extern int XDrawArc(
2310     Display*		/* display */,
2311     Drawable		/* d */,
2312     GC			/* gc */,
2313     int			/* x */,
2314     int			/* y */,
2315     unsigned int	/* width */,
2316     unsigned int	/* height */,
2317     int			/* angle1 */,
2318     int			/* angle2 */
2319 );
2320 
2321 extern int XDrawArcs(
2322     Display*		/* display */,
2323     Drawable		/* d */,
2324     GC			/* gc */,
2325     XArc*		/* arcs */,
2326     int			/* narcs */
2327 );
2328 
2329 extern int XDrawImageString(
2330     Display*		/* display */,
2331     Drawable		/* d */,
2332     GC			/* gc */,
2333     int			/* x */,
2334     int			/* y */,
2335     _Xconst char*	/* string */,
2336     int			/* length */
2337 );
2338 
2339 extern int XDrawImageString16(
2340     Display*		/* display */,
2341     Drawable		/* d */,
2342     GC			/* gc */,
2343     int			/* x */,
2344     int			/* y */,
2345     _Xconst XChar2b*	/* string */,
2346     int			/* length */
2347 );
2348 
2349 extern int XDrawLine(
2350     Display*		/* display */,
2351     Drawable		/* d */,
2352     GC			/* gc */,
2353     int			/* x1 */,
2354     int			/* y1 */,
2355     int			/* x2 */,
2356     int			/* y2 */
2357 );
2358 
2359 extern int XDrawLines(
2360     Display*		/* display */,
2361     Drawable		/* d */,
2362     GC			/* gc */,
2363     XPoint*		/* points */,
2364     int			/* npoints */,
2365     int			/* mode */
2366 );
2367 
2368 extern int XDrawPoint(
2369     Display*		/* display */,
2370     Drawable		/* d */,
2371     GC			/* gc */,
2372     int			/* x */,
2373     int			/* y */
2374 );
2375 
2376 extern int XDrawPoints(
2377     Display*		/* display */,
2378     Drawable		/* d */,
2379     GC			/* gc */,
2380     XPoint*		/* points */,
2381     int			/* npoints */,
2382     int			/* mode */
2383 );
2384 
2385 extern int XDrawRectangle(
2386     Display*		/* display */,
2387     Drawable		/* d */,
2388     GC			/* gc */,
2389     int			/* x */,
2390     int			/* y */,
2391     unsigned int	/* width */,
2392     unsigned int	/* height */
2393 );
2394 
2395 extern int XDrawRectangles(
2396     Display*		/* display */,
2397     Drawable		/* d */,
2398     GC			/* gc */,
2399     XRectangle*		/* rectangles */,
2400     int			/* nrectangles */
2401 );
2402 
2403 extern int XDrawSegments(
2404     Display*		/* display */,
2405     Drawable		/* d */,
2406     GC			/* gc */,
2407     XSegment*		/* segments */,
2408     int			/* nsegments */
2409 );
2410 
2411 extern int XDrawString(
2412     Display*		/* display */,
2413     Drawable		/* d */,
2414     GC			/* gc */,
2415     int			/* x */,
2416     int			/* y */,
2417     _Xconst char*	/* string */,
2418     int			/* length */
2419 );
2420 
2421 extern int XDrawString16(
2422     Display*		/* display */,
2423     Drawable		/* d */,
2424     GC			/* gc */,
2425     int			/* x */,
2426     int			/* y */,
2427     _Xconst XChar2b*	/* string */,
2428     int			/* length */
2429 );
2430 
2431 extern int XDrawText(
2432     Display*		/* display */,
2433     Drawable		/* d */,
2434     GC			/* gc */,
2435     int			/* x */,
2436     int			/* y */,
2437     XTextItem*		/* items */,
2438     int			/* nitems */
2439 );
2440 
2441 extern int XDrawText16(
2442     Display*		/* display */,
2443     Drawable		/* d */,
2444     GC			/* gc */,
2445     int			/* x */,
2446     int			/* y */,
2447     XTextItem16*	/* items */,
2448     int			/* nitems */
2449 );
2450 
2451 extern int XEnableAccessControl(
2452     Display*		/* display */
2453 );
2454 
2455 extern int XEventsQueued(
2456     Display*		/* display */,
2457     int			/* mode */
2458 );
2459 
2460 extern Status XFetchName(
2461     Display*		/* display */,
2462     Window		/* w */,
2463     char**		/* window_name_return */
2464 );
2465 
2466 extern int XFillArc(
2467     Display*		/* display */,
2468     Drawable		/* d */,
2469     GC			/* gc */,
2470     int			/* x */,
2471     int			/* y */,
2472     unsigned int	/* width */,
2473     unsigned int	/* height */,
2474     int			/* angle1 */,
2475     int			/* angle2 */
2476 );
2477 
2478 extern int XFillArcs(
2479     Display*		/* display */,
2480     Drawable		/* d */,
2481     GC			/* gc */,
2482     XArc*		/* arcs */,
2483     int			/* narcs */
2484 );
2485 
2486 extern int XFillPolygon(
2487     Display*		/* display */,
2488     Drawable		/* d */,
2489     GC			/* gc */,
2490     XPoint*		/* points */,
2491     int			/* npoints */,
2492     int			/* shape */,
2493     int			/* mode */
2494 );
2495 
2496 extern int XFillRectangle(
2497     Display*		/* display */,
2498     Drawable		/* d */,
2499     GC			/* gc */,
2500     int			/* x */,
2501     int			/* y */,
2502     unsigned int	/* width */,
2503     unsigned int	/* height */
2504 );
2505 
2506 extern int XFillRectangles(
2507     Display*		/* display */,
2508     Drawable		/* d */,
2509     GC			/* gc */,
2510     XRectangle*		/* rectangles */,
2511     int			/* nrectangles */
2512 );
2513 
2514 extern int XFlush(
2515     Display*		/* display */
2516 );
2517 
2518 extern int XForceScreenSaver(
2519     Display*		/* display */,
2520     int			/* mode */
2521 );
2522 
2523 extern int XFree(
2524     void*		/* data */
2525 );
2526 
2527 extern int XFreeColormap(
2528     Display*		/* display */,
2529     Colormap		/* colormap */
2530 );
2531 
2532 extern int XFreeColors(
2533     Display*		/* display */,
2534     Colormap		/* colormap */,
2535     unsigned long*	/* pixels */,
2536     int			/* npixels */,
2537     unsigned long	/* planes */
2538 );
2539 
2540 extern int XFreeCursor(
2541     Display*		/* display */,
2542     Cursor		/* cursor */
2543 );
2544 
2545 extern int XFreeExtensionList(
2546     char**		/* list */
2547 );
2548 
2549 extern int XFreeFont(
2550     Display*		/* display */,
2551     XFontStruct*	/* font_struct */
2552 );
2553 
2554 extern int XFreeFontInfo(
2555     char**		/* names */,
2556     XFontStruct*	/* free_info */,
2557     int			/* actual_count */
2558 );
2559 
2560 extern int XFreeFontNames(
2561     char**		/* list */
2562 );
2563 
2564 extern int XFreeFontPath(
2565     char**		/* list */
2566 );
2567 
2568 extern int XFreeGC(
2569     Display*		/* display */,
2570     GC			/* gc */
2571 );
2572 
2573 extern int XFreeModifiermap(
2574     XModifierKeymap*	/* modmap */
2575 );
2576 
2577 extern int XFreePixmap(
2578     Display*		/* display */,
2579     Pixmap		/* pixmap */
2580 );
2581 
2582 extern int XGeometry(
2583     Display*		/* display */,
2584     int			/* screen */,
2585     _Xconst char*	/* position */,
2586     _Xconst char*	/* default_position */,
2587     unsigned int	/* bwidth */,
2588     unsigned int	/* fwidth */,
2589     unsigned int	/* fheight */,
2590     int			/* xadder */,
2591     int			/* yadder */,
2592     int*		/* x_return */,
2593     int*		/* y_return */,
2594     int*		/* width_return */,
2595     int*		/* height_return */
2596 );
2597 
2598 extern int XGetErrorDatabaseText(
2599     Display*		/* display */,
2600     _Xconst char*	/* name */,
2601     _Xconst char*	/* message */,
2602     _Xconst char*	/* default_string */,
2603     char*		/* buffer_return */,
2604     int			/* length */
2605 );
2606 
2607 extern int XGetErrorText(
2608     Display*		/* display */,
2609     int			/* code */,
2610     char*		/* buffer_return */,
2611     int			/* length */
2612 );
2613 
2614 extern Bool XGetFontProperty(
2615     XFontStruct*	/* font_struct */,
2616     Atom		/* atom */,
2617     unsigned long*	/* value_return */
2618 );
2619 
2620 extern Status XGetGCValues(
2621     Display*		/* display */,
2622     GC			/* gc */,
2623     unsigned long	/* valuemask */,
2624     XGCValues*		/* values_return */
2625 );
2626 
2627 extern Status XGetGeometry(
2628     Display*		/* display */,
2629     Drawable		/* d */,
2630     Window*		/* root_return */,
2631     int*		/* x_return */,
2632     int*		/* y_return */,
2633     unsigned int*	/* width_return */,
2634     unsigned int*	/* height_return */,
2635     unsigned int*	/* border_width_return */,
2636     unsigned int*	/* depth_return */
2637 );
2638 
2639 extern Status XGetIconName(
2640     Display*		/* display */,
2641     Window		/* w */,
2642     char**		/* icon_name_return */
2643 );
2644 
2645 extern int XGetInputFocus(
2646     Display*		/* display */,
2647     Window*		/* focus_return */,
2648     int*		/* revert_to_return */
2649 );
2650 
2651 extern int XGetKeyboardControl(
2652     Display*		/* display */,
2653     XKeyboardState*	/* values_return */
2654 );
2655 
2656 extern int XGetPointerControl(
2657     Display*		/* display */,
2658     int*		/* accel_numerator_return */,
2659     int*		/* accel_denominator_return */,
2660     int*		/* threshold_return */
2661 );
2662 
2663 extern int XGetPointerMapping(
2664     Display*		/* display */,
2665     unsigned char*	/* map_return */,
2666     int			/* nmap */
2667 );
2668 
2669 extern int XGetScreenSaver(
2670     Display*		/* display */,
2671     int*		/* timeout_return */,
2672     int*		/* interval_return */,
2673     int*		/* prefer_blanking_return */,
2674     int*		/* allow_exposures_return */
2675 );
2676 
2677 extern Status XGetTransientForHint(
2678     Display*		/* display */,
2679     Window		/* w */,
2680     Window*		/* prop_window_return */
2681 );
2682 
2683 extern int XGetWindowProperty(
2684     Display*		/* display */,
2685     Window		/* w */,
2686     Atom		/* property */,
2687     long		/* long_offset */,
2688     long		/* long_length */,
2689     Bool		/* delete */,
2690     Atom		/* req_type */,
2691     Atom*		/* actual_type_return */,
2692     int*		/* actual_format_return */,
2693     unsigned long*	/* nitems_return */,
2694     unsigned long*	/* bytes_after_return */,
2695     unsigned char**	/* prop_return */
2696 );
2697 
2698 extern Status XGetWindowAttributes(
2699     Display*		/* display */,
2700     Window		/* w */,
2701     XWindowAttributes*	/* window_attributes_return */
2702 );
2703 
2704 extern int XGrabButton(
2705     Display*		/* display */,
2706     unsigned int	/* button */,
2707     unsigned int	/* modifiers */,
2708     Window		/* grab_window */,
2709     Bool		/* owner_events */,
2710     unsigned int	/* event_mask */,
2711     int			/* pointer_mode */,
2712     int			/* keyboard_mode */,
2713     Window		/* confine_to */,
2714     Cursor		/* cursor */
2715 );
2716 
2717 extern int XGrabKey(
2718     Display*		/* display */,
2719     int			/* keycode */,
2720     unsigned int	/* modifiers */,
2721     Window		/* grab_window */,
2722     Bool		/* owner_events */,
2723     int			/* pointer_mode */,
2724     int			/* keyboard_mode */
2725 );
2726 
2727 extern int XGrabKeyboard(
2728     Display*		/* display */,
2729     Window		/* grab_window */,
2730     Bool		/* owner_events */,
2731     int			/* pointer_mode */,
2732     int			/* keyboard_mode */,
2733     Time		/* time */
2734 );
2735 
2736 extern int XGrabPointer(
2737     Display*		/* display */,
2738     Window		/* grab_window */,
2739     Bool		/* owner_events */,
2740     unsigned int	/* event_mask */,
2741     int			/* pointer_mode */,
2742     int			/* keyboard_mode */,
2743     Window		/* confine_to */,
2744     Cursor		/* cursor */,
2745     Time		/* time */
2746 );
2747 
2748 extern int XGrabServer(
2749     Display*		/* display */
2750 );
2751 
2752 extern int XHeightMMOfScreen(
2753     Screen*		/* screen */
2754 );
2755 
2756 extern int XHeightOfScreen(
2757     Screen*		/* screen */
2758 );
2759 
2760 extern int XIfEvent(
2761     Display*		/* display */,
2762     XEvent*		/* event_return */,
2763     Bool (*) (
2764 	       Display*			/* display */,
2765                XEvent*			/* event */,
2766                XPointer			/* arg */
2767              )		/* predicate */,
2768     XPointer		/* arg */
2769 );
2770 
2771 extern int XImageByteOrder(
2772     Display*		/* display */
2773 );
2774 
2775 extern int XInstallColormap(
2776     Display*		/* display */,
2777     Colormap		/* colormap */
2778 );
2779 
2780 extern KeyCode XKeysymToKeycode(
2781     Display*		/* display */,
2782     KeySym		/* keysym */
2783 );
2784 
2785 extern int XKillClient(
2786     Display*		/* display */,
2787     XID			/* resource */
2788 );
2789 
2790 extern Status XLookupColor(
2791     Display*		/* display */,
2792     Colormap		/* colormap */,
2793     _Xconst char*	/* color_name */,
2794     XColor*		/* exact_def_return */,
2795     XColor*		/* screen_def_return */
2796 );
2797 
2798 extern int XLowerWindow(
2799     Display*		/* display */,
2800     Window		/* w */
2801 );
2802 
2803 extern int XMapRaised(
2804     Display*		/* display */,
2805     Window		/* w */
2806 );
2807 
2808 extern int XMapSubwindows(
2809     Display*		/* display */,
2810     Window		/* w */
2811 );
2812 
2813 extern int XMapWindow(
2814     Display*		/* display */,
2815     Window		/* w */
2816 );
2817 
2818 extern int XMaskEvent(
2819     Display*		/* display */,
2820     long		/* event_mask */,
2821     XEvent*		/* event_return */
2822 );
2823 
2824 extern int XMaxCmapsOfScreen(
2825     Screen*		/* screen */
2826 );
2827 
2828 extern int XMinCmapsOfScreen(
2829     Screen*		/* screen */
2830 );
2831 
2832 extern int XMoveResizeWindow(
2833     Display*		/* display */,
2834     Window		/* w */,
2835     int			/* x */,
2836     int			/* y */,
2837     unsigned int	/* width */,
2838     unsigned int	/* height */
2839 );
2840 
2841 extern int XMoveWindow(
2842     Display*		/* display */,
2843     Window		/* w */,
2844     int			/* x */,
2845     int			/* y */
2846 );
2847 
2848 extern int XNextEvent(
2849     Display*		/* display */,
2850     XEvent*		/* event_return */
2851 );
2852 
2853 extern int XNoOp(
2854     Display*		/* display */
2855 );
2856 
2857 extern Status XParseColor(
2858     Display*		/* display */,
2859     Colormap		/* colormap */,
2860     _Xconst char*	/* spec */,
2861     XColor*		/* exact_def_return */
2862 );
2863 
2864 extern int XParseGeometry(
2865     _Xconst char*	/* parsestring */,
2866     int*		/* x_return */,
2867     int*		/* y_return */,
2868     unsigned int*	/* width_return */,
2869     unsigned int*	/* height_return */
2870 );
2871 
2872 extern int XPeekEvent(
2873     Display*		/* display */,
2874     XEvent*		/* event_return */
2875 );
2876 
2877 extern int XPeekIfEvent(
2878     Display*		/* display */,
2879     XEvent*		/* event_return */,
2880     Bool (*) (
2881 	       Display*		/* display */,
2882                XEvent*		/* event */,
2883                XPointer		/* arg */
2884              )		/* predicate */,
2885     XPointer		/* arg */
2886 );
2887 
2888 extern int XPending(
2889     Display*		/* display */
2890 );
2891 
2892 extern int XPlanesOfScreen(
2893     Screen*		/* screen */
2894 );
2895 
2896 extern int XProtocolRevision(
2897     Display*		/* display */
2898 );
2899 
2900 extern int XProtocolVersion(
2901     Display*		/* display */
2902 );
2903 
2904 
2905 extern int XPutBackEvent(
2906     Display*		/* display */,
2907     XEvent*		/* event */
2908 );
2909 
2910 extern int XPutImage(
2911     Display*		/* display */,
2912     Drawable		/* d */,
2913     GC			/* gc */,
2914     XImage*		/* image */,
2915     int			/* src_x */,
2916     int			/* src_y */,
2917     int			/* dest_x */,
2918     int			/* dest_y */,
2919     unsigned int	/* width */,
2920     unsigned int	/* height */
2921 );
2922 
2923 extern int XQLength(
2924     Display*		/* display */
2925 );
2926 
2927 extern Status XQueryBestCursor(
2928     Display*		/* display */,
2929     Drawable		/* d */,
2930     unsigned int        /* width */,
2931     unsigned int	/* height */,
2932     unsigned int*	/* width_return */,
2933     unsigned int*	/* height_return */
2934 );
2935 
2936 extern Status XQueryBestSize(
2937     Display*		/* display */,
2938     int			/* class */,
2939     Drawable		/* which_screen */,
2940     unsigned int	/* width */,
2941     unsigned int	/* height */,
2942     unsigned int*	/* width_return */,
2943     unsigned int*	/* height_return */
2944 );
2945 
2946 extern Status XQueryBestStipple(
2947     Display*		/* display */,
2948     Drawable		/* which_screen */,
2949     unsigned int	/* width */,
2950     unsigned int	/* height */,
2951     unsigned int*	/* width_return */,
2952     unsigned int*	/* height_return */
2953 );
2954 
2955 extern Status XQueryBestTile(
2956     Display*		/* display */,
2957     Drawable		/* which_screen */,
2958     unsigned int	/* width */,
2959     unsigned int	/* height */,
2960     unsigned int*	/* width_return */,
2961     unsigned int*	/* height_return */
2962 );
2963 
2964 extern int XQueryColor(
2965     Display*		/* display */,
2966     Colormap		/* colormap */,
2967     XColor*		/* def_in_out */
2968 );
2969 
2970 extern int XQueryColors(
2971     Display*		/* display */,
2972     Colormap		/* colormap */,
2973     XColor*		/* defs_in_out */,
2974     int			/* ncolors */
2975 );
2976 
2977 extern Bool XQueryExtension(
2978     Display*		/* display */,
2979     _Xconst char*	/* name */,
2980     int*		/* major_opcode_return */,
2981     int*		/* first_event_return */,
2982     int*		/* first_error_return */
2983 );
2984 
2985 extern int XQueryKeymap(
2986     Display*		/* display */,
2987     char [32]		/* keys_return */
2988 );
2989 
2990 extern Bool XQueryPointer(
2991     Display*		/* display */,
2992     Window		/* w */,
2993     Window*		/* root_return */,
2994     Window*		/* child_return */,
2995     int*		/* root_x_return */,
2996     int*		/* root_y_return */,
2997     int*		/* win_x_return */,
2998     int*		/* win_y_return */,
2999     unsigned int*       /* mask_return */
3000 );
3001 
3002 extern int XQueryTextExtents(
3003     Display*		/* display */,
3004     XID			/* font_ID */,
3005     _Xconst char*	/* string */,
3006     int			/* nchars */,
3007     int*		/* direction_return */,
3008     int*		/* font_ascent_return */,
3009     int*		/* font_descent_return */,
3010     XCharStruct*	/* overall_return */
3011 );
3012 
3013 extern int XQueryTextExtents16(
3014     Display*		/* display */,
3015     XID			/* font_ID */,
3016     _Xconst XChar2b*	/* string */,
3017     int			/* nchars */,
3018     int*		/* direction_return */,
3019     int*		/* font_ascent_return */,
3020     int*		/* font_descent_return */,
3021     XCharStruct*	/* overall_return */
3022 );
3023 
3024 extern Status XQueryTree(
3025     Display*		/* display */,
3026     Window		/* w */,
3027     Window*		/* root_return */,
3028     Window*		/* parent_return */,
3029     Window**		/* children_return */,
3030     unsigned int*	/* nchildren_return */
3031 );
3032 
3033 extern int XRaiseWindow(
3034     Display*		/* display */,
3035     Window		/* w */
3036 );
3037 
3038 extern int XReadBitmapFile(
3039     Display*		/* display */,
3040     Drawable 		/* d */,
3041     _Xconst char*	/* filename */,
3042     unsigned int*	/* width_return */,
3043     unsigned int*	/* height_return */,
3044     Pixmap*		/* bitmap_return */,
3045     int*		/* x_hot_return */,
3046     int*		/* y_hot_return */
3047 );
3048 
3049 extern int XReadBitmapFileData(
3050     _Xconst char*	/* filename */,
3051     unsigned int*	/* width_return */,
3052     unsigned int*	/* height_return */,
3053     unsigned char**	/* data_return */,
3054     int*		/* x_hot_return */,
3055     int*		/* y_hot_return */
3056 );
3057 
3058 extern int XRebindKeysym(
3059     Display*		/* display */,
3060     KeySym		/* keysym */,
3061     KeySym*		/* list */,
3062     int			/* mod_count */,
3063     _Xconst unsigned char*	/* string */,
3064     int			/* bytes_string */
3065 );
3066 
3067 extern int XRecolorCursor(
3068     Display*		/* display */,
3069     Cursor		/* cursor */,
3070     XColor*		/* foreground_color */,
3071     XColor*		/* background_color */
3072 );
3073 
3074 extern int XRefreshKeyboardMapping(
3075     XMappingEvent*	/* event_map */
3076 );
3077 
3078 extern int XRemoveFromSaveSet(
3079     Display*		/* display */,
3080     Window		/* w */
3081 );
3082 
3083 extern int XRemoveHost(
3084     Display*		/* display */,
3085     XHostAddress*	/* host */
3086 );
3087 
3088 extern int XRemoveHosts(
3089     Display*		/* display */,
3090     XHostAddress*	/* hosts */,
3091     int			/* num_hosts */
3092 );
3093 
3094 extern int XReparentWindow(
3095     Display*		/* display */,
3096     Window		/* w */,
3097     Window		/* parent */,
3098     int			/* x */,
3099     int			/* y */
3100 );
3101 
3102 extern int XResetScreenSaver(
3103     Display*		/* display */
3104 );
3105 
3106 extern int XResizeWindow(
3107     Display*		/* display */,
3108     Window		/* w */,
3109     unsigned int	/* width */,
3110     unsigned int	/* height */
3111 );
3112 
3113 extern int XRestackWindows(
3114     Display*		/* display */,
3115     Window*		/* windows */,
3116     int			/* nwindows */
3117 );
3118 
3119 extern int XRotateBuffers(
3120     Display*		/* display */,
3121     int			/* rotate */
3122 );
3123 
3124 extern int XRotateWindowProperties(
3125     Display*		/* display */,
3126     Window		/* w */,
3127     Atom*		/* properties */,
3128     int			/* num_prop */,
3129     int			/* npositions */
3130 );
3131 
3132 extern int XScreenCount(
3133     Display*		/* display */
3134 );
3135 
3136 extern int XSelectInput(
3137     Display*		/* display */,
3138     Window		/* w */,
3139     long		/* event_mask */
3140 );
3141 
3142 extern Status XSendEvent(
3143     Display*		/* display */,
3144     Window		/* w */,
3145     Bool		/* propagate */,
3146     long		/* event_mask */,
3147     XEvent*		/* event_send */
3148 );
3149 
3150 extern int XSetAccessControl(
3151     Display*		/* display */,
3152     int			/* mode */
3153 );
3154 
3155 extern int XSetArcMode(
3156     Display*		/* display */,
3157     GC			/* gc */,
3158     int			/* arc_mode */
3159 );
3160 
3161 extern int XSetBackground(
3162     Display*		/* display */,
3163     GC			/* gc */,
3164     unsigned long	/* background */
3165 );
3166 
3167 extern int XSetClipMask(
3168     Display*		/* display */,
3169     GC			/* gc */,
3170     Pixmap		/* pixmap */
3171 );
3172 
3173 extern int XSetClipOrigin(
3174     Display*		/* display */,
3175     GC			/* gc */,
3176     int			/* clip_x_origin */,
3177     int			/* clip_y_origin */
3178 );
3179 
3180 extern int XSetClipRectangles(
3181     Display*		/* display */,
3182     GC			/* gc */,
3183     int			/* clip_x_origin */,
3184     int			/* clip_y_origin */,
3185     XRectangle*		/* rectangles */,
3186     int			/* n */,
3187     int			/* ordering */
3188 );
3189 
3190 extern int XSetCloseDownMode(
3191     Display*		/* display */,
3192     int			/* close_mode */
3193 );
3194 
3195 extern int XSetCommand(
3196     Display*		/* display */,
3197     Window		/* w */,
3198     char**		/* argv */,
3199     int			/* argc */
3200 );
3201 
3202 extern int XSetDashes(
3203     Display*		/* display */,
3204     GC			/* gc */,
3205     int			/* dash_offset */,
3206     _Xconst char*	/* dash_list */,
3207     int			/* n */
3208 );
3209 
3210 extern int XSetFillRule(
3211     Display*		/* display */,
3212     GC			/* gc */,
3213     int			/* fill_rule */
3214 );
3215 
3216 extern int XSetFillStyle(
3217     Display*		/* display */,
3218     GC			/* gc */,
3219     int			/* fill_style */
3220 );
3221 
3222 extern int XSetFont(
3223     Display*		/* display */,
3224     GC			/* gc */,
3225     Font		/* font */
3226 );
3227 
3228 extern int XSetFontPath(
3229     Display*		/* display */,
3230     char**		/* directories */,
3231     int			/* ndirs */
3232 );
3233 
3234 extern int XSetForeground(
3235     Display*		/* display */,
3236     GC			/* gc */,
3237     unsigned long	/* foreground */
3238 );
3239 
3240 extern int XSetFunction(
3241     Display*		/* display */,
3242     GC			/* gc */,
3243     int			/* function */
3244 );
3245 
3246 extern int XSetGraphicsExposures(
3247     Display*		/* display */,
3248     GC			/* gc */,
3249     Bool		/* graphics_exposures */
3250 );
3251 
3252 extern int XSetIconName(
3253     Display*		/* display */,
3254     Window		/* w */,
3255     _Xconst char*	/* icon_name */
3256 );
3257 
3258 extern int XSetInputFocus(
3259     Display*		/* display */,
3260     Window		/* focus */,
3261     int			/* revert_to */,
3262     Time		/* time */
3263 );
3264 
3265 extern int XSetLineAttributes(
3266     Display*		/* display */,
3267     GC			/* gc */,
3268     unsigned int	/* line_width */,
3269     int			/* line_style */,
3270     int			/* cap_style */,
3271     int			/* join_style */
3272 );
3273 
3274 extern int XSetModifierMapping(
3275     Display*		/* display */,
3276     XModifierKeymap*	/* modmap */
3277 );
3278 
3279 extern int XSetPlaneMask(
3280     Display*		/* display */,
3281     GC			/* gc */,
3282     unsigned long	/* plane_mask */
3283 );
3284 
3285 extern int XSetPointerMapping(
3286     Display*		/* display */,
3287     _Xconst unsigned char*	/* map */,
3288     int			/* nmap */
3289 );
3290 
3291 extern int XSetScreenSaver(
3292     Display*		/* display */,
3293     int			/* timeout */,
3294     int			/* interval */,
3295     int			/* prefer_blanking */,
3296     int			/* allow_exposures */
3297 );
3298 
3299 extern int XSetSelectionOwner(
3300     Display*		/* display */,
3301     Atom	        /* selection */,
3302     Window		/* owner */,
3303     Time		/* time */
3304 );
3305 
3306 extern int XSetState(
3307     Display*		/* display */,
3308     GC			/* gc */,
3309     unsigned long 	/* foreground */,
3310     unsigned long	/* background */,
3311     int			/* function */,
3312     unsigned long	/* plane_mask */
3313 );
3314 
3315 extern int XSetStipple(
3316     Display*		/* display */,
3317     GC			/* gc */,
3318     Pixmap		/* stipple */
3319 );
3320 
3321 extern int XSetSubwindowMode(
3322     Display*		/* display */,
3323     GC			/* gc */,
3324     int			/* subwindow_mode */
3325 );
3326 
3327 extern int XSetTSOrigin(
3328     Display*		/* display */,
3329     GC			/* gc */,
3330     int			/* ts_x_origin */,
3331     int			/* ts_y_origin */
3332 );
3333 
3334 extern int XSetTile(
3335     Display*		/* display */,
3336     GC			/* gc */,
3337     Pixmap		/* tile */
3338 );
3339 
3340 extern int XSetWindowBackground(
3341     Display*		/* display */,
3342     Window		/* w */,
3343     unsigned long	/* background_pixel */
3344 );
3345 
3346 extern int XSetWindowBackgroundPixmap(
3347     Display*		/* display */,
3348     Window		/* w */,
3349     Pixmap		/* background_pixmap */
3350 );
3351 
3352 extern int XSetWindowBorder(
3353     Display*		/* display */,
3354     Window		/* w */,
3355     unsigned long	/* border_pixel */
3356 );
3357 
3358 extern int XSetWindowBorderPixmap(
3359     Display*		/* display */,
3360     Window		/* w */,
3361     Pixmap		/* border_pixmap */
3362 );
3363 
3364 extern int XSetWindowBorderWidth(
3365     Display*		/* display */,
3366     Window		/* w */,
3367     unsigned int	/* width */
3368 );
3369 
3370 extern int XSetWindowColormap(
3371     Display*		/* display */,
3372     Window		/* w */,
3373     Colormap		/* colormap */
3374 );
3375 
3376 extern int XStoreBuffer(
3377     Display*		/* display */,
3378     _Xconst char*	/* bytes */,
3379     int			/* nbytes */,
3380     int			/* buffer */
3381 );
3382 
3383 extern int XStoreBytes(
3384     Display*		/* display */,
3385     _Xconst char*	/* bytes */,
3386     int			/* nbytes */
3387 );
3388 
3389 extern int XStoreColor(
3390     Display*		/* display */,
3391     Colormap		/* colormap */,
3392     XColor*		/* color */
3393 );
3394 
3395 extern int XStoreColors(
3396     Display*		/* display */,
3397     Colormap		/* colormap */,
3398     XColor*		/* color */,
3399     int			/* ncolors */
3400 );
3401 
3402 extern int XStoreName(
3403     Display*		/* display */,
3404     Window		/* w */,
3405     _Xconst char*	/* window_name */
3406 );
3407 
3408 extern int XStoreNamedColor(
3409     Display*		/* display */,
3410     Colormap		/* colormap */,
3411     _Xconst char*	/* color */,
3412     unsigned long	/* pixel */,
3413     int			/* flags */
3414 );
3415 
3416 extern int XSync(
3417     Display*		/* display */,
3418     Bool		/* discard */
3419 );
3420 
3421 extern int XTextExtents(
3422     XFontStruct*	/* font_struct */,
3423     _Xconst char*	/* string */,
3424     int			/* nchars */,
3425     int*		/* direction_return */,
3426     int*		/* font_ascent_return */,
3427     int*		/* font_descent_return */,
3428     XCharStruct*	/* overall_return */
3429 );
3430 
3431 extern int XTextExtents16(
3432     XFontStruct*	/* font_struct */,
3433     _Xconst XChar2b*	/* string */,
3434     int			/* nchars */,
3435     int*		/* direction_return */,
3436     int*		/* font_ascent_return */,
3437     int*		/* font_descent_return */,
3438     XCharStruct*	/* overall_return */
3439 );
3440 
3441 extern int XTextWidth(
3442     XFontStruct*	/* font_struct */,
3443     _Xconst char*	/* string */,
3444     int			/* count */
3445 );
3446 
3447 extern int XTextWidth16(
3448     XFontStruct*	/* font_struct */,
3449     _Xconst XChar2b*	/* string */,
3450     int			/* count */
3451 );
3452 
3453 extern Bool XTranslateCoordinates(
3454     Display*		/* display */,
3455     Window		/* src_w */,
3456     Window		/* dest_w */,
3457     int			/* src_x */,
3458     int			/* src_y */,
3459     int*		/* dest_x_return */,
3460     int*		/* dest_y_return */,
3461     Window*		/* child_return */
3462 );
3463 
3464 extern int XUndefineCursor(
3465     Display*		/* display */,
3466     Window		/* w */
3467 );
3468 
3469 extern int XUngrabButton(
3470     Display*		/* display */,
3471     unsigned int	/* button */,
3472     unsigned int	/* modifiers */,
3473     Window		/* grab_window */
3474 );
3475 
3476 extern int XUngrabKey(
3477     Display*		/* display */,
3478     int			/* keycode */,
3479     unsigned int	/* modifiers */,
3480     Window		/* grab_window */
3481 );
3482 
3483 extern int XUngrabKeyboard(
3484     Display*		/* display */,
3485     Time		/* time */
3486 );
3487 
3488 extern int XUngrabPointer(
3489     Display*		/* display */,
3490     Time		/* time */
3491 );
3492 
3493 extern int XUngrabServer(
3494     Display*		/* display */
3495 );
3496 
3497 extern int XUninstallColormap(
3498     Display*		/* display */,
3499     Colormap		/* colormap */
3500 );
3501 
3502 extern int XUnloadFont(
3503     Display*		/* display */,
3504     Font		/* font */
3505 );
3506 
3507 extern int XUnmapSubwindows(
3508     Display*		/* display */,
3509     Window		/* w */
3510 );
3511 
3512 extern int XUnmapWindow(
3513     Display*		/* display */,
3514     Window		/* w */
3515 );
3516 
3517 extern int XVendorRelease(
3518     Display*		/* display */
3519 );
3520 
3521 extern int XWarpPointer(
3522     Display*		/* display */,
3523     Window		/* src_w */,
3524     Window		/* dest_w */,
3525     int			/* src_x */,
3526     int			/* src_y */,
3527     unsigned int	/* src_width */,
3528     unsigned int	/* src_height */,
3529     int			/* dest_x */,
3530     int			/* dest_y */
3531 );
3532 
3533 extern int XWidthMMOfScreen(
3534     Screen*		/* screen */
3535 );
3536 
3537 extern int XWidthOfScreen(
3538     Screen*		/* screen */
3539 );
3540 
3541 extern int XWindowEvent(
3542     Display*		/* display */,
3543     Window		/* w */,
3544     long		/* event_mask */,
3545     XEvent*		/* event_return */
3546 );
3547 
3548 extern int XWriteBitmapFile(
3549     Display*		/* display */,
3550     _Xconst char*	/* filename */,
3551     Pixmap		/* bitmap */,
3552     unsigned int	/* width */,
3553     unsigned int	/* height */,
3554     int			/* x_hot */,
3555     int			/* y_hot */
3556 );
3557 
3558 extern Bool XSupportsLocale (void);
3559 
3560 extern char *XSetLocaleModifiers(
3561     const char*		/* modifier_list */
3562 );
3563 
3564 extern XOM XOpenOM(
3565     Display*			/* display */,
3566     struct _XrmHashBucketRec*	/* rdb */,
3567     _Xconst char*		/* res_name */,
3568     _Xconst char*		/* res_class */
3569 );
3570 
3571 extern Status XCloseOM(
3572     XOM			/* om */
3573 );
3574 
3575 extern char *XSetOMValues(
3576     XOM			/* om */,
3577     ...
3578 ) _X_SENTINEL(0);
3579 
3580 extern char *XGetOMValues(
3581     XOM			/* om */,
3582     ...
3583 ) _X_SENTINEL(0);
3584 
3585 extern Display *XDisplayOfOM(
3586     XOM			/* om */
3587 );
3588 
3589 extern char *XLocaleOfOM(
3590     XOM			/* om */
3591 );
3592 
3593 extern XOC XCreateOC(
3594     XOM			/* om */,
3595     ...
3596 ) _X_SENTINEL(0);
3597 
3598 extern void XDestroyOC(
3599     XOC			/* oc */
3600 );
3601 
3602 extern XOM XOMOfOC(
3603     XOC			/* oc */
3604 );
3605 
3606 extern char *XSetOCValues(
3607     XOC			/* oc */,
3608     ...
3609 ) _X_SENTINEL(0);
3610 
3611 extern char *XGetOCValues(
3612     XOC			/* oc */,
3613     ...
3614 ) _X_SENTINEL(0);
3615 
3616 extern XFontSet XCreateFontSet(
3617     Display*		/* display */,
3618     _Xconst char*	/* base_font_name_list */,
3619     char***		/* missing_charset_list */,
3620     int*		/* missing_charset_count */,
3621     char**		/* def_string */
3622 );
3623 
3624 extern void XFreeFontSet(
3625     Display*		/* display */,
3626     XFontSet		/* font_set */
3627 );
3628 
3629 extern int XFontsOfFontSet(
3630     XFontSet		/* font_set */,
3631     XFontStruct***	/* font_struct_list */,
3632     char***		/* font_name_list */
3633 );
3634 
3635 extern char *XBaseFontNameListOfFontSet(
3636     XFontSet		/* font_set */
3637 );
3638 
3639 extern char *XLocaleOfFontSet(
3640     XFontSet		/* font_set */
3641 );
3642 
3643 extern Bool XContextDependentDrawing(
3644     XFontSet		/* font_set */
3645 );
3646 
3647 extern Bool XDirectionalDependentDrawing(
3648     XFontSet		/* font_set */
3649 );
3650 
3651 extern Bool XContextualDrawing(
3652     XFontSet		/* font_set */
3653 );
3654 
3655 extern XFontSetExtents *XExtentsOfFontSet(
3656     XFontSet		/* font_set */
3657 );
3658 
3659 extern int XmbTextEscapement(
3660     XFontSet		/* font_set */,
3661     _Xconst char*	/* text */,
3662     int			/* bytes_text */
3663 );
3664 
3665 extern int XwcTextEscapement(
3666     XFontSet		/* font_set */,
3667     _Xconst wchar_t*	/* text */,
3668     int			/* num_wchars */
3669 );
3670 
3671 extern int Xutf8TextEscapement(
3672     XFontSet		/* font_set */,
3673     _Xconst char*	/* text */,
3674     int			/* bytes_text */
3675 );
3676 
3677 extern int XmbTextExtents(
3678     XFontSet		/* font_set */,
3679     _Xconst char*	/* text */,
3680     int			/* bytes_text */,
3681     XRectangle*		/* overall_ink_return */,
3682     XRectangle*		/* overall_logical_return */
3683 );
3684 
3685 extern int XwcTextExtents(
3686     XFontSet		/* font_set */,
3687     _Xconst wchar_t*	/* text */,
3688     int			/* num_wchars */,
3689     XRectangle*		/* overall_ink_return */,
3690     XRectangle*		/* overall_logical_return */
3691 );
3692 
3693 extern int Xutf8TextExtents(
3694     XFontSet		/* font_set */,
3695     _Xconst char*	/* text */,
3696     int			/* bytes_text */,
3697     XRectangle*		/* overall_ink_return */,
3698     XRectangle*		/* overall_logical_return */
3699 );
3700 
3701 extern Status XmbTextPerCharExtents(
3702     XFontSet		/* font_set */,
3703     _Xconst char*	/* text */,
3704     int			/* bytes_text */,
3705     XRectangle*		/* ink_extents_buffer */,
3706     XRectangle*		/* logical_extents_buffer */,
3707     int			/* buffer_size */,
3708     int*		/* num_chars */,
3709     XRectangle*		/* overall_ink_return */,
3710     XRectangle*		/* overall_logical_return */
3711 );
3712 
3713 extern Status XwcTextPerCharExtents(
3714     XFontSet		/* font_set */,
3715     _Xconst wchar_t*	/* text */,
3716     int			/* num_wchars */,
3717     XRectangle*		/* ink_extents_buffer */,
3718     XRectangle*		/* logical_extents_buffer */,
3719     int			/* buffer_size */,
3720     int*		/* num_chars */,
3721     XRectangle*		/* overall_ink_return */,
3722     XRectangle*		/* overall_logical_return */
3723 );
3724 
3725 extern Status Xutf8TextPerCharExtents(
3726     XFontSet		/* font_set */,
3727     _Xconst char*	/* text */,
3728     int			/* bytes_text */,
3729     XRectangle*		/* ink_extents_buffer */,
3730     XRectangle*		/* logical_extents_buffer */,
3731     int			/* buffer_size */,
3732     int*		/* num_chars */,
3733     XRectangle*		/* overall_ink_return */,
3734     XRectangle*		/* overall_logical_return */
3735 );
3736 
3737 extern void XmbDrawText(
3738     Display*		/* display */,
3739     Drawable		/* d */,
3740     GC			/* gc */,
3741     int			/* x */,
3742     int			/* y */,
3743     XmbTextItem*	/* text_items */,
3744     int			/* nitems */
3745 );
3746 
3747 extern void XwcDrawText(
3748     Display*		/* display */,
3749     Drawable		/* d */,
3750     GC			/* gc */,
3751     int			/* x */,
3752     int			/* y */,
3753     XwcTextItem*	/* text_items */,
3754     int			/* nitems */
3755 );
3756 
3757 extern void Xutf8DrawText(
3758     Display*		/* display */,
3759     Drawable		/* d */,
3760     GC			/* gc */,
3761     int			/* x */,
3762     int			/* y */,
3763     XmbTextItem*	/* text_items */,
3764     int			/* nitems */
3765 );
3766 
3767 extern void XmbDrawString(
3768     Display*		/* display */,
3769     Drawable		/* d */,
3770     XFontSet		/* font_set */,
3771     GC			/* gc */,
3772     int			/* x */,
3773     int			/* y */,
3774     _Xconst char*	/* text */,
3775     int			/* bytes_text */
3776 );
3777 
3778 extern void XwcDrawString(
3779     Display*		/* display */,
3780     Drawable		/* d */,
3781     XFontSet		/* font_set */,
3782     GC			/* gc */,
3783     int			/* x */,
3784     int			/* y */,
3785     _Xconst wchar_t*	/* text */,
3786     int			/* num_wchars */
3787 );
3788 
3789 extern void Xutf8DrawString(
3790     Display*		/* display */,
3791     Drawable		/* d */,
3792     XFontSet		/* font_set */,
3793     GC			/* gc */,
3794     int			/* x */,
3795     int			/* y */,
3796     _Xconst char*	/* text */,
3797     int			/* bytes_text */
3798 );
3799 
3800 extern void XmbDrawImageString(
3801     Display*		/* display */,
3802     Drawable		/* d */,
3803     XFontSet		/* font_set */,
3804     GC			/* gc */,
3805     int			/* x */,
3806     int			/* y */,
3807     _Xconst char*	/* text */,
3808     int			/* bytes_text */
3809 );
3810 
3811 extern void XwcDrawImageString(
3812     Display*		/* display */,
3813     Drawable		/* d */,
3814     XFontSet		/* font_set */,
3815     GC			/* gc */,
3816     int			/* x */,
3817     int			/* y */,
3818     _Xconst wchar_t*	/* text */,
3819     int			/* num_wchars */
3820 );
3821 
3822 extern void Xutf8DrawImageString(
3823     Display*		/* display */,
3824     Drawable		/* d */,
3825     XFontSet		/* font_set */,
3826     GC			/* gc */,
3827     int			/* x */,
3828     int			/* y */,
3829     _Xconst char*	/* text */,
3830     int			/* bytes_text */
3831 );
3832 
3833 extern XIM XOpenIM(
3834     Display*			/* dpy */,
3835     struct _XrmHashBucketRec*	/* rdb */,
3836     char*			/* res_name */,
3837     char*			/* res_class */
3838 );
3839 
3840 extern Status XCloseIM(
3841     XIM /* im */
3842 );
3843 
3844 extern char *XGetIMValues(
3845     XIM /* im */, ...
3846 ) _X_SENTINEL(0);
3847 
3848 extern char *XSetIMValues(
3849     XIM /* im */, ...
3850 ) _X_SENTINEL(0);
3851 
3852 extern Display *XDisplayOfIM(
3853     XIM /* im */
3854 );
3855 
3856 extern char *XLocaleOfIM(
3857     XIM /* im*/
3858 );
3859 
3860 extern XIC XCreateIC(
3861     XIM /* im */, ...
3862 ) _X_SENTINEL(0);
3863 
3864 extern void XDestroyIC(
3865     XIC /* ic */
3866 );
3867 
3868 extern void XSetICFocus(
3869     XIC /* ic */
3870 );
3871 
3872 extern void XUnsetICFocus(
3873     XIC /* ic */
3874 );
3875 
3876 extern wchar_t *XwcResetIC(
3877     XIC /* ic */
3878 );
3879 
3880 extern char *XmbResetIC(
3881     XIC /* ic */
3882 );
3883 
3884 extern char *Xutf8ResetIC(
3885     XIC /* ic */
3886 );
3887 
3888 extern char *XSetICValues(
3889     XIC /* ic */, ...
3890 ) _X_SENTINEL(0);
3891 
3892 extern char *XGetICValues(
3893     XIC /* ic */, ...
3894 ) _X_SENTINEL(0);
3895 
3896 extern XIM XIMOfIC(
3897     XIC /* ic */
3898 );
3899 
3900 extern Bool XFilterEvent(
3901     XEvent*	/* event */,
3902     Window	/* window */
3903 );
3904 
3905 extern int XmbLookupString(
3906     XIC			/* ic */,
3907     XKeyPressedEvent*	/* event */,
3908     char*		/* buffer_return */,
3909     int			/* bytes_buffer */,
3910     KeySym*		/* keysym_return */,
3911     Status*		/* status_return */
3912 );
3913 
3914 extern int XwcLookupString(
3915     XIC			/* ic */,
3916     XKeyPressedEvent*	/* event */,
3917     wchar_t*		/* buffer_return */,
3918     int			/* wchars_buffer */,
3919     KeySym*		/* keysym_return */,
3920     Status*		/* status_return */
3921 );
3922 
3923 extern int Xutf8LookupString(
3924     XIC			/* ic */,
3925     XKeyPressedEvent*	/* event */,
3926     char*		/* buffer_return */,
3927     int			/* bytes_buffer */,
3928     KeySym*		/* keysym_return */,
3929     Status*		/* status_return */
3930 );
3931 
3932 extern XVaNestedList XVaCreateNestedList(
3933     int /*unused*/, ...
3934 ) _X_SENTINEL(0);
3935 
3936 /* internal connections for IMs */
3937 
3938 extern Bool XRegisterIMInstantiateCallback(
3939     Display*			/* dpy */,
3940     struct _XrmHashBucketRec*	/* rdb */,
3941     char*			/* res_name */,
3942     char*			/* res_class */,
3943     XIDProc			/* callback */,
3944     XPointer			/* client_data */
3945 );
3946 
3947 extern Bool XUnregisterIMInstantiateCallback(
3948     Display*			/* dpy */,
3949     struct _XrmHashBucketRec*	/* rdb */,
3950     char*			/* res_name */,
3951     char*			/* res_class */,
3952     XIDProc			/* callback */,
3953     XPointer			/* client_data */
3954 );
3955 
3956 typedef void (*XConnectionWatchProc)(
3957     Display*			/* dpy */,
3958     XPointer			/* client_data */,
3959     int				/* fd */,
3960     Bool			/* opening */,	 /* open or close flag */
3961     XPointer*			/* watch_data */ /* open sets, close uses */
3962 );
3963 
3964 
3965 extern Status XInternalConnectionNumbers(
3966     Display*			/* dpy */,
3967     int**			/* fd_return */,
3968     int*			/* count_return */
3969 );
3970 
3971 extern void XProcessInternalConnection(
3972     Display*			/* dpy */,
3973     int				/* fd */
3974 );
3975 
3976 extern Status XAddConnectionWatch(
3977     Display*			/* dpy */,
3978     XConnectionWatchProc	/* callback */,
3979     XPointer			/* client_data */
3980 );
3981 
3982 extern void XRemoveConnectionWatch(
3983     Display*			/* dpy */,
3984     XConnectionWatchProc	/* callback */,
3985     XPointer			/* client_data */
3986 );
3987 
3988 extern void XSetAuthorization(
3989     char *			/* name */,
3990     int				/* namelen */,
3991     char *			/* data */,
3992     int				/* datalen */
3993 );
3994 
3995 extern int _Xmbtowc(
3996     wchar_t *			/* wstr */,
3997 #ifdef ISC
3998     char const *		/* str */,
3999     size_t			/* len */
4000 #else
4001     char *			/* str */,
4002     int				/* len */
4003 #endif
4004 );
4005 
4006 extern int _Xwctomb(
4007     char *			/* str */,
4008     wchar_t			/* wc */
4009 );
4010 
4011 extern Bool XGetEventData(
4012     Display*			/* dpy */,
4013     XGenericEventCookie*	/* cookie*/
4014 );
4015 
4016 extern void XFreeEventData(
4017     Display*			/* dpy */,
4018     XGenericEventCookie*	/* cookie*/
4019 );
4020 
4021 _XFUNCPROTOEND
4022 
4023 #endif /* _XLIB_H_ */
4024