From a4fd7c43aa8153325c0dd89c3d55fe987c2c25c4 Mon Sep 17 00:00:00 2001 From: Ishan Goel Date: Sat, 5 Feb 2022 16:46:29 -0800 Subject: [PATCH 1/2] Add aliases for alt-left, alt-right and delete-word --- terminal.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/terminal.go b/terminal.go index 535ab82..2a86cc2 100644 --- a/terminal.go +++ b/terminal.go @@ -181,6 +181,17 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { return r, b[l:] } + if !pasteActive && len(b) >= 2 && b[0] == keyEscape { + switch b[1] { + case 'b': + return keyAltLeft, b[2:] + case 'f': + return keyAltRight, b[2:] + case 127: + return keyDeleteWord, b[2:] + } + } + if !pasteActive && len(b) >= 3 && b[0] == keyEscape && b[1] == '[' { switch b[2] { case 'A': From 61c099772b8aa7c6407b61f48b17e52a20983e0c Mon Sep 17 00:00:00 2001 From: Ishan Goel Date: Sat, 5 Feb 2022 16:50:04 -0800 Subject: [PATCH 2/2] Remove unnecessary checks for the escape key --- terminal.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/terminal.go b/terminal.go index 2a86cc2..dea246c 100644 --- a/terminal.go +++ b/terminal.go @@ -181,7 +181,9 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { return r, b[l:] } - if !pasteActive && len(b) >= 2 && b[0] == keyEscape { + // b[0] == keyEscape from now on + + if !pasteActive && len(b) >= 2 { switch b[1] { case 'b': return keyAltLeft, b[2:] @@ -192,7 +194,7 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { } } - if !pasteActive && len(b) >= 3 && b[0] == keyEscape && b[1] == '[' { + if !pasteActive && len(b) >= 3 && b[1] == '[' { switch b[2] { case 'A': return keyUp, b[3:] @@ -209,7 +211,7 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { } } - if !pasteActive && len(b) >= 6 && b[0] == keyEscape && b[1] == '[' && b[2] == '1' && b[3] == ';' && b[4] == '3' { + if !pasteActive && len(b) >= 6 && b[1] == '[' && b[2] == '1' && b[3] == ';' && b[4] == '3' { switch b[5] { case 'C': return keyAltRight, b[6:]