evdev_sys/
lib.rs

1#![allow(bad_style)]
2#![allow(dead_code)]
3#![allow(improper_ctypes)]
4
5use libc::{c_char, c_int, c_uint, c_void, size_t};
6pub use libc::{input_absinfo, input_event, timeval};
7
8pub type __enum_ty = libc::c_int;
9pub type libevdev_read_flag = __enum_ty;
10pub type libevdev_log_priority = __enum_ty;
11pub type libevdev_grab_mode = __enum_ty;
12pub type libevdev_read_status = __enum_ty;
13pub type libevdev_led_value = __enum_ty;
14pub type libevdev_uinput_open_mode = __enum_ty;
15
16pub const LIBEVDEV_READ_FLAG_SYNC: libevdev_read_flag = 1;
17pub const LIBEVDEV_READ_FLAG_NORMAL: libevdev_read_flag = 2;
18pub const LIBEVDEV_READ_FLAG_FORCE_SYNC: libevdev_read_flag = 4;
19pub const LIBEVDEV_READ_FLAG_BLOCKING: libevdev_read_flag = 8;
20
21pub const LIBEVDEV_LOG_ERROR: libevdev_log_priority = 10;
22pub const LIBEVDEV_LOG_INFO: libevdev_log_priority = 20;
23pub const LIBEVDEV_LOG_DEBUG: libevdev_log_priority = 30;
24
25pub const LIBEVDEV_GRAB: libevdev_grab_mode = 3;
26pub const LIBEVDEV_UNGRAB: libevdev_grab_mode = 4;
27
28pub const LIBEVDEV_READ_STATUS_SUCCESS: libevdev_read_status = 0;
29pub const LIBEVDEV_READ_STATUS_SYNC: libevdev_read_status = 1;
30
31pub const LIBEVDEV_LED_ON: libevdev_led_value = 3;
32pub const LIBEVDEV_LED_OFF: libevdev_led_value = 4;
33
34pub const LIBEVDEV_UINPUT_OPEN_MANAGED: libevdev_uinput_open_mode = -2;
35
36pub enum libevdev {}
37pub enum libevdev_uinput {}
38
39#[repr(C)]
40pub struct va_list {
41    // TODO
42}
43
44type libevdev_log_func_t = extern "C" fn(
45    *const libevdev,
46    *mut c_void,
47    *const c_char,
48    c_int,
49    *const c_char,
50    *const c_char,
51    va_list,
52);
53
54type libevdev_device_log_func_t = extern "C" fn(
55    *const libevdev,
56    c_int,
57    *mut c_void,
58    *const c_char,
59    c_int,
60    *const c_char,
61    *const c_char,
62    va_list,
63);
64
65extern "C" {
66    pub fn libevdev_new() -> *mut libevdev;
67    pub fn libevdev_new_from_fd(fd: c_int, ctx: *mut *mut libevdev) -> c_int;
68    pub fn libevdev_free(ctx: *mut libevdev);
69    pub fn libevdev_set_log_function(logfunc: libevdev_log_func_t, data: *mut c_void);
70    pub fn libevdev_set_log_priority(priority: libevdev_log_priority);
71    pub fn libevdev_get_log_priority() -> libevdev_log_priority;
72    pub fn libevdev_set_device_log_function(
73        ctx: *mut libevdev,
74        logfunc: libevdev_device_log_func_t,
75        priority: libevdev_log_priority,
76        data: *mut c_void,
77    );
78    pub fn libevdev_grab(ctx: *mut libevdev, grab: libevdev_grab_mode) -> c_int;
79    pub fn libevdev_set_fd(ctx: *mut libevdev, fd: c_int) -> c_int;
80    pub fn libevdev_change_fd(ctx: *mut libevdev, fd: c_int) -> c_int;
81    pub fn libevdev_get_fd(ctx: *mut libevdev) -> c_int;
82    pub fn libevdev_next_event(
83        ctx: *mut libevdev,
84        flags: c_uint,
85        ev: *mut input_event,
86    ) -> c_int;
87    pub fn libevdev_has_event_pending(ctx: *mut libevdev) -> c_int;
88    pub fn libevdev_get_name(ctx: *const libevdev) -> *const c_char;
89    pub fn libevdev_set_name(ctx: *mut libevdev, name: *const c_char);
90    pub fn libevdev_get_phys(ctx: *const libevdev) -> *const c_char;
91    pub fn libevdev_set_phys(ctx: *mut libevdev, phys: *const c_char);
92    pub fn libevdev_get_uniq(ctx: *const libevdev) -> *const c_char;
93    pub fn libevdev_set_uniq(ctx: *mut libevdev, uniq: *const c_char);
94    pub fn libevdev_get_id_product(ctx: *const libevdev) -> c_int;
95    pub fn libevdev_set_id_product(ctx: *mut libevdev, product_id: c_int);
96    pub fn libevdev_get_id_vendor(ctx: *const libevdev) -> c_int;
97    pub fn libevdev_set_id_vendor(ctx: *mut libevdev, vendor_id: c_int);
98    pub fn libevdev_get_id_bustype(ctx: *const libevdev) -> c_int;
99    pub fn libevdev_set_id_bustype(ctx: *mut libevdev, bustype: c_int);
100    pub fn libevdev_get_id_version(ctx: *const libevdev) -> c_int;
101    pub fn libevdev_set_id_version(ctx: *mut libevdev, version: c_int);
102    pub fn libevdev_get_driver_version(ctx: *const libevdev) -> c_int;
103    pub fn libevdev_has_property(ctx: *const libevdev, prop: c_uint) -> c_int;
104    pub fn libevdev_enable_property(ctx: *mut libevdev, prop: c_uint) -> c_int;
105    #[cfg(feature = "libevdev-1-10")]
106    pub fn libevdev_disable_property (ctx: *mut libevdev, prop: c_uint) -> c_int;
107    pub fn libevdev_has_event_type(ctx: *const libevdev, type_: c_uint) -> c_int;
108    pub fn libevdev_has_event_code(
109        ctx: *const libevdev,
110        type_: c_uint,
111        code: c_uint,
112    ) -> c_int;
113    pub fn libevdev_get_abs_minimum(ctx: *const libevdev, code: c_uint) -> c_int;
114    pub fn libevdev_get_abs_maximum(ctx: *const libevdev, code: c_uint) -> c_int;
115    pub fn libevdev_get_abs_fuzz(ctx: *const libevdev, code: c_uint) -> c_int;
116    pub fn libevdev_get_abs_flat(ctx: *const libevdev, code: c_uint) -> c_int;
117    pub fn libevdev_get_abs_resolution(ctx: *const libevdev, code: c_uint) -> c_int;
118    pub fn libevdev_get_abs_info(
119        ctx: *const libevdev,
120        code: c_uint,
121    ) -> *const input_absinfo;
122    pub fn libevdev_get_event_value(
123        ctx: *const libevdev,
124        type_: c_uint,
125        code: c_uint,
126    ) -> c_int;
127    pub fn libevdev_set_event_value(
128        ctx: *mut libevdev,
129        type_: c_uint,
130        code: c_uint,
131        value: c_int,
132    ) -> c_int;
133    pub fn libevdev_fetch_event_value(
134        ctx: *const libevdev,
135        type_: c_uint,
136        code: c_uint,
137        value: *mut c_int,
138    ) -> c_int;
139    pub fn libevdev_get_slot_value(
140        ctx: *const libevdev,
141        slot: c_uint,
142        code: c_uint,
143    ) -> c_int;
144    pub fn libevdev_set_slot_value(
145        ctx: *mut libevdev,
146        slot: c_uint,
147        code: c_uint,
148        value: c_int,
149    ) -> c_int;
150    pub fn libevdev_fetch_slot_value(
151        ctx: *const libevdev,
152        slot: c_uint,
153        code: c_uint,
154        value: *mut c_int,
155    ) -> c_int;
156    pub fn libevdev_get_num_slots(ctx: *const libevdev) -> c_int;
157    pub fn libevdev_get_current_slot(ctx: *const libevdev) -> c_int;
158    pub fn libevdev_set_abs_minimum(ctx: *mut libevdev, code: c_uint, min: c_int);
159    pub fn libevdev_set_abs_maximum(ctx: *mut libevdev, code: c_uint, max: c_int);
160    pub fn libevdev_set_abs_fuzz(ctx: *mut libevdev, code: c_uint, fuzz: c_int);
161    pub fn libevdev_set_abs_flat(ctx: *mut libevdev, code: c_uint, flat: c_int);
162    pub fn libevdev_set_abs_resolution(
163        ctx: *mut libevdev,
164        code: c_uint,
165        resolution: c_int,
166    );
167    pub fn libevdev_set_abs_info(
168        ctx: *mut libevdev,
169        code: c_uint,
170        abs: *const input_absinfo,
171    );
172    pub fn libevdev_enable_event_type(ctx: *mut libevdev, type_: c_uint) -> c_int;
173    pub fn libevdev_disable_event_type(ctx: *mut libevdev, type_: c_uint) -> c_int;
174    pub fn libevdev_enable_event_code(
175        ctx: *mut libevdev,
176        type_: c_uint,
177        code: c_uint,
178        data: *const c_void,
179    ) -> c_int;
180    pub fn libevdev_disable_event_code(
181        ctx: *mut libevdev,
182        type_: c_uint,
183        code: c_uint,
184    ) -> c_int;
185    pub fn libevdev_kernel_set_abs_info(
186        ctx: *mut libevdev,
187        code: c_uint,
188        abs: *const input_absinfo,
189    ) -> c_int;
190    pub fn libevdev_kernel_set_led_value(
191        ctx: *mut libevdev,
192        code: c_uint,
193        value: libevdev_led_value,
194    ) -> c_int;
195    pub fn libevdev_kernel_set_led_values(ctx: *mut libevdev, ...) -> c_int;
196    pub fn libevdev_set_clock_id(ctx: *mut libevdev, clockid: c_int) -> c_int;
197    pub fn libevdev_event_is_type(ev: *const input_event, type_: c_uint) -> c_int;
198    pub fn libevdev_event_is_code(
199        ev: *const input_event,
200        type_: c_uint,
201        code: c_uint,
202    ) -> c_int;
203    pub fn libevdev_event_type_get_name(type_: c_uint) -> *const c_char;
204    pub fn libevdev_event_code_get_name(type_: c_uint, code: c_uint) -> *const c_char;
205    pub fn libevdev_property_get_name(prop: c_uint) -> *const c_char;
206    pub fn libevdev_event_type_get_max(type_: c_uint) -> c_int;
207    pub fn libevdev_event_type_from_name(name: *const c_char) -> c_int;
208    pub fn libevdev_event_type_from_name_n(name: *const c_char, len: size_t) -> c_int;
209    pub fn libevdev_event_code_from_name(type_: c_uint, name: *const c_char) -> c_int;
210    pub fn libevdev_event_code_from_name_n(
211        type_: c_uint,
212        name: *const c_char,
213        len: size_t,
214    ) -> c_int;
215    pub fn libevdev_property_from_name(name: *const c_char) -> c_int;
216    pub fn libevdev_property_from_name_n(name: *const c_char, len: size_t) -> c_int;
217    pub fn libevdev_get_repeat(
218        ctx: *const libevdev,
219        delay: *mut c_int,
220        period: *mut c_int,
221    ) -> c_int;
222    pub fn libevdev_uinput_create_from_device(
223        ctx: *const libevdev,
224        uinput_fd: c_int,
225        uinput_dev: *mut *mut libevdev_uinput,
226    ) -> c_int;
227    pub fn libevdev_uinput_destroy(uinput_dev: *mut libevdev_uinput);
228    pub fn libevdev_uinput_get_devnode(uinput_dev: *mut libevdev_uinput)
229        -> *const c_char;
230    pub fn libevdev_uinput_get_fd(uinput_dev: *const libevdev_uinput) -> c_int;
231    pub fn libevdev_uinput_get_syspath(uinput_dev: *mut libevdev_uinput)
232        -> *const c_char;
233    pub fn libevdev_uinput_write_event(
234        uinput_dev: *const libevdev_uinput,
235        type_: c_uint,
236        code: c_uint,
237        value: c_int,
238    ) -> c_int;
239}