ref: key-action pair from vec instead of hardcode

v0.1.1
rrr-marble 5 years ago
parent 7b66d0f032
commit c0e3204cfc

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

Loading…
Cancel
Save