| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package quit
- import (
- "github.com/charmbracelet/bubbles/v2/key"
- )
- // KeyMap defines the keyboard bindings for the quit dialog.
- type KeyMap struct {
- LeftRight,
- EnterSpace,
- Yes,
- No,
- Tab,
- Close key.Binding
- }
- func DefaultKeymap() KeyMap {
- return KeyMap{
- LeftRight: key.NewBinding(
- key.WithKeys("left", "right"),
- key.WithHelp("←/→", "switch options"),
- ),
- EnterSpace: key.NewBinding(
- key.WithKeys("enter", " "),
- key.WithHelp("enter/space", "confirm"),
- ),
- Yes: key.NewBinding(
- key.WithKeys("y", "Y", "ctrl+c"),
- key.WithHelp("y/Y/ctrl+c", "yes"),
- ),
- No: key.NewBinding(
- key.WithKeys("n", "N"),
- key.WithHelp("n/N", "no"),
- ),
- Tab: key.NewBinding(
- key.WithKeys("tab"),
- key.WithHelp("tab", "switch options"),
- ),
- Close: key.NewBinding(
- key.WithKeys("esc", "alt+esc"),
- key.WithHelp("esc", "cancel"),
- ),
- }
- }
- // KeyBindings implements layout.KeyMapProvider
- func (k KeyMap) KeyBindings() []key.Binding {
- return []key.Binding{
- k.LeftRight,
- k.EnterSpace,
- k.Yes,
- k.No,
- k.Tab,
- k.Close,
- }
- }
- // FullHelp implements help.KeyMap.
- func (k KeyMap) FullHelp() [][]key.Binding {
- m := [][]key.Binding{}
- slice := k.KeyBindings()
- for i := 0; i < len(slice); i += 4 {
- end := min(i+4, len(slice))
- m = append(m, slice[i:end])
- }
- return m
- }
- // ShortHelp implements help.KeyMap.
- func (k KeyMap) ShortHelp() []key.Binding {
- return []key.Binding{
- k.LeftRight,
- k.EnterSpace,
- }
- }
|