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 // Focus FocusWaveform key.Binding FocusTranscript key.Binding // Waveform navigation SeekForward key.Binding SeekBackward key.Binding SeekForwardBig key.Binding SeekBackwardBig key.Binding // Transcript navigation ScrollUp key.Binding ScrollDown key.Binding PageUp key.Binding PageDown key.Binding GoTop key.Binding GoBottom key.Binding // Editing EnterEdit 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"), ), FocusWaveform: key.NewBinding( key.WithKeys("ctrl+k"), key.WithHelp("ctrl+k", "focus waveform"), ), FocusTranscript: key.NewBinding( key.WithKeys("ctrl+j"), key.WithHelp("ctrl+j", "focus transcript"), ), 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/↑", "scroll up"), ), ScrollDown: key.NewBinding( key.WithKeys("j", "down"), key.WithHelp("j/↓", "scroll down"), ), PageUp: key.NewBinding( key.WithKeys("ctrl+u"), key.WithHelp("ctrl+u", "page up"), ), PageDown: key.NewBinding( key.WithKeys("ctrl+d"), key.WithHelp("ctrl+d", "page down"), ), GoTop: key.NewBinding( key.WithKeys("g"), key.WithHelp("gg", "go to top"), ), GoBottom: key.NewBinding( key.WithKeys("G"), key.WithHelp("G", "go to bottom"), ), EnterEdit: key.NewBinding( key.WithKeys("i"), key.WithHelp("i", "edit transcript"), ), } } // HelpView returns a formatted help string func (k KeyMap) HelpView() string { return `Keybindings: Global: space Play/Pause ctrl+j Focus transcript ctrl+k Focus waveform q Quit ? Toggle help Waveform (when focused): h / ← Seek backward (5s) l / → Seek forward (5s) H Seek backward (30s) L Seek forward (30s) Transcript (when focused): 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 enter Seek audio to cue i Edit in $EDITOR at cue` }