diff --git a/src/main.rs b/src/main.rs index cfa5abf..aa93e69 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,7 +12,7 @@ fn main() -> () { } println!("{}", D.name().unwrap_or("Unknown device")); - let mut pedals = vec![ + let pedals = vec![ Pedal { key: evdev::Key::BTN_SIDE, action: Box::new(|| println!("BTN_SIDE")), @@ -23,23 +23,21 @@ fn main() -> () { }, ]; - 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 mut handles: Vec<_> = Vec::new(); - let extra_handle = std::thread::spawn(|| loop { - if D.get_key_state().unwrap().contains(evdev::Key::BTN_SIDE) { - println!("BTN_SIDE"); - } - std::thread::sleep(std::time::Duration::from_millis(100)); - }); + for pedal in pedals { + let 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)); + }); + handles.push(handle); + } - extra_handle.join().expect("Couldn't join"); - side_handle.join().expect("Couldn't join"); + for handle in handles { + handle.join().expect("Couldn't join"); + } } fn pick_device() -> evdev::Device {