keys.go

 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}