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