Commit eb0e8047 authored by Frithjof Schulze's avatar Frithjof Schulze

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://codereview.appspot.com/13839047

Committer: Adam Langley <agl@golang.org>
parent a871db19
...@@ -132,6 +132,10 @@ func bytesToKey(b []byte) (rune, []byte) { ...@@ -132,6 +132,10 @@ func bytesToKey(b []byte) (rune, []byte) {
} }
switch b[0] { switch b[0] {
case 1: // ^A
return keyHome, b[1:]
case 5: // ^E
return keyEnd, b[1:]
case 8: // ^H case 8: // ^H
return keyBackspace, b[1:] return keyBackspace, b[1:]
case 11: // ^K case 11: // ^K
......
...@@ -101,6 +101,18 @@ var keyPressTests = []struct { ...@@ -101,6 +101,18 @@ var keyPressTests = []struct {
line: "line1xxx", line: "line1xxx",
throwAwayLines: 2, 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", in: "\027\r",
line: "", line: "",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment