package quit import ( "charm.land/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, } }