makepad_platform/os/linux/x11/
x11_sys.rs

1#![allow(non_upper_case_globals)]
2
3use std::os::raw::{
4    c_int,
5    c_uint,
6    c_short,
7    c_long,
8    c_ulong,
9    c_void,
10    c_char,
11    c_uchar,
12};
13
14
15pub type Display = _XDisplay;
16
17pub type XID = c_ulong;
18pub type Window = XID;
19pub type Drawable = XID;
20pub type Colormap = XID;
21pub type KeySym = XID;
22pub type Pixmap = XID;
23pub type Cursor = XID;
24
25pub type Time = c_ulong;
26pub type XIM = *mut _XIM; 
27pub type Atom = c_ulong;
28pub type XEvent = _XEvent;
29pub type XIC = *mut _XIC;
30pub type XExtData = _XExtData;
31pub type XPointer = *mut c_char;
32pub type VisualID = c_ulong;
33pub type XrmDatabase = *mut _XrmHashBucketRec;
34pub type XKeyPressedEvent = XKeyEvent;
35pub type XComposeStatus = _XComposeStatus;
36pub type GC = *mut _XGC;
37
38pub const None: u32 = 0;
39pub const True: u32 = 1;
40pub const False: u32 = 0;
41
42pub const VisualIDMask: u32 = 1;
43
44pub const CurrentTime: u32 = 0;
45pub const SelectionNotify: u32 = 31;
46pub const AnyPropertyType: u32 = 0;
47pub const SelectionRequest: u32 = 30;
48pub const PropModeReplace: u32 = 0;
49pub const DestroyNotify: u32 = 17;
50pub const ConfigureNotify: u32 = 22;
51pub const EnterNotify: u32 = 7;
52pub const LeaveNotify: u32 = 8;
53pub const MotionNotify: u32 = 6;
54pub const AllocNone: u32 = 0;
55pub const InputOutput: u32 = 1;
56pub const ClientMessage: u32 = 33;
57pub const KeyPress: u32 = 2;
58pub const KeyRelease: u32 = 3;
59pub const ButtonPress: u32 = 4;
60pub const ButtonRelease: u32 = 5;
61pub const Expose: u32 = 12;
62
63pub const CWBorderPixel: u32 = 8;
64pub const CWColormap: u32 = 8192;
65pub const CWEventMask: u32 = 2048;
66
67pub const SubstructureNotifyMask: u32 = 524288;
68pub const SubstructureRedirectMask: u32 = 1048576;
69pub const NoEventMask: u32 = 0;
70
71pub const ExposureMask: u32 = 32768;
72pub const StructureNotifyMask: u32 = 131072;
73pub const ButtonMotionMask: u32 = 8192;
74pub const PointerMotionMask: u32 = 64;
75pub const ButtonPressMask: u32 = 4;
76pub const ButtonReleaseMask: u32 = 8;
77pub const KeyPressMask: u32 = 1;
78pub const KeyReleaseMask: u32 = 2;
79pub const VisibilityChangeMask: u32 = 65536;
80pub const FocusChangeMask: u32 = 2097152;
81pub const EnterWindowMask: u32 = 16;
82pub const LeaveWindowMask: u32 = 32;
83pub const XBufferOverflow: i32 = -1;
84
85pub const QueuedAlready: i32 = 0;
86pub const QueuedAfterReading: i32 = 1;
87pub const QueuedAfterFlush: i32 = 2;
88
89// Added, from https://community.khronos.org/t/list-for-xevent-structures-type-component/70768
90pub const VisibilityNotify: u32 = 15;
91// Added, from https://tronche.com/gui/x/xlib/events/window-state-change/visibility.html
92pub const VisibilityUnobscured: i32 = 0;
93pub const VisibilityPartiallyObscured: i32 = 1;
94pub const VisibilityFullyObscured: i32 = 2;
95
96pub const XIMPreeditNothing: u32 = 8;
97pub const XIMStatusNothing: u32 = 1024;
98
99pub const XNInputStyle: &'static [u8; 11usize] = b"inputStyle\0";
100pub const XNClientWindow: &'static [u8; 13usize] = b"clientWindow\0";
101pub const XNFocusWindow: &'static [u8; 12usize] = b"focusWindow\0";
102
103pub const Mod1Mask: u32 = 8;
104pub const ShiftMask: u32 = 1;
105pub const ControlMask: u32 = 4;
106pub const Mod4Mask: u32 = 64;
107
108pub const XK_A: u32 = 65;
109pub const XK_B: u32 = 66;
110pub const XK_C: u32 = 67;
111pub const XK_D: u32 = 68;
112pub const XK_E: u32 = 69;
113pub const XK_F: u32 = 70;
114pub const XK_G: u32 = 71;
115pub const XK_H: u32 = 72;
116pub const XK_I: u32 = 73;
117pub const XK_J: u32 = 74;
118pub const XK_K: u32 = 75;
119pub const XK_L: u32 = 76;
120pub const XK_M: u32 = 77;
121pub const XK_N: u32 = 78;
122pub const XK_O: u32 = 79;
123pub const XK_P: u32 = 80;
124pub const XK_Q: u32 = 81;
125pub const XK_R: u32 = 82;
126pub const XK_S: u32 = 83;
127pub const XK_T: u32 = 84;
128pub const XK_U: u32 = 85;
129pub const XK_V: u32 = 86;
130pub const XK_W: u32 = 87;
131pub const XK_X: u32 = 88;
132pub const XK_Y: u32 = 89;
133pub const XK_Z: u32 = 90;
134pub const XK_a: u32 = 97;
135pub const XK_b: u32 = 98;
136pub const XK_c: u32 = 99;
137pub const XK_d: u32 = 100;
138pub const XK_e: u32 = 101;
139pub const XK_f: u32 = 102;
140pub const XK_g: u32 = 103;
141pub const XK_h: u32 = 104;
142pub const XK_i: u32 = 105;
143pub const XK_j: u32 = 106;
144pub const XK_k: u32 = 107;
145pub const XK_l: u32 = 108;
146pub const XK_m: u32 = 109;
147pub const XK_n: u32 = 110;
148pub const XK_o: u32 = 111;
149pub const XK_p: u32 = 112;
150pub const XK_q: u32 = 113;
151pub const XK_r: u32 = 114;
152pub const XK_s: u32 = 115;
153pub const XK_t: u32 = 116;
154pub const XK_u: u32 = 117;
155pub const XK_v: u32 = 118;
156pub const XK_w: u32 = 119;
157pub const XK_x: u32 = 120;
158pub const XK_y: u32 = 121;
159pub const XK_z: u32 = 122;
160pub const XK_0: u32 = 48;
161pub const XK_1: u32 = 49;
162pub const XK_2: u32 = 50;
163pub const XK_3: u32 = 51;
164pub const XK_4: u32 = 52;
165pub const XK_5: u32 = 53;
166pub const XK_6: u32 = 54;
167pub const XK_7: u32 = 55;
168pub const XK_8: u32 = 56;
169pub const XK_9: u32 = 57;
170
171pub const XK_Meta_L: u32 = 65511;
172pub const XK_Meta_R: u32 = 65512;
173pub const XK_Alt_L: u32 = 65513;
174pub const XK_Alt_R: u32 = 65514;
175pub const XK_Shift_L: u32 = 65505;
176pub const XK_Shift_R: u32 = 65506;
177pub const XK_Control_L: u32 = 65507;
178pub const XK_Control_R: u32 = 65508;
179
180pub const XK_equal: u32 = 61;
181pub const XK_minus: u32 = 45;
182pub const XK_bracketleft: u32 = 91;
183pub const XK_bracketright: u32 = 93;
184pub const XK_Return: u32 = 65293;
185pub const XK_grave: u32 = 96;
186pub const XK_semicolon: u32 = 59;
187pub const XK_backslash: u32 = 92;
188pub const XK_comma: u32 = 44;
189pub const XK_slash: u32 = 47;
190pub const XK_period: u32 = 46;
191pub const XK_Tab: u32 = 65289;
192pub const XK_ISO_Left_Tab: u32 = 65056;
193pub const XK_space: u32 = 32;
194pub const XK_BackSpace: u32 = 65288;
195pub const XK_Escape: u32 = 65307;
196pub const XK_Caps_Lock: u32 = 65509;
197
198pub const XK_KP_Subtract: u32 = 65453;
199pub const XK_KP_Decimal: u32 = 65454;
200pub const XK_KP_Divide: u32 = 65455;
201pub const XK_KP_Multiply: u32 = 65450;
202pub const XK_KP_Add: u32 = 65451;
203pub const XK_Num_Lock: u32 = 65407;
204pub const XK_KP_Enter: u32 = 65421;
205
206pub const XK_KP_0: u32 = 65456;
207pub const XK_KP_1: u32 = 65457;
208pub const XK_KP_2: u32 = 65458;
209pub const XK_KP_3: u32 = 65459;
210pub const XK_KP_4: u32 = 65460;
211pub const XK_KP_5: u32 = 65461;
212pub const XK_KP_6: u32 = 65462;
213pub const XK_KP_7: u32 = 65463;
214pub const XK_KP_8: u32 = 65464;
215pub const XK_KP_9: u32 = 65465;
216
217pub const XK_F1: u32 = 65470;
218pub const XK_F2: u32 = 65471;
219pub const XK_F3: u32 = 65472;
220pub const XK_F4: u32 = 65473;
221pub const XK_F5: u32 = 65474;
222pub const XK_F6: u32 = 65475;
223pub const XK_F7: u32 = 65476;
224pub const XK_F8: u32 = 65477;
225pub const XK_F9: u32 = 65478;
226pub const XK_F10: u32 = 65479;
227pub const XK_F11: u32 = 65480;
228pub const XK_F12: u32 = 65481;
229
230pub const XK_Print: u32 = 65377;
231pub const XK_Home: u32 = 65360;
232pub const XK_Page_Up: u32 = 65365;
233pub const XK_Delete: u32 = 65535;
234pub const XK_End: u32 = 65367;
235pub const XK_Page_Down: u32 = 65366;
236pub const XK_Left: u32 = 65361;
237pub const XK_Right: u32 = 65363;
238pub const XK_Down: u32 = 65364;
239pub const XK_Up: u32 = 65362;
240    
241
242#[link(name = "Xcursor")]
243extern "C" {
244    pub fn XcursorLibraryLoadCursor(
245        dpy: *mut Display,
246        file: *const c_char,
247    ) -> Cursor;
248}
249
250#[link(name = "X11")]
251extern "C" {
252    pub fn XOpenDisplay(arg1: *const c_char) -> *mut Display;
253    
254    pub fn XConnectionNumber(arg1: *mut Display) -> c_int;
255    
256    pub fn XOpenIM(
257        arg1: *mut Display,
258        arg2: *mut _XrmHashBucketRec,
259        arg3: *mut c_char,
260        arg4: *mut c_char,
261    ) -> XIM;
262    
263    pub fn XInternAtom(
264        arg1: *mut Display,
265        arg2: *const c_char,
266        arg3: c_int,
267    ) -> Atom;
268    
269    pub fn XrmInitialize();
270    
271    pub fn XCloseIM(arg1: XIM) -> c_int;
272    
273    pub fn XCloseDisplay(arg1: *mut Display) -> c_int;
274    
275    pub fn XPending(arg1: *mut Display) -> c_int;
276    
277    pub fn XNextEvent(arg1: *mut Display, arg2: *mut XEvent) -> c_int;
278
279    pub fn XPeekEvent(arg1: *mut Display, arg2: *mut XEvent) -> c_int;
280
281    pub fn XEventsQueued(arg1: *mut Display, arg2: c_int) -> c_int;
282    
283    pub fn XGetWindowProperty(
284        arg1: *mut Display,
285        arg2: Window,
286        arg3: Atom,
287        arg4: c_long,
288        arg5: c_long,
289        arg6: c_int,
290        arg7: Atom,
291        arg8: *mut Atom,
292        arg9: *mut c_int,
293        arg10: *mut c_ulong,
294        arg11: *mut c_ulong,
295        arg12: *mut *mut c_uchar,
296    ) -> c_int;
297    
298    pub fn XFree(arg1: *mut c_void) -> c_int;
299    
300    pub fn XChangeProperty(
301        display: *mut Display,
302        window: Window,
303        property: Atom,
304        type_: Atom,
305        format: c_int,
306        mode: c_int,
307        data: *const c_uchar,
308        num_elements: c_int,
309    ) -> c_int;
310    
311    pub fn XSendEvent(
312        arg1: *mut Display,
313        arg2: Window,
314        arg3: c_int,
315        arg4: c_long,
316        arg5: *mut XEvent,
317    ) -> c_int;
318    
319    pub fn XDefaultScreen(arg1: *mut Display) -> c_int;
320    
321    pub fn XRootWindow(arg1: *mut Display, arg2: c_int) -> Window;
322
323    pub fn XGetVisualInfo(
324        arg1: *mut Display,
325        arg2: c_long,
326        arg3: *mut XVisualInfo,
327        arg4: *mut c_int,
328    ) -> *mut XVisualInfo;
329
330    pub fn XCreateColormap(
331        arg1: *mut Display,
332        arg2: Window,
333        arg3: *mut Visual,
334        arg4: c_int,
335    ) -> Colormap;
336    
337    pub fn XCreateWindow(
338        arg1: *mut Display,
339        arg2: Window,
340        arg3: c_int,
341        arg4: c_int,
342        arg5: c_uint,
343        arg6: c_uint,
344        arg7: c_uint,
345        arg8: c_int,
346        arg9: c_uint,
347        arg10: *mut Visual,
348        arg11: c_ulong,
349        arg12: *mut XSetWindowAttributes,
350    ) -> Window;
351    
352    pub fn XSetWMProtocols(
353        arg1: *mut Display,
354        arg2: Window,
355        arg3: *mut Atom,
356        arg4: c_int,
357    ) -> c_int;
358    
359    pub fn XMapWindow(arg1: *mut Display, arg2: Window) -> c_int;
360
361    pub fn XMoveWindow(
362        display: *mut Display,
363        window: Window,
364        x: c_int,
365        y: c_int,
366    );
367    
368    pub fn XFlush(arg1: *mut Display) -> c_int;
369    
370    pub fn XStoreName(
371        arg1: *mut Display,
372        arg2: Window,
373        arg3: *const c_char,
374    ) -> c_int;
375    
376    pub fn XCreateIC(arg1: XIM, ...) -> XIC;
377    
378    pub fn XDestroyWindow(arg1: *mut Display, arg2: Window) -> c_int;
379    
380    pub fn XIconifyWindow(
381        arg1: *mut Display,
382        arg2: Window,
383        arg3: c_int,
384    ) -> c_int;
385    
386    pub fn XGetWindowAttributes(
387        arg1: *mut Display,
388        arg2: Window,
389        arg3: *mut XWindowAttributes,
390    ) -> c_int;
391    
392    pub fn XResourceManagerString(arg1: *mut Display) -> *mut c_char;
393    
394    pub fn XrmGetStringDatabase(arg1: *const c_char) -> XrmDatabase;
395    
396    pub fn XrmGetResource(
397        arg1: XrmDatabase,
398        arg2: *const c_char,
399        arg3: *const c_char,
400        arg4: *mut *mut c_char,
401        arg5: *mut XrmValue,
402    ) -> c_int;
403    
404    pub fn XConvertSelection(
405        arg1: *mut Display,
406        arg2: Atom,
407        arg3: Atom,
408        arg4: Atom,
409        arg5: Window,
410        arg6: Time,
411    ) -> c_int;
412    
413    pub fn XSetInputFocus(
414        arg1: *mut Display,
415        arg2: Window,
416        arg3: c_int,
417        arg4: Time,
418    ) -> c_int;
419    
420    pub fn XUngrabPointer(arg1: *mut Display, arg2: Time) -> c_int;
421    
422    pub fn XSetSelectionOwner(
423        arg1: *mut Display,
424        arg2: Atom,
425        arg3: Window,
426        arg4: Time,
427    ) -> c_int;
428    
429    pub fn Xutf8LookupString(
430        arg1: XIC,
431        arg2: *mut XKeyPressedEvent,
432        arg3: *mut c_char,
433        arg4: c_int,
434        arg5: *mut KeySym,
435        arg6: *mut c_int,
436    ) -> c_int;
437    
438    pub fn XDefineCursor(arg1: *mut Display, arg2: Window, arg3: Cursor) -> c_int;
439    pub fn XFreeCursor(arg1: *mut Display, arg2: Cursor) -> c_int;
440    pub fn XLookupString(
441        arg1: *mut XKeyEvent,
442        arg2: *mut c_char,
443        arg3: c_int,
444        arg4: *mut KeySym,
445        arg5: *mut XComposeStatus,
446    ) -> c_int;
447}
448
449#[repr(C)]
450#[derive(Debug, Copy, Clone)]
451pub struct _XrmHashBucketRec {
452    _unused: [u8; 0],
453}
454
455#[repr(C)]
456#[derive(Debug, Copy, Clone)]
457pub struct _XDisplay {
458    _unused: [u8; 0],
459}
460
461#[repr(C)]
462#[derive(Debug, Copy, Clone)]
463pub struct _XIM {
464    _unused: [u8; 0],
465}
466
467#[repr(C)]
468#[derive(Debug, Copy, Clone)]
469pub struct _XIC {
470    _unused: [u8; 0],
471}
472
473#[repr(C)]
474#[derive(Debug, Copy, Clone)]
475pub struct _XComposeStatus {
476    pub compose_ptr: XPointer,
477    pub chars_matched: c_int,
478}
479
480#[repr(C)]
481#[derive(Debug, Copy, Clone)]
482pub struct _XExtData {
483    pub number: c_int,
484    pub next: *mut _XExtData,
485    pub free_private: ::std::option::Option<
486    unsafe extern "C" fn(extension: *mut _XExtData) -> c_int,
487    >,
488    pub private_data: XPointer,
489}
490
491#[repr(C)]
492#[derive(Debug, Copy, Clone)]
493pub struct XrmValue {
494    pub size: c_uint,
495    pub addr: XPointer,
496}
497
498#[repr(C)]
499#[derive(Debug, Copy, Clone)]
500pub struct _XGC {
501    _unused: [u8; 0],
502}
503
504#[repr(C)]
505#[derive(Debug, Copy, Clone)]
506pub struct Depth {
507    pub depth: c_int,
508    pub nvisuals: c_int,
509    pub visuals: *mut Visual,
510}
511
512#[repr(C)]
513#[derive(Debug, Copy, Clone)]
514pub struct Screen {
515    pub ext_data: *mut XExtData,
516    pub display: *mut _XDisplay,
517    pub root: Window,
518    pub width: c_int,
519    pub height: c_int,
520    pub mwidth: c_int,
521    pub mheight: c_int,
522    pub ndepths: c_int,
523    pub depths: *mut Depth,
524    pub root_depth: c_int,
525    pub root_visual: *mut Visual,
526    pub default_gc: GC,
527    pub cmap: Colormap,
528    pub white_pixel: c_ulong,
529    pub black_pixel: c_ulong,
530    pub max_maps: c_int,
531    pub min_maps: c_int,
532    pub backing_store: c_int,
533    pub save_unders: c_int,
534    pub root_input_mask: c_long,
535}
536
537#[repr(C)]
538#[derive(Debug, Copy, Clone)]
539pub struct XWindowAttributes {
540    pub x: c_int,
541    pub y: c_int,
542    pub width: c_int,
543    pub height: c_int,
544    pub border_width: c_int,
545    pub depth: c_int,
546    pub visual: *mut Visual,
547    pub root: Window,
548    pub class: c_int,
549    pub bit_gravity: c_int,
550    pub win_gravity: c_int,
551    pub backing_store: c_int,
552    pub backing_planes: c_ulong,
553    pub backing_pixel: c_ulong,
554    pub save_under: c_int,
555    pub colormap: Colormap,
556    pub map_installed: c_int,
557    pub map_state: c_int,
558    pub all_event_masks: c_long,
559    pub your_event_mask: c_long,
560    pub do_not_propagate_mask: c_long,
561    pub override_redirect: c_int,
562    pub screen: *mut Screen,
563}
564
565#[repr(C)]
566#[derive(Debug, Copy, Clone)]
567pub struct Visual {
568    pub ext_data: *mut XExtData,
569    pub visualid: VisualID,
570    pub class: c_int,
571    pub red_mask: c_ulong,
572    pub green_mask: c_ulong,
573    pub blue_mask: c_ulong,
574    pub bits_per_rgb: c_int,
575    pub map_entries: c_int,
576}
577
578#[repr(C)]
579#[derive(Debug, Copy, Clone)]
580pub struct XSetWindowAttributes {
581    pub background_pixmap: Pixmap,
582    pub background_pixel: c_ulong,
583    pub border_pixmap: Pixmap,
584    pub border_pixel: c_ulong,
585    pub bit_gravity: c_int,
586    pub win_gravity: c_int,
587    pub backing_store: c_int,
588    pub backing_planes: c_ulong,
589    pub backing_pixel: c_ulong,
590    pub save_under: c_int,
591    pub event_mask: c_long,
592    pub do_not_propagate_mask: c_long,
593    pub override_redirect: c_int,
594    pub colormap: Colormap,
595    pub cursor: Cursor,
596}
597
598#[repr(C)]
599#[derive(Debug, Copy, Clone)]
600pub struct XVisualInfo {
601    pub visual: *mut Visual,
602    pub visualid: VisualID,
603    pub screen: c_int,
604    pub depth: c_int,
605    pub class: c_int,
606    pub red_mask: c_ulong,
607    pub green_mask: c_ulong,
608    pub blue_mask: c_ulong,
609    pub colormap_size: c_int,
610    pub bits_per_rgb: c_int,
611}
612
613#[repr(C)]
614#[derive(Debug, Copy, Clone)]
615pub struct XSelectionEvent {
616    pub type_: c_int,
617    pub serial: c_ulong,
618    pub send_event: c_int,
619    pub display: *mut Display,
620    pub requestor: Window,
621    pub selection: Atom,
622    pub target: Atom,
623    pub property: Atom,
624    pub time: Time,
625}
626
627#[repr(C)]
628#[derive(Debug, Copy, Clone)]
629pub struct XNoExposeEvent {
630    pub type_: c_int,
631    pub serial: c_ulong,
632    pub send_event: c_int,
633    pub display: *mut Display,
634    pub drawable: Drawable,
635    pub major_code: c_int,
636    pub minor_code: c_int,
637}
638
639#[repr(C)]
640#[derive(Debug, Copy, Clone)]
641pub struct XCrossingEvent {
642    pub type_: c_int,
643    pub serial: c_ulong,
644    pub send_event: c_int,
645    pub display: *mut Display,
646    pub window: Window,
647    pub root: Window,
648    pub subwindow: Window,
649    pub time: Time,
650    pub x: c_int,
651    pub y: c_int,
652    pub x_root: c_int,
653    pub y_root: c_int,
654    pub mode: c_int,
655    pub detail: c_int,
656    pub same_screen: c_int,
657    pub focus: c_int,
658    pub state: c_uint,
659}
660
661#[repr(C)]
662#[derive(Debug, Copy, Clone)]
663pub struct XMotionEvent {
664    pub type_: c_int,
665    pub serial: c_ulong,
666    pub send_event: c_int,
667    pub display: *mut Display,
668    pub window: Window,
669    pub root: Window,
670    pub subwindow: Window,
671    pub time: Time,
672    pub x: c_int,
673    pub y: c_int,
674    pub x_root: c_int,
675    pub y_root: c_int,
676    pub state: c_uint,
677    pub is_hint: c_char,
678    pub same_screen: c_int,
679}
680
681#[repr(C)]
682#[derive(Debug, Copy, Clone)]
683pub struct XButtonEvent {
684    pub type_: c_int,
685    pub serial: c_ulong,
686    pub send_event: c_int,
687    pub display: *mut Display,
688    pub window: Window,
689    pub root: Window,
690    pub subwindow: Window,
691    pub time: Time,
692    pub x: c_int,
693    pub y: c_int,
694    pub x_root: c_int,
695    pub y_root: c_int,
696    pub state: c_uint,
697    pub button: c_uint,
698    pub same_screen: c_int,
699}
700
701#[repr(C)]
702#[derive(Debug, Copy, Clone)]
703pub struct XKeyEvent {
704    pub type_: c_int,
705    pub serial: c_ulong,
706    pub send_event: c_int,
707    pub display: *mut Display,
708    pub window: Window,
709    pub root: Window,
710    pub subwindow: Window,
711    pub time: Time,
712    pub x: c_int,
713    pub y: c_int,
714    pub x_root: c_int,
715    pub y_root: c_int,
716    pub state: c_uint,
717    pub keycode: c_uint,
718    pub same_screen: c_int,
719}
720
721#[repr(C)]
722#[derive(Debug, Copy, Clone)]
723pub struct XAnyEvent {
724    pub type_: c_int,
725    pub serial: c_ulong,
726    pub send_event: c_int,
727    pub display: *mut Display,
728    pub window: Window,
729}
730
731#[repr(C)]
732#[derive(Debug, Copy, Clone)]
733pub struct XFocusChangeEvent {
734    pub type_: c_int,
735    pub serial: c_ulong,
736    pub send_event: c_int,
737    pub display: *mut Display,
738    pub window: Window,
739    pub mode: c_int,
740    pub detail: c_int,
741}
742
743#[repr(C)]
744#[derive(Debug, Copy, Clone)]
745pub struct XExposeEvent {
746    pub type_: c_int,
747    pub serial: c_ulong,
748    pub send_event: c_int,
749    pub display: *mut Display,
750    pub window: Window,
751    pub x: c_int,
752    pub y: c_int,
753    pub width: c_int,
754    pub height: c_int,
755    pub count: c_int,
756}
757
758#[repr(C)]
759#[derive(Debug, Copy, Clone)]
760pub struct XGraphicsExposeEvent {
761    pub type_: c_int,
762    pub serial: c_ulong,
763    pub send_event: c_int,
764    pub display: *mut Display,
765    pub drawable: Drawable,
766    pub x: c_int,
767    pub y: c_int,
768    pub width: c_int,
769    pub height: c_int,
770    pub count: c_int,
771    pub major_code: c_int,
772    pub minor_code: c_int,
773}
774
775#[repr(C)]
776#[derive(Debug, Copy, Clone)]
777pub struct XVisibilityEvent {
778    pub type_: c_int,
779    pub serial: c_ulong,
780    pub send_event: c_int,
781    pub display: *mut Display,
782    pub window: Window,
783    pub state: c_int,
784}
785
786#[repr(C)]
787#[derive(Debug, Copy, Clone)]
788pub struct XCreateWindowEvent {
789    pub type_: c_int,
790    pub serial: c_ulong,
791    pub send_event: c_int,
792    pub display: *mut Display,
793    pub parent: Window,
794    pub window: Window,
795    pub x: c_int,
796    pub y: c_int,
797    pub width: c_int,
798    pub height: c_int,
799    pub border_width: c_int,
800    pub override_redirect: c_int,
801}
802
803#[repr(C)]
804#[derive(Debug, Copy, Clone)]
805pub struct XDestroyWindowEvent {
806    pub type_: c_int,
807    pub serial: c_ulong,
808    pub send_event: c_int,
809    pub display: *mut Display,
810    pub event: Window,
811    pub window: Window,
812}
813
814#[repr(C)]
815#[derive(Debug, Copy, Clone)]
816pub struct XUnmapEvent {
817    pub type_: c_int,
818    pub serial: c_ulong,
819    pub send_event: c_int,
820    pub display: *mut Display,
821    pub event: Window,
822    pub window: Window,
823    pub from_configure: c_int,
824}
825
826#[repr(C)]
827#[derive(Debug, Copy, Clone)]
828pub struct XMapEvent {
829    pub type_: c_int,
830    pub serial: c_ulong,
831    pub send_event: c_int,
832    pub display: *mut Display,
833    pub event: Window,
834    pub window: Window,
835    pub override_redirect: c_int,
836}
837
838#[repr(C)]
839#[derive(Debug, Copy, Clone)]
840pub struct XMapRequestEvent {
841    pub type_: c_int,
842    pub serial: c_ulong,
843    pub send_event: c_int,
844    pub display: *mut Display,
845    pub parent: Window,
846    pub window: Window,
847}
848
849#[repr(C)]
850#[derive(Debug, Copy, Clone)]
851pub struct XReparentEvent {
852    pub type_: c_int,
853    pub serial: c_ulong,
854    pub send_event: c_int,
855    pub display: *mut Display,
856    pub event: Window,
857    pub window: Window,
858    pub parent: Window,
859    pub x: c_int,
860    pub y: c_int,
861    pub override_redirect: c_int,
862}
863
864#[repr(C)]
865#[derive(Debug, Copy, Clone)]
866pub struct XConfigureEvent {
867    pub type_: c_int,
868    pub serial: c_ulong,
869    pub send_event: c_int,
870    pub display: *mut Display,
871    pub event: Window,
872    pub window: Window,
873    pub x: c_int,
874    pub y: c_int,
875    pub width: c_int,
876    pub height: c_int,
877    pub border_width: c_int,
878    pub above: Window,
879    pub override_redirect: c_int,
880}
881
882#[repr(C)]
883#[derive(Debug, Copy, Clone)]
884pub struct XGravityEvent {
885    pub type_: c_int,
886    pub serial: c_ulong,
887    pub send_event: c_int,
888    pub display: *mut Display,
889    pub event: Window,
890    pub window: Window,
891    pub x: c_int,
892    pub y: c_int,
893}
894
895#[repr(C)]
896#[derive(Debug, Copy, Clone)]
897pub struct XResizeRequestEvent {
898    pub type_: c_int,
899    pub serial: c_ulong,
900    pub send_event: c_int,
901    pub display: *mut Display,
902    pub window: Window,
903    pub width: c_int,
904    pub height: c_int,
905}
906
907#[repr(C)]
908#[derive(Debug, Copy, Clone)]
909pub struct XConfigureRequestEvent {
910    pub type_: c_int,
911    pub serial: c_ulong,
912    pub send_event: c_int,
913    pub display: *mut Display,
914    pub parent: Window,
915    pub window: Window,
916    pub x: c_int,
917    pub y: c_int,
918    pub width: c_int,
919    pub height: c_int,
920    pub border_width: c_int,
921    pub above: Window,
922    pub detail: c_int,
923    pub value_mask: c_ulong,
924}
925
926#[repr(C)]
927#[derive(Debug, Copy, Clone)]
928pub struct XCirculateEvent {
929    pub type_: c_int,
930    pub serial: c_ulong,
931    pub send_event: c_int,
932    pub display: *mut Display,
933    pub event: Window,
934    pub window: Window,
935    pub place: c_int,
936}
937
938#[repr(C)]
939#[derive(Debug, Copy, Clone)]
940pub struct XCirculateRequestEvent {
941    pub type_: c_int,
942    pub serial: c_ulong,
943    pub send_event: c_int,
944    pub display: *mut Display,
945    pub parent: Window,
946    pub window: Window,
947    pub place: c_int,
948}
949
950#[repr(C)]
951#[derive(Debug, Copy, Clone)]
952pub struct XPropertyEvent {
953    pub type_: c_int,
954    pub serial: c_ulong,
955    pub send_event: c_int,
956    pub display: *mut Display,
957    pub window: Window,
958    pub atom: Atom,
959    pub time: Time,
960    pub state: c_int,
961}
962
963#[repr(C)]
964#[derive(Debug, Copy, Clone)]
965pub struct XSelectionClearEvent {
966    pub type_: c_int,
967    pub serial: c_ulong,
968    pub send_event: c_int,
969    pub display: *mut Display,
970    pub window: Window,
971    pub selection: Atom,
972    pub time: Time,
973}
974
975#[repr(C)]
976#[derive(Debug, Copy, Clone)]
977pub struct XSelectionRequestEvent {
978    pub type_: c_int,
979    pub serial: c_ulong,
980    pub send_event: c_int,
981    pub display: *mut Display,
982    pub owner: Window,
983    pub requestor: Window,
984    pub selection: Atom,
985    pub target: Atom,
986    pub property: Atom,
987    pub time: Time,
988}
989
990#[repr(C)]
991#[derive(Debug, Copy, Clone)]
992pub struct XColormapEvent {
993    pub type_: c_int,
994    pub serial: c_ulong,
995    pub send_event: c_int,
996    pub display: *mut Display,
997    pub window: Window,
998    pub colormap: Colormap,
999    pub new: c_int,
1000    pub state: c_int,
1001}
1002
1003#[repr(C)]
1004#[derive(Copy, Clone)]
1005pub struct XClientMessageEvent {
1006    pub type_: c_int,
1007    pub serial: c_ulong,
1008    pub send_event: c_int,
1009    pub display: *mut Display,
1010    pub window: Window,
1011    pub message_type: Atom,
1012    pub format: c_int,
1013    pub data: XClientMessageEvent__bindgen_ty_1,
1014}
1015
1016#[repr(C)]
1017#[derive(Copy, Clone)]
1018pub union XClientMessageEvent__bindgen_ty_1 {
1019    pub b: [c_char; 20usize],
1020    pub s: [c_short; 10usize],
1021    pub l: [c_long; 5usize],
1022    _bindgen_union_align: [u64; 5usize],
1023}
1024
1025#[repr(C)]
1026#[derive(Debug, Copy, Clone)]
1027pub struct XMappingEvent {
1028    pub type_: c_int,
1029    pub serial: c_ulong,
1030    pub send_event: c_int,
1031    pub display: *mut Display,
1032    pub window: Window,
1033    pub request: c_int,
1034    pub first_keycode: c_int,
1035    pub count: c_int,
1036}
1037
1038#[repr(C)]
1039#[derive(Debug, Copy, Clone)]
1040pub struct XErrorEvent {
1041    pub type_: c_int,
1042    pub display: *mut Display,
1043    pub resourceid: XID,
1044    pub serial: c_ulong,
1045    pub error_code: c_uchar,
1046    pub request_code: c_uchar,
1047    pub minor_code: c_uchar,
1048}
1049
1050#[repr(C)]
1051#[derive(Debug, Copy, Clone)]
1052pub struct XKeymapEvent {
1053    pub type_: c_int,
1054    pub serial: c_ulong,
1055    pub send_event: c_int,
1056    pub display: *mut Display,
1057    pub window: Window,
1058    pub key_vector: [c_char; 32usize],
1059}
1060
1061#[repr(C)]
1062#[derive(Debug, Copy, Clone)]
1063pub struct XGenericEvent {
1064    pub type_: c_int,
1065    pub serial: c_ulong,
1066    pub send_event: c_int,
1067    pub display: *mut Display,
1068    pub extension: c_int,
1069    pub evtype: c_int,
1070}
1071
1072#[repr(C)]
1073#[derive(Debug, Copy, Clone)]
1074pub struct XGenericEventCookie {
1075    pub type_: c_int,
1076    pub serial: c_ulong,
1077    pub send_event: c_int,
1078    pub display: *mut Display,
1079    pub extension: c_int,
1080    pub evtype: c_int,
1081    pub cookie: c_uint,
1082    pub data: *mut c_void,
1083}
1084
1085#[repr(C)]
1086#[derive(Copy, Clone)]
1087pub union _XEvent {
1088    pub type_: c_int,
1089    pub xany: XAnyEvent,
1090    pub xkey: XKeyEvent,
1091    pub xbutton: XButtonEvent,
1092    pub xmotion: XMotionEvent,
1093    pub xcrossing: XCrossingEvent,
1094    pub xfocus: XFocusChangeEvent,
1095    pub xexpose: XExposeEvent,
1096    pub xgraphicsexpose: XGraphicsExposeEvent,
1097    pub xnoexpose: XNoExposeEvent,
1098    pub xvisibility: XVisibilityEvent,
1099    pub xcreatewindow: XCreateWindowEvent,
1100    pub xdestroywindow: XDestroyWindowEvent,
1101    pub xunmap: XUnmapEvent,
1102    pub xmap: XMapEvent,
1103    pub xmaprequest: XMapRequestEvent,
1104    pub xreparent: XReparentEvent,
1105    pub xconfigure: XConfigureEvent,
1106    pub xgravity: XGravityEvent,
1107    pub xresizerequest: XResizeRequestEvent,
1108    pub xconfigurerequest: XConfigureRequestEvent,
1109    pub xcirculate: XCirculateEvent,
1110    pub xcirculaterequest: XCirculateRequestEvent,
1111    pub xproperty: XPropertyEvent,
1112    pub xselectionclear: XSelectionClearEvent,
1113    pub xselectionrequest: XSelectionRequestEvent,
1114    pub xselection: XSelectionEvent,
1115    pub xcolormap: XColormapEvent,
1116    pub xclient: XClientMessageEvent,
1117    pub xmapping: XMappingEvent,
1118    pub xerror: XErrorEvent,
1119    pub xkeymap: XKeymapEvent,
1120    pub xgeneric: XGenericEvent,
1121    pub xcookie: XGenericEventCookie,
1122    pub pad: [c_long; 24usize],
1123    _bindgen_union_align: [u64; 24usize],
1124}
1125