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			"ctrl-c",
 23			"q",
 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}