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