1 /********************************************************************/
2 /*                                                                  */
3 /*  x11_x.h       X11 interfaces used by Seed7.                     */
4 /*  Copyright (C) 1989 - 2021  Thomas Mertes                        */
5 /*                                                                  */
6 /*  This file is part of the Seed7 Runtime Library.                 */
7 /*                                                                  */
8 /*  The Seed7 Runtime Library is free software; you can             */
9 /*  redistribute it and/or modify it under the terms of the GNU     */
10 /*  Lesser General Public License as published by the Free Software */
11 /*  Foundation; either version 2.1 of the License, or (at your      */
12 /*  option) any later version.                                      */
13 /*                                                                  */
14 /*  The Seed7 Runtime Library is distributed in the hope that it    */
15 /*  will be useful, but WITHOUT ANY WARRANTY; without even the      */
16 /*  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR */
17 /*  PURPOSE.  See the GNU Lesser General Public License for more    */
18 /*  details.                                                        */
19 /*                                                                  */
20 /*  You should have received a copy of the GNU Lesser General       */
21 /*  Public License along with this program; if not, write to the    */
22 /*  Free Software Foundation, Inc., 51 Franklin Street,             */
23 /*  Fifth Floor, Boston, MA  02110-1301, USA.                       */
24 /*                                                                  */
25 /*  Module: Seed7 Runtime Library                                   */
26 /*  File: seed7/src/x11_x.h                                         */
27 /*  Changes: 2019  Thomas Mertes                                    */
28 /*  Content: X11 interfaces used by Seed7.                          */
29 /*                                                                  */
30 /********************************************************************/
31 
32 #define Bool int
33 #define True   1
34 #define False  0
35 
36 #define None  0L
37 
38 #define ArcChord     0
39 #define ArcPieSlice  1
40 
41 #define CoordModeOrigin    0
42 #define CoordModePrevious  1
43 
44 #define Complex    0
45 #define Nonconvex  1
46 #define Convex     2
47 
48 #define NotUseful   0
49 #define WhenMapped  1
50 #define Always      2
51 
52 #define PropModeReplace  0
53 
54 #define XYBitmap  0
55 #define XYPixmap  1
56 #define ZPixmap   2
57 
58 #define ForgetGravity      0
59 #define NorthWestGravity   1
60 #define NorthGravity       2
61 #define NorthEastGravity   3
62 #define WestGravity        4
63 #define CenterGravity      5
64 #define EastGravity        6
65 #define SouthWestGravity   7
66 #define SouthGravity       8
67 #define SouthEastGravity   9
68 #define StaticGravity     10
69 
70 #define StaticGray   0
71 #define GrayScale    1
72 #define StaticColor  2
73 #define PseudoColor  3
74 #define TrueColor    4
75 #define DirectColor  5
76 
77 #define GXclear         0x0
78 #define GXand           0x1
79 #define GXandReverse    0x2
80 #define GXcopy          0x3
81 #define GXandInverted   0x4
82 #define GXnoop          0x5
83 #define GXxor           0x6
84 #define GXor            0x7
85 #define GXnor           0x8
86 #define GXequiv         0x9
87 #define GXinvert        0xa
88 #define GXorReverse     0xb
89 #define GXcopyInverted  0xc
90 #define GXorInverted    0xd
91 #define GXnand          0xe
92 #define GXset           0xf
93 
94 #define CWBackPixmap           1L
95 #define CWBackPixel            2L
96 #define CWBorderPixmap         4L
97 #define CWBorderPixel          8L
98 #define CWBitGravity          16L
99 #define CWWinGravity          32L
100 #define CWBackingStore        64L
101 #define CWBackingPlanes      128L
102 #define CWBackingPixel       256L
103 #define CWOverrideRedirect   512L
104 #define CWSaveUnder         1024L
105 #define CWEventMask         2048L
106 #define CWDontPropagate     4096L
107 #define CWColormap          8192L
108 #define CWCursor           16384L
109 
110 #define USPosition     1L
111 #define USSize         2L
112 #define PPosition      4L
113 #define PSize          8L
114 #define PMinSize      16L
115 #define PMaxSize      32L
116 #define PResizeInc    64L
117 #define PAspect      128L
118 #define PBaseSize    256L
119 #define PWinGravity  512L
120 
121 #define InputHint          1L
122 #define StateHint          2L
123 #define IconPixmapHint     4L
124 #define IconWindowHint     8L
125 #define IconPositionHint  16L
126 #define IconMaskHint      32L
127 #define WindowGroupHint   64L
128 #define AllHints (InputHint|StateHint|IconPixmapHint|IconWindowHint|IconPositionHint|IconMaskHint|WindowGroupHint)
129 
130 #define QueuedAlready       0
131 #define QueuedAfterReading  1
132 #define QueuedAfterFlush    2
133 
134 #define KeyPressMask              (1L<<0)
135 #define KeyReleaseMask            (1L<<1)
136 #define ButtonPressMask           (1L<<2)
137 #define ButtonReleaseMask         (1L<<3)
138 #define EnterWindowMask           (1L<<4)
139 #define LeaveWindowMask           (1L<<5)
140 #define PointerMotionMask         (1L<<6)
141 #define PointerMotionHintMask     (1L<<7)
142 #define Button1MotionMask         (1L<<8)
143 #define Button2MotionMask         (1L<<9)
144 #define Button3MotionMask         (1L<<10)
145 #define Button4MotionMask         (1L<<11)
146 #define Button5MotionMask         (1L<<12)
147 #define ButtonMotionMask          (1L<<13)
148 #define KeymapStateMask           (1L<<14)
149 #define ExposureMask              (1L<<15)
150 #define VisibilityChangeMask      (1L<<16)
151 #define StructureNotifyMask       (1L<<17)
152 #define ResizeRedirectMask        (1L<<18)
153 #define SubstructureNotifyMask    (1L<<19)
154 #define SubstructureRedirectMask  (1L<<20)
155 #define FocusChangeMask           (1L<<21)
156 #define PropertyChangeMask        (1L<<22)
157 #define ColormapChangeMask        (1L<<23)
158 
159 #define KeyPress           2
160 #define KeyRelease         3
161 #define ButtonPress        4
162 #define ButtonRelease      5
163 #define MotionNotify       6
164 #define EnterNotify        7
165 #define LeaveNotify        8
166 #define FocusIn            9
167 #define FocusOut          10
168 #define KeymapNotify      11
169 #define Expose            12
170 #define GraphicsExpose    13
171 #define NoExpose          14
172 #define VisibilityNotify  15
173 #define CreateNotify      16
174 #define DestroyNotify     17
175 #define UnmapNotify       18
176 #define MapNotify         19
177 #define MapRequest        20
178 #define ReparentNotify    21
179 #define ConfigureNotify   22
180 #define ConfigureRequest  23
181 #define GravityNotify     24
182 #define ResizeRequest     25
183 #define CirculateNotify   26
184 #define CirculateRequest  27
185 #define PropertyNotify    28
186 #define SelectionClear    29
187 #define SelectionRequest  30
188 #define SelectionNotify   31
189 #define ColormapNotify    32
190 #define ClientMessage     33
191 #define MappingNotify     34
192 #define GenericEvent      35
193 
194 #define ShiftMask     (1<<0)
195 #define LockMask      (1<<1)
196 #define ControlMask   (1<<2)
197 #define Mod1Mask      (1<<3)
198 #define Mod2Mask      (1<<4)
199 #define Mod3Mask      (1<<5)
200 #define Mod4Mask      (1<<6)
201 #define Mod5Mask      (1<<7)
202 #define Button1Mask   (1<<8)
203 #define Button2Mask   (1<<9)
204 #define Button3Mask  (1<<10)
205 #define Button4Mask  (1<<11)
206 #define Button5Mask  (1<<12)
207 
208 #define XK_ISO_Level3_Shift  0xfe03
209 #define XK_ISO_Left_Tab      0xfe20
210 
211 #define XK_dead_acute        0xfe51
212 #define XK_dead_circumflex   0xfe52
213 #define XK_dead_tilde        0xfe53
214 #define XK_dead_macron       0xfe54
215 #define XK_dead_breve        0xfe55
216 #define XK_dead_abovedot     0xfe56
217 #define XK_dead_diaeresis    0xfe57
218 #define XK_dead_abovering    0xfe58
219 #define XK_dead_doubleacute  0xfe59
220 #define XK_dead_caron        0xfe5a
221 #define XK_dead_cedilla      0xfe5b
222 
223 #define XK_BackSpace         0xff08
224 #define XK_Tab               0xff09
225 #define XK_Linefeed          0xff0a
226 #define XK_Clear             0xff0b
227 #define XK_Return            0xff0d
228 #define XK_Pause             0xff13
229 #define XK_Scroll_Lock       0xff14
230 #define XK_Sys_Req           0xff15
231 #define XK_Escape            0xff1b
232 #define XK_Delete            0xffff
233 
234 #define XK_Home              0xff50
235 #define XK_Left              0xff51
236 #define XK_Up                0xff52
237 #define XK_Right             0xff53
238 #define XK_Down              0xff54
239 #define XK_Prior             0xff55
240 #define XK_Page_Up           0xff55
241 #define XK_Next              0xff56
242 #define XK_Page_Down         0xff56
243 #define XK_End               0xff57
244 #define XK_Begin             0xff58
245 
246 #define XK_Select            0xff60
247 #define XK_Print             0xff61
248 #define XK_Execute           0xff62
249 #define XK_Insert            0xff63
250 #define XK_Undo              0xff65
251 #define XK_Redo              0xff66
252 #define XK_Menu              0xff67
253 #define XK_Find              0xff68
254 #define XK_Cancel            0xff69
255 #define XK_Help              0xff6a
256 #define XK_Break             0xff6b
257 #define XK_Mode_switch       0xff7e
258 #define XK_script_switch     0xff7e
259 #define XK_Num_Lock          0xff7f
260 
261 #define XK_KP_Space          0xff80
262 #define XK_KP_Tab            0xff89
263 #define XK_KP_Enter          0xff8d
264 #define XK_KP_F1             0xff91
265 #define XK_KP_F2             0xff92
266 #define XK_KP_F3             0xff93
267 #define XK_KP_F4             0xff94
268 #define XK_KP_Home           0xff95
269 #define XK_KP_Left           0xff96
270 #define XK_KP_Up             0xff97
271 #define XK_KP_Right          0xff98
272 #define XK_KP_Down           0xff99
273 #define XK_KP_Prior          0xff9a
274 #define XK_KP_Page_Up        0xff9a
275 #define XK_KP_Next           0xff9b
276 #define XK_KP_Page_Down      0xff9b
277 #define XK_KP_End            0xff9c
278 #define XK_KP_Begin          0xff9d
279 #define XK_KP_Insert         0xff9e
280 #define XK_KP_Delete         0xff9f
281 #define XK_KP_Equal          0xffbd
282 #define XK_KP_Multiply       0xffaa
283 #define XK_KP_Add            0xffab
284 #define XK_KP_Separator      0xffac
285 #define XK_KP_Subtract       0xffad
286 #define XK_KP_Decimal        0xffae
287 #define XK_KP_Divide         0xffaf
288 
289 #define XK_KP_0              0xffb0
290 #define XK_KP_1              0xffb1
291 #define XK_KP_2              0xffb2
292 #define XK_KP_3              0xffb3
293 #define XK_KP_4              0xffb4
294 #define XK_KP_5              0xffb5
295 #define XK_KP_6              0xffb6
296 #define XK_KP_7              0xffb7
297 #define XK_KP_8              0xffb8
298 #define XK_KP_9              0xffb9
299 
300 #define XK_F1                0xffbe
301 #define XK_F2                0xffbf
302 #define XK_F3                0xffc0
303 #define XK_F4                0xffc1
304 #define XK_F5                0xffc2
305 #define XK_F6                0xffc3
306 #define XK_F7                0xffc4
307 #define XK_F8                0xffc5
308 #define XK_F9                0xffc6
309 #define XK_F10               0xffc7
310 #define XK_F11               0xffc8
311 #define XK_F12               0xffc9
312 
313 #define XK_Shift_L           0xffe1
314 #define XK_Shift_R           0xffe2
315 #define XK_Control_L         0xffe3
316 #define XK_Control_R         0xffe4
317 #define XK_Caps_Lock         0xffe5
318 #define XK_Shift_Lock        0xffe6
319 #define XK_Meta_L            0xffe7
320 #define XK_Meta_R            0xffe8
321 #define XK_Alt_L             0xffe9
322 #define XK_Alt_R             0xffea
323 
324 #define XK_0                 0x0030
325 #define XK_1                 0x0031
326 #define XK_2                 0x0032
327 #define XK_3                 0x0033
328 #define XK_4                 0x0034
329 #define XK_5                 0x0035
330 #define XK_6                 0x0036
331 #define XK_7                 0x0037
332 #define XK_8                 0x0038
333 #define XK_9                 0x0039
334 
335 typedef struct { int dummy; } Display;
336 typedef struct { int dummy; } Screen;
337 typedef struct { int dummy; } XExtData;
338 typedef struct { int dummy; } XGCValues;
339 typedef struct { int dummy; } XImage;
340 typedef struct { int dummy; } XComposeStatus;
341 typedef struct { int dummy; } XMappingEvent;
342 
343 typedef struct { int dummy; } *GC;
344 
345 typedef int Status;
346 
347 typedef unsigned char KeyCode;
348 typedef unsigned long Time;
349 
350 typedef unsigned long Atom;
351 typedef unsigned long VisualID;
352 
353 typedef unsigned long XID;
354 
355 typedef XID Window;
356 typedef XID Pixmap;
357 typedef XID Drawable;
358 typedef XID Cursor;
359 typedef XID Colormap;
360 typedef XID KeySym;
361 
362 typedef struct {
363     short x, y;
364   } XPoint;
365 
366 typedef struct {
367     unsigned char byte1;
368     unsigned char byte2;
369   } XChar2b;
370 
371 typedef struct {
372     unsigned long pixel;
373     unsigned short red, green, blue;
374     char flags;
375     char pad;
376   } XColor;
377 
378 typedef struct {
379     XExtData *ext_data;
380     VisualID visualid;
381 #if defined(__cplusplus) || defined(c_plusplus)
382     int c_class;
383 #else
384     int class;
385 #endif
386     unsigned long red_mask, green_mask, blue_mask;
387     int bits_per_rgb;
388     int map_entries;
389   } Visual;
390 
391 typedef struct {
392     long flags;
393     int x, y;
394     int width, height;
395     int min_width, min_height;
396     int max_width, max_height;
397     int width_inc, height_inc;
398     struct {
399         int x;
400         int y;
401     } min_aspect, max_aspect;
402     int base_width, base_height;
403     int win_gravity;
404   } XSizeHints;
405 
406 typedef struct {
407     long flags;
408     Bool input;
409     int initial_state;
410     Pixmap icon_pixmap;
411     Window icon_window;
412     int icon_x, icon_y;
413     Pixmap icon_mask;
414     XID window_group;
415   } XWMHints;
416 
417 typedef struct {
418     Pixmap background_pixmap;
419     unsigned long background_pixel;
420     Pixmap border_pixmap;
421     unsigned long border_pixel;
422     int bit_gravity;
423     int win_gravity;
424     int backing_store;
425     unsigned long backing_planes;
426     unsigned long backing_pixel;
427     Bool save_under;
428     long event_mask;
429     long do_not_propagate_mask;
430     Bool override_redirect;
431     Colormap colormap;
432     Cursor cursor;
433   } XSetWindowAttributes;
434 
435 typedef struct {
436     int x, y;
437     int width, height;
438     int border_width;
439     int depth;
440     Visual *visual;
441     Window root;
442 #if defined(__cplusplus) || defined(c_plusplus)
443     int c_class;
444 #else
445     int class;
446 #endif
447     int bit_gravity;
448     int win_gravity;
449     int backing_store;
450     unsigned long backing_planes;
451     unsigned long backing_pixel;
452     Bool save_under;
453     Colormap colormap;
454     Bool map_installed;
455     int map_state;
456     long all_event_masks;
457     long your_event_mask;
458     long do_not_propagate_mask;
459     Bool override_redirect;
460     Screen *screen;
461   } XWindowAttributes;
462 
463 typedef struct {
464     int type;
465     unsigned long serial;
466     Bool send_event;
467     Display *display;
468     Window window;
469     Window root;
470     Window subwindow;
471     Time time;
472     int x, y;
473     int x_root, y_root;
474     unsigned int state;
475     unsigned int keycode;
476     Bool same_screen;
477   } XKeyEvent;
478 
479 typedef struct {
480     int type;
481     unsigned long serial;
482     Bool send_event;
483     Display *display;
484     Window window;
485     Window root;
486     Window subwindow;
487     Time time;
488     int x, y;
489     int x_root, y_root;
490     unsigned int state;
491     unsigned int button;
492     Bool same_screen;
493   } XButtonEvent;
494 
495 typedef struct {
496     int type;
497     unsigned long serial;
498     Bool send_event;
499     Display *display;
500     Window window;
501     int x, y;
502     int width, height;
503     int count;
504   } XExposeEvent;
505 
506 typedef struct {
507     int type;
508     unsigned long serial;
509     Bool send_event;
510     Display *display;
511     Window event;
512     Window window;
513     int x, y;
514     int width, height;
515     int border_width;
516     Window above;
517     Bool override_redirect;
518   } XConfigureEvent;
519 
520 typedef struct {
521     int type;
522     unsigned long serial;
523     Bool send_event;
524     Display *display;
525     Window window;
526     Atom message_type;
527     int format;
528     union {
529       char b[20];
530       short s[10];
531       long l[5];
532     } data;
533   } XClientMessageEvent;
534 
535 typedef union _XEvent {
536     int type;
537     XKeyEvent xkey;
538     XButtonEvent xbutton;
539     XExposeEvent xexpose;
540     XClientMessageEvent xclient;
541     XConfigureEvent xconfigure;
542     XMappingEvent xmapping;
543     long pad[24];
544   } XEvent;
545 
546 typedef struct {
547     int key_click_percent;
548     int bell_percent;
549     unsigned int bell_pitch, bell_duration;
550     unsigned long led_mask;
551     int global_auto_repeat;
552     char auto_repeats[32];
553   } XKeyboardState;
554 
555 #define XA_ATOM ((Atom) 4)
556 
557 
558 #define BlackPixel(dpy, scr)      XBlackPixel(dpy, scr)
559 #define DefaultColormap(dpy, scr) XDefaultColormap(dpy, scr)
560 #define DefaultDepth(dpy, scr)    XDefaultDepth(dpy, scr)
561 #define DefaultRootWindow(dpy)    XDefaultRootWindow(dpy)
562 #define DefaultScreen(dpy)        XDefaultScreen(dpy)
563 #define DoesBackingStore(scr)     XDoesBackingStore(scr)
564 #define ScreenOfDisplay(dpy, scr) XScreenOfDisplay(dpy, scr)
565 #define WhitePixel(dpy, scr)      XWhitePixel(dpy, scr)
566 
567 
568 extern Status XAllocColor (Display *display,
569                            Colormap colormap,
570                            XColor *screen_in_out);
571 extern Status XAllocColorCells (Display *display,
572                                 Colormap colormap,
573                                 Bool contig,
574                                 unsigned long *plane_masks_return,
575                                 unsigned int nplanes,
576                                 unsigned long *pixels_return,
577                                 unsigned int npixels);
578 extern unsigned long XBlackPixel (Display *display,
579                                   int screen_number);
580 extern int XChangeProperty (Display *display,
581                             Window window,
582                             Atom property,
583                             Atom type,
584                             int format,
585                             int mode,
586                             const unsigned char *data,
587                             int nelements);
588 extern int XChangeWindowAttributes (Display *display,
589                                     Window window,
590                                     unsigned long valuemask,
591                                     XSetWindowAttributes *attributes);
592 extern int XCopyArea (Display *display,
593                       Drawable src,
594                       Drawable dest,
595                       GC gc,
596                       int src_x,
597                       int src_y,
598                       unsigned int width,
599                       unsigned int height,
600                       int dest_x,
601                       int dest_y);
602 extern int XCopyPlane (Display *display,
603                        Drawable src,
604                        Drawable dest,
605                        GC gc,
606                        int src_x,
607                        int src_y,
608                        unsigned int width,
609                        unsigned int height,
610                        int dest_x,
611                        int dest_y,
612                        unsigned long plane);
613 extern Pixmap XCreateBitmapFromData (Display *display,
614                                      Drawable drawable,
615                                      const char *data,
616                                      unsigned int width,
617                                      unsigned int height);
618 extern GC XCreateGC (Display *display,
619                      Drawable drawable,
620                      unsigned long valuemask,
621                      XGCValues *values);
622 extern XImage *XCreateImage (Display *display,
623                              Visual *visual,
624                              unsigned int depth,
625                              int format,
626                              int offset,
627                              char *data,
628                              unsigned int width,
629                              unsigned int height,
630                              int bitmap_pad,
631                              int bytes_per_line);
632 extern Pixmap XCreatePixmap (Display *display,
633                              Drawable drawable,
634                              unsigned int width,
635                              unsigned int height,
636                              unsigned int depth);
637 extern Cursor XCreatePixmapCursor (Display *display,
638                                    Pixmap source,
639                                    Pixmap mask,
640                                    XColor *foreground_color,
641                                    XColor *background_color,
642                                    unsigned int x,
643                                    unsigned int y);
644 extern Window XCreateSimpleWindow (Display *display,
645                                    Window parent,
646                                    int x,
647                                    int y,
648                                    unsigned int width,
649                                    unsigned int height,
650                                    unsigned int border_width,
651                                    unsigned long border,
652                                    unsigned long background);
653 extern Colormap XDefaultColormap (Display *display,
654                                   int screen_number);
655 extern int XDefaultDepth (Display *display,
656                           int screen_number);
657 extern Window XDefaultRootWindow (Display *display);
658 extern int XDefaultScreen (Display *display);
659 extern Visual *XDefaultVisual (Display *display,
660                                int screen_number);
661 extern int XDefineCursor (Display *display,
662                           Window window,
663                           Cursor cursor);
664 extern int XDestroyImage (XImage *ximage);
665 extern int XDestroyWindow (Display *display,
666                            Window window);
667 extern int XDoesBackingStore (Screen *screen);
668 extern int XDrawArc (Display *display,
669                      Drawable drawable,
670                      GC gc,
671                      int x,
672                      int y,
673                      unsigned int width,
674                      unsigned int height,
675                      int angle1,
676                      int angle2);
677 extern int XDrawImageString16 (Display *display,
678                                Drawable drawable,
679                                GC gc,
680                                int x,
681                                int y,
682                                const XChar2b *string,
683                                int length);
684 extern int XDrawLine (Display *display,
685                       Drawable drawable,
686                       GC gc,
687                       int x1,
688                       int y1,
689                       int x2,
690                       int y2);
691 extern int XDrawLines (Display *display,
692                        Drawable drawable,
693                        GC gc,
694                        XPoint *points,
695                        int npoints,
696                        int mode);
697 extern int XDrawPoint (Display *display,
698                        Drawable drawable,
699                        GC gc,
700                        int x,
701                        int y);
702 extern int XEventsQueued (Display *display, int mode);
703 extern int XFillArc (Display *display,
704                      Drawable drawable,
705                      GC gc,
706                      int x,
707                      int y,
708                      unsigned int width,
709                      unsigned int height,
710                      int angle1,
711                      int angle2);
712 extern int XFillPolygon (Display *display,
713                          Drawable drawable,
714                          GC gc,
715                          XPoint *points,
716                          int npoints,
717                          int shape,
718                          int mode);
719 extern int XFillRectangle (Display *display,
720                            Drawable drawable,
721                            GC gc,
722                            int x,
723                            int y,
724                            unsigned int width,
725                            unsigned int height);
726 extern int XFlush (Display *display);
727 extern int XFree (void *data);
728 extern int XFreeGC (Display *display,
729                     GC gc);
730 extern int XFreePixmap (Display *display,
731                         Pixmap pixmap);
732 extern Status XGetGeometry (Display *display,
733                             Drawable drawable,
734                             Window *root_return,
735                             int *x_return,
736                             int *y_return,
737                             unsigned int *width_return,
738                             unsigned int *height_return,
739                             unsigned int *border_width_return,
740                             unsigned int *depth_return);
741 extern XImage *XGetImage (Display *display,
742                           Drawable drawable,
743                           int x,
744                           int y,
745                           unsigned int width,
746                           unsigned int height,
747                           unsigned long plane_mask,
748                           int format);
749 extern int XGetKeyboardControl (Display *display,
750                                 XKeyboardState *values_return);
751 extern unsigned long XGetPixel (XImage *ximage,
752                                 int x,
753                                 int y);
754 extern Status XGetWindowAttributes (Display *display,
755                                     Window window,
756                                     XWindowAttributes *window_attributes_return);
757 extern Atom XInternAtom (Display *display,
758                          const char *atom_name,
759                          Bool only_if_exists);
760 extern KeyCode XKeysymToKeycode (Display *display, KeySym keysym);
761 extern int XLookupString (XKeyEvent *event_struct, char *buffer_return,
762                           int bytes_buffer, KeySym *keysym_return,
763                           XComposeStatus *status_in_out);
764 extern int XLowerWindow (Display *display,
765                          Window window);
766 extern int XMapRaised (Display *display,
767                        Window window);
768 extern int XMapWindow (Display *display,
769                        Window window);
770 extern int XMoveWindow (Display *display,
771                         Window window,
772                         int x,
773                         int y);
774 extern int XNextEvent(Display *display, XEvent *event_return);
775 extern Display *XOpenDisplay (const char *display_name);
776 extern int XPutImage (Display *display,
777                       Drawable drawable,
778                       GC gc,
779                       XImage *image,
780                       int src_x,
781                       int src_y,
782                       int dest_x,
783                       int dest_y,
784                       unsigned int width,
785                       unsigned int height);
786 extern int XQueryColor (Display *display,
787                         Colormap colormap,
788                         XColor *def_in_out);
789 extern int XQueryKeymap (Display *display, char keys_return[32]);
790 extern Bool XQueryPointer (Display *display,
791                            Window window,
792                            Window *root_return,
793                            Window *child_return,
794                            int *root_x_return,
795                            int *root_y_return,
796                            int *win_x_return,
797                            int *win_y_return,
798                            unsigned int *mask_return);
799 extern Status XQueryTree (Display *display,
800                           Window window,
801                           Window *root_return,
802                           Window *parent_return,
803                           Window **children_return,
804                           unsigned int *nchildren_return);
805 extern int XRaiseWindow (Display *display,
806                          Window window);
807 extern int XRefreshKeyboardMapping (XMappingEvent *event_map);
808 extern Screen *XScreenOfDisplay (Display *display,
809                                  int screen_number);
810 extern int XSelectInput (Display *display,
811                          Window window,
812                          long event_mask);
813 extern int XSetArcMode (Display *display,
814                         GC gc,
815                         int arc_mode);
816 extern int XSetBackground (Display *display,
817                            GC gc,
818                            unsigned long background);
819 extern int XSetClipMask (Display *display,
820                          GC gc,
821                          Pixmap pixmap);
822 extern int XSetClipOrigin (Display *display,
823                            GC gc,
824                            int clip_x_origin,
825                            int clip_y_origin);
826 extern int XSetForeground (Display *display,
827                            GC gc,
828                            unsigned long foreground);
829 extern int XSetFunction (Display *display,
830                          GC gc,
831                          int function);
832 extern int XSetStandardProperties (Display *display,
833                                    Window window,
834                                    const char *window_name,
835                                    const char *icon_name,
836                                    Pixmap icon_pixmap,
837                                    char **argv,
838                                    int argc,
839                                    XSizeHints *hints);
840 extern int XSetWMHints (Display *display,
841                         Window window,
842                         XWMHints *wm_hints);
843 extern Status XSetWMProtocols (Display *display,
844                                Window window,
845                                Atom *protocols,
846                                int count);
847 extern int XStoreColor (Display *display, Colormap colormap, XColor *color);
848 extern int XStoreName (Display *display, Window window, const char *window_name);
849 extern int XSync (Display *display,
850                   Bool discard);
851 extern int XUndefineCursor (Display *display,
852                             Window window);
853 extern unsigned long XWhitePixel (Display *display,
854                                   int screen_number);
855