package common import ( "github.com/charmbracelet/bubbles/key" ) // Keymap is a collection of key bindings. type Keymap struct { Quit key.Binding Back key.Binding Ok key.Binding Delete key.Binding Input key.Binding Add key.Binding Edit key.Binding Up key.Binding Down key.Binding Left key.Binding Right key.Binding Next key.Binding Prev key.Binding NextPage key.Binding PrevPage key.Binding SetReport key.Binding SetContext key.Binding SetProject key.Binding Select key.Binding Insert key.Binding Tag key.Binding Undo key.Binding StartStop key.Binding } // TODO: use config values for key bindings // NewKeymap creates a new Keymap. func NewKeymap() *Keymap { return &Keymap{ Quit: key.NewBinding( key.WithKeys("q", "ctrl+c"), key.WithHelp("q, ctrl+c", "Quit"), ), Back: key.NewBinding( key.WithKeys("esc"), key.WithHelp("esc", "Back"), ), Ok: key.NewBinding( key.WithKeys("enter"), key.WithHelp("enter", "Ok"), ), Delete: key.NewBinding( key.WithKeys("d"), key.WithHelp("d", "Delete"), ), Input: key.NewBinding( key.WithKeys(":"), key.WithHelp(":", "Input"), ), Add: key.NewBinding( key.WithKeys("a"), key.WithHelp("a", "Add new task"), ), Edit: key.NewBinding( key.WithKeys("e"), key.WithHelp("e", "Edit task"), ), Up: key.NewBinding( key.WithKeys("k", "up"), key.WithHelp("↑/k", "Up"), ), Down: key.NewBinding( key.WithKeys("j", "down"), key.WithHelp("↓/j", "Down"), ), Left: key.NewBinding( key.WithKeys("h", "left"), key.WithHelp("←/h", "Left"), ), Right: key.NewBinding( key.WithKeys("l", "right"), key.WithHelp("→/l", "Right"), ), Next: key.NewBinding( key.WithKeys("tab"), key.WithHelp("tab", "Next"), ), Prev: key.NewBinding( key.WithKeys("shift+tab"), key.WithHelp("shift+tab", "Previous"), ), NextPage: key.NewBinding( key.WithKeys("]"), key.WithHelp("[", "Next page"), ), PrevPage: key.NewBinding( key.WithKeys("["), key.WithHelp("]", "Previous page"), ), SetReport: key.NewBinding( key.WithKeys("r"), key.WithHelp("r", "Set report"), ), SetContext: key.NewBinding( key.WithKeys("c"), key.WithHelp("c", "Set context"), ), SetProject: key.NewBinding( key.WithKeys("p"), key.WithHelp("p", "Set project"), ), Select: key.NewBinding( key.WithKeys("enter"), key.WithHelp("enter", "Select"), ), Insert: key.NewBinding( key.WithKeys("i"), key.WithHelp("insert", "Insert mode"), ), Tag: key.NewBinding( key.WithKeys("t"), key.WithHelp("tag", "Tag"), ), Undo: key.NewBinding( key.WithKeys("u"), key.WithHelp("undo", "Undo"), ), StartStop: key.NewBinding( key.WithKeys("s"), key.WithHelp("start/stop", "Start/Stop"), ), } }