1 ! Copyright (C) 2005, 2006 Eduardo Cavazos
2 ! See http://factorcode.org/license.txt for BSD license.
4 ! The most popular guides to programming the X Window System are
5 ! the series from Oreilly. For programming with Xlib, there is
6 ! the reference manual and the programmers guide. However, a
7 ! lesser known manual is the free Xlib manual that comes with
8 ! the MIT X distribution. The arrangement and order of these
9 ! bindings follows the structure of the free Xlib manual. If you
10 ! add to this library and are wondering what part of the file to
11 ! modify, just find the function or data structure in the manual
12 ! and note the section.
14 USING: kernel arrays alien alien.c-types alien.strings
15 alien.syntax math math.bitwise words sequences namespaces
16 continuations io io.encodings.ascii ;
33 TYPEDEF: char* XPointer
34 TYPEDEF: void* Screen*
36 TYPEDEF: void* Visual*
37 TYPEDEF: void* XExtData*
38 TYPEDEF: void* XFontProp*
39 TYPEDEF: void* XComposeStatus*
47 TYPEDEF: ulong VisualID
50 TYPEDEF: void* Window**
55 ALIAS: <Drawable> <XID>
65 ! 2 - Display Functions
68 ! This struct is incomplete
70 { "void*" "ext_data" }
71 { "void*" "free_funcs" }
74 FUNCTION: Display* XOpenDisplay ( void* display_name ) ;
76 ! 2.2 Obtaining Information about the Display, Image Formats, or Screens
78 FUNCTION: ulong XBlackPixel ( Display* display, int screen_number ) ;
79 FUNCTION: ulong XWhitePixel ( Display* display, int screen_number ) ;
80 FUNCTION: Colormap XDefaultColormap ( Display* display, int screen_number ) ;
81 FUNCTION: int XDefaultDepth ( Display* display, int screen_number ) ;
82 FUNCTION: GC XDefaultGC ( Display* display, int screen_number ) ;
83 FUNCTION: int XDefaultScreen ( Display* display ) ;
84 FUNCTION: Window XRootWindow ( Display* display, int screen_number ) ;
85 FUNCTION: Window XDefaultRootWindow ( Display* display ) ;
86 FUNCTION: int XProtocolVersion ( Display* display ) ;
87 FUNCTION: int XProtocolRevision ( Display* display ) ;
88 FUNCTION: int XQLength ( Display* display ) ;
89 FUNCTION: int XScreenCount ( Display* display ) ;
90 FUNCTION: int XConnectionNumber ( Display* display ) ;
92 ! 2.5 Closing the Display
93 FUNCTION: int XCloseDisplay ( Display* display ) ;
96 ! 3 - Window Functions
99 ! 3.2 - Window Attributes
101 : CWBackPixmap ( -- n ) 0 2^ ; inline
102 : CWBackPixel ( -- n ) 1 2^ ; inline
103 : CWBorderPixmap ( -- n ) 2 2^ ; inline
104 : CWBorderPixel ( -- n ) 3 2^ ; inline
105 : CWBitGravity ( -- n ) 4 2^ ; inline
106 : CWWinGravity ( -- n ) 5 2^ ; inline
107 : CWBackingStore ( -- n ) 6 2^ ; inline
108 : CWBackingPlanes ( -- n ) 7 2^ ; inline
109 : CWBackingPixel ( -- n ) 8 2^ ; inline
110 : CWOverrideRedirect ( -- n ) 9 2^ ; inline
111 : CWSaveUnder ( -- n ) 10 2^ ; inline
112 : CWEventMask ( -- n ) 11 2^ ; inline
113 : CWDontPropagate ( -- n ) 12 2^ ; inline
114 : CWColormap ( -- n ) 13 2^ ; inline
115 : CWCursor ( -- n ) 14 2^ ; inline
117 C-STRUCT: XSetWindowAttributes
118 { "Pixmap" "background_pixmap" }
119 { "ulong" "background_pixel" }
120 { "Pixmap" "border_pixmap" }
121 { "ulong" "border_pixel" }
122 { "int" "bit_gravity" }
123 { "int" "win_gravity" }
124 { "int" "backing_store" }
125 { "ulong" "backing_planes" }
126 { "ulong" "backing_pixel" }
127 { "Bool" "save_under" }
128 { "long" "event_mask" }
129 { "long" "do_not_propagate_mask" }
130 { "Bool" "override_redirect" }
131 { "Colormap" "colormap" }
132 { "Cursor" "cursor" } ;
134 : UnmapGravity 0 ; inline
136 : ForgetGravity 0 ; inline
137 : NorthWestGravity 1 ; inline
138 : NorthGravity 2 ; inline
139 : NorthEastGravity 3 ; inline
140 : WestGravity 4 ; inline
141 : CenterGravity 5 ; inline
142 : EastGravity 6 ; inline
143 : SouthWestGravity 7 ; inline
144 : SouthGravity 8 ; inline
145 : SouthEastGravity 9 ; inline
146 : StaticGravity 10 ; inline
148 ! 3.3 - Creating Windows
150 FUNCTION: Window XCreateWindow ( Display* display, Window parent, int x, int y, uint width, uint height, uint border_width, int depth, uint class, Visual* visual, ulong valuemask, XSetWindowAttributes* attributes ) ;
151 FUNCTION: Window XCreateSimpleWindow ( Display* display, Window parent, int x, int y, uint width, uint height, uint border_width, ulong border, ulong background ) ;
152 FUNCTION: Status XDestroyWindow ( Display* display, Window w ) ;
153 FUNCTION: Status XMapWindow ( Display* display, Window window ) ;
154 FUNCTION: Status XMapSubwindows ( Display* display, Window window ) ;
155 FUNCTION: Status XUnmapWindow ( Display* display, Window w ) ;
156 FUNCTION: Status XUnmapSubwindows ( Display* display, Window w ) ;
158 ! 3.5 Mapping Windows
160 FUNCTION: int XMapRaised ( Display* display, Window w ) ;
162 ! 3.7 - Configuring Windows
164 : CWX ( -- n ) 0 2^ ; inline
165 : CWY ( -- n ) 1 2^ ; inline
166 : CWWidth ( -- n ) 2 2^ ; inline
167 : CWHeight ( -- n ) 3 2^ ; inline
168 : CWBorderWidth ( -- n ) 4 2^ ; inline
169 : CWSibling ( -- n ) 5 2^ ; inline
170 : CWStackMode ( -- n ) 6 2^ ; inline
172 C-STRUCT: XWindowChanges
177 { "int" "border_width" }
178 { "Window" "sibling" }
179 { "int" "stack_mode" } ;
181 FUNCTION: Status XConfigureWindow ( Display* display, Window w, uint value_mask, XWindowChanges* values ) ;
182 FUNCTION: Status XMoveWindow ( Display* display, Window w, int x, int y ) ;
183 FUNCTION: Status XResizeWindow ( Display* display, Window w, uint width, uint height ) ;
184 FUNCTION: Status XSetWindowBorderWidth ( Display* display, ulong w, uint width ) ;
187 ! 3.8 Changing Window Stacking Order
189 FUNCTION: Status XRaiseWindow ( Display* display, Window w ) ;
190 FUNCTION: Status XLowerWindow ( Display* display, Window w ) ;
192 ! 3.9 - Changing Window Attributes
194 FUNCTION: Status XChangeWindowAttributes (
195 Display* display, Window w, ulong valuemask, XSetWindowAttributes* attr ) ;
196 FUNCTION: Status XSetWindowBackground (
197 Display* display, Window w, ulong background_pixel ) ;
198 FUNCTION: Status XDefineCursor ( Display* display, Window w, Cursor cursor ) ;
199 FUNCTION: Status XUndefineCursor ( Display* display, Window w ) ;
201 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
202 ! 4 - Window Information Functions
203 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
205 ! 4.1 - Obtaining Window Information
207 FUNCTION: Status XQueryTree (
211 Window* parent_return,
212 Window** children_return, uint* nchildren_return ) ;
214 C-STRUCT: XWindowAttributes
219 { "int" "border_width" }
221 { "Visual*" "visual" }
224 { "int" "bit_gravity" }
225 { "int" "win_gravity" }
226 { "int" "backing_store" }
227 { "ulong" "backing_planes" }
228 { "ulong" "backing_pixel" }
229 { "Bool" "save_under" }
230 { "Colormap" "colormap" }
231 { "Bool" "map_installed" }
232 { "int" "map_state" }
233 { "long" "all_event_masks" }
234 { "long" "your_event_mask" }
235 { "long" "do_not_propagate_mask" }
236 { "Bool" "override_redirect" }
237 { "Screen*" "screen" } ;
239 FUNCTION: Status XGetWindowAttributes ( Display* display, Window w, XWindowAttributes* attr ) ;
241 : IsUnmapped 0 ; inline
242 : IsUnviewable 1 ; inline
243 : IsViewable 2 ; inline
245 FUNCTION: Status XGetGeometry (
253 uint* border_width_return,
254 uint* depth_return ) ;
256 ! 4.2 - Translating Screen Coordinates
258 FUNCTION: Bool XQueryPointer ( Display* display, Window w, Window* root_return, Window* child_return, int* root_x_return, int* root_y_return, int* win_x_return, int* win_y_return, uint* mask_return ) ;
260 ! 4.3 - Properties and Atoms
262 FUNCTION: Atom XInternAtom ( Display* display, char* atom_name, Bool only_if_exists ) ;
264 FUNCTION: char* XGetAtomName ( Display* display, Atom atom ) ;
266 ! 4.4 - Obtaining and Changing Window Properties
268 FUNCTION: int XGetWindowProperty ( Display* display, Window w, Atom property, long long_offset, long long_length, Bool delete, Atom req_type, Atom* actual_type_return, int* actual_format_return, ulong* nitems_return, ulong* bytes_after_return, char** prop_return ) ;
270 FUNCTION: int XChangeProperty ( Display* display, Window w, Atom property, Atom type, int format, int mode, void* data, int nelements ) ;
274 FUNCTION: int XSetSelectionOwner ( Display* display, Atom selection, Window owner, Time time ) ;
276 FUNCTION: Window XGetSelectionOwner ( Display* display, Atom selection ) ;
278 FUNCTION: int XConvertSelection ( Display* display, Atom selection, Atom target, Atom property, Window requestor, Time time ) ;
281 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
282 ! 5 - Pixmap and Cursor Functions
283 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
285 ! 5.1 - Creating and Freeing Pixmaps
287 FUNCTION: Pixmap XCreatePixmap ( Display* display, Drawable d, uint width, uint height, uint depth ) ;
288 FUNCTION: int XFreePixmap ( Display* display, Pixmap pixmap ) ;
291 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
292 ! 6 - Color Management Functions
293 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
303 FUNCTION: Status XLookupColor ( Display* display, Colormap colormap, char* color_name, XColor* exact_def_return, XColor* screen_def_return ) ;
304 FUNCTION: Status XAllocColor ( Display* display, Colormap colormap, XColor* screen_in_out ) ;
305 FUNCTION: Status XQueryColor ( Display* display, Colormap colormap, XColor* def_in_out ) ;
307 ! 6.4 Creating, Copying, and Destroying Colormaps
309 FUNCTION: Colormap XCreateColormap ( Display* display, Window w, Visual* visual, int alloc ) ;
311 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
312 ! 7 - Graphics Context Functions
313 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
315 : GCFunction ( -- n ) 0 2^ ; inline
316 : GCPlaneMask ( -- n ) 1 2^ ; inline
317 : GCForeground ( -- n ) 2 2^ ; inline
318 : GCBackground ( -- n ) 3 2^ ; inline
319 : GCLineWidth ( -- n ) 4 2^ ; inline
320 : GCLineStyle ( -- n ) 5 2^ ; inline
321 : GCCapStyle ( -- n ) 6 2^ ; inline
322 : GCJoinStyle ( -- n ) 7 2^ ; inline
323 : GCFillStyle ( -- n ) 8 2^ ; inline
324 : GCFillRule ( -- n ) 9 2^ ; inline
325 : GCTile ( -- n ) 10 2^ ; inline
326 : GCStipple ( -- n ) 11 2^ ; inline
327 : GCTileStipXOrigin ( -- n ) 12 2^ ; inline
328 : GCTileStipYOrigin ( -- n ) 13 2^ ; inline
329 : GCFont ( -- n ) 14 2^ ; inline
330 : GCSubwindowMode ( -- n ) 15 2^ ; inline
331 : GCGraphicsExposures ( -- n ) 16 2^ ; inline
332 : GCClipXOrigin ( -- n ) 17 2^ ; inline
333 : GCClipYOrigin ( -- n ) 18 2^ ; inline
334 : GCClipMask ( -- n ) 19 2^ ; inline
335 : GCDashOffset ( -- n ) 20 2^ ; inline
336 : GCDashList ( -- n ) 21 2^ ; inline
337 : GCArcMode ( -- n ) 22 2^ ; inline
339 : GXclear HEX: 0 ; inline
340 : GXand HEX: 1 ; inline
341 : GXandReverse HEX: 2 ; inline
342 : GXcopy HEX: 3 ; inline
343 : GXandInverted HEX: 4 ; inline
344 : GXnoop HEX: 5 ; inline
345 : GXxor HEX: 6 ; inline
346 : GXor HEX: 7 ; inline
347 : GXnor HEX: 8 ; inline
348 : GXequiv HEX: 9 ; inline
349 : GXinvert HEX: a ; inline
350 : GXorReverse HEX: b ; inline
351 : GXcopyInverted HEX: c ; inline
352 : GXorInverted HEX: d ; inline
353 : GXnand HEX: e ; inline
354 : GXset HEX: f ; inline
358 { "ulong" "plane_mask" }
359 { "ulong" "foreground" }
360 { "ulong" "background" }
361 { "int" "line_width" }
362 { "int" "line_style" }
363 { "int" "cap_style" }
364 { "int" "join_style" }
365 { "int" "fill_style" }
366 { "int" "fill_rule" }
369 { "Pixmap" "stipple" }
370 { "int" "ts_x_origin" }
371 { "int" "ts_y_origin" }
373 { "int" "subwindow_mode" }
374 { "Bool" "graphics_exposures" }
375 { "int" "clip_x_origin" }
376 { "int" "clip_y_origin" }
377 { "Pixmap" "clip_mask" }
378 { "int" "dash_offset" }
379 { "char" "dashes" } ;
381 FUNCTION: GC XCreateGC ( Display* display, Window d, ulong valuemask, XGCValues* values ) ;
382 FUNCTION: int XChangeGC ( Display* display, GC gc, ulong valuemask, XGCValues* values ) ;
383 FUNCTION: Status XGetGCValues ( Display* display, GC gc, ulong valuemask, XGCValues* values_return ) ;
384 FUNCTION: Status XSetForeground ( Display* display, GC gc, ulong foreground ) ;
385 FUNCTION: Status XSetBackground ( Display* display, GC gc, ulong background ) ;
386 FUNCTION: Status XSetFunction ( Display* display, GC gc, int function ) ;
387 FUNCTION: Status XSetSubwindowMode ( Display* display, GC gc, int subwindow_mode ) ;
389 FUNCTION: GContext XGContextFromGC ( GC gc ) ;
391 FUNCTION: Status XSetFont ( Display* display, GC gc, Font font ) ;
393 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
394 ! 8 - Graphics Functions
395 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
397 FUNCTION: Status XClearWindow ( Display* display, Window w ) ;
398 FUNCTION: Status XDrawPoint ( Display* display, Drawable d, GC gc, int x, int y ) ;
399 FUNCTION: Status XDrawLine ( Display* display, Drawable d, GC gc, int x1, int y1, int x2, int y2 ) ;
400 FUNCTION: Status XDrawArc ( Display* display, Drawable d, GC gc, int x, int y, uint width, uint height, int angle1, int angle2 ) ;
401 FUNCTION: Status XFillArc ( Display* display, Drawable d, GC gc, int x, int y, uint width, uint height, int angle1, int angle2 ) ;
405 C-STRUCT: XCharStruct
406 { "short" "lbearing" }
407 { "short" "rbearing" }
410 { "short" "descent" }
411 { "ushort" "attributes" } ;
413 FUNCTION: Font XLoadFont ( Display* display, char* name ) ;
414 FUNCTION: XFontStruct* XQueryFont ( Display* display, XID font_ID ) ;
415 FUNCTION: XFontStruct* XLoadQueryFont ( Display* display, char* name ) ;
417 C-STRUCT: XFontStruct
418 { "XExtData*" "ext_data" }
420 { "uint" "direction" }
421 { "uint" "min_char_or_byte2" }
422 { "uint" "max_char_or_byte2" }
423 { "uint" "min_byte1" }
424 { "uint" "max_byte1" }
425 { "Bool" "all_chars_exist" }
426 { "uint" "default_char" }
427 { "int" "n_properties" }
428 { "XFontProp*" "properties" }
429 { "XCharStruct" "min_bounds" }
430 { "XCharStruct" "max_bounds" }
431 { "XCharStruct*" "per_char" }
433 { "int" "descent" } ;
435 FUNCTION: int XTextWidth ( XFontStruct* font_struct, char* string, int count ) ;
439 FUNCTION: Status XDrawString (
448 ! 8.7 - Transferring Images between Client and Server
450 : XYBitmap 0 ; inline
451 : XYPixmap 1 ; inline
453 : AllPlanes -1 ; inline
455 C-STRUCT: XImage-funcs
456 { "void*" "create_image" }
457 { "void*" "destroy_image" }
458 { "void*" "get_pixel" }
459 { "void*" "put_pixel" }
460 { "void*" "sub_image" }
461 { "void*" "add_pixel" } ;
469 { "int" "byte_order" }
470 { "int" "bitmap_unit" }
471 { "int" "bitmap_bit_order" }
472 { "int" "bitmap_pad" }
474 { "int" "bytes_per_line" }
475 { "int" "bits_per_pixel" }
476 { "ulong" "red_mask" }
477 { "ulong" "green_mask" }
478 { "ulong" "blue_mask" }
479 { "XPointer" "obdata" }
480 { "XImage-funcs" "f" } ;
482 FUNCTION: XImage* XGetImage ( Display* display, Drawable d, int x, int y, uint width, uint height, ulong plane_mask, int format ) ;
483 FUNCTION: int XDestroyImage ( XImage *ximage ) ;
485 : XImage-size ( ximage -- size )
486 [ XImage-height ] [ XImage-bytes_per_line ] bi * ;
488 : XImage-pixels ( ximage -- byte-array )
489 [ XImage-data ] [ XImage-size ] bi memory>byte-array ;
492 ! 9 - Window and Session Manager Functions
495 FUNCTION: Status XReparentWindow ( Display* display, Window w, Window parent, int x, int y ) ;
496 FUNCTION: Status XAddToSaveSet ( Display* display, Window w ) ;
497 FUNCTION: Status XRemoveFromSaveSet ( Display* display, Window w ) ;
498 FUNCTION: Status XGrabServer ( Display* display ) ;
499 FUNCTION: Status XUngrabServer ( Display* display ) ;
500 FUNCTION: Status XKillClient ( Display* display, XID resource ) ;
502 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
504 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
508 : NoEventMask ( -- n ) 0 ; inline
509 : KeyPressMask ( -- n ) 0 2^ ; inline
510 : KeyReleaseMask ( -- n ) 1 2^ ; inline
511 : ButtonPressMask ( -- n ) 2 2^ ; inline
512 : ButtonReleaseMask ( -- n ) 3 2^ ; inline
513 : EnterWindowMask ( -- n ) 4 2^ ; inline
514 : LeaveWindowMask ( -- n ) 5 2^ ; inline
515 : PointerMotionMask ( -- n ) 6 2^ ; inline
516 : PointerMotionHintMask ( -- n ) 7 2^ ; inline
517 : Button1MotionMask ( -- n ) 8 2^ ; inline
518 : Button2MotionMask ( -- n ) 9 2^ ; inline
519 : Button3MotionMask ( -- n ) 10 2^ ; inline
520 : Button4MotionMask ( -- n ) 11 2^ ; inline
521 : Button5MotionMask ( -- n ) 12 2^ ; inline
522 : ButtonMotionMask ( -- n ) 13 2^ ; inline
523 : KeymapStateMask ( -- n ) 14 2^ ; inline
524 : ExposureMask ( -- n ) 15 2^ ; inline
525 : VisibilityChangeMask ( -- n ) 16 2^ ; inline
526 : StructureNotifyMask ( -- n ) 17 2^ ; inline
527 : ResizeRedirectMask ( -- n ) 18 2^ ; inline
528 : SubstructureNotifyMask ( -- n ) 19 2^ ; inline
529 : SubstructureRedirectMask ( -- n ) 20 2^ ; inline
530 : FocusChangeMask ( -- n ) 21 2^ ; inline
531 : PropertyChangeMask ( -- n ) 22 2^ ; inline
532 : ColormapChangeMask ( -- n ) 23 2^ ; inline
533 : OwnerGrabButtonMask ( -- n ) 24 2^ ; inline
535 : KeyPress 2 ; inline
536 : KeyRelease 3 ; inline
537 : ButtonPress 4 ; inline
538 : ButtonRelease 5 ; inline
539 : MotionNotify 6 ; inline
540 : EnterNotify 7 ; inline
541 : LeaveNotify 8 ; inline
543 : FocusOut 10 ; inline
544 : KeymapNotify 11 ; inline
546 : GraphicsExpose 13 ; inline
547 : NoExpose 14 ; inline
548 : VisibilityNotify 15 ; inline
549 : CreateNotify 16 ; inline
550 : DestroyNotify 17 ; inline
551 : UnmapNotify 18 ; inline
552 : MapNotify 19 ; inline
553 : MapRequest 20 ; inline
554 : ReparentNotify 21 ; inline
555 : ConfigureNotify 22 ; inline
556 : ConfigureRequest 23 ; inline
557 : GravityNotify 24 ; inline
558 : ResizeRequest 25 ; inline
559 : CirculateNotify 26 ; inline
560 : CirculateRequest 27 ; inline
561 : PropertyNotify 28 ; inline
562 : SelectionClear 29 ; inline
563 : SelectionRequest 30 ; inline
564 : SelectionNotify 31 ; inline
565 : ColormapNotify 32 ; inline
566 : ClientMessage 33 ; inline
567 : MappingNotify 34 ; inline
568 : LASTEvent 35 ; inline
573 { "Bool" "send_event" }
574 { "Display*" "display" }
575 { "Window" "window" } ;
577 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
579 ! 10.5 Keyboard and Pointer Events
587 : Button1Mask ( -- n ) 1 8 shift ; inline
588 : Button2Mask ( -- n ) 1 9 shift ; inline
589 : Button3Mask ( -- n ) 1 10 shift ; inline
590 : Button4Mask ( -- n ) 1 11 shift ; inline
591 : Button5Mask ( -- n ) 1 12 shift ; inline
593 : ShiftMask ( -- n ) 1 0 shift ; inline
594 : LockMask ( -- n ) 1 1 shift ; inline
595 : ControlMask ( -- n ) 1 2 shift ; inline
596 : Mod1Mask ( -- n ) 1 3 shift ; inline
597 : Mod2Mask ( -- n ) 1 4 shift ; inline
598 : Mod3Mask ( -- n ) 1 5 shift ; inline
599 : Mod4Mask ( -- n ) 1 6 shift ; inline
600 : Mod5Mask ( -- n ) 1 7 shift ; inline
602 C-STRUCT: XButtonEvent
605 { "Bool" "send_event" }
606 { "Display*" "display" }
607 { "Window" "window" }
609 { "Window" "subwindow" }
617 { "Bool" "same_screen" } ;
619 TYPEDEF: XButtonEvent XButtonPressedEvent
620 TYPEDEF: XButtonEvent XButtonReleasedEvent
623 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
628 { "Bool" "send_event" }
629 { "Display*" "display" }
630 { "Window" "window" }
632 { "Window" "subwindow" }
640 { "Bool" "same_screen" } ;
642 TYPEDEF: XKeyEvent XKeyPressedEvent
643 TYPEDEF: XKeyEvent XKeyReleasedEvent
645 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
647 C-STRUCT: XMotionEvent
650 { "Bool" "send_event" }
651 { "Display*" "display" }
652 { "Window" "window" }
654 { "Window" "subwindow" }
662 { "Bool" "same_screen" } ;
664 TYPEDEF: XMotionEvent XPointerMovedEvent
666 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
668 C-STRUCT: XCrossingEvent
671 { "Bool" "send_event" }
672 { "Display*" "display" }
673 { "Window" "window" }
675 { "Window" "subwindow" }
683 { "Bool" "same_screen" }
687 TYPEDEF: XCrossingEvent XEnterWindowEvent
688 TYPEDEF: XCrossingEvent XLeaveWindowEvent
690 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
692 C-STRUCT: XFocusChangeEvent
695 { "Bool" "send_event" }
696 { "Display*" "display" }
697 { "Window" "window" }
701 TYPEDEF: XFocusChangeEvent XFocusInEvent
702 TYPEDEF: XFocusChangeEvent XFocusOutEvent
704 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
706 C-STRUCT: XExposeEvent
709 { "Bool" "send_event" }
710 { "Display*" "display" }
711 { "Window" "window" }
718 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
720 C-STRUCT: XGraphicsExposeEvent
723 { "Bool" "send_event" }
724 { "Display*" "display" }
725 { "Drawable" "drawable" }
731 { "int" "major_code" }
732 { "int" "minor_code" } ;
734 C-STRUCT: XNoExposeEvent
737 { "Bool" "send_event" }
738 { "Display*" "display" }
739 { "Drawable" "drawable" }
740 { "int" "major_code" }
741 { "int" "minor_code" } ;
743 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
745 C-STRUCT: XVisibilityEvent
748 { "Bool" "send_event" }
749 { "Display*" "display" }
750 { "Window" "window" }
753 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
755 C-STRUCT: XCreateWindowEvent
758 { "Bool" "send_event" }
759 { "Display*" "display" }
760 { "Window" "parent" }
761 { "Window" "window" }
766 { "int" "border_width" }
767 { "Bool" "override_redirect" } ;
769 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
771 C-STRUCT: XDestroyWindowEvent
774 { "Bool" "send_event" }
775 { "Display*" "display" }
777 { "Window" "window" } ;
779 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
781 C-STRUCT: XUnmapEvent
784 { "Bool" "send_event" }
785 { "Display*" "display" }
787 { "Window" "window" }
788 { "Bool" "from_configure" } ;
790 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
795 { "Bool" "send_event" }
796 { "Display*" "display" }
798 { "Window" "window" }
799 { "Bool" "override_redirect" } ;
801 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
803 C-STRUCT: XMapRequestEvent
806 { "Bool" "send_event" }
807 { "Display*" "display" }
808 { "Window" "parent" }
809 { "Window" "window" } ;
811 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
813 C-STRUCT: XReparentEvent
816 { "Bool" "send_event" }
817 { "Display*" "display" }
819 { "Window" "window" }
820 { "Window" "parent" }
823 { "Bool" "override_redirect" } ;
825 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
827 C-STRUCT: XConfigureEvent
830 { "Bool" "send_event" }
831 { "Display*" "display" }
833 { "Window" "window" }
838 { "int" "border_width" }
840 { "Bool" "override_redirect" } ;
842 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
844 C-STRUCT: XGravityEvent
847 { "Bool" "send_event" }
848 { "Display*" "display" }
850 { "Window" "window" }
854 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
856 C-STRUCT: XResizeRequestEvent
859 { "Bool" "send_event" }
860 { "Display*" "display" }
861 { "Window" "window" }
865 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
867 C-STRUCT: XConfigureRequestEvent
870 { "Bool" "send_event" }
871 { "Display*" "display" }
872 { "Window" "parent" }
873 { "Window" "window" }
878 { "int" "border_width" }
881 { "ulong" "value_mask" } ;
883 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
885 C-STRUCT: XCirculateEvent
888 { "Bool" "send_event" }
889 { "Display*" "display" }
891 { "Window" "window" }
894 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
896 C-STRUCT: XCirculateRequestEvent
899 { "Bool" "send_event" }
900 { "Display*" "display" }
901 { "Window" "parent" }
902 { "Window" "window" }
905 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
907 C-STRUCT: XPropertyEvent
910 { "Bool" "send_event" }
911 { "Display*" "display" }
912 { "Window" "window" }
917 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
919 C-STRUCT: XSelectionClearEvent
922 { "Bool" "send_event" }
923 { "Display*" "display" }
924 { "Window" "window" }
925 { "Atom" "selection" }
928 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
930 C-STRUCT: XSelectionRequestEvent
933 { "Bool" "send_event" }
934 { "Display*" "display" }
936 { "Window" "requestor" }
937 { "Atom" "selection" }
939 { "Atom" "property" }
942 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
944 C-STRUCT: XSelectionEvent
947 { "Bool" "send_event" }
948 { "Display*" "display" }
949 { "Window" "requestor" }
950 { "Atom" "selection" }
952 { "Atom" "property" }
955 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
957 C-STRUCT: XColormapEvent
960 { "Bool" "send_event" }
961 { "Display*" "display" }
962 { "Window" "window" }
963 { "Colormap" "colormap" }
967 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
969 C-STRUCT: XClientMessageEvent
972 { "Bool" "send_event" }
973 { "Display*" "display" }
974 { "Window" "window" }
975 { "Atom" "message_type" }
989 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
991 C-STRUCT: XMappingEvent
994 { "Bool" "send_event" }
995 { "Display*" "display" }
996 { "Window" "window" }
998 { "int" "first_keycode" }
1001 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1003 C-STRUCT: XErrorEvent
1005 { "Display*" "display" }
1006 { "XID" "resourceid" }
1007 { "ulong" "serial" }
1008 { "uchar" "error_code" }
1009 { "uchar" "request_code" }
1010 { "uchar" "minor_code" } ;
1012 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1014 C-STRUCT: XKeymapEvent
1016 { "ulong" "serial" }
1017 { "Bool" "send_event" }
1018 { "Display*" "display" }
1019 { "Window" "window" }
1020 ! char key_vector[32];
1039 "XGraphicsExposeEvent"
1042 "XCreateWindowEvent"
1043 "XDestroyWindowEvent"
1050 "XResizeRequestEvent"
1051 "XConfigureRequestEvent"
1053 "XCirculateRequestEvent"
1055 "XSelectionClearEvent"
1056 "XSelectionRequestEvent"
1059 "XClientMessageEvent"
1065 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1066 ! 11 - Event Handling Functions
1067 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1069 FUNCTION: Status XSelectInput ( Display* display, Window w, long event_mask ) ;
1070 FUNCTION: Status XFlush ( Display* display ) ;
1071 FUNCTION: Status XSync ( Display* display, int discard ) ;
1072 FUNCTION: Status XNextEvent ( Display* display, XEvent* event ) ;
1073 FUNCTION: Status XMaskEvent ( Display* display, long event_mask, XEvent* event_return ) ;
1075 ! 11.3 - Event Queue Management
1077 : QueuedAlready 0 ; inline
1078 : QueuedAfterReading 1 ; inline
1079 : QueuedAfterFlush 2 ; inline
1081 FUNCTION: int XEventsQueued ( Display* display, int mode ) ;
1082 FUNCTION: int XPending ( Display* display ) ;
1084 ! 11.6 - Sending Events to Other Applications
1086 FUNCTION: Status XSendEvent ( Display* display, Window w, Bool propagate, long event_mask, XEvent* event_send ) ;
1088 ! 11.8 - Handling Protocol Errors
1090 FUNCTION: int XSetErrorHandler ( void* handler ) ;
1092 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1093 ! 12 - Input Device Functions
1094 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1098 FUNCTION: int XGrabPointer (
1109 FUNCTION: Status XUngrabPointer ( Display* display, Time time ) ;
1110 FUNCTION: Status XChangeActivePointerGrab ( Display* display, uint event_mask, Cursor cursor, Time time ) ;
1111 FUNCTION: Status XGrabKey ( Display* display, int keycode, uint modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode ) ;
1112 FUNCTION: Status XSetInputFocus ( Display* display, Window focus, int revert_to, Time time ) ;
1114 FUNCTION: Status XGetInputFocus ( Display* display,
1115 Window* focus_return,
1116 int* revert_to_return ) ;
1118 FUNCTION: Status XWarpPointer ( Display* display, Window src_w, Window dest_w, int src_x, int src_y, uint src_width, uint src_height, int dest_x, int dest_y ) ;
1120 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1121 ! 14 - Inter-Client Communication Functions
1122 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1124 ! 14.1 Client to Window Manager Communication
1126 FUNCTION: Status XFetchName ( Display* display, Window w, char** window_name_return ) ;
1127 FUNCTION: Status XGetTransientForHint ( Display* display, Window w, Window* prop_window_return ) ;
1129 ! 14.1.1. Manipulating Top-Level Windows
1131 FUNCTION: Status XIconifyWindow (
1132 Display* display, Window w, int screen_number ) ;
1134 FUNCTION: Status XWithdrawWindow (
1135 Display* display, Window w, int screen_number ) ;
1137 ! 14.1.6 - Setting and Reading the WM_HINTS Property
1139 ! 17.1.7 - Setting and Reading the WM_NORMAL_HINTS Property
1141 : USPosition ( -- n ) 0 2^ ; inline
1142 : USSize ( -- n ) 1 2^ ; inline
1143 : PPosition ( -- n ) 2 2^ ; inline
1144 : PSize ( -- n ) 3 2^ ; inline
1145 : PMinSize ( -- n ) 4 2^ ; inline
1146 : PMaxSize ( -- n ) 5 2^ ; inline
1147 : PResizeInc ( -- n ) 6 2^ ; inline
1148 : PAspect ( -- n ) 7 2^ ; inline
1149 : PBaseSize ( -- n ) 8 2^ ; inline
1150 : PWinGravity ( -- n ) 9 2^ ; inline
1151 : PAllHints ( -- n )
1152 { PPosition PSize PMinSize PMaxSize PResizeInc PAspect } flags ; foldable
1154 C-STRUCT: XSizeHints
1160 { "int" "min_width" }
1161 { "int" "min_height" }
1162 { "int" "max_width" }
1163 { "int" "max_height" }
1164 { "int" "width_inc" }
1165 { "int" "height_inc" }
1166 { "int" "min_aspect_x" }
1167 { "int" "min_aspect_y" }
1168 { "int" "max_aspect_x" }
1169 { "int" "max_aspect_y" }
1170 { "int" "base_width" }
1171 { "int" "base_height" }
1172 { "int" "win_gravity" } ;
1174 ! 14.1.10. Setting and Reading the WM_PROTOCOLS Property
1176 FUNCTION: Status XSetWMProtocols (
1177 Display* display, Window w, Atom* protocols, int count ) ;
1179 FUNCTION: Status XGetWMProtocols (
1182 Atom** protocols_return,
1183 int* count_return ) ;
1185 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1186 ! 16 - Application Utility Functions
1187 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1189 ! 16.1 Keyboard Utility Functions
1191 FUNCTION: KeySym XLookupKeysym ( XKeyEvent* key_event, int index ) ;
1193 FUNCTION: int XLookupString (
1194 XKeyEvent* event_struct,
1195 void* buffer_return,
1197 KeySym* keysym_return,
1198 XComposeStatus* status_in_out ) ;
1200 ! 16.7 Determining the Appropriate Visual Type
1202 : VisualNoMask HEX: 0 ; inline
1203 : VisualIDMask HEX: 1 ; inline
1204 : VisualScreenMask HEX: 2 ; inline
1205 : VisualDepthMask HEX: 4 ; inline
1206 : VisualClassMask HEX: 8 ; inline
1207 : VisualRedMaskMask HEX: 10 ; inline
1208 : VisualGreenMaskMask HEX: 20 ; inline
1209 : VisualBlueMaskMask HEX: 40 ; inline
1210 : VisualColormapSizeMask HEX: 80 ; inline
1211 : VisualBitsPerRGBMask HEX: 100 ; inline
1212 : VisualAllMask HEX: 1FF ; inline
1214 C-STRUCT: XVisualInfo
1215 { "Visual*" "visual" }
1216 { "VisualID" "visualid" }
1220 { "ulong" "red_mask" }
1221 { "ulong" "green_mask" }
1222 { "ulong" "blue_mask" }
1223 { "int" "colormap_size" }
1224 { "int" "bits_per_rgb" } ;
1226 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1227 ! Appendix D - Compatibility Functions
1228 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1230 FUNCTION: Status XSetStandardProperties (
1238 XSizeHints* hints ) ;
1240 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1242 : XA_PRIMARY 1 ; inline
1243 : XA_SECONDARY 2 ; inline
1245 : XA_ATOM 4 ; inline
1246 : XA_BITMAP 5 ; inline
1247 : XA_CARDINAL 6 ; inline
1248 : XA_COLORMAP 7 ; inline
1249 : XA_CURSOR 8 ; inline
1250 : XA_CUT_BUFFER0 9 ; inline
1251 : XA_CUT_BUFFER1 10 ; inline
1252 : XA_CUT_BUFFER2 11 ; inline
1253 : XA_CUT_BUFFER3 12 ; inline
1254 : XA_CUT_BUFFER4 13 ; inline
1255 : XA_CUT_BUFFER5 14 ; inline
1256 : XA_CUT_BUFFER6 15 ; inline
1257 : XA_CUT_BUFFER7 16 ; inline
1258 : XA_DRAWABLE 17 ; inline
1259 : XA_FONT 18 ; inline
1260 : XA_INTEGER 19 ; inline
1261 : XA_PIXMAP 20 ; inline
1262 : XA_POINT 21 ; inline
1263 : XA_RECTANGLE 22 ; inline
1264 : XA_RESOURCE_MANAGER 23 ; inline
1265 : XA_RGB_COLOR_MAP 24 ; inline
1266 : XA_RGB_BEST_MAP 25 ; inline
1267 : XA_RGB_BLUE_MAP 26 ; inline
1268 : XA_RGB_DEFAULT_MAP 27 ; inline
1269 : XA_RGB_GRAY_MAP 28 ; inline
1270 : XA_RGB_GREEN_MAP 29 ; inline
1271 : XA_RGB_RED_MAP 30 ; inline
1272 : XA_STRING 31 ; inline
1273 : XA_VISUALID 32 ; inline
1274 : XA_WINDOW 33 ; inline
1275 : XA_WM_COMMAND 34 ; inline
1276 : XA_WM_HINTS 35 ; inline
1277 : XA_WM_CLIENT_MACHINE 36 ; inline
1278 : XA_WM_ICON_NAME 37 ; inline
1279 : XA_WM_ICON_SIZE 38 ; inline
1280 : XA_WM_NAME 39 ; inline
1281 : XA_WM_NORMAL_HINTS 40 ; inline
1282 : XA_WM_SIZE_HINTS 41 ; inline
1283 : XA_WM_ZOOM_HINTS 42 ; inline
1284 : XA_MIN_SPACE 43 ; inline
1285 : XA_NORM_SPACE 44 ; inline
1286 : XA_MAX_SPACE 45 ; inline
1287 : XA_END_SPACE 46 ; inline
1288 : XA_SUPERSCRIPT_X 47 ; inline
1289 : XA_SUPERSCRIPT_Y 48 ; inline
1290 : XA_SUBSCRIPT_X 49 ; inline
1291 : XA_SUBSCRIPT_Y 50 ; inline
1292 : XA_UNDERLINE_POSITION 51 ; inline
1293 : XA_UNDERLINE_THICKNESS 52 ; inline
1294 : XA_STRIKEOUT_ASCENT 53 ; inline
1295 : XA_STRIKEOUT_DESCENT 54 ; inline
1296 : XA_ITALIC_ANGLE 55 ; inline
1297 : XA_X_HEIGHT 56 ; inline
1298 : XA_QUAD_WIDTH 57 ; inline
1299 : XA_WEIGHT 58 ; inline
1300 : XA_POINT_SIZE 59 ; inline
1301 : XA_RESOLUTION 60 ; inline
1302 : XA_COPYRIGHT 61 ; inline
1303 : XA_NOTICE 62 ; inline
1304 : XA_FONT_NAME 63 ; inline
1305 : XA_FAMILY_NAME 64 ; inline
1306 : XA_FULL_NAME 65 ; inline
1307 : XA_CAP_HEIGHT 66 ; inline
1308 : XA_WM_CLASS 67 ; inline
1309 : XA_WM_TRANSIENT_FOR 68 ; inline
1311 : XA_LAST_PREDEFINED 68 ; inline
1313 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1314 ! The rest of the stuff is not from the book.
1315 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
1317 FUNCTION: void XFree ( void* data ) ;
1318 FUNCTION: int XStoreName ( Display* display, Window w, char* window_name ) ;
1319 FUNCTION: void XSetWMNormalHints ( Display* display, Window w, XSizeHints* hints ) ;
1320 FUNCTION: int XBell ( Display* display, int percent ) ;
1324 : XIMPreeditArea HEX: 0001 ; inline
1325 : XIMPreeditCallbacks HEX: 0002 ; inline
1326 : XIMPreeditPosition HEX: 0004 ; inline
1327 : XIMPreeditNothing HEX: 0008 ; inline
1328 : XIMPreeditNone HEX: 0010 ; inline
1329 : XIMStatusArea HEX: 0100 ; inline
1330 : XIMStatusCallbacks HEX: 0200 ; inline
1331 : XIMStatusNothing HEX: 0400 ; inline
1332 : XIMStatusNone HEX: 0800 ; inline
1334 : XNVaNestedList "XNVaNestedList" ;
1335 : XNQueryInputStyle "queryInputStyle" ;
1336 : XNClientWindow "clientWindow" ;
1337 : XNInputStyle "inputStyle" ;
1338 : XNFocusWindow "focusWindow" ;
1339 : XNResourceName "resourceName" ;
1340 : XNResourceClass "resourceClass" ;
1341 : XNGeometryCallback "geometryCallback" ;
1342 : XNDestroyCallback "destroyCallback" ;
1343 : XNFilterEvents "filterEvents" ;
1344 : XNPreeditStartCallback "preeditStartCallback" ;
1345 : XNPreeditDoneCallback "preeditDoneCallback" ;
1346 : XNPreeditDrawCallback "preeditDrawCallback" ;
1347 : XNPreeditCaretCallback "preeditCaretCallback" ;
1348 : XNPreeditStateNotifyCallback "preeditStateNotifyCallback" ;
1349 : XNPreeditAttributes "preeditAttributes" ;
1350 : XNStatusStartCallback "statusStartCallback" ;
1351 : XNStatusDoneCallback "statusDoneCallback" ;
1352 : XNStatusDrawCallback "statusDrawCallback" ;
1353 : XNStatusAttributes "statusAttributes" ;
1355 : XNAreaNeeded "areaNeeded" ;
1356 : XNSpotLocation "spotLocation" ;
1357 : XNColormap "colorMap" ;
1358 : XNStdColormap "stdColorMap" ;
1359 : XNForeground "foreground" ;
1360 : XNBackground "background" ;
1361 : XNBackgroundPixmap "backgroundPixmap" ;
1362 : XNFontSet "fontSet" ;
1363 : XNLineSpace "lineSpace" ;
1364 : XNCursor "cursor" ;
1366 : XNQueryIMValuesList "queryIMValuesList" ;
1367 : XNQueryICValuesList "queryICValuesList" ;
1368 : XNVisiblePosition "visiblePosition" ;
1369 : XNR6PreeditCallback "r6PreeditCallback" ;
1370 : XNStringConversionCallback "stringConversionCallback" ;
1371 : XNStringConversion "stringConversion" ;
1372 : XNResetState "resetState" ;
1373 : XNHotKey "hotKey" ;
1374 : XNHotKeyState "hotKeyState" ;
1375 : XNPreeditState "preeditState" ;
1376 : XNSeparatorofNestedList "separatorofNestedList" ;
1378 : XBufferOverflow -1 ;
1384 FUNCTION: Bool XFilterEvent ( XEvent* event, Window w ) ;
1386 FUNCTION: XIM XOpenIM ( Display* dpy, void* rdb, char* res_name, char* res_class ) ;
1388 FUNCTION: Status XCloseIM ( XIM im ) ;
1390 FUNCTION: XIC XCreateIC ( XIM im, char* key1, Window value1, char* key2, Window value2, char* key3, int value3, char* key4, char* value4, char* key5, char* value5, int key6 ) ;
1392 FUNCTION: void XDestroyIC ( XIC ic ) ;
1394 FUNCTION: void XSetICFocus ( XIC ic ) ;
1396 FUNCTION: void XUnsetICFocus ( XIC ic ) ;
1398 FUNCTION: int XwcLookupString ( XIC ic, XKeyPressedEvent* event, ulong* buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return ) ;
1400 FUNCTION: int Xutf8LookupString ( XIC ic, XKeyPressedEvent* event, char* buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return ) ;
1402 ! !!! category of setlocale
1404 : LC_COLLATE 1 ; inline
1405 : LC_CTYPE 2 ; inline
1406 : LC_MONETARY 3 ; inline
1407 : LC_NUMERIC 4 ; inline
1408 : LC_TIME 5 ; inline
1410 FUNCTION: char* setlocale ( int category, char* name ) ;
1412 FUNCTION: Bool XSupportsLocale ( ) ;
1414 FUNCTION: char* XSetLocaleModifiers ( char* modifier_list ) ;
1420 : init-locale ( -- )
1421 LC_ALL "" setlocale [ "setlocale() failed" print flush ] unless
1422 XSupportsLocale [ "XSupportsLocale() failed" print flush ] unless ;
1424 : flush-dpy ( -- ) dpy get XFlush drop ;
1426 : x-atom ( string -- atom ) dpy get swap 0 XInternAtom ;
1428 : check-display ( alien -- alien' )
1430 "Cannot connect to X server - check $DISPLAY" throw
1433 : initialize-x ( display-string -- )
1435 dup [ ascii string>alien ] when
1436 XOpenDisplay check-display dpy set-global
1437 dpy get XDefaultScreen scr set-global
1438 dpy get scr get XRootWindow root set-global ;
1440 : close-x ( -- ) dpy get XCloseDisplay drop ;
1442 : with-x ( display-string quot -- )
1443 [ initialize-x ] dip [ close-x ] [ ] cleanup ;