keys.go (1528B)
1 package main 2 3 import ( 4 "github.com/charmbracelet/bubbles/key" 5 "github.com/charmbracelet/bubbles/list" 6 ) 7 8 // keyMap defines a set of keybindings. To work for help it must satisfy 9 // key.Map. It could also very easily be a map[string]key.Binding. 10 type keyMap struct { 11 list.KeyMap 12 13 Quit key.Binding 14 ForceQuit key.Binding 15 CloseActionSelector key.Binding 16 Select key.Binding 17 Toggle key.Binding 18 } 19 20 // ShortHelp returns keybindings to be shown in the mini help view. It's part 21 // of the key.Map interface. 22 func (k keyMap) ShortHelp() []key.Binding { 23 return []key.Binding{k.ShowFullHelp, k.Quit} 24 } 25 26 // FullHelp returns keybindings for the expanded help view. It's part of the 27 // key.Map interface. 28 func (k keyMap) FullHelp() [][]key.Binding { 29 return [][]key.Binding{ 30 {k.CursorUp, k.CursorDown, k.NextPage, k.NextPage}, // first column 31 {k.CloseFullHelp, k.Quit, k.ForceQuit}, // second column 32 } 33 } 34 35 var keys = keyMap{ 36 KeyMap: list.DefaultKeyMap(), 37 38 Quit: key.NewBinding( 39 key.WithKeys("esc"), 40 key.WithHelp("esc", "quit and save all changes"), 41 ), 42 ForceQuit: key.NewBinding( 43 key.WithKeys("ctrl+c"), 44 key.WithHelp("ctrl+c", "quit without saving changes"), 45 ), 46 CloseActionSelector: key.NewBinding( 47 key.WithKeys("esc"), 48 key.WithHelp("esc", "clear filter"), 49 ), 50 Select: key.NewBinding( 51 key.WithKeys("enter"), 52 key.WithHelp("enter", "cd to project"), 53 ), 54 Toggle: key.NewBinding( 55 key.WithKeys(" "), 56 key.WithHelp("space", "toggle active"), 57 ), 58 }