! Copyright (C) 2005, 2006 Eduardo Cavazos ! See http://factorcode.org/license.txt for BSD license. ! ! The most popular guides to programming the X Window System are ! the series from Oreilly. For programming with Xlib, there is ! the reference manual and the programmers guide. However, a ! lesser known manual is the free Xlib manual that comes with ! the MIT X distribution. The arrangement and order of these ! bindings follows the structure of the free Xlib manual. If you ! add to this library and are wondering what part of the file to ! modify, just find the function or data structure in the manual ! and note the section. ! ! https://www.x.org/releases/X11R7.6/doc/libX11/specs/libX11/libX11.html USING: accessors alien.c-types alien.data alien.syntax classes.struct io.encodings.ascii kernel literals math x11.X x11.syntax ; IN: x11.xlib LIBRARY: xlib TYPEDEF: c-string XPointer C-TYPE: Screen TYPEDEF: void* GC C-TYPE: Visual C-TYPE: XExtData C-TYPE: XFontProp C-TYPE: XComposeStatus TYPEDEF: void* XIM TYPEDEF: void* XIC TYPEDEF: int Status TYPEDEF: int Bool TYPEDEF: ulong VisualID TYPEDEF: ulong Time : *XID ( bytes -- n ) ulong deref ; ALIAS: *Window *XID ALIAS: *Drawable *XID ALIAS: *KeySym *XID : *Atom ( bytes -- n ) ulong deref ; ! ! 2 - Display Functions ! ! This struct is incomplete STRUCT: Display { ext_data void* } { free_funcs void* } { fd int } ; X-FUNCTION: Display* XOpenDisplay ( c-string[ascii] display_name ) ! 2.2 Obtaining Information about the Display, Image Formats, or Screens X-FUNCTION: ulong XBlackPixel ( Display* display, int screen_number ) X-FUNCTION: ulong XWhitePixel ( Display* display, int screen_number ) X-FUNCTION: Colormap XDefaultColormap ( Display* display, int screen_number ) X-FUNCTION: int XDefaultDepth ( Display* display, int screen_number ) X-FUNCTION: GC XDefaultGC ( Display* display, int screen_number ) X-FUNCTION: int XDefaultScreen ( Display* display ) X-FUNCTION: Window XRootWindow ( Display* display, int screen_number ) X-FUNCTION: Window XDefaultRootWindow ( Display* display ) X-FUNCTION: int XProtocolVersion ( Display* display ) X-FUNCTION: int XProtocolRevision ( Display* display ) X-FUNCTION: int XQLength ( Display* display ) X-FUNCTION: int XScreenCount ( Display* display ) X-FUNCTION: int XConnectionNumber ( Display* display ) ! 2.5 Closing the Display X-FUNCTION: int XCloseDisplay ( Display* display ) ! ! 3 - Window Functions ! ! 3.2 - Window Attributes : CWBackPixmap ( -- n ) 0 2^ ; inline : CWBackPixel ( -- n ) 1 2^ ; inline : CWBorderPixmap ( -- n ) 2 2^ ; inline : CWBorderPixel ( -- n ) 3 2^ ; inline : CWBitGravity ( -- n ) 4 2^ ; inline : CWWinGravity ( -- n ) 5 2^ ; inline : CWBackingStore ( -- n ) 6 2^ ; inline : CWBackingPlanes ( -- n ) 7 2^ ; inline : CWBackingPixel ( -- n ) 8 2^ ; inline : CWOverrideRedirect ( -- n ) 9 2^ ; inline : CWSaveUnder ( -- n ) 10 2^ ; inline : CWEventMask ( -- n ) 11 2^ ; inline : CWDontPropagate ( -- n ) 12 2^ ; inline : CWColormap ( -- n ) 13 2^ ; inline : CWCursor ( -- n ) 14 2^ ; inline STRUCT: XSetWindowAttributes { background_pixmap Pixmap } { background_pixel ulong } { border_pixmap Pixmap } { border_pixel ulong } { bit_gravity int } { win_gravity int } { backing_store int } { backing_planes ulong } { backing_pixel ulong } { save_under Bool } { event_mask long } { do_not_propagate_mask long } { override_redirect Bool } { colormap Colormap } { cursor Cursor } ; ! 3.3 - Creating Windows X-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 ) X-FUNCTION: Window XCreateSimpleWindow ( Display* display, Window parent, int x, int y, uint width, uint height, uint border_width, ulong border, ulong background ) X-FUNCTION: Status XDestroyWindow ( Display* display, Window w ) X-FUNCTION: Status XMapWindow ( Display* display, Window window ) X-FUNCTION: Status XMapSubwindows ( Display* display, Window window ) X-FUNCTION: Status XUnmapWindow ( Display* display, Window w ) X-FUNCTION: Status XUnmapSubwindows ( Display* display, Window w ) ! 3.5 Mapping Windows X-FUNCTION: int XMapRaised ( Display* display, Window w ) ! 3.7 - Configuring Windows STRUCT: XWindowChanges { x int } { y int } { width int } { height int } { border_width int } { sibling Window } { stack_mode int } ; X-FUNCTION: Status XConfigureWindow ( Display* display, Window w, uint value_mask, XWindowChanges* values ) X-FUNCTION: Status XMoveWindow ( Display* display, Window w, int x, int y ) X-FUNCTION: Status XResizeWindow ( Display* display, Window w, uint width, uint height ) X-FUNCTION: Status XSetWindowBorderWidth ( Display* display, ulong w, uint width ) ! 3.8 Changing Window Stacking Order X-FUNCTION: Status XRaiseWindow ( Display* display, Window w ) X-FUNCTION: Status XLowerWindow ( Display* display, Window w ) ! 3.9 - Changing Window Attributes X-FUNCTION: Status XChangeWindowAttributes ( Display* display, Window w, ulong valuemask, XSetWindowAttributes* attr ) X-FUNCTION: Status XSetWindowBackground ( Display* display, Window w, ulong background_pixel ) X-FUNCTION: Status XDefineCursor ( Display* display, Window w, Cursor cursor ) X-FUNCTION: Status XUndefineCursor ( Display* display, Window w ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 4 - Window Information Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 4.1 - Obtaining Window Information X-FUNCTION: Status XQueryTree ( Display* display, Window w, Window* root_return, Window* parent_return, Window** children_return, uint* nchildren_return ) STRUCT: XWindowAttributes { x int } { y int } { width int } { height int } { border_width int } { depth int } { visual Visual* } { root Window } { class int } { bit_gravity int } { win_gravity int } { backing_store int } { backing_planes ulong } { backing_pixel ulong } { save_under Bool } { colormap Colormap } { map_installed Bool } { map_state int } { all_event_masks long } { your_event_mask long } { do_not_propagate_mask long } { override_redirect Bool } { screen Screen* } ; X-FUNCTION: Status XGetWindowAttributes ( Display* display, Window w, XWindowAttributes* attr ) X-FUNCTION: Status XGetGeometry ( Display* display, Drawable d, Window* root_return, int* x_return, int* y_return, uint* width_return, uint* height_return, uint* border_width_return, uint* depth_return ) ! 4.2 - Translating Screen Coordinates X-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 ) ! 4.3 - Properties and Atoms X-FUNCTION: Atom XInternAtom ( Display* display, c-string atom_name, Bool only_if_exists ) X-FUNCTION: c-string XGetAtomName ( Display* display, Atom atom ) ! 4.4 - Obtaining and Changing Window Properties X-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, c-string* prop_return ) X-FUNCTION: int XChangeProperty ( Display* display, Window w, Atom property, Atom type, int format, int mode, void* data, int nelements ) ! 4.5 Selections X-FUNCTION: int XSetSelectionOwner ( Display* display, Atom selection, Window owner, Time time ) X-FUNCTION: Window XGetSelectionOwner ( Display* display, Atom selection ) X-FUNCTION: int XConvertSelection ( Display* display, Atom selection, Atom target, Atom property, Window requestor, Time time ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 5 - Pixmap and Cursor Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 5.1 - Creating and Freeing Pixmaps X-FUNCTION: Pixmap XCreatePixmap ( Display* display, Drawable d, uint width, uint height, uint depth ) X-FUNCTION: int XFreePixmap ( Display* display, Pixmap pixmap ) ! 5.2 - Creating, Recoloring, and Freeing Cursors C-TYPE: XColor X-FUNCTION: Cursor XCreatePixmapCursor ( Display* display, Pixmap source, Pixmap mask, XColor* foreground_color, XColor* background_color, uint x, uint y ) X-FUNCTION: int XFreeCursor ( Display* display, Cursor cursor ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 6 - Color Management Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XColor { pixel ulong } { red ushort } { green ushort } { blue ushort } { flags char } { pad char } ; X-FUNCTION: Status XLookupColor ( Display* display, Colormap colormap, c-string color_name, XColor* exact_def_return, XColor* screen_def_return ) X-FUNCTION: Status XAllocColor ( Display* display, Colormap colormap, XColor* screen_in_out ) X-FUNCTION: Status XQueryColor ( Display* display, Colormap colormap, XColor* def_in_out ) ! 6.4 Creating, Copying, and Destroying Colormaps X-FUNCTION: Colormap XCreateColormap ( Display* display, Window w, Visual* visual, int alloc ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 7 - Graphics Context Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XGCValues { function int } { plane_mask ulong } { foreground ulong } { background ulong } { line_width int } { line_style int } { cap_style int } { join_style int } { fill_style int } { fill_rule int } { arc_mode int } { tile Pixmap } { stipple Pixmap } { ts_x_origin int } { ts_y_origin int } { font Font } { subwindow_mode int } { graphics_exposures Bool } { clip_x_origin int } { clip_y_origin int } { clip_mask Pixmap } { dash_offset int } { dashes char } ; X-FUNCTION: GC XCreateGC ( Display* display, Window d, ulong valuemask, XGCValues* values ) X-FUNCTION: int XChangeGC ( Display* display, GC gc, ulong valuemask, XGCValues* values ) X-FUNCTION: Status XGetGCValues ( Display* display, GC gc, ulong valuemask, XGCValues* values_return ) X-FUNCTION: Status XSetForeground ( Display* display, GC gc, ulong foreground ) X-FUNCTION: Status XSetBackground ( Display* display, GC gc, ulong background ) X-FUNCTION: Status XSetFunction ( Display* display, GC gc, int function ) X-FUNCTION: Status XSetSubwindowMode ( Display* display, GC gc, int subwindow_mode ) X-FUNCTION: GContext XGContextFromGC ( GC gc ) X-FUNCTION: Status XSetFont ( Display* display, GC gc, Font font ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 8 - Graphics Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: Status XClearWindow ( Display* display, Window w ) X-FUNCTION: Status XDrawPoint ( Display* display, Drawable d, GC gc, int x, int y ) X-FUNCTION: Status XDrawLine ( Display* display, Drawable d, GC gc, int x1, int y1, int x2, int y2 ) X-FUNCTION: Status XDrawArc ( Display* display, Drawable d, GC gc, int x, int y, uint width, uint height, int angle1, int angle2 ) X-FUNCTION: Status XFillArc ( Display* display, Drawable d, GC gc, int x, int y, uint width, uint height, int angle1, int angle2 ) ! 8.5 - Font Metrics STRUCT: XCharStruct { lbearing short } { rbearing short } { width short } { ascent short } { descent short } { attributes ushort } ; STRUCT: XFontStruct { ext_data XExtData* } { fid Font } { direction uint } { min_char_or_byte2 uint } { max_char_or_byte2 uint } { min_byte1 uint } { max_byte1 uint } { all_chars_exist Bool } { default_char uint } { n_properties int } { properties XFontProp* } { min_bounds XCharStruct } { max_bounds XCharStruct } { per_char XCharStruct* } { ascent int } { descent int } ; X-FUNCTION: Font XLoadFont ( Display* display, c-string name ) X-FUNCTION: XFontStruct* XQueryFont ( Display* display, XID font_ID ) X-FUNCTION: XFontStruct* XLoadQueryFont ( Display* display, c-string name ) X-FUNCTION: int XTextWidth ( XFontStruct* font_struct, c-string string, int count ) ! 8.6 - Drawing Text X-FUNCTION: Status XDrawString ( Display* display, Drawable d, GC gc, int x, int y, c-string string, int length ) ! 8.7 - Transferring Images between Client and Server CONSTANT: AllPlanes -1 STRUCT: XImage-funcs { create_image void* } { destroy_image void* } { get_pixel void* } { put_pixel void* } { sub_image void* } { add_pixel void* } ; STRUCT: XImage { width int } { height int } { xoffset int } { format int } { data uchar* } { byte_order int } { bitmap_unit int } { bitmap_bit_order int } { bitmap_pad int } { depth int } { bytes_per_line int } { bits_per_pixel int } { red_mask ulong } { green_mask ulong } { blue_mask ulong } { obdata XPointer } { f XImage-funcs } ; X-FUNCTION: XImage* XGetImage ( Display* display, Drawable d, int x, int y, uint width, uint height, ulong plane_mask, int format ) X-FUNCTION: int XDestroyImage ( XImage* ximage ) : XImage-size ( ximage -- size ) [ height>> ] [ bytes_per_line>> ] bi * ; : XImage-pixels ( ximage -- byte-array ) [ data>> ] [ XImage-size ] bi memory>byte-array ; ! ! 9 - Window and Session Manager Functions ! X-FUNCTION: Status XReparentWindow ( Display* display, Window w, Window parent, int x, int y ) X-FUNCTION: Status XAddToSaveSet ( Display* display, Window w ) X-FUNCTION: Status XRemoveFromSaveSet ( Display* display, Window w ) X-FUNCTION: Status XGrabServer ( Display* display ) X-FUNCTION: Status XUngrabServer ( Display* display ) X-FUNCTION: Status XKillClient ( Display* display, XID resource ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 10 - Events ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 10.3 - Event Masks STRUCT: XAnyEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 10.5 Keyboard and Pointer Events STRUCT: XButtonEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { root Window } { subwindow Window } { time Time } { x int } { y int } { x_root int } { y_root int } { state uint } { button uint } { same_screen Bool } ; TYPEDEF: XButtonEvent XButtonPressedEvent TYPEDEF: XButtonEvent XButtonReleasedEvent ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XKeyEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { root Window } { subwindow Window } { time Time } { x int } { y int } { x_root int } { y_root int } { state uint } { keycode uint } { same_screen Bool } ; TYPEDEF: XKeyEvent XKeyPressedEvent TYPEDEF: XKeyEvent XKeyReleasedEvent ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XMotionEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { root Window } { subwindow Window } { time Time } { x int } { y int } { x_root int } { y_root int } { state uint } { is_hint char } { same_screen Bool } ; TYPEDEF: XMotionEvent XPointerMovedEvent ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XCrossingEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { root Window } { subwindow Window } { time Time } { x int } { y int } { x_root int } { y_root int } { mode int } { detail int } { same_screen Bool } { focus Bool } { state uint } ; TYPEDEF: XCrossingEvent XEnterWindowEvent TYPEDEF: XCrossingEvent XLeaveWindowEvent ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XFocusChangeEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { mode int } { detail int } ; TYPEDEF: XFocusChangeEvent XFocusInEvent TYPEDEF: XFocusChangeEvent XFocusOutEvent ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XExposeEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { x int } { y int } { width int } { height int } { count int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XGraphicsExposeEvent { type int } { serial ulong } { send_event Bool } { display Display* } { drawable Drawable } { x int } { y int } { width int } { height int } { count int } { major_code int } { minor_code int } ; STRUCT: XNoExposeEvent { type int } { serial ulong } { send_event Bool } { display Display* } { drawable Drawable } { major_code int } { minor_code int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XVisibilityEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { state int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XCreateWindowEvent { type int } { serial ulong } { send_event Bool } { display Display* } { parent Window } { window Window } { x int } { y int } { width int } { height int } { border_width int } { override_redirect Bool } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XDestroyWindowEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XUnmapEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { from_configure Bool } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XMapEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { override_redirect Bool } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XMapRequestEvent { type int } { serial ulong } { send_event Bool } { display Display* } { parent Window } { window Window } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XReparentEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { parent Window } { x int } { y int } { override_redirect Bool } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XConfigureEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { x int } { y int } { width int } { height int } { border_width int } { above Window } { override_redirect Bool } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XGravityEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { x int } { y int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XResizeRequestEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { width int } { height int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XConfigureRequestEvent { type int } { serial ulong } { send_event Bool } { display Display* } { parent Window } { window Window } { x int } { y int } { width int } { height int } { border_width int } { above Window } { detail int } { value_mask ulong } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XCirculateEvent { type int } { serial ulong } { send_event Bool } { display Display* } { event Window } { window Window } { place int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XCirculateRequestEvent { type int } { serial ulong } { send_event Bool } { display Display* } { parent Window } { window Window } { place int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XPropertyEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { atom Atom } { time Time } { state int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XSelectionClearEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { selection Atom } { time Time } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XSelectionRequestEvent { type int } { serial ulong } { send_event Bool } { display Display* } { owner Window } { requestor Window } { selection Atom } { target Atom } { property Atom } { time Time } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XSelectionEvent { type int } { serial ulong } { send_event Bool } { display Display* } { requestor Window } { selection Atom } { target Atom } { property Atom } { time Time } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XColormapEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { colormap Colormap } { new Bool } { state int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XClientMessageEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { message_type Atom } { format int } { data0 long } { data1 long } { data2 long } { data3 long } { data4 long } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XMappingEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { request int } { first_keycode int } { count int } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XErrorEvent { type int } { display Display* } { resourceid XID } { serial ulong } { error_code uchar } { request_code uchar } { minor_code uchar } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! STRUCT: XKeymapEvent { type int } { serial ulong } { send_event Bool } { display Display* } { window Window } { pad int[8] } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Newer things, needed for XInput2 support. Not in the book. ! GenericEvent is the standard event for all newer extensions. STRUCT: XGenericEvent { type int } { serial ulong } { send_event Bool } { display Display* } { extension int } { evtype int } ; STRUCT: XGenericEventCookie { type int } { serial ulong } { send_event Bool } { display Display* } { extension int } { evtype int } { cookie uint } { data void* } ; X-FUNCTION: Bool XGetEventData ( Display* dpy, XGenericEventCookie* cookie ) X-FUNCTION: void XFreeEventData ( Display* dpy, XGenericEventCookie* cookie ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! UNION-STRUCT: XEvent { int int } { XAnyEvent XAnyEvent } { XKeyEvent XKeyEvent } { XButtonEvent XButtonEvent } { XMotionEvent XMotionEvent } { XCrossingEvent XCrossingEvent } { XFocusChangeEvent XFocusChangeEvent } { XExposeEvent XExposeEvent } { XGraphicsExposeEvent XGraphicsExposeEvent } { XNoExposeEvent XNoExposeEvent } { XVisibilityEvent XVisibilityEvent } { XCreateWindowEvent XCreateWindowEvent } { XDestroyWindowEvent XDestroyWindowEvent } { XUnmapEvent XUnmapEvent } { XMapEvent XMapEvent } { XMapRequestEvent XMapRequestEvent } { XReparentEvent XReparentEvent } { XConfigureEvent XConfigureEvent } { XGravityEvent XGravityEvent } { XResizeRequestEvent XResizeRequestEvent } { XConfigureRequestEvent XConfigureRequestEvent } { XCirculateEvent XCirculateEvent } { XCirculateRequestEvent XCirculateRequestEvent } { XPropertyEvent XPropertyEvent } { XSelectionClearEvent XSelectionClearEvent } { XSelectionRequestEvent XSelectionRequestEvent } { XSelectionEvent XSelectionEvent } { XColormapEvent XColormapEvent } { XClientMessageEvent XClientMessageEvent } { XMappingEvent XMappingEvent } { XErrorEvent XErrorEvent } { XKeymapEvent XKeymapEvent } { XGenericEvent XGenericEvent } { XGenericEventCookie XGenericEventCookie } { padding long[24] } ; ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 11 - Event Handling Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: Status XSelectInput ( Display* display, Window w, long event_mask ) X-FUNCTION: Status XFlush ( Display* display ) X-FUNCTION: Status XSync ( Display* display, int discard ) X-FUNCTION: Status XNextEvent ( Display* display, XEvent* event ) X-FUNCTION: Status XMaskEvent ( Display* display, long event_mask, XEvent* event_return ) ! 11.3 - Event Queue Management CONSTANT: QueuedAlready 0 CONSTANT: QueuedAfterReading 1 CONSTANT: QueuedAfterFlush 2 X-FUNCTION: int XEventsQueued ( Display* display, int mode ) X-FUNCTION: int XPending ( Display* display ) ! 11.6 - Sending Events to Other Applications X-FUNCTION: Status XSendEvent ( Display* display, Window w, Bool propagate, long event_mask, XEvent* event_send ) ! 11.8 - Handling Protocol Errors X-FUNCTION: int XSetErrorHandler ( void* handler ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 12 - Input Device Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: int XGrabPointer ( Display* display, Window grab_window, Bool owner_events, uint event_mask, int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor, Time time ) X-FUNCTION: Status XUngrabPointer ( Display* display, Time time ) X-FUNCTION: Status XChangeActivePointerGrab ( Display* display, uint event_mask, Cursor cursor, Time time ) X-FUNCTION: Status XGrabKey ( Display* display, int keycode, uint modifiers, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode ) X-FUNCTION: int XGrabKeyboard ( Display* display, Window grab_window, Bool owner_events, int pointer_mode, int keyboard_mode, Time time ) X-FUNCTION: Status XSetInputFocus ( Display* display, Window focus, int revert_to, Time time ) X-FUNCTION: Status XGetInputFocus ( Display* display, Window* focus_return, int* revert_to_return ) X-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 ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 14 - Inter-Client Communication Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 14.1 Client to Window Manager Communication X-FUNCTION: Status XFetchName ( Display* display, Window w, c-string* window_name_return ) X-FUNCTION: Status XGetTransientForHint ( Display* display, Window w, Window* prop_window_return ) ! 14.1.1. Manipulating Top-Level Windows X-FUNCTION: Status XIconifyWindow ( Display* display, Window w, int screen_number ) X-FUNCTION: Status XWithdrawWindow ( Display* display, Window w, int screen_number ) ! 14.1.6 - Setting and Reading the WM_HINTS Property ! 17.1.7 - Setting and Reading the WM_NORMAL_HINTS Property : USPosition ( -- n ) 0 2^ ; inline : USSize ( -- n ) 1 2^ ; inline : PPosition ( -- n ) 2 2^ ; inline : PSize ( -- n ) 3 2^ ; inline : PMinSize ( -- n ) 4 2^ ; inline : PMaxSize ( -- n ) 5 2^ ; inline : PResizeInc ( -- n ) 6 2^ ; inline : PAspect ( -- n ) 7 2^ ; inline : PBaseSize ( -- n ) 8 2^ ; inline : PWinGravity ( -- n ) 9 2^ ; inline CONSTANT: PAllHints flags{ PPosition PSize PMinSize PMaxSize PResizeInc PAspect } STRUCT: XSizeHints { flags long } { x int } { y int } { width int } { height int } { min_width int } { min_height int } { max_width int } { max_height int } { width_inc int } { height_inc int } { min_aspect_x int } { min_aspect_y int } { max_aspect_x int } { max_aspect_y int } { base_width int } { base_height int } { win_gravity int } ; ! 14.1.10. Setting and Reading the WM_PROTOCOLS Property X-FUNCTION: Status XSetWMProtocols ( Display* display, Window w, Atom* protocols, int count ) X-FUNCTION: Status XGetWMProtocols ( Display* display, Window w, Atom** protocols_return, int* count_return ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 16 - Application Utility Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 16.1 Keyboard Utility Functions X-FUNCTION: KeySym XLookupKeysym ( XKeyEvent* key_event, int index ) X-FUNCTION: int XLookupString ( XKeyEvent* event_struct, void* buffer_return, int bytes_buffer, KeySym* keysym_return, XComposeStatus* status_in_out ) ! 16.7 Determining the Appropriate Visual Type CONSTANT: VisualNoMask 0x0 CONSTANT: VisualIDMask 0x1 CONSTANT: VisualScreenMask 0x2 CONSTANT: VisualDepthMask 0x4 CONSTANT: VisualClassMask 0x8 CONSTANT: VisualRedMaskMask 0x10 CONSTANT: VisualGreenMaskMask 0x20 CONSTANT: VisualBlueMaskMask 0x40 CONSTANT: VisualColormapSizeMask 0x80 CONSTANT: VisualBitsPerRGBMask 0x100 CONSTANT: VisualAllMask 0x1FF STRUCT: XVisualInfo { visual Visual* } { visualid VisualID } { screen int } { depth uint } { class int } { red_mask ulong } { green_mask ulong } { blue_mask ulong } { colormap_size int } { bits_per_rgb int } ; ! 16.9 Manipulating Bitmaps X-FUNCTION: Pixmap XCreateBitmapFromData ( Display* display, Drawable d, c-string data, uint width, uint height ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Appendix C - Extensions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: Bool XQueryExtension ( Display* display, c-string name, int* major_opcode_return, int* first_event_return, int* first_error_return ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Appendix D - Compatibility Functions ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: Status XSetStandardProperties ( Display* display, Window w, c-string window_name, c-string icon_name, Pixmap icon_pixmap, c-string* argv, int argc, XSizeHints* hints ) ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CONSTANT: XA_PRIMARY 1 CONSTANT: XA_SECONDARY 2 CONSTANT: XA_ARC 3 CONSTANT: XA_ATOM 4 CONSTANT: XA_BITMAP 5 CONSTANT: XA_CARDINAL 6 CONSTANT: XA_COLORMAP 7 CONSTANT: XA_CURSOR 8 CONSTANT: XA_CUT_BUFFER0 9 CONSTANT: XA_CUT_BUFFER1 10 CONSTANT: XA_CUT_BUFFER2 11 CONSTANT: XA_CUT_BUFFER3 12 CONSTANT: XA_CUT_BUFFER4 13 CONSTANT: XA_CUT_BUFFER5 14 CONSTANT: XA_CUT_BUFFER6 15 CONSTANT: XA_CUT_BUFFER7 16 CONSTANT: XA_DRAWABLE 17 CONSTANT: XA_FONT 18 CONSTANT: XA_INTEGER 19 CONSTANT: XA_PIXMAP 20 CONSTANT: XA_POINT 21 CONSTANT: XA_RECTANGLE 22 CONSTANT: XA_RESOURCE_MANAGER 23 CONSTANT: XA_RGB_COLOR_MAP 24 CONSTANT: XA_RGB_BEST_MAP 25 CONSTANT: XA_RGB_BLUE_MAP 26 CONSTANT: XA_RGB_DEFAULT_MAP 27 CONSTANT: XA_RGB_GRAY_MAP 28 CONSTANT: XA_RGB_GREEN_MAP 29 CONSTANT: XA_RGB_RED_MAP 30 CONSTANT: XA_STRING 31 CONSTANT: XA_VISUALID 32 CONSTANT: XA_WINDOW 33 CONSTANT: XA_WM_COMMAND 34 CONSTANT: XA_WM_HINTS 35 CONSTANT: XA_WM_CLIENT_MACHINE 36 CONSTANT: XA_WM_ICON_NAME 37 CONSTANT: XA_WM_ICON_SIZE 38 CONSTANT: XA_WM_NAME 39 CONSTANT: XA_WM_NORMAL_HINTS 40 CONSTANT: XA_WM_SIZE_HINTS 41 CONSTANT: XA_WM_ZOOM_HINTS 42 CONSTANT: XA_MIN_SPACE 43 CONSTANT: XA_NORM_SPACE 44 CONSTANT: XA_MAX_SPACE 45 CONSTANT: XA_END_SPACE 46 CONSTANT: XA_SUPERSCRIPT_X 47 CONSTANT: XA_SUPERSCRIPT_Y 48 CONSTANT: XA_SUBSCRIPT_X 49 CONSTANT: XA_SUBSCRIPT_Y 50 CONSTANT: XA_UNDERLINE_POSITION 51 CONSTANT: XA_UNDERLINE_THICKNESS 52 CONSTANT: XA_STRIKEOUT_ASCENT 53 CONSTANT: XA_STRIKEOUT_DESCENT 54 CONSTANT: XA_ITALIC_ANGLE 55 CONSTANT: XA_X_HEIGHT 56 CONSTANT: XA_QUAD_WIDTH 57 CONSTANT: XA_WEIGHT 58 CONSTANT: XA_POINT_SIZE 59 CONSTANT: XA_RESOLUTION 60 CONSTANT: XA_COPYRIGHT 61 CONSTANT: XA_NOTICE 62 CONSTANT: XA_FONT_NAME 63 CONSTANT: XA_FAMILY_NAME 64 CONSTANT: XA_FULL_NAME 65 CONSTANT: XA_CAP_HEIGHT 66 CONSTANT: XA_WM_CLASS 67 CONSTANT: XA_WM_TRANSIENT_FOR 68 CONSTANT: XA_LAST_PREDEFINED 68 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! The rest of the stuff is not from the book. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X-FUNCTION: void XFree ( void* data ) X-FUNCTION: int XStoreName ( Display* display, Window w, c-string window_name ) X-FUNCTION: void XSetWMNormalHints ( Display* display, Window w, XSizeHints* hints ) X-FUNCTION: int XBell ( Display* display, int percent ) ! !!! INPUT METHODS CONSTANT: XIMPreeditArea 0x0001 CONSTANT: XIMPreeditCallbacks 0x0002 CONSTANT: XIMPreeditPosition 0x0004 CONSTANT: XIMPreeditNothing 0x0008 CONSTANT: XIMPreeditNone 0x0010 CONSTANT: XIMStatusArea 0x0100 CONSTANT: XIMStatusCallbacks 0x0200 CONSTANT: XIMStatusNothing 0x0400 CONSTANT: XIMStatusNone 0x0800 CONSTANT: XNVaNestedList "XNVaNestedList" CONSTANT: XNQueryInputStyle "queryInputStyle" CONSTANT: XNClientWindow "clientWindow" CONSTANT: XNInputStyle "inputStyle" CONSTANT: XNFocusWindow "focusWindow" CONSTANT: XNResourceName "resourceName" CONSTANT: XNResourceClass "resourceClass" CONSTANT: XNGeometryCallback "geometryCallback" CONSTANT: XNDestroyCallback "destroyCallback" CONSTANT: XNFilterEvents "filterEvents" CONSTANT: XNPreeditStartCallback "preeditStartCallback" CONSTANT: XNPreeditDoneCallback "preeditDoneCallback" CONSTANT: XNPreeditDrawCallback "preeditDrawCallback" CONSTANT: XNPreeditCaretCallback "preeditCaretCallback" CONSTANT: XNPreeditStateNotifyCallback "preeditStateNotifyCallback" CONSTANT: XNPreeditAttributes "preeditAttributes" CONSTANT: XNStatusStartCallback "statusStartCallback" CONSTANT: XNStatusDoneCallback "statusDoneCallback" CONSTANT: XNStatusDrawCallback "statusDrawCallback" CONSTANT: XNStatusAttributes "statusAttributes" CONSTANT: XNArea "area" CONSTANT: XNAreaNeeded "areaNeeded" CONSTANT: XNSpotLocation "spotLocation" CONSTANT: XNColormap "colorMap" CONSTANT: XNStdColormap "stdColorMap" CONSTANT: XNForeground "foreground" CONSTANT: XNBackground "background" CONSTANT: XNBackgroundPixmap "backgroundPixmap" CONSTANT: XNFontSet "fontSet" CONSTANT: XNLineSpace "lineSpace" CONSTANT: XNCursor "cursor" CONSTANT: XNQueryIMValuesList "queryIMValuesList" CONSTANT: XNQueryICValuesList "queryICValuesList" CONSTANT: XNVisiblePosition "visiblePosition" CONSTANT: XNR6PreeditCallback "r6PreeditCallback" CONSTANT: XNStringConversionCallback "stringConversionCallback" CONSTANT: XNStringConversion "stringConversion" CONSTANT: XNResetState "resetState" CONSTANT: XNHotKey "hotKey" CONSTANT: XNHotKeyState "hotKeyState" CONSTANT: XNPreeditState "preeditState" CONSTANT: XNSeparatorofNestedList "separatorofNestedList" CONSTANT: XBufferOverflow -1 CONSTANT: XLookupNone 1 CONSTANT: XLookupChars 2 CONSTANT: XLookupKeySym 3 CONSTANT: XLookupBoth 4 X-FUNCTION: Bool XFilterEvent ( XEvent* event, Window w ) X-FUNCTION: XIM XOpenIM ( Display* dpy, void* rdb, c-string res_name, c-string res_class ) X-FUNCTION: Status XCloseIM ( XIM im ) X-FUNCTION: XIC XCreateIC ( XIM im, c-string key1, Window value1, c-string key2, Window value2, c-string key3, int value3, c-string key4, c-string value4, c-string key5, c-string value5, int key6 ) X-FUNCTION: void XDestroyIC ( XIC ic ) X-FUNCTION: void XSetICFocus ( XIC ic ) X-FUNCTION: void XUnsetICFocus ( XIC ic ) X-FUNCTION: int XwcLookupString ( XIC ic, XKeyPressedEvent* event, ulong* buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return ) X-FUNCTION: int Xutf8LookupString ( XIC ic, XKeyPressedEvent* event, c-string buffer_return, int bytes_buffer, KeySym* keysym_return, Status* status_return ) ! !!! category of setlocale CONSTANT: LC_ALL 0 CONSTANT: LC_COLLATE 1 CONSTANT: LC_CTYPE 2 CONSTANT: LC_MONETARY 3 CONSTANT: LC_NUMERIC 4 CONSTANT: LC_TIME 5 X-FUNCTION: c-string setlocale ( int category, c-string name ) X-FUNCTION: Bool XSupportsLocale ( ) X-FUNCTION: c-string XSetLocaleModifiers ( c-string modifier_list ) ! uncategorized xlib bindings X-FUNCTION: int XQueryKeymap ( Display* display, char[32] keys_return )