diff options
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/keybindings.go | 472 | ||||
-rw-r--r-- | pkg/gui/merge_panel.go | 8 | ||||
-rw-r--r-- | pkg/gui/options_menu_panel.go | 2 |
3 files changed, 306 insertions, 176 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index 1deb6f7e3..dade5aa51 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -2,6 +2,8 @@ package gui import ( "github.com/jesseduffield/gocui" + "log" + "strings" ) // Binding - a keybinding mapping a key and modifier to a handler. The keypress @@ -19,54 +21,174 @@ type Binding struct { // GetDisplayStrings returns the display string of a file func (b *Binding) GetDisplayStrings(isFocused bool) []string { - return []string{b.GetKey(), b.Description} + return []string{GetKeyDisplay(b.Key), b.Description} } -// GetKey is a function. -func (b *Binding) GetKey() string { - key := 0 +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.KeyEnter: "enter", // ctrl+m + 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", +} + +var keymap = map[string]interface{}{ + "<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, + "<enter>": gocui.KeyEnter, + "<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 interface{}) string { + keyInt := 0 - switch b.Key.(type) { + switch key.(type) { case rune: - key = int(b.Key.(rune)) + keyInt = int(key.(rune)) case gocui.Key: - if b.Key.(gocui.Key) == gocui.KeyCtrlJ { - return "ctrl+j" - } - if b.Key.(gocui.Key) == gocui.KeyCtrlK { - return "ctrl+k" - } - if b.Key.(gocui.Key) == gocui.KeyCtrlP { - return "ctrl+p" + value, ok := keyMapReversed[key.(gocui.Key)] + if ok { + return value } - key = int(b.Key.(gocui.Key)) + keyInt = int(key.(gocui.Key)) } - // special keys - switch key { - case 27: - return "esc" - case 13: - return "enter" - case 32: - return "space" - case 65514: - return "►" - case 65515: - return "◄" - case 65517: - return "▲" - case 65516: - return "▼" - case 65508: - return "PgUp" - case 65507: - return "PgDn" - case 9: - return "tab" - } + return string(keyInt) +} - return string(key) +func (gui *Gui) getKey(name string) interface{} { + key := gui.Config.GetUserConfig().GetString("keybinding." + name) + if len(key) > 1 { + binding := keymap[strings.ToLower(key)] + if binding == nil { + log.Fatalf("Unrecognized key %s for keybinding %s", strings.ToLower(key), name) + } else { + return binding + } + } else if len(key) == 1 { + return []rune(key)[0] + } + log.Fatal("Key empty for keybinding: " + strings.ToLower(name)) + return nil } // GetInitialKeybindings is a function. @@ -74,110 +196,110 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { bindings := []*Binding{ { ViewName: "", - Key: 'q', + Key: gui.getKey("universal.quit"), Modifier: gocui.ModNone, Handler: gui.handleQuit, }, { ViewName: "", - Key: 'Q', + Key: gui.getKey("universal.quitWithoutChangingDirectory"), Modifier: gocui.ModNone, Handler: gui.handleQuitWithoutChangingDirectory, }, { ViewName: "", - Key: gocui.KeyCtrlC, + Key: gui.getKey("universal.quit-alt1"), Modifier: gocui.ModNone, Handler: gui.handleQuit, }, { ViewName: "", - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleQuit, }, { ViewName: "", - Key: gocui.KeyPgup, + Key: gui.getKey("universal.scrollUpMain"), Modifier: gocui.ModNone, Handler: gui.scrollUpMain, Alternative: "fn+up", }, { ViewName: "", - Key: gocui.KeyPgdn, + Key: gui.getKey("universal.scrollDownMain"), Modifier: gocui.ModNone, Handler: gui.scrollDownMain, Alternative: "fn+down", }, { ViewName: "", - Key: 'K', + Key: gui.getKey("universal.scrollUpMain-alt1"), Modifier: gocui.ModNone, Handler: gui.scrollUpMain, }, { ViewName: "", - Key: 'J', + Key: gui.getKey("universal.scrollDownMain-alt1"), Modifier: gocui.ModNone, Handler: gui.scrollDownMain, }, { ViewName: "", - Key: gocui.KeyCtrlU, + Key: gui.getKey("universal.scrollUpMain-alt2"), Modifier: gocui.ModNone, Handler: gui.scrollUpMain, }, { ViewName: "", - Key: gocui.KeyCtrlD, + Key: gui.getKey("universal.scrollDownMain-alt2"), Modifier: gocui.ModNone, Handler: gui.scrollDownMain, }, { ViewName: "", - Key: 'm', + Key: gui.getKey("universal.createRebaseOptionsMenu"), Modifier: gocui.ModNone, Handler: gui.handleCreateRebaseOptionsMenu, Description: gui.Tr.SLocalize("ViewMergeRebaseOptions"), }, { ViewName: "", - Key: gocui.KeyCtrlP, + Key: gui.getKey("universal.createPatchOptionsMenu"), Modifier: gocui.ModNone, Handler: gui.handleCreatePatchOptionsMenu, Description: gui.Tr.SLocalize("ViewPatchOptions"), }, { ViewName: "", - Key: 'P', + Key: gui.getKey("universal.pushFiles"), Modifier: gocui.ModNone, Handler: gui.pushFiles, Description: gui.Tr.SLocalize("push"), }, { ViewName: "", - Key: 'p', + Key: gui.getKey("universal.pullFiles"), Modifier: gocui.ModNone, Handler: gui.handlePullFiles, Description: gui.Tr.SLocalize("pull"), }, { ViewName: "", - Key: 'R', + Key: gui.getKey("universal.refresh"), Modifier: gocui.ModNone, Handler: gui.handleRefresh, Description: gui.Tr.SLocalize("refresh"), }, { ViewName: "", - Key: 'x', + Key: gui.getKey("universal.optionMenu"), Modifier: gocui.ModNone, Handler: gui.handleCreateOptionsMenu, }, { ViewName: "", - Key: '?', + Key: gui.getKey("universal.optionMenu-alt1"), Modifier: gocui.ModNone, Handler: gui.handleCreateOptionsMenu, }, @@ -189,147 +311,147 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { }, { ViewName: "status", - Key: 'e', + Key: gui.getKey("universal.edit"), Modifier: gocui.ModNone, Handler: gui.handleEditConfig, Description: gui.Tr.SLocalize("EditConfig"), }, { ViewName: "status", - Key: 'o', + Key: gui.getKey("universal.openFile"), Modifier: gocui.ModNone, Handler: gui.handleOpenConfig, Description: gui.Tr.SLocalize("OpenConfig"), }, { ViewName: "status", - Key: 'u', + Key: gui.getKey("status.checkForUpdate"), Modifier: gocui.ModNone, Handler: gui.handleCheckForUpdate, Description: gui.Tr.SLocalize("checkForUpdate"), }, { ViewName: "status", - Key: 's', + Key: gui.getKey("status.recentRepos"), Modifier: gocui.ModNone, Handler: gui.handleCreateRecentReposMenu, Description: gui.Tr.SLocalize("SwitchRepo"), }, { ViewName: "files", - Key: 'c', + Key: gui.getKey("files.commitChanges"), Modifier: gocui.ModNone, Handler: gui.handleCommitPress, Description: gui.Tr.SLocalize("CommitChanges"), }, { ViewName: "files", - Key: 'w', + Key: gui.getKey("files.commitChangesWithoutHook"), Modifier: gocui.ModNone, Handler: gui.handleWIPCommitPress, Description: gui.Tr.SLocalize("commitChangesWithoutHook"), }, { ViewName: "files", - Key: 'A', + Key: gui.getKey("files.amendLastCommit"), Modifier: gocui.ModNone, Handler: gui.handleAmendCommitPress, Description: gui.Tr.SLocalize("AmendLastCommit"), }, { ViewName: "files", - Key: 'C', + Key: gui.getKey("files.commitChangesWithEditor"), Modifier: gocui.ModNone, Handler: gui.handleCommitEditorPress, Description: gui.Tr.SLocalize("CommitChangesWithEditor"), }, { ViewName: "files", - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleFilePress, Description: gui.Tr.SLocalize("toggleStaged"), }, { ViewName: "files", - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleCreateDiscardMenu, Description: gui.Tr.SLocalize("viewDiscardOptions"), }, { ViewName: "files", - Key: 'e', + Key: gui.getKey("universal.edit"), Modifier: gocui.ModNone, Handler: gui.handleFileEdit, Description: gui.Tr.SLocalize("editFile"), }, { ViewName: "files", - Key: 'o', + Key: gui.getKey("universal.openFile"), Modifier: gocui.ModNone, Handler: gui.handleFileOpen, Description: gui.Tr.SLocalize("openFile"), }, { ViewName: "files", - Key: 'i', + Key: gui.getKey("files.ignoreFile"), Modifier: gocui.ModNone, Handler: gui.handleIgnoreFile, Description: gui.Tr.SLocalize("ignoreFile"), }, { ViewName: "files", - Key: 'r', + Key: gui.getKey("files.refreshFiles"), Modifier: gocui.ModNone, Handler: gui.handleRefreshFiles, Description: gui.Tr.SLocalize("refreshFiles"), }, { ViewName: "files", - Key: 's', + Key: gui.getKey("files.stashAllChanges"), Modifier: gocui.ModNone, Handler: gui.handleStashChanges, Description: gui.Tr.SLocalize("stashAllChanges"), }, { ViewName: "files", - Key: 'S', + Key: gui.getKey("files.viewStashOptions"), Modifier: gocui.ModNone, Handler: gui.handleCreateStashMenu, Description: gui.Tr.SLocalize("viewStashOptions"), }, { ViewName: "files", - Key: 'a', + Key: gui.getKey("files.toggleStagedAll"), Modifier: gocui.ModNone, Handler: gui.handleStageAll, Description: gui.Tr.SLocalize("toggleStagedAll"), }, { ViewName: "files", - Key: 'D', + Key: gui.getKey("files.viewResetOptions"), Modifier: gocui.ModNone, Handler: gui.handleCreateResetMenu, Description: gui.Tr.SLocalize("viewResetOptions"), }, { ViewName: "files", - Key: gocui.KeyEnter, + Key: gui.getKey("universal.goInto"), Modifier: gocui.ModNone, Handler: gui.handleEnterFile, Description: gui.Tr.SLocalize("StageLines"), }, { ViewName: "files", - Key: 'f', + Key: gui.getKey("files.fetch"), Modifier: gocui.ModNone, Handler: gui.handleGitFetch, Description: gui.Tr.SLocalize("fetch"), }, { ViewName: "files", - Key: 'X', + Key: gui.getKey("universal.executeCustomCommand"), Modifier: gocui.ModNone, Handler: gui.handleCustomCommand, Description: gui.Tr.SLocalize("executeCustomCommand"), @@ -337,7 +459,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleBranchPress, Description: gui.Tr.SLocalize("checkout"), @@ -345,7 +467,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'o', + Key: gui.getKey("branches.createPullRequest"), Modifier: gocui.ModNone, Handler: gui.handleCreatePullRequestPress, Description: gui.Tr.SLocalize("createPullRequest"), @@ -353,7 +475,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'c', + Key: gui.getKey("branches.checkoutBranchByName"), Modifier: gocui.ModNone, Handler: gui.handleCheckoutByName, Description: gui.Tr.SLocalize("checkoutByName"), @@ -361,7 +483,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'F', + Key: gui.getKey("branches.forceCheckoutBranch"), Modifier: gocui.ModNone, Handler: gui.handleForceCheckout, Description: gui.Tr.SLocalize("forceCheckout"), @@ -369,7 +491,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'n', + Key: gui.getKey("universal.new"), Modifier: gocui.ModNone, Handler: gui.handleNewBranch, Description: gui.Tr.SLocalize("newBranch"), @@ -377,7 +499,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleDeleteBranch, Description: gui.Tr.SLocalize("deleteBranch"), @@ -385,7 +507,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'r', + Key: gui.getKey("branches.rebaseBranch"), Modifier: gocui.ModNone, Handler: gui.handleRebaseOntoLocalBranch, Description: gui.Tr.SLocalize("rebaseBranch"), @@ -393,7 +515,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'M', + Key: gui.getKey("branches.mergeIntoCurrentBranch"), Modifier: gocui.ModNone, Handler: gui.handleMerge, Description: gui.Tr.SLocalize("mergeIntoCurrentBranch"), @@ -401,7 +523,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"local-branches"}, - Key: 'f', + Key: gui.getKey("branches.FastForward"), Modifier: gocui.ModNone, Handler: gui.handleFastForward, Description: gui.Tr.SLocalize("FastForward"), @@ -409,7 +531,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"tags"}, - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleCheckoutTag, Description: gui.Tr.SLocalize("checkout"), @@ -417,7 +539,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"tags"}, - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleDeleteTag, Description: gui.Tr.SLocalize("deleteTag"), @@ -425,7 +547,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"tags"}, - Key: 'P', + Key: gui.getKey("branches.pushTag"), Modifier: gocui.ModNone, Handler: gui.handlePushTag, Description: gui.Tr.SLocalize("pushTag"), @@ -433,27 +555,27 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"tags"}, - Key: 'n', + Key: gui.getKey("universal.new"), Modifier: gocui.ModNone, Handler: gui.handleCreateTag, Description: gui.Tr.SLocalize("createTag"), }, { ViewName: "branches", - Key: ']', + Key: gui.getKey("universal.nextBranchTab"), Modifier: gocui.ModNone, Handler: gui.handleNextBranchesTab, }, { ViewName: "branches", - Key: '[', + Key: gui.getKey("universal.prevBranchTab"), Modifier: gocui.ModNone, Handler: gui.handlePrevBranchesTab, }, { ViewName: "branches", Contexts: []string{"remote-branches"}, - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleRemoteBranchesEscape, Description: gui.Tr.SLocalize("ReturnToRemotesList"), @@ -461,140 +583,140 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "branches", Contexts: []string{"remotes"}, - Key: 'f', + Key: gui.getKey("branches.fetchRemote"), Modifier: gocui.ModNone, Handler: gui.handleFetchRemote, Description: gui.Tr.SLocalize("fetchRemote"), }, { ViewName: "commits", - Key: 's', + Key: gui.getKey("commits.squashDown"), Modifier: gocui.ModNone, Handler: gui.handleCommitSquashDown, Description: gui.Tr.SLocalize("squashDown"), }, { ViewName: "commits", - Key: 'r', + Key: gui.getKey("commits.renameCommit"), Modifier: gocui.ModNone, Handler: gui.handleRenameCommit, Description: gui.Tr.SLocalize("renameCommit"), }, { ViewName: "commits", - Key: 'R', + Key: gui.getKey("commits.renameCommitWithEditor"), Modifier: gocui.ModNone, Handler: gui.handleRenameCommitEditor, Description: gui.Tr.SLocalize("renameCommitEditor"), }, { ViewName: "commits", - Key: 'g', + Key: gui.getKey("commits.viewResetOptions"), Modifier: gocui.ModNone, Handler: gui.handleCreateCommitResetMenu, Description: gui.Tr.SLocalize("resetToThisCommit"), }, { ViewName: "commits", - Key: 'f', + Key: gui.getKey("commits.markCommitAsFixup"), Modifier: gocui.ModNone, Handler: gui.handleCommitFixup, Description: gui.Tr.SLocalize("fixupCommit"), }, { ViewName: "commits", - Key: 'F', + Key: gui.getKey("commits.createFixupCommit"), Modifier: gocui.ModNone, Handler: gui.handleCreateFixupCommit, Description: gui.Tr.SLocalize("createFixupCommit"), }, { ViewName: "commits", - Key: 'S', + Key: gui.getKey("commits.squashAboveCommits"), Modifier: gocui.ModNone, Handler: gui.handleSquashAllAboveFixupCommits, Description: gui.Tr.SLocalize("squashAboveCommits"), }, { ViewName: "commits", - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleCommitDelete, Description: gui.Tr.SLocalize("deleteCommit"), }, { ViewName: "commits", - Key: gocui.KeyCtrlJ, + Key: gui.getKey("commits.moveDownCommit"), Modifier: gocui.ModNone, Handler: gui.handleCommitMoveDown, Description: gui.Tr.SLocalize("moveDownCommit"), }, { ViewName: "commits", - Key: gocui.KeyCtrlK, + Key: gui.getKey("commits.moveUpCommit"), Modifier: gocui.ModNone, Handler: gui.handleCommitMoveUp, Description: gui.Tr.SLocalize("moveUpCommit"), }, { ViewName: "commits", - Key: 'e', + Key: gui.getKey("universal.edit"), Modifier: gocui.ModNone, Handler: gui.handleCommitEdit, Description: gui.Tr.SLocalize("editCommit"), }, { ViewName: "commits", - Key: 'A', + Key: gui.getKey("commits.amendToCommit"), Modifier: gocui.ModNone, Handler: gui.handleCommitAmendTo, Description: gui.Tr.SLocalize("amendToCommit"), }, { ViewName: "commits", - Key: 'p', + Key: gui.getKey("commits.pickCommit"), Modifier: gocui.ModNone, Handler: gui.handleCommitPick, Description: gui.Tr.SLocalize("pickCommit"), }, { ViewName: "commits", - Key: 't', + Key: gui.getKey("commits.revertCommit"), Modifier: gocui.ModNone, Handler: gui.handleCommitRevert, Description: gui.Tr.SLocalize("revertCommit"), }, { ViewName: "commits", - Key: 'c', + Key: gui.getKey("commits.cherryPickCopy"), Modifier: gocui.ModNone, Handler: gui.handleCopyCommit, Description: gui.Tr.SLocalize("cherryPickCopy"), }, { ViewName: "commits", - Key: 'C', + Key: gui.getKey("commits.cherryPickCopyRange"), Modifier: gocui.ModNone, Handler: gui.handleCopyCommitRange, Description: gui.Tr.SLocalize("cherryPickCopyRange"), }, { ViewName: "commits", - Key: 'v', + Key: gui.getKey("commits.pasteCommits"), Modifier: gocui.ModNone, Handler: gui.HandlePasteCommits, Description: gui.Tr.SLocalize("pasteCommits"), }, { ViewName: "commits", - Key: gocui.KeyEnter, + Key: gui.getKey("universal.goInto"), Modifier: gocui.ModNone, Handler: gui.handleSwitchToCommitFilesPanel, Description: gui.Tr.SLocalize("viewCommitFiles"), }, { ViewName: "commits", - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleCheckoutCommit, Description: gui.Tr.SLocalize("checkoutCommit"), @@ -608,28 +730,28 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { }, { ViewName: "commits", - Key: 'T', + Key: gui.getKey("commits.tagCommit"), Modifier: gocui.ModNone, Handler: gui.handleTagCommit, Description: gui.Tr.SLocalize("tagCommit"), }, { ViewName: "stash", - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleStashApply, Description: gui.Tr.SLocalize("apply"), }, { ViewName: "stash", - Key: 'g', + Key: gui.getKey("stash.popStash"), Modifier: gocui.ModNone, Handler: gui.handleStashPop, Description: gui.Tr.SLocalize("pop"), }, { ViewName: "stash", - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleStashDrop, Description: gui.Tr.SLocalize("drop"), @@ -660,13 +782,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { }, { ViewName: "menu", - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleMenuClose, }, { ViewName: "menu", - Key: 'q', + Key: gui.getKey("universal.quit"), Modifier: gocui.ModNone, Handler: gui.handleMenuClose, }, @@ -678,42 +800,42 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { }, { ViewName: "commitFiles", - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleSwitchToCommitsPanel, Description: gui.Tr.SLocalize("goBack"), }, { ViewName: "commitFiles", - Key: 'c', + Key: gui.getKey("commitFiles.checkoutCommitFile"), Modifier: gocui.ModNone, Handler: gui.handleCheckoutCommitFile, Description: gui.Tr.SLocalize("checkoutCommitFile"), }, { ViewName: "commitFiles", - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleDiscardOldFileChange, Description: gui.Tr.SLocalize("discardOldFileChange"), }, { ViewName: "commitFiles", - Key: 'o', + Key: gui.getKey("universal.openFile"), Modifier: gocui.ModNone, Handler: gui.handleOpenOldCommitFile, Description: gui.Tr.SLocalize("openFile"), }, { ViewName: "commitFiles", - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleToggleFileForPatch, Description: gui.Tr.SLocalize("toggleAddToPatch"), }, { ViewName: "commitFiles", - Key: gocui.KeyEnter, + Key: gui.getKey("universal.goInto"), Modifier: gocui.ModNone, Handler: gui.handleEnterCommitFile, Description: gui.Tr.SLocalize("enterFile"), @@ -772,7 +894,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"staging"}, - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleStagingEscape, Description: gui.Tr.SLocalize("ReturnToFilesPanel"), @@ -780,7 +902,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"staging"}, - Key: gocui.KeySpace, + Key: gui.getKey("universal.select"), Modifier: gocui.ModNone, Handler: gui.handleStageSelection, Description: gui.Tr.SLocalize("StageSelection"), @@ -788,7 +910,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"staging"}, - Key: 'd', + Key: gui.getKey("universal.remove"), Modifier: gocui.ModNone, Handler: gui.handleResetSelection, Description: gui.Tr.SLocalize("ResetSelection"), @@ -796,7 +918,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"staging"}, - Key: gocui.KeyTab, + Key: gui.getKey("universal.togglePanel"), Modifier: gocui.ModNone, Handler: gui.handleTogglePanel, Description: gui.Tr.SLocalize("TogglePanel"), @@ -804,7 +926,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"patch-building"}, - Key: gocui.KeyEsc, + Key: gui.getKey("universal.return"), Modifier: gocui.ModNone, Handler: gui.handleEscapePatchBuildingPanel, Description: gui.Tr.SLocalize("ExitLineByLineMode"), @@ -812,7 +934,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"patch-building", "staging"}, - Key: gocui.KeyArrowUp, + Key: gui.getKey("universal.prevItem"), Modifier: gocui.ModNone, Handler: gui.handleSelectPrevLine, Description: gui.Tr.SLocalize("PrevLine"), @@ -820,7 +942,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"patch-building", "staging"}, - Key: gocui.KeyArrowDown, + Key: gui.getKey("universal.nextItem"), Modifier: gocui.ModNone, Handler: gui.handleSelectNextLine, Description: gui.Tr.SLocalize("NextLine"), @@ -828,14 +950,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"patch-building", "staging"}, - Key: 'k', + Key: gui.getKey("universal.prevItem-alt"), Modifier: gocui.ModNone, Handler: gui.handleSelectPrevLine, }, { ViewName: "main", Contexts: []string{"patch-building", "staging"}, - Key: 'j', + Key: gui.getKey("universal.nextItem-alt"), Modifier: gocui.ModNone, Handler: gui.handleSelectNextLine, }, @@ -856,7 +978,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { { ViewName: "main", Contexts: []string{"patch-building", "staging"}, - Key: gocui.KeyArrowLeft, + Key: gui.getKey("universal.prevBlock"), Modifier: gocui.ModNone, |