verso/ui/keymap/
defaults.rs1use std::collections::BTreeMap;
2
3pub fn default_entries() -> Vec<(String, Vec<String>)> {
5 vec![
6 ("move_down".into(), vec!["j".into(), "<Down>".into()]),
7 ("move_up".into(), vec!["k".into(), "<Up>".into()]),
8 (
9 "page_down".into(),
10 vec!["<Space>".into(), "f".into(), "<C-f>".into()],
11 ),
12 ("page_up".into(), vec!["b".into(), "<C-b>".into()]),
13 ("half_page_down".into(), vec!["d".into(), "<C-d>".into()]),
14 ("half_page_up".into(), vec!["u".into(), "<C-u>".into()]),
15 ("goto_top".into(), vec!["gg".into()]),
16 ("goto_bottom".into(), vec!["G".into()]),
17 ("next_chapter".into(), vec!["]]".into()]),
18 ("prev_chapter".into(), vec!["[[".into()]),
19 ("mark_set".into(), vec!["m".into()]),
20 ("mark_jump".into(), vec!["'".into()]),
21 ("search_forward".into(), vec!["/".into()]),
22 ("search_backward".into(), vec!["?".into()]),
23 ("search_next".into(), vec!["n".into()]),
24 ("search_prev".into(), vec!["N".into()]),
25 ("visual_select".into(), vec!["v".into()]),
26 ("yank_highlight".into(), vec!["y".into()]),
27 ("list_highlights".into(), vec!["H".into()]),
28 ("cmd".into(), vec![":".into()]),
29 ("quit_to_library".into(), vec!["q".into()]),
30 ("toggle_theme".into(), vec!["gt".into()]),
31 ("cycle_width".into(), vec!["z=".into()]),
32 ("help".into(), vec!["<F1>".into()]),
33 ]
34}
35
36pub fn merge_with_user(user: &BTreeMap<String, Vec<String>>) -> Vec<(String, Vec<String>)> {
41 let mut out: Vec<(String, Vec<String>)> = default_entries();
42 for (action, seqs) in user {
43 if let Some(entry) = out.iter_mut().find(|(a, _)| a == action) {
44 entry.1 = seqs.clone();
45 } else {
46 out.push((action.clone(), seqs.clone()));
47 }
48 }
49 out
50}