package app import "github.com/charmbracelet/bubbles/key" // KeyMap defines all keybindings type KeyMap struct { // Global Quit key.Binding Help key.Binding PlayPause key.Binding // Navigation (global) SeekForward key.Binding SeekBackward key.Binding SeekForwardBig key.Binding SeekBackwardBig key.Binding ScrollUp key.Binding ScrollDown key.Binding PageUp key.Binding PageDown key.Binding GoTop key.Binding GoBottom key.Binding // Editing EnterEdit key.Binding // Search Search key.Binding } // DefaultKeyMap returns the default keybindings func DefaultKeyMap() KeyMap { return KeyMap{ Quit: key.NewBinding( key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit"), ), Help: key.NewBinding( key.WithKeys("?"), key.WithHelp("?", "help"), ), PlayPause: key.NewBinding( key.WithKeys(" "), key.WithHelp("space", "play/pause"), ), SeekForward: key.NewBinding( key.WithKeys("l", "right"), key.WithHelp("l/→", "seek forward"), ), SeekBackward: key.NewBinding( key.WithKeys("h", "left"), key.WithHelp("h/←", "seek backward"), ), SeekForwardBig: key.NewBinding( key.WithKeys("L", "shift+right"), key.WithHelp("L", "seek forward (big)"), ), SeekBackwardBig: key.NewBinding( key.WithKeys("H", "shift+left"), key.WithHelp("H", "seek backward (big)"), ), ScrollUp: key.NewBinding( key.WithKeys("k", "up"), key.WithHelp("k/↑", "previous cue"), ), ScrollDown: key.NewBinding( key.WithKeys("j", "down"), key.WithHelp("j/↓", "next cue"), ), PageUp: key.NewBinding( key.WithKeys("ctrl+u"), key.WithHelp("ctrl+u", "jump 5 cues up"), ), PageDown: key.NewBinding( key.WithKeys("ctrl+d"), key.WithHelp("ctrl+d", "jump 5 cues down"), ), GoTop: key.NewBinding( key.WithKeys("g"), key.WithHelp("g", "go to first cue"), ), GoBottom: key.NewBinding( key.WithKeys("G"), key.WithHelp("G", "go to last cue"), ), EnterEdit: key.NewBinding( key.WithKeys("i"), key.WithHelp("i", "edit transcript"), ), Search: key.NewBinding( key.WithKeys("s"), key.WithHelp("s", "search cues"), ), } } // HelpView returns a formatted help string func (k KeyMap) HelpView() string { return `Keybindings: Global: space Play/Pause q Quit ? Toggle help Navigation (Global): h / ← Seek backward (5s) l / → Seek forward (5s) H Seek backward (30s) L Seek forward (30s) j / ↓ Next cue k / ↑ Previous cue ctrl+d Jump 5 cues down ctrl+u Jump 5 cues up g Go to first cue G Go to last cue Editing: i Edit in $EDITOR at cue Navigation: s Search cues` }