Files
playback/internal/app/keys.go

124 lines
2.7 KiB
Go

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`
}