77222ff1b8
Run mode (r key on checklist cards): cursor navigates steps, space toggles done/undone, r resets all, esc saves changes to DB and exits. Persists step state — improvement over web which discards on exit. Fill mode (f key on template cards): tab/shift-tab navigates slots, type to fill values, enter resolves template and copies to clipboard with use count increment. Esc cancels without copying. Both modes are sub-states of detail view, keeping architecture simple.
62 lines
2.6 KiB
Go
62 lines
2.6 KiB
Go
package tui
|
|
|
|
import "github.com/charmbracelet/bubbles/key"
|
|
|
|
type keyMap struct {
|
|
Up key.Binding
|
|
Down key.Binding
|
|
Enter key.Binding
|
|
Back key.Binding
|
|
Add key.Binding
|
|
Delete key.Binding
|
|
Quit key.Binding
|
|
Help key.Binding
|
|
PageUp key.Binding
|
|
PageDn key.Binding
|
|
Top key.Binding
|
|
Bottom key.Binding
|
|
Todo key.Binding
|
|
Pin key.Binding
|
|
Filter key.Binding
|
|
Promote key.Binding
|
|
Demote key.Binding
|
|
Copy key.Binding
|
|
Edit key.Binding
|
|
Stream key.Binding
|
|
Cards key.Binding
|
|
Sort key.Binding
|
|
Intent key.Binding
|
|
Absorb key.Binding
|
|
Run key.Binding
|
|
Fill key.Binding
|
|
}
|
|
|
|
var keys = keyMap{
|
|
Up: key.NewBinding(key.WithKeys("up", "k"), key.WithHelp("↑/k", "up")),
|
|
Down: key.NewBinding(key.WithKeys("down", "j"), key.WithHelp("↓/j", "down")),
|
|
Enter: key.NewBinding(key.WithKeys("enter"), key.WithHelp("enter", "view")),
|
|
Back: key.NewBinding(key.WithKeys("esc"), key.WithHelp("esc", "back")),
|
|
Add: key.NewBinding(key.WithKeys("a"), key.WithHelp("a", "add")),
|
|
Delete: key.NewBinding(key.WithKeys("d"), key.WithHelp("d", "delete")),
|
|
Quit: key.NewBinding(key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit")),
|
|
Help: key.NewBinding(key.WithKeys("?"), key.WithHelp("?", "help")),
|
|
PageUp: key.NewBinding(key.WithKeys("pgup", "ctrl+u"), key.WithHelp("pgup", "page up")),
|
|
PageDn: key.NewBinding(key.WithKeys("pgdown", "ctrl+d"), key.WithHelp("pgdn", "page down")),
|
|
Top: key.NewBinding(key.WithKeys("home", "g"), key.WithHelp("home", "top")),
|
|
Bottom: key.NewBinding(key.WithKeys("end", "G"), key.WithHelp("end", "bottom")),
|
|
Todo: key.NewBinding(key.WithKeys("x"), key.WithHelp("x", "toggle todo")),
|
|
Pin: key.NewBinding(key.WithKeys("!"), key.WithHelp("!", "toggle pin")),
|
|
Filter: key.NewBinding(key.WithKeys("#"), key.WithHelp("#", "filter tag")),
|
|
Promote: key.NewBinding(key.WithKeys("p"), key.WithHelp("p", "promote")),
|
|
Demote: key.NewBinding(key.WithKeys("D"), key.WithHelp("D", "demote")),
|
|
Copy: key.NewBinding(key.WithKeys("c"), key.WithHelp("c", "copy")),
|
|
Edit: key.NewBinding(key.WithKeys("e"), key.WithHelp("e", "edit")),
|
|
Stream: key.NewBinding(key.WithKeys("1"), key.WithHelp("1", "stream")),
|
|
Cards: key.NewBinding(key.WithKeys("2"), key.WithHelp("2", "cards")),
|
|
Sort: key.NewBinding(key.WithKeys("s"), key.WithHelp("s", "sort")),
|
|
Intent: key.NewBinding(key.WithKeys("tab"), key.WithHelp("tab", "intent")),
|
|
Absorb: key.NewBinding(key.WithKeys("m"), key.WithHelp("m", "absorb")),
|
|
Run: key.NewBinding(key.WithKeys("r"), key.WithHelp("r", "run checklist")),
|
|
Fill: key.NewBinding(key.WithKeys("f"), key.WithHelp("f", "fill template")),
|
|
}
|