keymap.go

  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}