| 1 | // x11-rs: Rust bindings for X11 libraries |
| 2 | // The X11 libraries are available under the MIT license. |
| 3 | // These bindings are public domain. |
| 4 | |
| 5 | use std::os::raw::{c_char, c_int, c_long, c_short, c_uchar, c_uint, c_ulong}; |
| 6 | |
| 7 | use super::xlib::{Atom, Display, Time, XEvent, XModifierKeymap, XID}; |
| 8 | |
| 9 | // |
| 10 | // functions |
| 11 | // |
| 12 | |
| 13 | x11_link! { XInput, xi, ["libXi.so.6" , "libXi.so" ], 44, |
| 14 | pub fn XAllowDeviceEvents (_4: *mut Display, _3: *mut XDevice, _2: c_int, _1: c_ulong) -> c_int, |
| 15 | pub fn XChangeDeviceControl (_4: *mut Display, _3: *mut XDevice, _2: c_int, _1: *mut XDeviceControl) -> c_int, |
| 16 | pub fn XChangeDeviceDontPropagateList (_5: *mut Display, _4: c_ulong, _3: c_int, _2: *mut c_ulong, _1: c_int) -> c_int, |
| 17 | pub fn XChangeDeviceKeyMapping (_6: *mut Display, _5: *mut XDevice, _4: c_int, _3: c_int, _2: *mut c_ulong, _1: c_int) -> c_int, |
| 18 | pub fn XChangeDeviceProperty (_8: *mut Display, _7: *mut XDevice, _6: c_ulong, _5: c_ulong, _4: c_int, _3: c_int, _2: *const c_uchar, _1: c_int) -> (), |
| 19 | pub fn XChangeFeedbackControl (_4: *mut Display, _3: *mut XDevice, _2: c_ulong, _1: *mut XFeedbackControl) -> c_int, |
| 20 | pub fn XChangeKeyboardDevice (_2: *mut Display, _1: *mut XDevice) -> c_int, |
| 21 | pub fn XChangePointerDevice (_4: *mut Display, _3: *mut XDevice, _2: c_int, _1: c_int) -> c_int, |
| 22 | pub fn XCloseDevice (_2: *mut Display, _1: *mut XDevice) -> c_int, |
| 23 | pub fn XDeleteDeviceProperty (_3: *mut Display, _2: *mut XDevice, _1: c_ulong) -> (), |
| 24 | pub fn XDeviceBell (_5: *mut Display, _4: *mut XDevice, _3: c_ulong, _2: c_ulong, _1: c_int) -> c_int, |
| 25 | pub fn XFreeDeviceControl (_1: *mut XDeviceControl) -> (), |
| 26 | pub fn XFreeDeviceList (_1: *mut XDeviceInfo) -> (), |
| 27 | pub fn XFreeDeviceMotionEvents (_1: *mut XDeviceTimeCoord) -> (), |
| 28 | pub fn XFreeDeviceState (_1: *mut XDeviceState) -> (), |
| 29 | pub fn XFreeFeedbackList (_1: *mut XFeedbackState) -> (), |
| 30 | pub fn XGetDeviceButtonMapping (_4: *mut Display, _3: *mut XDevice, _2: *mut c_uchar, _1: c_uint) -> c_int, |
| 31 | pub fn XGetDeviceControl (_3: *mut Display, _2: *mut XDevice, _1: c_int) -> *mut XDeviceControl, |
| 32 | pub fn XGetDeviceDontPropagateList (_3: *mut Display, _2: c_ulong, _1: *mut c_int) -> *mut c_ulong, |
| 33 | pub fn XGetDeviceFocus (_5: *mut Display, _4: *mut XDevice, _3: *mut c_ulong, _2: *mut c_int, _1: *mut c_ulong) -> c_int, |
| 34 | pub fn XGetDeviceKeyMapping (_5: *mut Display, _4: *mut XDevice, _3: c_uchar, _2: c_int, _1: *mut c_int) -> *mut c_ulong, |
| 35 | pub fn XGetDeviceModifierMapping (_2: *mut Display, _1: *mut XDevice) -> *mut XModifierKeymap, |
| 36 | pub fn XGetDeviceMotionEvents (_7: *mut Display, _6: *mut XDevice, _5: c_ulong, _4: c_ulong, _3: *mut c_int, _2: *mut c_int, _1: *mut c_int) -> *mut XDeviceTimeCoord, |
| 37 | pub fn XGetDeviceProperty (_12: *mut Display, _11: *mut XDevice, _10: c_ulong, _9: c_long, _8: c_long, _7: c_int, _6: c_ulong, _5: *mut c_ulong, _4: *mut c_int, _3: *mut c_ulong, _2: *mut c_ulong, _1: *mut *mut c_uchar) -> c_int, |
| 38 | pub fn XGetExtensionVersion (_2: *mut Display, _1: *const c_char) -> *mut XExtensionVersion, |
| 39 | pub fn XGetFeedbackControl (_3: *mut Display, _2: *mut XDevice, _1: *mut c_int) -> *mut XFeedbackState, |
| 40 | pub fn XGetSelectedExtensionEvents (_6: *mut Display, _5: c_ulong, _4: *mut c_int, _3: *mut *mut c_ulong, _2: *mut c_int, _1: *mut *mut c_ulong) -> c_int, |
| 41 | pub fn XGrabDevice (_9: *mut Display, _8: *mut XDevice, _7: c_ulong, _6: c_int, _5: c_int, _4: *mut c_ulong, _3: c_int, _2: c_int, _1: c_ulong) -> c_int, |
| 42 | pub fn XGrabDeviceButton (_11: *mut Display, _10: *mut XDevice, _9: c_uint, _8: c_uint, _7: *mut XDevice, _6: c_ulong, _5: c_int, _4: c_uint, _3: *mut c_ulong, _2: c_int, _1: c_int) -> c_int, |
| 43 | pub fn XGrabDeviceKey (_11: *mut Display, _10: *mut XDevice, _9: c_uint, _8: c_uint, _7: *mut XDevice, _6: c_ulong, _5: c_int, _4: c_uint, _3: *mut c_ulong, _2: c_int, _1: c_int) -> c_int, |
| 44 | |
| 45 | pub fn XListDeviceProperties (_3: *mut Display, _2: *mut XDevice, _1: *mut c_int) -> *mut c_ulong, |
| 46 | pub fn XListInputDevices (_2: *mut Display, _1: *mut c_int) -> *mut XDeviceInfo, |
| 47 | pub fn XOpenDevice (_2: *mut Display, _1: c_ulong) -> *mut XDevice, |
| 48 | pub fn XQueryDeviceState (_2: *mut Display, _1: *mut XDevice) -> *mut XDeviceState, |
| 49 | pub fn XSelectExtensionEvent (_4: *mut Display, _3: c_ulong, _2: *mut c_ulong, _1: c_int) -> c_int, |
| 50 | pub fn XSendExtensionEvent (_7: *mut Display, _6: *mut XDevice, _5: c_ulong, _4: c_int, _3: c_int, _2: *mut c_ulong, _1: *mut XEvent) -> c_int, |
| 51 | pub fn XSetDeviceButtonMapping (_4: *mut Display, _3: *mut XDevice, _2: *mut c_uchar, _1: c_int) -> c_int, |
| 52 | pub fn XSetDeviceFocus (_5: *mut Display, _4: *mut XDevice, _3: c_ulong, _2: c_int, _1: c_ulong) -> c_int, |
| 53 | pub fn XSetDeviceMode (_3: *mut Display, _2: *mut XDevice, _1: c_int) -> c_int, |
| 54 | pub fn XSetDeviceModifierMapping (_3: *mut Display, _2: *mut XDevice, _1: *mut XModifierKeymap) -> c_int, |
| 55 | pub fn XSetDeviceValuators (_5: *mut Display, _4: *mut XDevice, _3: *mut c_int, _2: c_int, _1: c_int) -> c_int, |
| 56 | pub fn XUngrabDevice (_3: *mut Display, _2: *mut XDevice, _1: c_ulong) -> c_int, |
| 57 | pub fn XUngrabDeviceButton (_6: *mut Display, _5: *mut XDevice, _4: c_uint, _3: c_uint, _2: *mut XDevice, _1: c_ulong) -> c_int, |
| 58 | pub fn XUngrabDeviceKey (_6: *mut Display, _5: *mut XDevice, _4: c_uint, _3: c_uint, _2: *mut XDevice, _1: c_ulong) -> c_int, |
| 59 | variadic: |
| 60 | globals: |
| 61 | } |
| 62 | |
| 63 | // |
| 64 | // types |
| 65 | // |
| 66 | |
| 67 | pub enum _XAnyClassinfo {} |
| 68 | |
| 69 | pub type XAnyClassPtr = *mut _XAnyClassinfo; |
| 70 | |
| 71 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 72 | #[repr (C)] |
| 73 | pub struct XDevice { |
| 74 | pub device_id: XID, |
| 75 | pub num_classes: c_int, |
| 76 | pub classes: *mut XInputClassInfo, |
| 77 | } |
| 78 | |
| 79 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 80 | #[repr (C)] |
| 81 | pub struct XDeviceControl { |
| 82 | pub control: XID, |
| 83 | pub length: c_int, |
| 84 | } |
| 85 | |
| 86 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 87 | #[repr (C)] |
| 88 | pub struct XDeviceInfo { |
| 89 | pub id: XID, |
| 90 | pub type_: Atom, |
| 91 | pub name: *mut c_char, |
| 92 | pub num_classes: c_int, |
| 93 | pub use_: c_int, |
| 94 | pub inputclassinfo: XAnyClassPtr, |
| 95 | } |
| 96 | |
| 97 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 98 | #[repr (C)] |
| 99 | pub struct XDeviceState { |
| 100 | pub device_id: XID, |
| 101 | pub num_classes: c_int, |
| 102 | pub data: *mut XInputClass, |
| 103 | } |
| 104 | |
| 105 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 106 | #[repr (C)] |
| 107 | pub struct XDeviceTimeCoord { |
| 108 | pub time: Time, |
| 109 | pub data: *mut c_int, |
| 110 | } |
| 111 | |
| 112 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 113 | #[repr (C)] |
| 114 | pub struct XExtensionVersion { |
| 115 | pub present: c_int, |
| 116 | pub major_version: c_short, |
| 117 | pub minor_version: c_short, |
| 118 | } |
| 119 | |
| 120 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 121 | #[repr (C)] |
| 122 | pub struct XFeedbackControl { |
| 123 | pub class: XID, |
| 124 | pub length: c_int, |
| 125 | pub id: XID, |
| 126 | } |
| 127 | |
| 128 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 129 | #[repr (C)] |
| 130 | pub struct XFeedbackState { |
| 131 | pub class: XID, |
| 132 | pub length: c_int, |
| 133 | pub id: XID, |
| 134 | } |
| 135 | |
| 136 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 137 | #[repr (C)] |
| 138 | pub struct XInputClass { |
| 139 | pub class: c_uchar, |
| 140 | pub length: c_uchar, |
| 141 | } |
| 142 | |
| 143 | #[derive (Debug, Clone, Copy, PartialEq)] |
| 144 | #[repr (C)] |
| 145 | pub struct XInputClassInfo { |
| 146 | pub input_class: c_uchar, |
| 147 | pub event_type_base: c_uchar, |
| 148 | } |
| 149 | |