1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
package common
import "github.com/charmbracelet/bubbles/key"
// KeyMap groups all key bindings shared by TUI screens.
type KeyMap struct {
Tab key.Binding
ShiftTab key.Binding
One key.Binding
Two key.Binding
Three key.Binding
Four key.Binding
Five key.Binding
Six key.Binding
Export key.Binding
Quit key.Binding
Help key.Binding
Enter key.Binding
Esc key.Binding
Refresh key.Binding
}
// Keys contains the default shared key map.
var Keys = DefaultKeyMap()
// DefaultKeyMap builds the default key bindings used by models.
func DefaultKeyMap() KeyMap {
return KeyMap{
Tab: key.NewBinding(key.WithKeys("tab"), key.WithHelp("tab", "next tab")),
ShiftTab: key.NewBinding(key.WithKeys("shift+tab"), key.WithHelp("shift+tab", "prev tab")),
One: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "overview")),
Two: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "syscalls")),
Three: key.NewBinding(key.WithKeys("3"), key.WithHelp("3", "files")),
Four: key.NewBinding(key.WithKeys("4"), key.WithHelp("4", "processes")),
Five: key.NewBinding(key.WithKeys("5"), key.WithHelp("5", "latency")),
Six: key.NewBinding(key.WithKeys("6"), key.WithHelp("6", "gaps")),
Export: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "export")),
Quit: key.NewBinding(key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit")),
Help: key.NewBinding(key.WithKeys("?"), key.WithHelp("?", "help")),
Enter: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "select")),
Esc: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "back")),
Refresh: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "refresh")),
}
}
// DashboardShortHelp returns compact bindings for dashboard help bars.
func (k KeyMap) DashboardShortHelp() []key.Binding {
bindings := []key.Binding{k.Tab, k.ShiftTab}
if help := k.Export.Help(); help.Key != "" || help.Desc != "" {
bindings = append(bindings, k.Export)
}
bindings = append(bindings, k.Help, k.Quit)
return bindings
}
// DashboardFullHelp returns grouped bindings for dashboard overlays.
func (k KeyMap) DashboardFullHelp() [][]key.Binding {
controls := []key.Binding{k.Tab, k.ShiftTab}
if help := k.Export.Help(); help.Key != "" || help.Desc != "" {
controls = append(controls, k.Export)
}
controls = append(controls, k.Refresh, k.Help, k.Quit)
return [][]key.Binding{
{k.One, k.Two, k.Three, k.Four, k.Five, k.Six},
controls,
{
key.NewBinding(key.WithKeys("left/right"), key.WithHelp("left/right", "tab")),
key.NewBinding(key.WithKeys("h/l"), key.WithHelp("h/l", "tab")),
key.NewBinding(key.WithKeys("j/k"), key.WithHelp("j/k", "scroll")),
key.NewBinding(key.WithKeys("up/down"), key.WithHelp("up/down", "scroll")),
},
}
}
// PickerShortHelp returns compact bindings for the PID picker.
func (k KeyMap) PickerShortHelp() []key.Binding {
return []key.Binding{k.Enter, k.Refresh, k.Esc}
}
|