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