extern crate libevdev_sys;
extern crate libc;
mod util;
use libevdev_sys::evdev::*;
use libevdev_sys::linux_input::*;
use std::thread::sleep;
use std::time::Duration;
fn main() {
let device = util::open();
loop {
let flags = libevdev_read_flag::LIBEVDEV_READ_FLAG_NORMAL as u32 |
libevdev_read_flag::LIBEVDEV_READ_FLAG_BLOCKING as u32;
let mut ev = input_event::default();
let ret = unsafe {
libevdev_next_event(
device,
flags,
&mut ev)
};
if ret == libevdev_read_status::LIBEVDEV_READ_STATUS_SUCCESS as i32 {
println!("[{}.{}] Type {}, Code {}, Value {}",
ev.time.tv_sec, ev.time.tv_usec, ev.type_, ev.code, ev.value);
} else if ret == libevdev_read_status::LIBEVDEV_READ_STATUS_SYNC as i32 {
println!("SYNC!");
} else if ret == -libc::EAGAIN {
sleep(Duration::from_millis(20));
} else if ret < 0 {
panic!("failed to read event: {}", ret);
}
}
}