package ui import "github.com/charmbracelet/bubbles/key" // KeyMap defines vim-style bindings for the TUI. type KeyMap struct { Up key.Binding Down key.Binding New key.Binding Search key.Binding Project key.Binding Board key.Binding Status key.Binding Edit key.Binding EditInEditor key.Binding // ctrl+e — open $EDITOR while creating Delete key.Binding // x — confirm first DeleteForce key.Binding // X — immediate ConfirmYes key.Binding Toggle key.Binding // space — toggle multi-select Undo key.Binding Redo key.Binding Quit key.Binding Enter key.Binding Escape key.Binding } // DefaultKeyMap returns the default key bindings. func DefaultKeyMap() KeyMap { return KeyMap{ Up: key.NewBinding( key.WithKeys("k", "up"), key.WithHelp("j/k", "navigate"), ), Down: key.NewBinding( key.WithKeys("j", "down"), key.WithHelp("j/k", "navigate"), ), New: key.NewBinding( key.WithKeys("n"), key.WithHelp("n", "new"), ), Search: key.NewBinding( key.WithKeys("/"), key.WithHelp("/", "search"), ), Project: key.NewBinding( key.WithKeys("p"), key.WithHelp("p", "project"), ), Board: key.NewBinding( key.WithKeys("l", "tab"), key.WithHelp("l", "list"), ), Status: key.NewBinding( key.WithKeys("s", "enter"), key.WithHelp("s", "status"), ), Edit: key.NewBinding( key.WithKeys("e"), key.WithHelp("e", "edit"), ), EditInEditor: key.NewBinding( key.WithKeys("ctrl+e"), key.WithHelp("ctrl+e", "editor"), ), Delete: key.NewBinding( key.WithKeys("x"), key.WithHelp("x", "delete"), ), DeleteForce: key.NewBinding( key.WithKeys("X"), key.WithHelp("X", "force delete"), ), ConfirmYes: key.NewBinding( key.WithKeys("y", "Y"), key.WithHelp("y", "confirm"), ), Toggle: key.NewBinding( key.WithKeys(" "), key.WithHelp("space", "toggle"), ), Undo: key.NewBinding( key.WithKeys("u", "ctrl+z"), key.WithHelp("u", "undo"), ), Redo: key.NewBinding( key.WithKeys("ctrl+r", "U"), key.WithHelp("U", "redo"), ), Quit: key.NewBinding( key.WithKeys("q", "ctrl+c"), key.WithHelp("q", "quit"), ), Enter: key.NewBinding( key.WithKeys("enter"), key.WithHelp("enter", "confirm"), ), Escape: key.NewBinding( key.WithKeys("esc"), key.WithHelp("esc", "cancel"), ), } } // ShortHelp implements help.KeyMap. func (k KeyMap) ShortHelp() []key.Binding { return []key.Binding{k.Up, k.New, k.Search, k.Project, k.Board, k.Status, k.Edit, k.Delete, k.DeleteForce, k.Undo, k.Redo, k.Quit} } // FullHelp implements help.KeyMap. func (k KeyMap) FullHelp() [][]key.Binding { return [][]key.Binding{k.ShortHelp()} }