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