|
|
|
|
@ -5,71 +5,43 @@
|
|
|
|
|
pub use crate::Pedal;
|
|
|
|
|
use evdev::{EventType, InputEvent, Key};
|
|
|
|
|
|
|
|
|
|
macro_rules! mash {
|
|
|
|
|
( $key:ident, $dt:literal, $ut:literal, $tx:ident ) => {{
|
|
|
|
|
let code = Key::$key.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
$tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis($dt));
|
|
|
|
|
$tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis($ut));
|
|
|
|
|
}};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Returns a vector of currently defined key-action pairs
|
|
|
|
|
pub fn pedals() -> Vec<Pedal> {
|
|
|
|
|
vec![
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::KEY_KP0,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::KEY_SPACE.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(26));
|
|
|
|
|
tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(31));
|
|
|
|
|
}),
|
|
|
|
|
key: Key::KEY_KP7,
|
|
|
|
|
action: Box::new(|tx| mash!(KEY_SPACE, 26, 31, tx)),
|
|
|
|
|
},
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::BTN_SIDE,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::KEY_SPACE.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(26));
|
|
|
|
|
tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(31));
|
|
|
|
|
}),
|
|
|
|
|
action: Box::new(|tx| mash!(KEY_SPACE, 26, 31, tx)),
|
|
|
|
|
},
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::BTN_EXTRA,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::KEY_F.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(24));
|
|
|
|
|
tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(33));
|
|
|
|
|
}),
|
|
|
|
|
action: Box::new(|tx| mash!(KEY_F, 24, 33, tx)),
|
|
|
|
|
},
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::KEY_KP6,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::KEY_F.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(24));
|
|
|
|
|
tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(33));
|
|
|
|
|
}),
|
|
|
|
|
key: Key::KEY_KP9,
|
|
|
|
|
action: Box::new(|tx| mash!(KEY_F, 24, 33, tx)),
|
|
|
|
|
},
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::BTN_RIGHT,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::BTN_LEFT.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
let up_event = InputEvent::new(EventType::KEY, code, 0);
|
|
|
|
|
tx.send(down_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(19));
|
|
|
|
|
tx.send(up_event).unwrap();
|
|
|
|
|
std::thread::sleep(std::time::Duration::from_millis(26));
|
|
|
|
|
}),
|
|
|
|
|
action: Box::new(|tx| mash!(BTN_LEFT, 19, 26, tx)),
|
|
|
|
|
},
|
|
|
|
|
Pedal {
|
|
|
|
|
key: Key::KEY_KP4,
|
|
|
|
|
key: Key::KEY_KP8,
|
|
|
|
|
action: Box::new(|tx| {
|
|
|
|
|
let code = Key::BTN_LEFT.code();
|
|
|
|
|
let down_event = InputEvent::new(EventType::KEY, code, 1);
|
|
|
|
|
|