summaryrefslogtreecommitdiffstats
path: root/pkg/gui/keybindings.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2022-03-27 17:15:17 +1100
committerJesse Duffield <jessedduffield@gmail.com>2022-03-27 18:16:16 +1100
commit9c226eed37f6a1f8ad12f5e7935efe9383eab450 (patch)
tree4c4a232cdb677bee0a354707d5665c3799c38a66 /pkg/gui/keybindings.go
parente43ce236425fa354500e2e1600cf9b21ef841f05 (diff)
allow menu to store keybindings for quick menu navigation
Diffstat (limited to 'pkg/gui/keybindings.go')
-rw-r--r--pkg/gui/keybindings.go158
1 files changed, 3 insertions, 155 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index 3623a6741..7a2d5f757 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -1,7 +1,6 @@
package gui
import (
- "fmt"
"log"
"strings"
"unicode/utf8"
@@ -10,170 +9,19 @@ import (
"github.com/jesseduffield/lazygit/pkg/constants"
"github.com/jesseduffield/lazygit/pkg/gui/context"
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
+ "github.com/jesseduffield/lazygit/pkg/gui/keybindings"
"github.com/jesseduffield/lazygit/pkg/gui/types"
)
-var keyMapReversed = map[gocui.Key]string{
- gocui.KeyF1: "f1",
- gocui.KeyF2: "f2",
- gocui.KeyF3: "f3",
- gocui.KeyF4: "f4",
- gocui.KeyF5: "f5",
- gocui.KeyF6: "f6",
- gocui.KeyF7: "f7",
- gocui.KeyF8: "f8",
- gocui.KeyF9: "f9",
- gocui.KeyF10: "f10",
- gocui.KeyF11: "f11",
- gocui.KeyF12: "f12",
- gocui.KeyInsert: "insert",
- gocui.KeyDelete: "delete",
- gocui.KeyHome: "home",
- gocui.KeyEnd: "end",
- gocui.KeyPgup: "pgup",
- gocui.KeyPgdn: "pgdown",
- gocui.KeyArrowUp: "▲",
- gocui.KeyArrowDown: "▼",
- gocui.KeyArrowLeft: "◄",
- gocui.KeyArrowRight: "►",
- gocui.KeyTab: "tab", // ctrl+i
- gocui.KeyBacktab: "shift+tab",
- gocui.KeyEnter: "enter", // ctrl+m
- gocui.KeyAltEnter: "alt+enter",
- gocui.KeyEsc: "esc", // ctrl+[, ctrl+3
- gocui.KeyBackspace: "backspace", // ctrl+h
- gocui.KeyCtrlSpace: "ctrl+space", // ctrl+~, ctrl+2
- gocui.KeyCtrlSlash: "ctrl+/", // ctrl+_
- gocui.KeySpace: "space",
- gocui.KeyCtrlA: "ctrl+a",
- gocui.KeyCtrlB: "ctrl+b",
- gocui.KeyCtrlC: "ctrl+c",
- gocui.KeyCtrlD: "ctrl+d",
- gocui.KeyCtrlE: "ctrl+e",
- gocui.KeyCtrlF: "ctrl+f",
- gocui.KeyCtrlG: "ctrl+g",
- gocui.KeyCtrlJ: "ctrl+j",
- gocui.KeyCtrlK: "ctrl+k",
- gocui.KeyCtrlL: "ctrl+l",
- gocui.KeyCtrlN: "ctrl+n",
- gocui.KeyCtrlO: "ctrl+o",
- gocui.KeyCtrlP: "ctrl+p",
- gocui.KeyCtrlQ: "ctrl+q",
- gocui.KeyCtrlR: "ctrl+r",
- gocui.KeyCtrlS: "ctrl+s",
- gocui.KeyCtrlT: "ctrl+t",
- gocui.KeyCtrlU: "ctrl+u",
- gocui.KeyCtrlV: "ctrl+v",
- gocui.KeyCtrlW: "ctrl+w",
- gocui.KeyCtrlX: "ctrl+x",
- gocui.KeyCtrlY: "ctrl+y",
- gocui.KeyCtrlZ: "ctrl+z",
- gocui.KeyCtrl4: "ctrl+4", // ctrl+\
- gocui.KeyCtrl5: "ctrl+5", // ctrl+]
- gocui.KeyCtrl6: "ctrl+6",
- gocui.KeyCtrl8: "ctrl+8",
- gocui.MouseWheelUp: "mouse wheel up",
- gocui.MouseWheelDown: "mouse wheel down",
-}
-
-var keymap = map[string]types.Key{
- "<c-a>": gocui.KeyCtrlA,
- "<c-b>": gocui.KeyCtrlB,
- "<c-c>": gocui.KeyCtrlC,
- "<c-d>": gocui.KeyCtrlD,
- "<c-e>": gocui.KeyCtrlE,
- "<c-f>": gocui.KeyCtrlF,
- "<c-g>": gocui.KeyCtrlG,
- "<c-h>": gocui.KeyCtrlH,
- "<c-i>": gocui.KeyCtrlI,
- "<c-j>": gocui.KeyCtrlJ,
- "<c-k>": gocui.KeyCtrlK,
- "<c-l>": gocui.KeyCtrlL,
- "<c-m>": gocui.KeyCtrlM,
- "<c-n>": gocui.KeyCtrlN,
- "<c-o>": gocui.KeyCtrlO,
- "<c-p>": gocui.KeyCtrlP,
- "<c-q>": gocui.KeyCtrlQ,
- "<c-r>": gocui.KeyCtrlR,
- "<c-s>": gocui.KeyCtrlS,
- "<c-t>": gocui.KeyCtrlT,
- "<c-u>": gocui.KeyCtrlU,
- "<c-v>": gocui.KeyCtrlV,
- "<c-w>": gocui.KeyCtrlW,
- "<c-x>": gocui.KeyCtrlX,
- "<c-y>": gocui.KeyCtrlY,
- "<c-z>": gocui.KeyCtrlZ,
- "<c-~>": gocui.KeyCtrlTilde,
- "<c-2>": gocui.KeyCtrl2,
- "<c-3>": gocui.KeyCtrl3,
- "<c-4>": gocui.KeyCtrl4,
- "<c-5>": gocui.KeyCtrl5,
- "<c-6>": gocui.KeyCtrl6,
- "<c-7>": gocui.KeyCtrl7,
- "<c-8>": gocui.KeyCtrl8,
- "<c-space>": gocui.KeyCtrlSpace,
- "<c-\\>": gocui.KeyCtrlBackslash,
- "<c-[>": gocui.KeyCtrlLsqBracket,
- "<c-]>": gocui.KeyCtrlRsqBracket,
- "<c-/>": gocui.KeyCtrlSlash,
- "<c-_>": gocui.KeyCtrlUnderscore,
- "<backspace>": gocui.KeyBackspace,
- "<tab>": gocui.KeyTab,
- "<backtab>": gocui.KeyBacktab,
- "<enter>": gocui.KeyEnter,
- "<a-enter>": gocui.KeyAltEnter,
- "<esc>": gocui.KeyEsc,
- "<space>": gocui.KeySpace,
- "<f1>": gocui.KeyF1,
- "<f2>": gocui.KeyF2,
- "<f3>": gocui.KeyF3,
- "<f4>": gocui.KeyF4,
- "<f5>": gocui.KeyF5,
- "<f6>": gocui.KeyF6,
- "<f7>": gocui.KeyF7,
- "<f8>": gocui.KeyF8,
- "<f9>": gocui.KeyF9,
- "<f10>": gocui.KeyF10,
- "<f11>": gocui.KeyF11,
- "<f12>": gocui.KeyF12,
- "<insert>": gocui.KeyInsert,
- "<delete>": gocui.KeyDelete,
- "<home>": gocui.KeyHome,
- "<end>": gocui.KeyEnd,
- "<pgup>": gocui.KeyPgup,
- "<pgdown>": gocui.KeyPgdn,
- "<up>": gocui.KeyArrowUp,
- "<down>": gocui.KeyArrowDown,
- "<left>": gocui.KeyArrowLeft,
- "<right>": gocui.KeyArrowRight,
-}
-
func (gui *Gui) getKeyDisplay(name string) string {
key := gui.getKey(name)
- return GetKeyDisplay(key)
-}
-
-func GetKeyDisplay(key types.Key) string {
- keyInt := 0
-
- switch key := key.(type) {
- case rune:
- keyInt = int(key)
- case gocui.Key:
- value, ok := keyMapReversed[key]
- if ok {
- return value
- }
- keyInt = int(key)
- }
-
- return fmt.Sprintf("%c", keyInt)
+ return keybindings.GetKeyDisplay(key)
}
func (gui *Gui) getKey(key string) types.Key {
runeCount := utf8.RuneCountInString(key)
if runeCount > 1 {
- binding := keymap[strings.ToLower(key)]
+ binding := keybindings.Keymap[strings.ToLower(key)]
if binding == nil {
log.Fatalf("Unrecognized key %s for keybinding. For permitted values see %s", strings.ToLower(key), constants.Links.Docs.CustomKeybindings)
} else {