go.crypto/ssh/terminal: Allow ^A and ^E as synonyms for Home and End.
I understand that ssh/terminal can't implement everybodys
favorite keyboard shortcuts, but I think these are very
widespread. They exist not only in Emacs or Readline, but also
in Acme and Sam. Also they almost come for free.
R=golang-dev
CC=agl, golang-dev
https://golang.org/cl/13839047
diff --git a/terminal.go b/terminal.go
index 66439cf..86853d6 100644
--- a/terminal.go
+++ b/terminal.go
@@ -132,6 +132,10 @@
}
switch b[0] {
+ case 1: // ^A
+ return keyHome, b[1:]
+ case 5: // ^E
+ return keyEnd, b[1:]
case 8: // ^H
return keyBackspace, b[1:]
case 11: // ^K
diff --git a/terminal_test.go b/terminal_test.go
index 7fbf0e6..641576c 100644
--- a/terminal_test.go
+++ b/terminal_test.go
@@ -102,6 +102,18 @@
throwAwayLines: 2,
},
{
+ // Ctrl-A to move to beginning of line followed by ^K to kill
+ // line.
+ in: "a b \001\013\r",
+ line: "",
+ },
+ {
+ // Ctrl-A to move to beginning of line, Ctrl-E to move to end,
+ // finally ^K to kill nothing.
+ in: "a b \001\005\013\r",
+ line: "a b ",
+ },
+ {
in: "\027\r",
line: "",
},