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 }
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}