evdevil/
lib.rs

1//! Rust bindings to `evdev` and `uinput`.
2//!
3//! This crate provides an ergonomic interface to Linux' input subsystem.
4
5#![warn(missing_debug_implementations)]
6
7#[macro_use]
8mod macros;
9
10#[doc = include_str!("../README.md")]
11mod readme {}
12
13mod abs_info;
14mod batch;
15pub mod bits;
16mod drop;
17mod evdev;
18pub mod event;
19pub mod ff;
20pub mod hotplug;
21mod input_id;
22mod key_repeat;
23mod keymap_entry;
24mod raw;
25pub mod reader;
26mod slot;
27pub mod uinput;
28mod util;
29mod version;
30
31pub use abs_info::AbsInfo;
32pub use evdev::*;
33pub use event::codes::{InputProp, UnknownVariant};
34pub use input_id::{Bus, InputId};
35pub use key_repeat::KeyRepeat;
36pub use keymap_entry::{KeymapEntry, Scancode};
37#[doc(inline)]
38pub use reader::EventReader;
39pub use slot::Slot;
40pub use version::Version;
41
42#[cfg(test)]
43mod tests {
44    use crate::{hotplug::HotplugMonitor, uinput::UinputDevice};
45
46    use super::*;
47
48    #[test]
49    fn send_sync() {
50        fn assert<T: Send + Sync>() {}
51
52        assert::<Evdev>();
53        assert::<EventReader>();
54        assert::<UinputDevice>();
55        assert::<HotplugMonitor>();
56    }
57}