1package keymap
2
3import "github.com/charmbracelet/bubbles/key"
4
5// KeyMap is a map of key bindings for the UI.
6type KeyMap struct {
7 Quit key.Binding
8 Up key.Binding
9 Down key.Binding
10 UpDown key.Binding
11 LeftRight key.Binding
12 Arrows key.Binding
13 Select key.Binding
14 Section key.Binding
15 Back key.Binding
16 PrevPage key.Binding
17 NextPage key.Binding
18}
19
20// DefaultKeyMap returns the default key map.
21func DefaultKeyMap() *KeyMap {
22 km := new(KeyMap)
23
24 km.Quit = key.NewBinding(
25 key.WithKeys(
26 "q",
27 "ctrl+c",
28 ),
29 key.WithHelp(
30 "q",
31 "quit",
32 ),
33 )
34
35 km.Up = key.NewBinding(
36 key.WithKeys(
37 "up",
38 "k",
39 ),
40 key.WithHelp(
41 "↑",
42 "up",
43 ),
44 )
45
46 km.Down = key.NewBinding(
47 key.WithKeys(
48 "down",
49 "j",
50 ),
51 key.WithHelp(
52 "↓",
53 "down",
54 ),
55 )
56
57 km.UpDown = key.NewBinding(
58 key.WithKeys(
59 "up",
60 "down",
61 "k",
62 "j",
63 ),
64 key.WithHelp(
65 "↑↓",
66 "navigate",
67 ),
68 )
69
70 km.LeftRight = key.NewBinding(
71 key.WithKeys(
72 "left",
73 "h",
74 "right",
75 "l",
76 ),
77 key.WithHelp(
78 "←→",
79 "navigate",
80 ),
81 )
82
83 km.Arrows = key.NewBinding(
84 key.WithKeys(
85 "up",
86 "right",
87 "down",
88 "left",
89 "k",
90 "j",
91 "h",
92 "l",
93 ),
94 key.WithHelp(
95 "↑←↓→",
96 "navigate",
97 ),
98 )
99
100 km.Select = key.NewBinding(
101 key.WithKeys(
102 "enter",
103 ),
104 key.WithHelp(
105 "enter",
106 "select",
107 ),
108 )
109
110 km.Section = key.NewBinding(
111 key.WithKeys(
112 "tab",
113 "shift+tab",
114 ),
115 key.WithHelp(
116 "tab",
117 "section",
118 ),
119 )
120
121 km.Back = key.NewBinding(
122 key.WithKeys(
123 "esc",
124 ),
125 key.WithHelp(
126 "esc",
127 "back",
128 ),
129 )
130
131 km.PrevPage = key.NewBinding(
132 key.WithKeys(
133 "pgup",
134 "b",
135 "u",
136 ),
137 key.WithHelp(
138 "pgup",
139 "prev page",
140 ),
141 )
142
143 km.NextPage = key.NewBinding(
144 key.WithKeys(
145 "pgdown",
146 "f",
147 "d",
148 ),
149 key.WithHelp(
150 "pgdn",
151 "next page",
152 ),
153 )
154
155 return km
156}