Files

208 lines
4.5 KiB
Go
Raw Permalink Normal View History

2026-03-03 00:48:05 -05:00
package ui
import "github.com/charmbracelet/bubbles/key"
// GlobalKeyMap holds keybindings that work from any tab.
type GlobalKeyMap struct {
2026-03-03 02:29:34 -05:00
Tab1 key.Binding
Tab2 key.Binding
Tab3 key.Binding
Tab4 key.Binding
2026-03-07 23:53:16 -05:00
Tab5 key.Binding
Tab6 key.Binding
2026-03-27 02:54:09 -04:00
Tab7 key.Binding
2026-03-03 02:29:34 -05:00
NextTab key.Binding
PrevTab key.Binding
Quit key.Binding
Up key.Binding
Down key.Binding
Enter key.Binding
Back key.Binding
Year key.Binding
Retry key.Binding
GoTop key.Binding
GoBottom key.Binding
HalfUp key.Binding
HalfDown key.Binding
2026-03-03 00:48:05 -05:00
}
// GlobalKeys is the singleton global key map.
var GlobalKeys = GlobalKeyMap{
Tab1: key.NewBinding(
key.WithKeys("1"),
2026-03-07 23:53:16 -05:00
key.WithHelp("1", "home"),
2026-03-03 00:48:05 -05:00
),
Tab2: key.NewBinding(
key.WithKeys("2"),
2026-03-07 23:53:16 -05:00
key.WithHelp("2", "standings"),
2026-03-03 00:48:05 -05:00
),
Tab3: key.NewBinding(
key.WithKeys("3"),
2026-03-07 23:53:16 -05:00
key.WithHelp("3", "calendar"),
2026-03-03 00:48:05 -05:00
),
Tab4: key.NewBinding(
key.WithKeys("4"),
2026-03-07 23:53:16 -05:00
key.WithHelp("4", "race detail"),
),
Tab5: key.NewBinding(
key.WithKeys("5"),
key.WithHelp("5", "drivers"),
),
Tab6: key.NewBinding(
key.WithKeys("6"),
key.WithHelp("6", "live"),
2026-03-03 00:48:05 -05:00
),
2026-03-27 02:54:09 -04:00
Tab7: key.NewBinding(
key.WithKeys("7"),
key.WithHelp("7", "track map"),
),
2026-03-03 02:29:34 -05:00
NextTab: key.NewBinding(
key.WithKeys("tab", "right"),
key.WithHelp("tab/->", "next tab"),
),
PrevTab: key.NewBinding(
key.WithKeys("shift+tab", "left"),
key.WithHelp("shift+tab/<-", "prev tab"),
),
2026-03-03 00:48:05 -05:00
Quit: key.NewBinding(
key.WithKeys("q", "ctrl+c"),
key.WithHelp("q", "quit"),
),
Up: key.NewBinding(
key.WithKeys("k", "up"),
2026-03-03 02:29:34 -05:00
key.WithHelp("k", "up"),
2026-03-03 00:48:05 -05:00
),
Down: key.NewBinding(
key.WithKeys("j", "down"),
2026-03-03 02:29:34 -05:00
key.WithHelp("j", "down"),
2026-03-03 00:48:05 -05:00
),
Enter: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "select"),
),
Back: key.NewBinding(
2026-03-03 02:29:34 -05:00
key.WithKeys("b", "esc"),
key.WithHelp("b/esc", "back"),
2026-03-03 00:48:05 -05:00
),
2026-03-03 01:16:04 -05:00
Year: key.NewBinding(
key.WithKeys("y"),
key.WithHelp("y", "switch year"),
),
2026-03-03 02:29:34 -05:00
Retry: key.NewBinding(
key.WithKeys("r"),
key.WithHelp("r", "retry"),
),
GoTop: key.NewBinding(
key.WithKeys("g", "home"),
key.WithHelp("g", "go to top"),
),
GoBottom: key.NewBinding(
key.WithKeys("G", "end"),
key.WithHelp("G", "go to bottom"),
),
HalfUp: key.NewBinding(
key.WithKeys("ctrl+u"),
key.WithHelp("ctrl+u", "half page up"),
),
HalfDown: key.NewBinding(
key.WithKeys("ctrl+d"),
key.WithHelp("ctrl+d", "half page down"),
),
2026-03-03 00:48:05 -05:00
}
// StandingsKeyMap holds standing-specific keybindings.
type StandingsKeyMap struct {
DriverView key.Binding
ConstructorView key.Binding
}
var StandingsKeys = StandingsKeyMap{
DriverView: key.NewBinding(
key.WithKeys("d"),
key.WithHelp("d", "drivers"),
),
ConstructorView: key.NewBinding(
key.WithKeys("c"),
key.WithHelp("c", "constructors"),
),
}
2026-03-08 00:32:33 -05:00
// LiveKeyMap holds keybindings specific to the live timing tab.
type LiveKeyMap struct {
2026-03-27 02:54:09 -04:00
ToggleSectors key.Binding
ToggleRC key.Binding
ToggleBattles key.Binding
TogglePitWindow key.Binding
ScrollRCUp key.Binding
ScrollRCDown key.Binding
ExpandDriver key.Binding
Collapse key.Binding
2026-03-08 00:32:33 -05:00
}
var LiveKeys = LiveKeyMap{
ToggleSectors: key.NewBinding(
key.WithKeys("s"),
key.WithHelp("s", "toggle sectors"),
),
ToggleRC: key.NewBinding(
key.WithKeys("r"),
key.WithHelp("r", "toggle RC panel"),
),
2026-03-27 02:54:09 -04:00
ToggleBattles: key.NewBinding(
key.WithKeys("b"),
key.WithHelp("b", "toggle battles"),
),
TogglePitWindow: key.NewBinding(
key.WithKeys("p"),
key.WithHelp("p", "pit window"),
),
2026-03-08 00:32:33 -05:00
ScrollRCUp: key.NewBinding(
key.WithKeys("K"),
key.WithHelp("K", "scroll RC up"),
),
ScrollRCDown: key.NewBinding(
key.WithKeys("J"),
key.WithHelp("J", "scroll RC down"),
),
ExpandDriver: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "driver detail"),
),
Collapse: key.NewBinding(
2026-03-27 02:54:09 -04:00
key.WithKeys("esc"),
key.WithHelp("esc", "collapse"),
2026-03-08 00:32:33 -05:00
),
}
2026-03-03 00:48:05 -05:00
// RaceDetailKeyMap holds keybindings for the race detail tab.
type RaceDetailKeyMap struct {
2026-03-03 02:29:34 -05:00
ScrollUp key.Binding
ScrollDown key.Binding
PrevSession key.Binding
NextSession key.Binding
2026-03-27 02:54:09 -04:00
Replay key.Binding
2026-03-03 00:48:05 -05:00
}
var RaceDetailKeys = RaceDetailKeyMap{
ScrollUp: key.NewBinding(
key.WithKeys("K"),
key.WithHelp("K", "scroll race control up"),
),
ScrollDown: key.NewBinding(
key.WithKeys("J"),
key.WithHelp("J", "scroll race control down"),
),
2026-03-03 02:29:34 -05:00
PrevSession: key.NewBinding(
key.WithKeys("["),
key.WithHelp("[", "previous session"),
),
NextSession: key.NewBinding(
key.WithKeys("]"),
key.WithHelp("]", "next session"),
),
2026-03-27 02:54:09 -04:00
Replay: key.NewBinding(
key.WithKeys("r"),
key.WithHelp("r", "replay lap scrubber"),
),
2026-03-03 00:48:05 -05:00
}