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