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
80
81
82
83
84
85
86
87
|
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
Seven key.Binding
DirGroup 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", "lat+gaps")),
Six: key.NewBinding(key.WithKeys("6"), key.WithHelp("6", "stream")),
Seven: key.NewBinding(key.WithKeys("7"), key.WithHelp("7", "stream")),
DirGroup: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "dir group")),
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.DirGroup, k.Refresh, k.Help, k.Quit)
return [][]key.Binding{
{k.One, k.Two, k.Three, k.Four, k.Five, k.Six},
controls,
{
helpTextBinding("left/right", "tab"),
helpTextBinding("h/l", "tab"),
helpTextBinding("j/k", "scroll"),
helpTextBinding("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}
}
func helpTextBinding(keyText, desc string) key.Binding {
return key.NewBinding(key.WithHelp(keyText, desc))
}
|