diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-27 17:15:17 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-03-27 18:16:16 +1100 |
commit | 9c226eed37f6a1f8ad12f5e7935efe9383eab450 (patch) | |
tree | 4c4a232cdb677bee0a354707d5665c3799c38a66 /pkg/gui/keybindings | |
parent | e43ce236425fa354500e2e1600cf9b21ef841f05 (diff) |
allow menu to store keybindings for quick menu navigation
Diffstat (limited to 'pkg/gui/keybindings')
-rw-r--r-- | pkg/gui/keybindings/keybindings.go | 160 |
1 files changed, 160 insertions, 0 deletions
diff --git a/pkg/gui/keybindings/keybindings.go b/pkg/gui/keybindings/keybindings.go new file mode 100644 index 000000000..fba2528a4 --- /dev/null +++ b/pkg/gui/keybindings/keybindings.go @@ -0,0 +1,160 @@ +package keybindings + +import ( + "fmt" + + "github.com/jesseduffield/gocui" + "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 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) +} |