From 2e66d87b9494f89b90083078b8926154d953499d Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sun, 21 May 2023 10:59:16 +1000 Subject: Use same labels for keys that we use in the config Previously we were displaying keys in a different format than we expected them in the config. This was certain to cause confusion. --- pkg/gui/keybindings/keybindings.go | 201 ++++++++++++------------------------- 1 file changed, 66 insertions(+), 135 deletions(-) (limited to 'pkg/gui/keybindings') diff --git a/pkg/gui/keybindings/keybindings.go b/pkg/gui/keybindings/keybindings.go index 3099d880c..4204dc4e1 100644 --- a/pkg/gui/keybindings/keybindings.go +++ b/pkg/gui/keybindings/keybindings.go @@ -9,142 +9,73 @@ import ( "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/constants" "github.com/jesseduffield/lazygit/pkg/gui/types" + "github.com/samber/lo" ) -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 ▲", - gocui.MouseWheelDown: "mouse wheel ▼", +var labelByKey = map[gocui.Key]string{ + gocui.KeyF1: "", + gocui.KeyF2: "", + gocui.KeyF3: "", + gocui.KeyF4: "", + gocui.KeyF5: "", + gocui.KeyF6: "", + gocui.KeyF7: "", + gocui.KeyF8: "", + gocui.KeyF9: "", + gocui.KeyF10: "", + gocui.KeyF11: "", + gocui.KeyF12: "", + gocui.KeyInsert: "", + gocui.KeyDelete: "", + gocui.KeyHome: "", + gocui.KeyEnd: "", + gocui.KeyPgup: "", + gocui.KeyPgdn: "", + gocui.KeyArrowUp: "", + gocui.KeyArrowDown: "", + gocui.KeyArrowLeft: "", + gocui.KeyArrowRight: "", + gocui.KeyTab: "", // + gocui.KeyBacktab: "", + gocui.KeyEnter: "", // + gocui.KeyAltEnter: "", + gocui.KeyEsc: "", // , + gocui.KeyBackspace: "", // + gocui.KeyCtrlSpace: "", // , + gocui.KeyCtrlSlash: "", // + gocui.KeySpace: "", + gocui.KeyCtrlA: "", + gocui.KeyCtrlB: "", + gocui.KeyCtrlC: "", + gocui.KeyCtrlD: "", + gocui.KeyCtrlE: "", + gocui.KeyCtrlF: "", + gocui.KeyCtrlG: "", + gocui.KeyCtrlJ: "", + gocui.KeyCtrlK: "", + gocui.KeyCtrlL: "", + gocui.KeyCtrlN: "", + gocui.KeyCtrlO: "", + gocui.KeyCtrlP: "", + gocui.KeyCtrlQ: "", + gocui.KeyCtrlR: "", + gocui.KeyCtrlS: "", + gocui.KeyCtrlT: "", + gocui.KeyCtrlU: "", + gocui.KeyCtrlV: "", + gocui.KeyCtrlW: "", + gocui.KeyCtrlX: "", + gocui.KeyCtrlY: "", + gocui.KeyCtrlZ: "", + gocui.KeyCtrl4: "", // + gocui.KeyCtrl5: "", // + gocui.KeyCtrl6: "", + gocui.KeyCtrl8: "", + gocui.MouseWheelUp: "mouse wheel up", + gocui.MouseWheelDown: "mouse wheel down", } -var keyMap = map[string]types.Key{ - "": gocui.KeyCtrlA, - "": gocui.KeyCtrlB, - "": gocui.KeyCtrlC, - "": gocui.KeyCtrlD, - "": gocui.KeyCtrlE, - "": gocui.KeyCtrlF, - "": gocui.KeyCtrlG, - "": gocui.KeyCtrlH, - "": gocui.KeyCtrlI, - "": gocui.KeyCtrlJ, - "": gocui.KeyCtrlK, - "": gocui.KeyCtrlL, - "": gocui.KeyCtrlM, - "": gocui.KeyCtrlN, - "": gocui.KeyCtrlO, - "": gocui.KeyCtrlP, - "": gocui.KeyCtrlQ, - "": gocui.KeyCtrlR, - "": gocui.KeyCtrlS, - "": gocui.KeyCtrlT, - "": gocui.KeyCtrlU, - "": gocui.KeyCtrlV, - "": gocui.KeyCtrlW, - "": gocui.KeyCtrlX, - "": gocui.KeyCtrlY, - "": gocui.KeyCtrlZ, - "": gocui.KeyCtrlTilde, - "": gocui.KeyCtrl2, - "": gocui.KeyCtrl3, - "": gocui.KeyCtrl4, - "": gocui.KeyCtrl5, - "": gocui.KeyCtrl6, - "": gocui.KeyCtrl7, - "": gocui.KeyCtrl8, - "": gocui.KeyCtrlSpace, - "": gocui.KeyCtrlBackslash, - "": gocui.KeyCtrlLsqBracket, - "": gocui.KeyCtrlRsqBracket, - "": gocui.KeyCtrlSlash, - "": gocui.KeyCtrlUnderscore, - "": gocui.KeyBackspace, - "": gocui.KeyTab, - "": gocui.KeyBacktab, - "": gocui.KeyEnter, - "": gocui.KeyAltEnter, - "": gocui.KeyEsc, - "": gocui.KeySpace, - "": gocui.KeyF1, - "": gocui.KeyF2, - "": gocui.KeyF3, - "": gocui.KeyF4, - "": gocui.KeyF5, - "": gocui.KeyF6, - "": gocui.KeyF7, - "": gocui.KeyF8, - "": gocui.KeyF9, - "": gocui.KeyF10, - "": gocui.KeyF11, - "": gocui.KeyF12, - "": gocui.KeyInsert, - "": gocui.KeyDelete, - "": gocui.KeyHome, - "": gocui.KeyEnd, - "": gocui.KeyPgup, - "": gocui.KeyPgdn, - "": gocui.KeyArrowUp, - "": gocui.KeyArrowDown, - "": gocui.KeyArrowLeft, - "": gocui.KeyArrowRight, -} +var keyByLabel = lo.Invert(labelByKey) func Label(name string) string { return LabelFromKey(GetKey(name)) @@ -157,7 +88,7 @@ func LabelFromKey(key types.Key) string { case rune: keyInt = int(key) case gocui.Key: - value, ok := keyMapReversed[key] + value, ok := labelByKey[key] if ok { return value } @@ -170,8 +101,8 @@ func LabelFromKey(key types.Key) string { func GetKey(key string) types.Key { runeCount := utf8.RuneCountInString(key) if runeCount > 1 { - binding := keyMap[strings.ToLower(key)] - if binding == nil { + binding, ok := keyByLabel[strings.ToLower(key)] + if !ok { log.Fatalf("Unrecognized key %s for keybinding. For permitted values see %s", strings.ToLower(key), constants.Links.Docs.CustomKeybindings) } else { return binding -- cgit v1.2.3