Files
managarr/src/app/key_binding.rs

157 lines
2.4 KiB
Rust

use crate::event::Key;
macro_rules! generate_keybindings {
($($field:ident),+) => {
pub struct KeyBindings {
$(pub $field: KeyBinding),+
}
};
}
generate_keybindings! {
add,
up,
down,
left,
right,
backspace,
clear,
search,
settings,
filter,
sort,
edit,
logs,
tasks,
test,
test_all,
refresh,
update,
events,
home,
end,
tab,
delete,
submit,
confirm,
quit,
esc
}
#[derive(Clone, Copy, Eq, PartialEq, Debug)]
pub struct KeyBinding {
pub key: Key,
pub desc: &'static str,
}
pub const DEFAULT_KEYBINDINGS: KeyBindings = KeyBindings {
add: KeyBinding {
key: Key::Char('a'),
desc: "add",
},
up: KeyBinding {
key: Key::Up,
desc: "up",
},
down: KeyBinding {
key: Key::Down,
desc: "down",
},
left: KeyBinding {
key: Key::Left,
desc: "left",
},
right: KeyBinding {
key: Key::Right,
desc: "right",
},
backspace: KeyBinding {
key: Key::Backspace,
desc: "backspace",
},
clear: KeyBinding {
key: Key::Char('c'),
desc: "clear",
},
search: KeyBinding {
key: Key::Char('s'),
desc: "search",
},
settings: KeyBinding {
key: Key::Char('s'),
desc: "settings",
},
filter: KeyBinding {
key: Key::Char('f'),
desc: "filter",
},
sort: KeyBinding {
key: Key::Char('o'),
desc: "sort",
},
edit: KeyBinding {
key: Key::Char('e'),
desc: "edit",
},
events: KeyBinding {
key: Key::Char('e'),
desc: "events",
},
logs: KeyBinding {
key: Key::Char('l'),
desc: "logs",
},
tasks: KeyBinding {
key: Key::Char('t'),
desc: "tasks",
},
test: KeyBinding {
key: Key::Char('t'),
desc: "test",
},
test_all: KeyBinding {
key: Key::Char('T'),
desc: "test all",
},
refresh: KeyBinding {
key: Key::Ctrl('r'),
desc: "refresh",
},
update: KeyBinding {
key: Key::Char('u'),
desc: "update",
},
home: KeyBinding {
key: Key::Home,
desc: "home",
},
end: KeyBinding {
key: Key::End,
desc: "end",
},
tab: KeyBinding {
key: Key::Tab,
desc: "tab",
},
delete: KeyBinding {
key: Key::Delete,
desc: "delete",
},
submit: KeyBinding {
key: Key::Enter,
desc: "submit",
},
confirm: KeyBinding {
key: Key::Ctrl('s'),
desc: "submit",
},
quit: KeyBinding {
key: Key::Char('q'),
desc: "quit",
},
esc: KeyBinding {
key: Key::Esc,
desc: "close",
},
};