| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- package model
- import "charm.land/bubbles/v2/key"
- type KeyMap struct {
- Editor struct {
- AddFile key.Binding
- SendMessage key.Binding
- OpenEditor key.Binding
- Newline key.Binding
- AddImage key.Binding
- PasteImage key.Binding
- MentionFile key.Binding
- Commands key.Binding
- // Attachments key maps
- AttachmentDeleteMode key.Binding
- Escape key.Binding
- DeleteAllAttachments key.Binding
- // History navigation
- HistoryPrev key.Binding
- HistoryNext key.Binding
- }
- Chat struct {
- NewSession key.Binding
- AddAttachment key.Binding
- Cancel key.Binding
- Tab key.Binding
- Details key.Binding
- TogglePills key.Binding
- PillLeft key.Binding
- PillRight key.Binding
- Down key.Binding
- Up key.Binding
- UpDown key.Binding
- DownOneItem key.Binding
- UpOneItem key.Binding
- UpDownOneItem key.Binding
- PageDown key.Binding
- PageUp key.Binding
- HalfPageDown key.Binding
- HalfPageUp key.Binding
- Home key.Binding
- End key.Binding
- Copy key.Binding
- ClearHighlight key.Binding
- Expand key.Binding
- }
- Initialize struct {
- Yes,
- No,
- Enter,
- Switch key.Binding
- }
- // Global key maps
- Quit key.Binding
- Help key.Binding
- Commands key.Binding
- Models key.Binding
- Suspend key.Binding
- Sessions key.Binding
- Tab key.Binding
- }
- func DefaultKeyMap() KeyMap {
- km := KeyMap{
- Quit: key.NewBinding(
- key.WithKeys("ctrl+c"),
- key.WithHelp("ctrl+c", "quit"),
- ),
- Help: key.NewBinding(
- key.WithKeys("ctrl+g"),
- key.WithHelp("ctrl+g", "more"),
- ),
- Commands: key.NewBinding(
- key.WithKeys("ctrl+p"),
- key.WithHelp("ctrl+p", "commands"),
- ),
- Models: key.NewBinding(
- key.WithKeys("ctrl+m", "ctrl+l"),
- key.WithHelp("ctrl+l", "models"),
- ),
- Suspend: key.NewBinding(
- key.WithKeys("ctrl+z"),
- key.WithHelp("ctrl+z", "suspend"),
- ),
- Sessions: key.NewBinding(
- key.WithKeys("ctrl+s"),
- key.WithHelp("ctrl+s", "sessions"),
- ),
- Tab: key.NewBinding(
- key.WithKeys("tab"),
- key.WithHelp("tab", "change focus"),
- ),
- }
- km.Editor.AddFile = key.NewBinding(
- key.WithKeys("/"),
- key.WithHelp("/", "add file"),
- )
- km.Editor.SendMessage = key.NewBinding(
- key.WithKeys("enter"),
- key.WithHelp("enter", "send"),
- )
- km.Editor.OpenEditor = key.NewBinding(
- key.WithKeys("ctrl+o"),
- key.WithHelp("ctrl+o", "open editor"),
- )
- km.Editor.Newline = key.NewBinding(
- key.WithKeys("shift+enter", "ctrl+j"),
- // "ctrl+j" is a common keybinding for newline in many editors. If
- // the terminal supports "shift+enter", we substitute the help tex
- // to reflect that.
- key.WithHelp("ctrl+j", "newline"),
- )
- km.Editor.AddImage = key.NewBinding(
- key.WithKeys("ctrl+f"),
- key.WithHelp("ctrl+f", "add image"),
- )
- km.Editor.PasteImage = key.NewBinding(
- key.WithKeys("ctrl+v"),
- key.WithHelp("ctrl+v", "paste image from clipboard"),
- )
- km.Editor.MentionFile = key.NewBinding(
- key.WithKeys("@"),
- key.WithHelp("@", "mention file"),
- )
- km.Editor.Commands = key.NewBinding(
- key.WithKeys("/"),
- key.WithHelp("/", "commands"),
- )
- km.Editor.AttachmentDeleteMode = key.NewBinding(
- key.WithKeys("ctrl+r"),
- key.WithHelp("ctrl+r+{i}", "delete attachment at index i"),
- )
- km.Editor.Escape = key.NewBinding(
- key.WithKeys("esc", "alt+esc"),
- key.WithHelp("esc", "cancel delete mode"),
- )
- km.Editor.DeleteAllAttachments = key.NewBinding(
- key.WithKeys("r"),
- key.WithHelp("ctrl+r+r", "delete all attachments"),
- )
- km.Editor.HistoryPrev = key.NewBinding(
- key.WithKeys("up"),
- )
- km.Editor.HistoryNext = key.NewBinding(
- key.WithKeys("down"),
- )
- km.Chat.NewSession = key.NewBinding(
- key.WithKeys("ctrl+n"),
- key.WithHelp("ctrl+n", "new session"),
- )
- km.Chat.AddAttachment = key.NewBinding(
- key.WithKeys("ctrl+f"),
- key.WithHelp("ctrl+f", "add attachment"),
- )
- km.Chat.Cancel = key.NewBinding(
- key.WithKeys("esc", "alt+esc"),
- key.WithHelp("esc", "cancel"),
- )
- km.Chat.Tab = key.NewBinding(
- key.WithKeys("tab"),
- key.WithHelp("tab", "change focus"),
- )
- km.Chat.Details = key.NewBinding(
- key.WithKeys("ctrl+d"),
- key.WithHelp("ctrl+d", "toggle details"),
- )
- km.Chat.TogglePills = key.NewBinding(
- key.WithKeys("ctrl+t", "ctrl+space"),
- key.WithHelp("ctrl+t", "toggle tasks"),
- )
- km.Chat.PillLeft = key.NewBinding(
- key.WithKeys("left"),
- key.WithHelp("←/→", "switch section"),
- )
- km.Chat.PillRight = key.NewBinding(
- key.WithKeys("right"),
- key.WithHelp("←/→", "switch section"),
- )
- km.Chat.Down = key.NewBinding(
- key.WithKeys("down", "ctrl+j", "j"),
- key.WithHelp("↓", "down"),
- )
- km.Chat.Up = key.NewBinding(
- key.WithKeys("up", "ctrl+k", "k"),
- key.WithHelp("↑", "up"),
- )
- km.Chat.UpDown = key.NewBinding(
- key.WithKeys("up", "down"),
- key.WithHelp("↑↓", "scroll"),
- )
- km.Chat.UpOneItem = key.NewBinding(
- key.WithKeys("shift+up", "K"),
- key.WithHelp("shift+↑", "up one item"),
- )
- km.Chat.DownOneItem = key.NewBinding(
- key.WithKeys("shift+down", "J"),
- key.WithHelp("shift+↓", "down one item"),
- )
- km.Chat.UpDownOneItem = key.NewBinding(
- key.WithKeys("shift+up", "shift+down"),
- key.WithHelp("shift+↑↓", "scroll one item"),
- )
- km.Chat.HalfPageDown = key.NewBinding(
- key.WithKeys("d"),
- key.WithHelp("d", "half page down"),
- )
- km.Chat.PageDown = key.NewBinding(
- key.WithKeys("pgdown", " ", "f"),
- key.WithHelp("f/pgdn", "page down"),
- )
- km.Chat.PageUp = key.NewBinding(
- key.WithKeys("pgup", "b"),
- key.WithHelp("b/pgup", "page up"),
- )
- km.Chat.HalfPageUp = key.NewBinding(
- key.WithKeys("u"),
- key.WithHelp("u", "half page up"),
- )
- km.Chat.Home = key.NewBinding(
- key.WithKeys("g", "home"),
- key.WithHelp("g", "home"),
- )
- km.Chat.End = key.NewBinding(
- key.WithKeys("G", "end"),
- key.WithHelp("G", "end"),
- )
- km.Chat.Copy = key.NewBinding(
- key.WithKeys("c", "y", "C", "Y"),
- key.WithHelp("c/y", "copy"),
- )
- km.Chat.ClearHighlight = key.NewBinding(
- key.WithKeys("esc", "alt+esc"),
- key.WithHelp("esc", "clear selection"),
- )
- km.Chat.Expand = key.NewBinding(
- key.WithKeys("space"),
- key.WithHelp("space", "expand/collapse"),
- )
- km.Initialize.Yes = key.NewBinding(
- key.WithKeys("y", "Y"),
- key.WithHelp("y", "yes"),
- )
- km.Initialize.No = key.NewBinding(
- key.WithKeys("n", "N", "esc", "alt+esc"),
- key.WithHelp("n", "no"),
- )
- km.Initialize.Switch = key.NewBinding(
- key.WithKeys("left", "right", "tab"),
- key.WithHelp("tab", "switch"),
- )
- km.Initialize.Enter = key.NewBinding(
- key.WithKeys("enter"),
- key.WithHelp("enter", "select"),
- )
- return km
- }
|