keys.go

 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}