Files
managarr/src/app/key_binding.rs

172 lines
2.8 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,
next_servarr,
previous_servarr,
clear,
search,
auto_search,
settings,
filter,
sort,
edit,
logs,
tasks,
test,
test_all,
toggle_monitoring,
refresh,
update,
events,
home,
end,
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",
},
next_servarr: KeyBinding {
key: Key::Tab,
desc: "next servarr",
},
previous_servarr: KeyBinding {
key: Key::BackTab,
desc: "previous servarr",
},
clear: KeyBinding {
key: Key::Char('c'),
desc: "clear",
},
auto_search: KeyBinding {
key: Key::Char('S'),
desc: "auto search",
},
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",
},
toggle_monitoring: KeyBinding {
key: Key::Char('m'),
desc: "toggle monitoring",
},
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",
},
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",
},
};