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;
#[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<dyn Fn() -> ()>,
action: Box<dyn Fn() -> () + Send + 'static>,
}

Loading…
Cancel
Save