ref: pull key-action pairs into module

v0.1.1
rrr-marble 5 years ago
parent 847a4f44a5
commit b0f43d0b66

@ -3,6 +3,8 @@ use std::io::Write;
#[macro_use]
extern crate lazy_static;
mod pedals;
fn main() -> () {
lazy_static! {
static ref D: evdev::Device = {
@ -12,21 +14,10 @@ fn main() -> () {
}
println!("{}", D.name().unwrap_or("Unknown device"));
let pedals = vec![
Pedal {
key: evdev::Key::BTN_SIDE,
action: Box::new(|| println!("BTN_SIDE")),
},
Pedal {
key: evdev::Key::BTN_EXTRA,
action: Box::new(|| println!("BTN_EXTRA")),
},
];
run(&D, pedals);
run(&D, crate::pedals::pedals().into_iter());
}
fn run(device: &'static evdev::Device, pedals: Vec<Pedal>) {
fn run(device: &'static evdev::Device, pedals: impl Iterator<Item = Pedal>) {
let mut handles: Vec<_> = Vec::new();
for pedal in pedals {
let handle = std::thread::spawn(move || loop {
@ -63,7 +54,7 @@ fn pick_device() -> evdev::Device {
}
}
struct Pedal {
pub struct Pedal {
key: evdev::Key,
action: Box<dyn Fn() -> () + Send + 'static>,
}

@ -0,0 +1,19 @@
pub use crate::Pedal;
use evdev::Key;
pub fn pedals() -> Vec<Pedal> {
vec![
Pedal {
key: Key::BTN_SIDE,
action: Box::new(|| println!("BTN_SIDE")),
},
Pedal {
key: Key::BTN_EXTRA,
action: Box::new(|| println!("BTN_EXTRA")),
},
Pedal {
key: Key::BTN_RIGHT,
action: Box::new(|| println!("BTN_RIGHT")),
},
]
}
Loading…
Cancel
Save