keys.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package list
  2. import (
  3. "github.com/charmbracelet/bubbles/v2/key"
  4. )
  5. type KeyMap struct {
  6. Down,
  7. Up,
  8. DownOneItem,
  9. UpOneItem,
  10. PageDown,
  11. PageUp,
  12. HalfPageDown,
  13. HalfPageUp,
  14. Home,
  15. End key.Binding
  16. }
  17. func DefaultKeyMap() KeyMap {
  18. return KeyMap{
  19. Down: key.NewBinding(
  20. key.WithKeys("down", "ctrl+j", "ctrl+n", "j"),
  21. key.WithHelp("↓", "down"),
  22. ),
  23. Up: key.NewBinding(
  24. key.WithKeys("up", "ctrl+k", "ctrl+p", "k"),
  25. key.WithHelp("↑", "up"),
  26. ),
  27. UpOneItem: key.NewBinding(
  28. key.WithKeys("shift+up", "K"),
  29. key.WithHelp("shift+↑", "up one item"),
  30. ),
  31. DownOneItem: key.NewBinding(
  32. key.WithKeys("shift+down", "J"),
  33. key.WithHelp("shift+↓", "down one item"),
  34. ),
  35. HalfPageDown: key.NewBinding(
  36. key.WithKeys("d"),
  37. key.WithHelp("d", "half page down"),
  38. ),
  39. PageDown: key.NewBinding(
  40. key.WithKeys("pgdown", " ", "f"),
  41. key.WithHelp("f/pgdn", "page down"),
  42. ),
  43. PageUp: key.NewBinding(
  44. key.WithKeys("pgup", "b"),
  45. key.WithHelp("b/pgup", "page up"),
  46. ),
  47. HalfPageUp: key.NewBinding(
  48. key.WithKeys("u"),
  49. key.WithHelp("u", "half page up"),
  50. ),
  51. Home: key.NewBinding(
  52. key.WithKeys("g", "home"),
  53. key.WithHelp("g", "home"),
  54. ),
  55. End: key.NewBinding(
  56. key.WithKeys("G", "end"),
  57. key.WithHelp("G", "end"),
  58. ),
  59. }
  60. }
  61. func (k KeyMap) KeyBindings() []key.Binding {
  62. return []key.Binding{
  63. k.Down,
  64. k.Up,
  65. k.DownOneItem,
  66. k.UpOneItem,
  67. k.HalfPageDown,
  68. k.HalfPageUp,
  69. k.Home,
  70. k.End,
  71. }
  72. }