summaryrefslogtreecommitdiffstats
path: root/pkg/gui/keybindings
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
parente43ce236425fa354500e2e1600cf9b21ef841f05 (diff)
allow menu to store keybindings for quick menu navigation
Diffstat (limited to 'pkg/gui/keybindings')
-rw-r--r--pkg/gui/keybindings/keybindings.go160
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)
+}