75 lines
1.6 KiB
Go
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"),
|
|
),
|
|
}
|