1package list
2
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
5)
6
7type KeyMap struct {
8 Down,
9 Up,
10 DownOneItem,
11 UpOneItem,
12 PageDown,
13 PageUp,
14 HalfPageDown,
15 HalfPageUp,
16 Home,
17 End key.Binding
18}
19
20func DefaultKeyMap() KeyMap {
21 return KeyMap{
22 Down: key.NewBinding(
23 key.WithKeys("down", "ctrl+j", "ctrl+n", "j"),
24 key.WithHelp("↓", "down"),
25 ),
26 Up: key.NewBinding(
27 key.WithKeys("up", "ctrl+k", "ctrl+p", "k"),
28 key.WithHelp("↑", "up"),
29 ),
30 UpOneItem: key.NewBinding(
31 key.WithKeys("shift+up", "K"),
32 key.WithHelp("shift+↑", "up one item"),
33 ),
34 DownOneItem: key.NewBinding(
35 key.WithKeys("shift+down", "J"),
36 key.WithHelp("shift+↓", "down one item"),
37 ),
38 HalfPageDown: key.NewBinding(
39 key.WithKeys("d"),
40 key.WithHelp("d", "half page down"),
41 ),
42 PageDown: key.NewBinding(
43 key.WithKeys("pgdown", " ", "f"),
44 key.WithHelp("f/pgdn", "page down"),
45 ),
46 PageUp: key.NewBinding(
47 key.WithKeys("pgup", "b"),
48 key.WithHelp("b/pgup", "page up"),
49 ),
50 HalfPageUp: key.NewBinding(
51 key.WithKeys("u"),
52 key.WithHelp("u", "half page up"),
53 ),
54 Home: key.NewBinding(
55 key.WithKeys("g", "home"),
56 key.WithHelp("g", "home"),
57 ),
58 End: key.NewBinding(
59 key.WithKeys("G", "end"),
60 key.WithHelp("G", "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.HalfPageDown,
72 k.HalfPageUp,
73 k.Home,
74 k.End,
75 }
76}