use keymap_core::{Key, KeyInput, Keymap, Modifiers};
#[derive(Clone, Debug, PartialEq)]
enum Action {
Quit,
Save,
SplitPane,
}
fn main() {
let mut keymap = Keymap::new();
keymap.bind(KeyInput::new(Key::Char('q'), Modifiers::CTRL), Action::Quit);
keymap.bind(KeyInput::new(Key::Char('s'), Modifiers::CTRL), Action::Save);
keymap.bind(
KeyInput::new(Key::Char('1'), Modifiers::SUPER),
Action::SplitPane,
);
let inputs = [
KeyInput::new(Key::Char('q'), Modifiers::CTRL),
KeyInput::new(Key::Char('1'), Modifiers::SUPER),
KeyInput::new(Key::Char('x'), Modifiers::NONE),
];
for input in inputs {
match keymap.get(&input) {
Some(action) => println!("{input:>8} -> consume {action:?}"),
None => println!("{input:>8} -> pass through"),
}
}
}