summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/readline.js2
-rw-r--r--test/simple/test-readline-interface.js12
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/readline.js b/lib/readline.js
index 75e51f8d1..c52f3e88b 100644
--- a/lib/readline.js
+++ b/lib/readline.js
@@ -941,7 +941,7 @@ function emitKey(stream, s) {
key.name = 'space';
key.meta = (s.length === 2);
- } else if (s <= '\x1a') {
+ } else if (s.length === 1 && s <= '\x1a') {
// ctrl+letter
key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1);
key.ctrl = true;
diff --git a/test/simple/test-readline-interface.js b/test/simple/test-readline-interface.js
index fc20d1d21..8976b8eb2 100644
--- a/test/simple/test-readline-interface.js
+++ b/test/simple/test-readline-interface.js
@@ -155,6 +155,18 @@ FakeInput.prototype.end = function() {};
assert.equal(callCount, expectedLines.length - 1);
rli.close();
+ // \r at start of input should output blank line
+ fi = new FakeInput();
+ rli = new readline.Interface({ input: fi, output: fi, terminal: true });
+ expectedLines = ['', 'foo' ];
+ callCount = 0;
+ rli.on('line', function(line) {
+ assert.equal(line, expectedLines[callCount]);
+ callCount++;
+ });
+ fi.emit('data', '\rfoo\r');
+ assert.equal(callCount, expectedLines.length);
+ rli.close();
// sending a multi-byte utf8 char over multiple writes
var buf = Buffer('☮', 'utf8');