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}
15
16// DefaultKeyMap returns the default key map.
17func DefaultKeyMap() *KeyMap {
18 km := new(KeyMap)
19
20 km.Quit = key.NewBinding(
21 key.WithKeys(
22 "q",
23 "ctrl+c",
24 ),
25 key.WithHelp(
26 "q",
27 "quit",
28 ),
29 )
30
31 km.Up = key.NewBinding(
32 key.WithKeys(
33 "up",
34 "k",
35 ),
36 key.WithHelp(
37 "↑",
38 "up",
39 ),
40 )
41
42 km.Down = key.NewBinding(
43 key.WithKeys(
44 "down",
45 "j",
46 ),
47 key.WithHelp(
48 "↓",
49 "down",
50 ),
51 )
52
53 km.UpDown = key.NewBinding(
54 key.WithKeys(
55 "up",
56 "down",
57 "k",
58 "j",
59 ),
60 key.WithHelp(
61 "↑↓",
62 "navigate",
63 ),
64 )
65
66 km.LeftRight = key.NewBinding(
67 key.WithKeys(
68 "left",
69 "h",
70 "right",
71 "l",
72 ),
73 key.WithHelp(
74 "←→",
75 "navigate",
76 ),
77 )
78
79 km.Arrows = key.NewBinding(
80 key.WithKeys(
81 "up",
82 "right",
83 "down",
84 "left",
85 "k",
86 "j",
87 "h",
88 "l",
89 ),
90 key.WithHelp(
91 "↑←↓→",
92 "navigate",
93 ),
94 )
95
96 km.Select = key.NewBinding(
97 key.WithKeys(
98 "enter",
99 ),
100 key.WithHelp(
101 "enter",
102 "select",
103 ),
104 )
105
106 return km
107}