diff --git a/src/main.rs b/src/main.rs index 3c869e7..cfa5abf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +use core::fmt; use std::io::Write; #[macro_use] extern crate lazy_static; @@ -11,7 +12,7 @@ fn main() -> () { } println!("{}", D.name().unwrap_or("Unknown device")); - let pedals = vec![ + let mut pedals = vec![ Pedal { key: evdev::Key::BTN_SIDE, action: Box::new(|| println!("BTN_SIDE")), @@ -22,22 +23,17 @@ fn main() -> () { }, ]; - 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)); + let pedal = pedals.pop().unwrap(); + let side_handle = std::thread::spawn(move || loop { + if D.get_key_state().unwrap().contains(pedal.key) { + (*pedal.action)(); } + std::thread::sleep(std::time::Duration::from_millis(100)); }); let extra_handle = std::thread::spawn(|| loop { - if D.get_key_state().unwrap().contains(evdev::Key::BTN_EXTRA) { - println!("BTN_EXTRA"); + if D.get_key_state().unwrap().contains(evdev::Key::BTN_SIDE) { + println!("BTN_SIDE"); } std::thread::sleep(std::time::Duration::from_millis(100)); }); @@ -69,5 +65,5 @@ fn pick_device() -> evdev::Device { struct Pedal { key: evdev::Key, - action: Box ()>, + action: Box () + Send + 'static>, }