Compare commits

..
9 Commits
Author SHA1 Message Date
Paris Kasidiaris 01c20807c2 Bump version to 1.1.2
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2016-08-22 14:26:27 +00:00
Paris Kasidiaris 243ce59806 Merge pull request #240 from sourcelair/issue/239
Fix alt + arrow key movement
2016-08-22 17:28:23 +03:00
Paris Kasidiaris 5d6e0356b3 Add tests for arrow key movements 2016-08-22 17:21:58 +03:00
Paris Kasidiaris 8324b43cc2 Fix Alt + Arrow movement
Fix #239
2016-08-22 17:17:58 +03:00
Paris Kasidiaris 4c3ccc264c Bump version to 1.1.1
Signed-off-by: Paris Kasidiaris <paris@sourcelair.com>
2016-08-22 13:11:54 +00:00
Paris Kasidiaris 197c83d993 Merge pull request #234 from Tyriar/233_fix_cursor_on_top_of_ime
Ensure composition view is on top of cursor
2016-08-22 16:14:15 +03:00
Paris Kasidiaris aaded29855 Merge pull request #238 from sourcelair/gitter-badge
Add "Chat on Gitter" badge
2016-08-22 14:47:21 +03:00
Paris Kasidiaris e5656b9982 Add "Chat on Gitter" badge 2016-08-22 14:40:34 +03:00
Daniel Imms 7de7bdac71 Ensure composition view is on top of cursor
Fixes #233
2016-08-18 11:28:10 -07:00
6 changed files with 61 additions and 16 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# xterm.js
![xterm.js build status](https://api.travis-ci.org/sourcelair/xterm.js.svg)
![xterm.js build status](https://api.travis-ci.org/sourcelair/xterm.js.svg) [![Gitter](https://badges.gitter.im/sourcelair/xterm.js.svg)](https://gitter.im/sourcelair/xterm.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Xterm.js is a terminal front-end component written in JavaScript that works in the browser.
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "xterm.js",
"version": "1.1.0",
"version": "1.1.2",
"ignore": ["demo", "test", ".gitignore"]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "xterm",
"version": "1.1.0",
"version": "1.1.2",
"ignore": [
"demo",
"test",
+1
View File
@@ -98,6 +98,7 @@
display: none;
position: absolute;
white-space: nowrap;
z-index: 1;
}
.terminal .composition-view.active {
+36 -12
View File
@@ -2907,39 +2907,63 @@
break;
// left-arrow
case 37:
if (modifiers)
if (modifiers) {
result.key = '\x1b[1;' + (modifiers + 1) + 'D';
else if (this.applicationCursor)
// HACK: Make Alt + left-arrow behave like Ctrl + left-arrow: move one word backwards
// http://unix.stackexchange.com/a/108106
if (result.key == '\x1b[1;3D') {
result.key = '\x1b[1;5D';
}
} else if (this.applicationCursor) {
result.key = '\x1bOD';
else
} else {
result.key = '\x1b[D';
}
break;
// right-arrow
case 39:
if (modifiers)
if (modifiers) {
result.key = '\x1b[1;' + (modifiers + 1) + 'C';
else if (this.applicationCursor)
// HACK: Make Alt + right-arrow behave like Ctrl + right-arrow: move one word forward
// http://unix.stackexchange.com/a/108106
if (result.key == '\x1b[1;3C') {
result.key = '\x1b[1;5C';
}
} else if (this.applicationCursor) {
result.key = '\x1bOC';
else
} else {
result.key = '\x1b[C';
}
break;
// up-arrow
case 38:
if (modifiers)
if (modifiers) {
result.key = '\x1b[1;' + (modifiers + 1) + 'A';
else if (this.applicationCursor)
// HACK: Make Alt + up-arrow behave like Ctrl + up-arrow
// http://unix.stackexchange.com/a/108106
if (result.key == '\x1b[1;3A') {
result.key = '\x1b[1;5A';
}
} else if (this.applicationCursor) {
result.key = '\x1bOA';
else
} else {
result.key = '\x1b[A';
}
break;
// down-arrow
case 40:
if (modifiers)
if (modifiers) {
result.key = '\x1b[1;' + (modifiers + 1) + 'B';
else if (this.applicationCursor)
// HACK: Make Alt + down-arrow behave like Ctrl + down-arrow
// http://unix.stackexchange.com/a/108106
if (result.key == '\x1b[1;3B') {
result.key = '\x1b[1;5B';
}
} else if (this.applicationCursor) {
result.key = '\x1bOB';
else
} else {
result.key = '\x1b[B';
}
break;
// insert
case 45:
+21 -1
View File
@@ -55,6 +55,26 @@ describe('xterm.js', function() {
it('should return \\x1b[5C for ctrl+right', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ ctrlKey: true, keyCode: 39 }).key, '\x1b[1;5C'); // CSI 5 C
});
it('should return \\x1b[5A for ctrl+up', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ ctrlKey: true, keyCode: 38 }).key, '\x1b[1;5A'); // CSI 5 A
});
it('should return \\x1b[5B for ctrl+down', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ ctrlKey: true, keyCode: 40 }).key, '\x1b[1;5B'); // CSI 5 B
});
// Evalueate alt + arrow key movement, which is a feature of terminal emulators but not VT100
// http://unix.stackexchange.com/a/108106
it('should return \\x1b[5D for alt+left', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ altKey: true, keyCode: 37 }).key, '\x1b[1;5D'); // CSI 5 D
});
it('should return \\x1b[5C for alt+right', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ altKey: true, keyCode: 39 }).key, '\x1b[1;5C'); // CSI 5 C
});
it('should return \\x1b[5A for alt+up', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ altKey: true, keyCode: 38 }).key, '\x1b[1;5A'); // CSI 5 A
});
it('should return \\x1b[5B for alt+down', function() {
assert.equal(xterm.evaluateKeyEscapeSequence({ altKey: true, keyCode: 40 }).key, '\x1b[1;5B'); // CSI 5 B
});
});
describe('attachCustomEventHandler', function () {
@@ -88,7 +108,7 @@ describe('xterm.js', function() {
});
assert.equal(xterm.keyDown(Object.assign({}, evKeyDown, { keyCode: 77 })), false);
});
it('should alive after reset(ESC c Full Reset (RIS))', function () {
xterm.attachCustomKeydownHandler(function (ev) {
return ev.keyCode !== 77;