1package status
2
3import (
4 "github.com/charmbracelet/bubbles/v2/key"
5)
6
7type KeyMap struct {
8 Tab,
9 Commands,
10 Sessions,
11 Help key.Binding
12}
13
14func DefaultKeyMap(tabHelp string) KeyMap {
15 return KeyMap{
16 Tab: key.NewBinding(
17 key.WithKeys("tab"),
18 key.WithHelp("tab", tabHelp),
19 ),
20 Commands: key.NewBinding(
21 key.WithKeys("ctrl+p"),
22 key.WithHelp("ctrl+p", "commands"),
23 ),
24 Sessions: key.NewBinding(
25 key.WithKeys("ctrl+s"),
26 key.WithHelp("ctrl+s", "sessions"),
27 ),
28 Help: key.NewBinding(
29 key.WithKeys("ctrl+?", "ctrl+_", "ctrl+/"),
30 key.WithHelp("ctrl+?", "more"),
31 ),
32 }
33}
34
35// KeyBindings implements layout.KeyMapProvider
36func (k KeyMap) KeyBindings() []key.Binding {
37 return []key.Binding{
38 k.Tab,
39 k.Commands,
40 k.Sessions,
41 k.Help,
42 }
43}
44
45// FullHelp implements help.KeyMap.
46func (k KeyMap) FullHelp() [][]key.Binding {
47 m := [][]key.Binding{}
48 slice := k.KeyBindings()
49 for i := 0; i < len(slice); i += 4 {
50 end := min(i+4, len(slice))
51 m = append(m, slice[i:end])
52 }
53 return m
54}
55
56// ShortHelp implements help.KeyMap.
57func (k KeyMap) ShortHelp() []key.Binding {
58 return []key.Binding{
59 k.Tab,
60 k.Commands,
61 k.Sessions,
62 k.Help,
63 }
64}