2025-04-15 22:24:19 +08:00

75 lines
1.6 KiB
Go

package keymaps
import "github.com/charmbracelet/bubbles/v2/key"
// KeyMap defines all keyboard shortcuts
type KeyMap struct {
Quit key.Binding
Help key.Binding
ToggleMarkdown key.Binding
Submit key.Binding
Clear key.Binding
ScrollUp key.Binding
ScrollDown key.Binding
PageUp key.Binding
PageDown key.Binding
}
// ShortHelp returns a short help message
func (k KeyMap) ShortHelp() []key.Binding {
return []key.Binding{k.Help, k.Quit}
}
// FullHelp returns complete help information
func (k KeyMap) FullHelp() [][]key.Binding {
return [][]key.Binding{
{k.Help},
{k.Quit},
{k.ToggleMarkdown},
{k.Submit},
{k.Clear},
{k.ScrollUp, k.ScrollDown},
{k.PageUp, k.PageDown},
}
}
// Default returns the default key bindings
var Default = KeyMap{
Quit: key.NewBinding(
key.WithKeys("ctrl+c"),
key.WithHelp("ctrl+c", "quit"),
),
Help: key.NewBinding(
key.WithKeys("ctrl+h"),
key.WithHelp("ctrl+h", "help"),
),
ToggleMarkdown: key.NewBinding(
key.WithKeys("tab"),
key.WithHelp("tab", "toggle view"),
),
Submit: key.NewBinding(
key.WithKeys("enter"),
key.WithHelp("enter", "send"),
),
Clear: key.NewBinding(
key.WithKeys("ctrl+l"),
key.WithHelp("ctrl+l", "clear"),
),
ScrollUp: key.NewBinding(
key.WithKeys("up", "k"),
key.WithHelp("↑/k", "scroll up"),
),
ScrollDown: key.NewBinding(
key.WithKeys("down", "j"),
key.WithHelp("↓/j", "scroll down"),
),
PageUp: key.NewBinding(
key.WithKeys("pgup"),
key.WithHelp("PgUp", "page up"),
),
PageDown: key.NewBinding(
key.WithKeys("pgdown"),
key.WithHelp("PgDn", "page down"),
),
}