keys.go

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