From b0f43d0b666a0cc7925d32e1c95e713c1b9b1c06 Mon Sep 17 00:00:00 2001 From: rrr-marble Date: Sun, 27 Jun 2021 19:01:37 +0300 Subject: [PATCH] ref: pull key-action pairs into module --- src/main.rs | 19 +++++-------------- src/pedals.rs | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 14 deletions(-) create mode 100644 src/pedals.rs diff --git a/src/main.rs b/src/main.rs index 72d8232..5047e46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -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) { +fn run(device: &'static evdev::Device, pedals: impl Iterator) { 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 () + Send + 'static>, } diff --git a/src/pedals.rs b/src/pedals.rs new file mode 100644 index 0000000..fcece47 --- /dev/null +++ b/src/pedals.rs @@ -0,0 +1,19 @@ +pub use crate::Pedal; +use evdev::Key; + +pub fn pedals() -> Vec { + 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")), + }, + ] +}