1use libc::{c_char, c_uint};
6use libc::{uinput_abs_setup, uinput_ff_erase, uinput_ff_upload, uinput_setup};
7
8use nix::{
9 ioctl_none, ioctl_read, ioctl_read_buf, ioctl_readwrite, ioctl_write_int, ioctl_write_ptr,
10 request_code_none, request_code_read, request_code_readwrite, request_code_write,
11};
12
13pub const UI_DEV_CREATE: u64 = request_code_none!(b'U', 1);
14pub const UI_DEV_DESTROY: u64 = request_code_none!(b'U', 2);
15pub const UI_DEV_SETUP: u64 = request_code_write!(b'U', 3, ::std::mem::size_of::<uinput_setup>());
16pub const UI_ABS_SETUP: u64 =
17 request_code_write!(b'U', 4, ::std::mem::size_of::<uinput_abs_setup>());
18pub const UI_GET_SYSNAME_WITHOUT_SIZE: u64 = request_code_read!(b'U', 44, 0);
21pub const UI_GET_VERSION: u64 = request_code_read!(b'U', 45, ::std::mem::size_of::<c_uint>());
23
24pub const UI_SET_EVBIT: u64 = request_code_write!(b'U', 100, std::mem::size_of::<c_uint>());
25pub const UI_SET_KEYBIT: u64 = request_code_write!(b'U', 101, std::mem::size_of::<c_uint>());
26pub const UI_SET_RELBIT: u64 = request_code_write!(b'U', 102, std::mem::size_of::<c_uint>());
27pub const UI_SET_ABSBIT: u64 = request_code_write!(b'U', 103, std::mem::size_of::<c_uint>());
28pub const UI_SET_MSCBIT: u64 = request_code_write!(b'U', 104, std::mem::size_of::<c_uint>());
29pub const UI_SET_LEDBIT: u64 = request_code_write!(b'U', 105, std::mem::size_of::<c_uint>());
30pub const UI_SET_SNDBIT: u64 = request_code_write!(b'U', 106, std::mem::size_of::<c_uint>());
31pub const UI_SET_FFBIT: u64 = request_code_write!(b'U', 107, std::mem::size_of::<c_uint>());
32pub const UI_SET_PHYS: u64 = request_code_write!(b'U', 108, ::std::mem::size_of::<*mut c_char>());
33pub const UI_SET_SWBIT: u64 = request_code_write!(b'U', 109, std::mem::size_of::<c_uint>());
34pub const UI_SET_PROPBIT: u64 = request_code_write!(b'U', 110, std::mem::size_of::<c_uint>());
35
36pub const UI_BEGIN_FF_UPLOAD: u64 =
37 request_code_readwrite!(b'U', 200, ::std::mem::size_of::<uinput_ff_upload>());
38pub const UI_END_FF_UPLOAD: u64 =
39 request_code_write!(b'U', 201, ::std::mem::size_of::<uinput_ff_upload>());
40pub const UI_BEGIN_FF_ERASE: u64 =
41 request_code_readwrite!(b'U', 202, ::std::mem::size_of::<uinput_ff_erase>());
42pub const UI_END_FF_ERASE: u64 =
43 request_code_write!(b'U', 203, ::std::mem::size_of::<uinput_ff_erase>());
44
45ioctl_none!(ui_dev_create, b'U', 1);
46ioctl_none!(ui_dev_destroy, b'U', 2);
47ioctl_write_ptr! {ui_dev_setup, b'U', 3, uinput_setup}
48ioctl_write_ptr! { ui_abs_setup, b'U', 4, uinput_abs_setup}
49
50ioctl_read_buf! { ui_get_sysname, b'U', 44, c_char }
51ioctl_read! { ui_get_version, b'U', 45, c_uint }
52
53ioctl_write_int!(ui_set_evbit, b'U', 100);
54ioctl_write_int!(ui_set_keybit, b'U', 101);
55ioctl_write_int!(ui_set_relbit, b'U', 102);
56ioctl_write_int!(ui_set_absbit, b'U', 103);
57ioctl_write_int!(ui_set_mscbit, b'U', 104);
58ioctl_write_int!(ui_set_ledbit, b'U', 105);
59ioctl_write_int!(ui_set_sndbit, b'U', 106);
60ioctl_write_int!(ui_set_ffbit, b'U', 107);
61ioctl_write_ptr!(ui_set_phys, b'U', 108, *const c_char); ioctl_write_int!(ui_set_swbit, b'U', 109);
63ioctl_write_int!(ui_set_propbit, b'U', 110);
64
65ioctl_readwrite!(ui_begin_ff_upload, b'U', 200, uinput_ff_upload);
66ioctl_write_ptr!(ui_end_ff_upload, b'U', 201, uinput_ff_upload);
67ioctl_readwrite!(ui_begin_ff_erase, b'U', 202, uinput_ff_erase);
68ioctl_write_ptr!(ui_end_ff_erase, b'U', 203, uinput_ff_erase);