Files
tasksquire/common/keymap.go
2024-05-29 19:47:57 +02:00

124 lines
2.3 KiB
Go

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
Input key.Binding
Add key.Binding
Edit key.Binding
Up key.Binding
Down key.Binding
Left key.Binding
Right 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"),
),
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"),
),
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"),
),
}
}