1package list
2
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
5)
6
7type KeyMap struct {
8 Up,
9 Down,
10 UpOneItem,
11 DownOneItem,
12 PageUp,
13 PageDown,
14 HalfPageUp,
15 HalfPageDown,
16 Home,
17 End key.Binding
18}
19
20func DefaultKeyMap() KeyMap {
21 return KeyMap{
22 PageDown: key.NewBinding(
23 key.WithKeys("pgdown", "f"),
24 key.WithHelp("f/pgdn", "page down"),
25 ),
26 PageUp: key.NewBinding(
27 key.WithKeys("pgup", "b"),
28 key.WithHelp("b/pgup", "page up"),
29 ),
30 HalfPageUp: key.NewBinding(
31 key.WithKeys("u"),
32 key.WithHelp("u", "½ page up"),
33 ),
34 HalfPageDown: key.NewBinding(
35 key.WithKeys("d"),
36 key.WithHelp("d", "½ page down"),
37 ),
38 Up: key.NewBinding(
39 key.WithKeys("up", "k"),
40 key.WithHelp("↑/k", "up"),
41 ),
42 Down: key.NewBinding(
43 key.WithKeys("down", "j"),
44 key.WithHelp("↓/j", "down"),
45 ),
46 UpOneItem: key.NewBinding(
47 key.WithKeys("shift+up"),
48 key.WithHelp("shift+↑", "up one item"),
49 ),
50 DownOneItem: key.NewBinding(
51 key.WithKeys("shift+down"),
52 key.WithHelp("shift+↓", "down one item"),
53 ),
54 Home: key.NewBinding(
55 key.WithKeys("g", "home"),
56 key.WithHelp("g/home", "home"),
57 ),
58 End: key.NewBinding(
59 key.WithKeys("G", "end"),
60 key.WithHelp("G/end", "end"),
61 ),
62 }
63}
64
65func (k KeyMap) KeyBindings() []key.Binding {
66 return []key.Binding{
67 k.Down,
68 k.Up,
69 k.DownOneItem,
70 k.UpOneItem,
71 k.PageDown,
72 k.PageUp,
73 k.HalfPageDown,
74 k.HalfPageUp,
75 k.Home,
76 k.End,
77 }
78}