use crate::input::{KeyPress, ModKeys, NavKey};
use crate::layout::Dim;
use std::collections::HashMap;
#[non_exhaustive]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum Action {
Resize(Dim),
Redraw(),
Quit(),
}
pub struct KeyMap {
map: HashMap<(KeyPress, ModKeys), Action>,
}
impl Default for KeyMap {
fn default() -> Self {
let mut map = HashMap::new();
let key = (KeyPress::Navigation(NavKey::Esc), ModKeys::Empty);
map.insert(key, Action::Quit());
Self { map }
}
}
impl KeyMap {
pub fn lookup(&self, key: KeyPress, mods: ModKeys) -> Option<Action> {
self.map.get(&(key, mods)).cloned()
}
}