diff --git a/src/main.rs b/src/main.rs index 82a5804..df5666c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,11 +11,17 @@ fn main() -> () { } println!("{}", D.name().unwrap_or("Unknown device")); - let side_handle = std::thread::spawn(|| loop { - if D.get_key_state().unwrap().contains(evdev::Key::BTN_SIDE) { - println!("BTN_SIDE"); + let side_handle = std::thread::spawn(|| { + let pedal = Pedal { + key: evdev::Key::BTN_SIDE, + action: Box::new(|| println!("BTN_SIDE")), + }; + loop { + if D.get_key_state().unwrap().contains(pedal.key) { + (*pedal.action)(); + } + std::thread::sleep(std::time::Duration::from_millis(100)); } - std::thread::sleep(std::time::Duration::from_millis(100)); }); let extra_handle = std::thread::spawn(|| loop { @@ -49,3 +55,8 @@ fn pick_device() -> evdev::Device { devices.into_iter().nth(n).unwrap() } } + +struct Pedal { + key: evdev::Key, + action: Box ()>, +}