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