Add ability to bind alt keys

This lets you bind keys like Alt-b or Alt-f.
This commit also adds some new default keybindings in emacs style, so
alt-a is beginning of line and alt-e is end etc...
This commit is contained in:
Zachary Yedidia
2016-05-22 15:33:40 -04:00
parent df684ec505
commit f9adcd525d
2 changed files with 171 additions and 148 deletions

View File

@@ -19,6 +19,7 @@ var bindings map[Key]func(*View) bool
type Key struct {
keyCode tcell.Key
modifiers tcell.ModMask
r rune
}
// InitBindings initializes the keybindings for micro
@@ -76,150 +77,150 @@ func InitBindings() {
}
keys := map[string]Key{
"Up": Key{tcell.KeyUp, tcell.ModNone},
"Down": Key{tcell.KeyDown, tcell.ModNone},
"Right": Key{tcell.KeyRight, tcell.ModNone},
"Left": Key{tcell.KeyLeft, tcell.ModNone},
"AltUp": Key{tcell.KeyUp, tcell.ModAlt},
"AltDown": Key{tcell.KeyDown, tcell.ModAlt},
"AltLeft": Key{tcell.KeyLeft, tcell.ModAlt},
"AltRight": Key{tcell.KeyRight, tcell.ModAlt},
"CtrlUp": Key{tcell.KeyUp, tcell.ModCtrl},
"CtrlDown": Key{tcell.KeyDown, tcell.ModCtrl},
"CtrlLeft": Key{tcell.KeyLeft, tcell.ModCtrl},
"CtrlRight": Key{tcell.KeyRight, tcell.ModCtrl},
"ShiftUp": Key{tcell.KeyUp, tcell.ModShift},
"ShiftDown": Key{tcell.KeyDown, tcell.ModShift},
"ShiftLeft": Key{tcell.KeyLeft, tcell.ModShift},
"ShiftRight": Key{tcell.KeyRight, tcell.ModShift},
"AltShiftUp": Key{tcell.KeyUp, tcell.ModShift | tcell.ModAlt},
"AltShiftDown": Key{tcell.KeyDown, tcell.ModShift | tcell.ModAlt},
"AltShiftLeft": Key{tcell.KeyLeft, tcell.ModShift | tcell.ModAlt},
"AltShiftRight": Key{tcell.KeyRight, tcell.ModShift | tcell.ModAlt},
"CtrlShiftUp": Key{tcell.KeyUp, tcell.ModShift | tcell.ModCtrl},
"CtrlShiftDown": Key{tcell.KeyDown, tcell.ModShift | tcell.ModCtrl},
"CtrlShiftLeft": Key{tcell.KeyLeft, tcell.ModShift | tcell.ModCtrl},
"CtrlShiftRight": Key{tcell.KeyRight, tcell.ModShift | tcell.ModCtrl},
"UpLeft": Key{tcell.KeyUpLeft, tcell.ModNone},
"UpRight": Key{tcell.KeyUpRight, tcell.ModNone},
"DownLeft": Key{tcell.KeyDownLeft, tcell.ModNone},
"DownRight": Key{tcell.KeyDownRight, tcell.ModNone},
"Center": Key{tcell.KeyCenter, tcell.ModNone},
"PgUp": Key{tcell.KeyPgUp, tcell.ModNone},
"PgDn": Key{tcell.KeyPgDn, tcell.ModNone},
"Home": Key{tcell.KeyHome, tcell.ModNone},
"End": Key{tcell.KeyEnd, tcell.ModNone},
"Insert": Key{tcell.KeyInsert, tcell.ModNone},
"Delete": Key{tcell.KeyDelete, tcell.ModNone},
"Help": Key{tcell.KeyHelp, tcell.ModNone},
"Exit": Key{tcell.KeyExit, tcell.ModNone},
"Clear": Key{tcell.KeyClear, tcell.ModNone},
"Cancel": Key{tcell.KeyCancel, tcell.ModNone},
"Print": Key{tcell.KeyPrint, tcell.ModNone},
"Pause": Key{tcell.KeyPause, tcell.ModNone},
"Backtab": Key{tcell.KeyBacktab, tcell.ModNone},
"F1": Key{tcell.KeyF1, tcell.ModNone},
"F2": Key{tcell.KeyF2, tcell.ModNone},
"F3": Key{tcell.KeyF3, tcell.ModNone},
"F4": Key{tcell.KeyF4, tcell.ModNone},
"F5": Key{tcell.KeyF5, tcell.ModNone},
"F6": Key{tcell.KeyF6, tcell.ModNone},
"F7": Key{tcell.KeyF7, tcell.ModNone},
"F8": Key{tcell.KeyF8, tcell.ModNone},
"F9": Key{tcell.KeyF9, tcell.ModNone},
"F10": Key{tcell.KeyF10, tcell.ModNone},
"F11": Key{tcell.KeyF11, tcell.ModNone},
"F12": Key{tcell.KeyF12, tcell.ModNone},
"F13": Key{tcell.KeyF13, tcell.ModNone},
"F14": Key{tcell.KeyF14, tcell.ModNone},
"F15": Key{tcell.KeyF15, tcell.ModNone},
"F16": Key{tcell.KeyF16, tcell.ModNone},
"F17": Key{tcell.KeyF17, tcell.ModNone},
"F18": Key{tcell.KeyF18, tcell.ModNone},
"F19": Key{tcell.KeyF19, tcell.ModNone},
"F20": Key{tcell.KeyF20, tcell.ModNone},
"F21": Key{tcell.KeyF21, tcell.ModNone},
"F22": Key{tcell.KeyF22, tcell.ModNone},
"F23": Key{tcell.KeyF23, tcell.ModNone},
"F24": Key{tcell.KeyF24, tcell.ModNone},
"F25": Key{tcell.KeyF25, tcell.ModNone},
"F26": Key{tcell.KeyF26, tcell.ModNone},
"F27": Key{tcell.KeyF27, tcell.ModNone},
"F28": Key{tcell.KeyF28, tcell.ModNone},
"F29": Key{tcell.KeyF29, tcell.ModNone},
"F30": Key{tcell.KeyF30, tcell.ModNone},
"F31": Key{tcell.KeyF31, tcell.ModNone},
"F32": Key{tcell.KeyF32, tcell.ModNone},
"F33": Key{tcell.KeyF33, tcell.ModNone},
"F34": Key{tcell.KeyF34, tcell.ModNone},
"F35": Key{tcell.KeyF35, tcell.ModNone},
"F36": Key{tcell.KeyF36, tcell.ModNone},
"F37": Key{tcell.KeyF37, tcell.ModNone},
"F38": Key{tcell.KeyF38, tcell.ModNone},
"F39": Key{tcell.KeyF39, tcell.ModNone},
"F40": Key{tcell.KeyF40, tcell.ModNone},
"F41": Key{tcell.KeyF41, tcell.ModNone},
"F42": Key{tcell.KeyF42, tcell.ModNone},
"F43": Key{tcell.KeyF43, tcell.ModNone},
"F44": Key{tcell.KeyF44, tcell.ModNone},
"F45": Key{tcell.KeyF45, tcell.ModNone},
"F46": Key{tcell.KeyF46, tcell.ModNone},
"F47": Key{tcell.KeyF47, tcell.ModNone},
"F48": Key{tcell.KeyF48, tcell.ModNone},
"F49": Key{tcell.KeyF49, tcell.ModNone},
"F50": Key{tcell.KeyF50, tcell.ModNone},
"F51": Key{tcell.KeyF51, tcell.ModNone},
"F52": Key{tcell.KeyF52, tcell.ModNone},
"F53": Key{tcell.KeyF53, tcell.ModNone},
"F54": Key{tcell.KeyF54, tcell.ModNone},
"F55": Key{tcell.KeyF55, tcell.ModNone},
"F56": Key{tcell.KeyF56, tcell.ModNone},
"F57": Key{tcell.KeyF57, tcell.ModNone},
"F58": Key{tcell.KeyF58, tcell.ModNone},
"F59": Key{tcell.KeyF59, tcell.ModNone},
"F60": Key{tcell.KeyF60, tcell.ModNone},
"F61": Key{tcell.KeyF61, tcell.ModNone},
"F62": Key{tcell.KeyF62, tcell.ModNone},
"F63": Key{tcell.KeyF63, tcell.ModNone},
"F64": Key{tcell.KeyF64, tcell.ModNone},
"CtrlSpace": Key{tcell.KeyCtrlSpace, tcell.ModCtrl},
"CtrlA": Key{tcell.KeyCtrlA, tcell.ModCtrl},
"CtrlB": Key{tcell.KeyCtrlB, tcell.ModCtrl},
"CtrlC": Key{tcell.KeyCtrlC, tcell.ModCtrl},
"CtrlD": Key{tcell.KeyCtrlD, tcell.ModCtrl},
"CtrlE": Key{tcell.KeyCtrlE, tcell.ModCtrl},
"CtrlF": Key{tcell.KeyCtrlF, tcell.ModCtrl},
"CtrlG": Key{tcell.KeyCtrlG, tcell.ModCtrl},
"CtrlH": Key{tcell.KeyCtrlH, tcell.ModCtrl},
"CtrlI": Key{tcell.KeyCtrlI, tcell.ModCtrl},
"CtrlJ": Key{tcell.KeyCtrlJ, tcell.ModCtrl},
"CtrlK": Key{tcell.KeyCtrlK, tcell.ModCtrl},
"CtrlL": Key{tcell.KeyCtrlL, tcell.ModCtrl},
"CtrlM": Key{tcell.KeyCtrlM, tcell.ModCtrl},
"CtrlN": Key{tcell.KeyCtrlN, tcell.ModCtrl},
"CtrlO": Key{tcell.KeyCtrlO, tcell.ModCtrl},
"CtrlP": Key{tcell.KeyCtrlP, tcell.ModCtrl},
"CtrlQ": Key{tcell.KeyCtrlQ, tcell.ModCtrl},
"CtrlR": Key{tcell.KeyCtrlR, tcell.ModCtrl},
"CtrlS": Key{tcell.KeyCtrlS, tcell.ModCtrl},
"CtrlT": Key{tcell.KeyCtrlT, tcell.ModCtrl},
"CtrlU": Key{tcell.KeyCtrlU, tcell.ModCtrl},
"CtrlV": Key{tcell.KeyCtrlV, tcell.ModCtrl},
"CtrlW": Key{tcell.KeyCtrlW, tcell.ModCtrl},
"CtrlX": Key{tcell.KeyCtrlX, tcell.ModCtrl},
"CtrlY": Key{tcell.KeyCtrlY, tcell.ModCtrl},
"CtrlZ": Key{tcell.KeyCtrlZ, tcell.ModCtrl},
"CtrlLeftSq": Key{tcell.KeyCtrlLeftSq, tcell.ModCtrl},
"CtrlBackslash": Key{tcell.KeyCtrlBackslash, tcell.ModCtrl},
"CtrlRightSq": Key{tcell.KeyCtrlRightSq, tcell.ModCtrl},
"CtrlCarat": Key{tcell.KeyCtrlCarat, tcell.ModCtrl},
"CtrlUnderscore": Key{tcell.KeyCtrlUnderscore, tcell.ModCtrl},
"Backspace": Key{tcell.KeyBackspace, tcell.ModNone},
"Tab": Key{tcell.KeyTab, tcell.ModNone},
"Esc": Key{tcell.KeyEsc, tcell.ModNone},
"Escape": Key{tcell.KeyEscape, tcell.ModNone},
"Enter": Key{tcell.KeyEnter, tcell.ModNone},
"Backspace2": Key{tcell.KeyBackspace2, tcell.ModNone},
"Up": Key{tcell.KeyUp, tcell.ModNone, 0},
"Down": Key{tcell.KeyDown, tcell.ModNone, 0},
"Right": Key{tcell.KeyRight, tcell.ModNone, 0},
"Left": Key{tcell.KeyLeft, tcell.ModNone, 0},
"AltUp": Key{tcell.KeyUp, tcell.ModAlt, 0},
"AltDown": Key{tcell.KeyDown, tcell.ModAlt, 0},
"AltLeft": Key{tcell.KeyLeft, tcell.ModAlt, 0},
"AltRight": Key{tcell.KeyRight, tcell.ModAlt, 0},
"CtrlUp": Key{tcell.KeyUp, tcell.ModCtrl, 0},
"CtrlDown": Key{tcell.KeyDown, tcell.ModCtrl, 0},
"CtrlLeft": Key{tcell.KeyLeft, tcell.ModCtrl, 0},
"CtrlRight": Key{tcell.KeyRight, tcell.ModCtrl, 0},
"ShiftUp": Key{tcell.KeyUp, tcell.ModShift, 0},
"ShiftDown": Key{tcell.KeyDown, tcell.ModShift, 0},
"ShiftLeft": Key{tcell.KeyLeft, tcell.ModShift, 0},
"ShiftRight": Key{tcell.KeyRight, tcell.ModShift, 0},
"AltShiftUp": Key{tcell.KeyUp, tcell.ModShift | tcell.ModAlt, 0},
"AltShiftDown": Key{tcell.KeyDown, tcell.ModShift | tcell.ModAlt, 0},
"AltShiftLeft": Key{tcell.KeyLeft, tcell.ModShift | tcell.ModAlt, 0},
"AltShiftRight": Key{tcell.KeyRight, tcell.ModShift | tcell.ModAlt, 0},
"CtrlShiftUp": Key{tcell.KeyUp, tcell.ModShift | tcell.ModCtrl, 0},
"CtrlShiftDown": Key{tcell.KeyDown, tcell.ModShift | tcell.ModCtrl, 0},
"CtrlShiftLeft": Key{tcell.KeyLeft, tcell.ModShift | tcell.ModCtrl, 0},
"CtrlShiftRight": Key{tcell.KeyRight, tcell.ModShift | tcell.ModCtrl, 0},
"UpLeft": Key{tcell.KeyUpLeft, tcell.ModNone, 0},
"UpRight": Key{tcell.KeyUpRight, tcell.ModNone, 0},
"DownLeft": Key{tcell.KeyDownLeft, tcell.ModNone, 0},
"DownRight": Key{tcell.KeyDownRight, tcell.ModNone, 0},
"Center": Key{tcell.KeyCenter, tcell.ModNone, 0},
"PgUp": Key{tcell.KeyPgUp, tcell.ModNone, 0},
"PgDn": Key{tcell.KeyPgDn, tcell.ModNone, 0},
"Home": Key{tcell.KeyHome, tcell.ModNone, 0},
"End": Key{tcell.KeyEnd, tcell.ModNone, 0},
"Insert": Key{tcell.KeyInsert, tcell.ModNone, 0},
"Delete": Key{tcell.KeyDelete, tcell.ModNone, 0},
"Help": Key{tcell.KeyHelp, tcell.ModNone, 0},
"Exit": Key{tcell.KeyExit, tcell.ModNone, 0},
"Clear": Key{tcell.KeyClear, tcell.ModNone, 0},
"Cancel": Key{tcell.KeyCancel, tcell.ModNone, 0},
"Print": Key{tcell.KeyPrint, tcell.ModNone, 0},
"Pause": Key{tcell.KeyPause, tcell.ModNone, 0},
"Backtab": Key{tcell.KeyBacktab, tcell.ModNone, 0},
"F1": Key{tcell.KeyF1, tcell.ModNone, 0},
"F2": Key{tcell.KeyF2, tcell.ModNone, 0},
"F3": Key{tcell.KeyF3, tcell.ModNone, 0},
"F4": Key{tcell.KeyF4, tcell.ModNone, 0},
"F5": Key{tcell.KeyF5, tcell.ModNone, 0},
"F6": Key{tcell.KeyF6, tcell.ModNone, 0},
"F7": Key{tcell.KeyF7, tcell.ModNone, 0},
"F8": Key{tcell.KeyF8, tcell.ModNone, 0},
"F9": Key{tcell.KeyF9, tcell.ModNone, 0},
"F10": Key{tcell.KeyF10, tcell.ModNone, 0},
"F11": Key{tcell.KeyF11, tcell.ModNone, 0},
"F12": Key{tcell.KeyF12, tcell.ModNone, 0},
"F13": Key{tcell.KeyF13, tcell.ModNone, 0},
"F14": Key{tcell.KeyF14, tcell.ModNone, 0},
"F15": Key{tcell.KeyF15, tcell.ModNone, 0},
"F16": Key{tcell.KeyF16, tcell.ModNone, 0},
"F17": Key{tcell.KeyF17, tcell.ModNone, 0},
"F18": Key{tcell.KeyF18, tcell.ModNone, 0},
"F19": Key{tcell.KeyF19, tcell.ModNone, 0},
"F20": Key{tcell.KeyF20, tcell.ModNone, 0},
"F21": Key{tcell.KeyF21, tcell.ModNone, 0},
"F22": Key{tcell.KeyF22, tcell.ModNone, 0},
"F23": Key{tcell.KeyF23, tcell.ModNone, 0},
"F24": Key{tcell.KeyF24, tcell.ModNone, 0},
"F25": Key{tcell.KeyF25, tcell.ModNone, 0},
"F26": Key{tcell.KeyF26, tcell.ModNone, 0},
"F27": Key{tcell.KeyF27, tcell.ModNone, 0},
"F28": Key{tcell.KeyF28, tcell.ModNone, 0},
"F29": Key{tcell.KeyF29, tcell.ModNone, 0},
"F30": Key{tcell.KeyF30, tcell.ModNone, 0},
"F31": Key{tcell.KeyF31, tcell.ModNone, 0},
"F32": Key{tcell.KeyF32, tcell.ModNone, 0},
"F33": Key{tcell.KeyF33, tcell.ModNone, 0},
"F34": Key{tcell.KeyF34, tcell.ModNone, 0},
"F35": Key{tcell.KeyF35, tcell.ModNone, 0},
"F36": Key{tcell.KeyF36, tcell.ModNone, 0},
"F37": Key{tcell.KeyF37, tcell.ModNone, 0},
"F38": Key{tcell.KeyF38, tcell.ModNone, 0},
"F39": Key{tcell.KeyF39, tcell.ModNone, 0},
"F40": Key{tcell.KeyF40, tcell.ModNone, 0},
"F41": Key{tcell.KeyF41, tcell.ModNone, 0},
"F42": Key{tcell.KeyF42, tcell.ModNone, 0},
"F43": Key{tcell.KeyF43, tcell.ModNone, 0},
"F44": Key{tcell.KeyF44, tcell.ModNone, 0},
"F45": Key{tcell.KeyF45, tcell.ModNone, 0},
"F46": Key{tcell.KeyF46, tcell.ModNone, 0},
"F47": Key{tcell.KeyF47, tcell.ModNone, 0},
"F48": Key{tcell.KeyF48, tcell.ModNone, 0},
"F49": Key{tcell.KeyF49, tcell.ModNone, 0},
"F50": Key{tcell.KeyF50, tcell.ModNone, 0},
"F51": Key{tcell.KeyF51, tcell.ModNone, 0},
"F52": Key{tcell.KeyF52, tcell.ModNone, 0},
"F53": Key{tcell.KeyF53, tcell.ModNone, 0},
"F54": Key{tcell.KeyF54, tcell.ModNone, 0},
"F55": Key{tcell.KeyF55, tcell.ModNone, 0},
"F56": Key{tcell.KeyF56, tcell.ModNone, 0},
"F57": Key{tcell.KeyF57, tcell.ModNone, 0},
"F58": Key{tcell.KeyF58, tcell.ModNone, 0},
"F59": Key{tcell.KeyF59, tcell.ModNone, 0},
"F60": Key{tcell.KeyF60, tcell.ModNone, 0},
"F61": Key{tcell.KeyF61, tcell.ModNone, 0},
"F62": Key{tcell.KeyF62, tcell.ModNone, 0},
"F63": Key{tcell.KeyF63, tcell.ModNone, 0},
"F64": Key{tcell.KeyF64, tcell.ModNone, 0},
"CtrlSpace": Key{tcell.KeyCtrlSpace, tcell.ModCtrl, 0},
"CtrlA": Key{tcell.KeyCtrlA, tcell.ModCtrl, 0},
"CtrlB": Key{tcell.KeyCtrlB, tcell.ModCtrl, 0},
"CtrlC": Key{tcell.KeyCtrlC, tcell.ModCtrl, 0},
"CtrlD": Key{tcell.KeyCtrlD, tcell.ModCtrl, 0},
"CtrlE": Key{tcell.KeyCtrlE, tcell.ModCtrl, 0},
"CtrlF": Key{tcell.KeyCtrlF, tcell.ModCtrl, 0},
"CtrlG": Key{tcell.KeyCtrlG, tcell.ModCtrl, 0},
"CtrlH": Key{tcell.KeyCtrlH, tcell.ModCtrl, 0},
"CtrlI": Key{tcell.KeyCtrlI, tcell.ModCtrl, 0},
"CtrlJ": Key{tcell.KeyCtrlJ, tcell.ModCtrl, 0},
"CtrlK": Key{tcell.KeyCtrlK, tcell.ModCtrl, 0},
"CtrlL": Key{tcell.KeyCtrlL, tcell.ModCtrl, 0},
"CtrlM": Key{tcell.KeyCtrlM, tcell.ModCtrl, 0},
"CtrlN": Key{tcell.KeyCtrlN, tcell.ModCtrl, 0},
"CtrlO": Key{tcell.KeyCtrlO, tcell.ModCtrl, 0},
"CtrlP": Key{tcell.KeyCtrlP, tcell.ModCtrl, 0},
"CtrlQ": Key{tcell.KeyCtrlQ, tcell.ModCtrl, 0},
"CtrlR": Key{tcell.KeyCtrlR, tcell.ModCtrl, 0},
"CtrlS": Key{tcell.KeyCtrlS, tcell.ModCtrl, 0},
"CtrlT": Key{tcell.KeyCtrlT, tcell.ModCtrl, 0},
"CtrlU": Key{tcell.KeyCtrlU, tcell.ModCtrl, 0},
"CtrlV": Key{tcell.KeyCtrlV, tcell.ModCtrl, 0},
"CtrlW": Key{tcell.KeyCtrlW, tcell.ModCtrl, 0},
"CtrlX": Key{tcell.KeyCtrlX, tcell.ModCtrl, 0},
"CtrlY": Key{tcell.KeyCtrlY, tcell.ModCtrl, 0},
"CtrlZ": Key{tcell.KeyCtrlZ, tcell.ModCtrl, 0},
"CtrlLeftSq": Key{tcell.KeyCtrlLeftSq, tcell.ModCtrl, 0},
"CtrlBackslash": Key{tcell.KeyCtrlBackslash, tcell.ModCtrl, 0},
"CtrlRightSq": Key{tcell.KeyCtrlRightSq, tcell.ModCtrl, 0},
"CtrlCarat": Key{tcell.KeyCtrlCarat, tcell.ModCtrl, 0},
"CtrlUnderscore": Key{tcell.KeyCtrlUnderscore, tcell.ModCtrl, 0},
"Backspace": Key{tcell.KeyBackspace, tcell.ModNone, 0},
"Tab": Key{tcell.KeyTab, tcell.ModNone, 0},
"Esc": Key{tcell.KeyEsc, tcell.ModNone, 0},
"Escape": Key{tcell.KeyEscape, tcell.ModNone, 0},
"Enter": Key{tcell.KeyEnter, tcell.ModNone, 0},
"Backspace2": Key{tcell.KeyBackspace2, tcell.ModNone, 0},
}
var parsed map[string]string
@@ -240,10 +241,20 @@ func InitBindings() {
}
for k, v := range defaults {
bindings[keys[k]] = actions[v]
if strings.Contains(k, "Alt-") {
key := Key{tcell.KeyRune, tcell.ModAlt, rune(k[len(k)-1])}
bindings[key] = actions[v]
} else {
bindings[keys[k]] = actions[v]
}
}
for k, v := range parsed {
bindings[keys[k]] = actions[v]
if strings.Contains(k, "Alt-") {
key := Key{tcell.KeyRune, tcell.ModAlt, rune(k[len(k)])}
bindings[key] = actions[v]
} else {
bindings[keys[k]] = actions[v]
}
}
}
@@ -299,6 +310,14 @@ func DefaultBindings() map[string]string {
"CtrlL": "JumpLine",
"Delete": "Delete",
"Esc": "ClearStatus",
// Emacs-style keybindings
"Alt-f": "WordRight",
"Alt-b": "WordLeft",
"Alt-a": "StartOfLine",
"Alt-e": "EndOfLine",
"Alt-p": "CursorUp",
"Alt-n": "CursorDown",
}
}
@@ -501,7 +520,6 @@ func (v *View) SelectToEnd() bool {
// InsertSpace inserts a space
func (v *View) InsertSpace() bool {
// Insert a space
if v.Cursor.HasSelection() {
v.Cursor.DeleteSelection()
v.Cursor.ResetSelection()

View File

@@ -253,7 +253,7 @@ func (v *View) HandleEvent(event tcell.Event) {
// Window resized
v.Resize(e.Size())
case *tcell.EventKey:
if e.Key() == tcell.KeyRune {
if e.Key() == tcell.KeyRune && e.Modifiers() == 0 {
// Insert a character
if v.Cursor.HasSelection() {
v.Cursor.DeleteSelection()
@@ -264,6 +264,11 @@ func (v *View) HandleEvent(event tcell.Event) {
} else {
for key, action := range bindings {
if e.Key() == key.keyCode {
if e.Key() == tcell.KeyRune {
if e.Rune() != key.r {
continue
}
}
if e.Modifiers() == key.modifiers {
relocate = action(v)
for _, pl := range loadedPlugins {