mirror of
https://github.com/embarklabs/neo-blessed.git
synced 2025-01-23 09:20:05 +00:00
add mouse protocols. window title restore. fix response.
This commit is contained in:
parent
cb00aeb413
commit
03cdfbb39c
@ -260,6 +260,17 @@ Program.prototype.listen = function() {
|
|||||||
throw new Error('Not a terminal.');
|
throw new Error('Not a terminal.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unshiftEvent(process, 'exit', function() {
|
||||||
|
// if (self._originalTitle) {
|
||||||
|
// self.setTitle(self._originalTitle);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// this.setTitleModeFeature(3);
|
||||||
|
// this.manipulateWindow(21, function(err, data) {
|
||||||
|
// if (err) return;
|
||||||
|
// self._originalTitle = data.text;
|
||||||
|
// });
|
||||||
|
|
||||||
// Input
|
// Input
|
||||||
this.input.on('keypress', function(ch, key) {
|
this.input.on('keypress', function(ch, key) {
|
||||||
key = key || { ch: ch };
|
key = key || { ch: ch };
|
||||||
@ -401,6 +412,11 @@ Program.prototype._bindMouse = function(s, buf) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (this.8bit) {
|
||||||
|
// s = s.replace(/\233/g, '\x1b[');
|
||||||
|
// buf = new Buffer(s, 'utf8');
|
||||||
|
// }
|
||||||
|
|
||||||
// XTerm / X10 for buggy VTE
|
// XTerm / X10 for buggy VTE
|
||||||
// VTE can only send unsigned chars and no unicode for coords. This limits
|
// VTE can only send unsigned chars and no unicode for coords. This limits
|
||||||
// them to 0xff. However, normally the x10 protocol does not allow a byte
|
// them to 0xff. However, normally the x10 protocol does not allow a byte
|
||||||
@ -699,6 +715,24 @@ Program.prototype._bindMouse = function(s, buf) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pterm mouse
|
||||||
|
// if (parts = /^\x1b\[([\x00\u0020-\uffff]{3})/.exec(s)) {
|
||||||
|
// ;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// jsbterm mouse
|
||||||
|
// if (parts = /^\x1b\[0~zw([\x00\u0020-\uffff]{3})/.exec(s)) {
|
||||||
|
// ;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// net
|
||||||
|
// if (parts = /^\x1b}([\x00\u0020-\uffff]{3})/.exec(s)) {
|
||||||
|
// ;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// sysmouse
|
||||||
|
|
||||||
if (parts = /^\x1b\[(O|I)/.exec(s)) {
|
if (parts = /^\x1b\[(O|I)/.exec(s)) {
|
||||||
key.action = parts[1] === 'I'
|
key.action = parts[1] === 'I'
|
||||||
? 'focus'
|
? 'focus'
|
||||||
@ -1233,7 +1267,7 @@ Program.prototype._bindResponse = function(s) {
|
|||||||
// Ps = 2 1 -> Report xterm window's title. Result is OSC l
|
// Ps = 2 1 -> Report xterm window's title. Result is OSC l
|
||||||
// label ST
|
// label ST
|
||||||
if (parts = /^\x1b\](l|L)([^\x07\x1b]*)(?:\x07|\x1b\\)/.exec(s)) {
|
if (parts = /^\x1b\](l|L)([^\x07\x1b]*)(?:\x07|\x1b\\)/.exec(s)) {
|
||||||
out.type = 'window-manipulation';
|
out.event = 'window-manipulation';
|
||||||
out.code = '';
|
out.code = '';
|
||||||
|
|
||||||
if (parts[1] === 'L') {
|
if (parts[1] === 'L') {
|
||||||
@ -1367,6 +1401,8 @@ Program.prototype._bindResponse = function(s) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
Program.prototype.response = function(name, text, callback) {
|
Program.prototype.response = function(name, text, callback) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
if (arguments.length === 2) {
|
if (arguments.length === 2) {
|
||||||
callback = text;
|
callback = text;
|
||||||
text = name;
|
text = name;
|
||||||
@ -1395,6 +1431,7 @@ Program.prototype.response = function(name, text, callback) {
|
|||||||
|
|
||||||
var timeout = setTimeout(function() {
|
var timeout = setTimeout(function() {
|
||||||
self.removeListener(name, onresponse);
|
self.removeListener(name, onresponse);
|
||||||
|
return callback(new Error('Timeout.'));
|
||||||
}, 2000);
|
}, 2000);
|
||||||
|
|
||||||
return this._write(text);
|
return this._write(text);
|
||||||
@ -2883,6 +2920,15 @@ Program.prototype.enableMouse = function() {
|
|||||||
case 'X10MOUSE':
|
case 'X10MOUSE':
|
||||||
options.x10Mouse = v;
|
options.x10Mouse = v;
|
||||||
break;
|
break;
|
||||||
|
case 'DECMOUSE':
|
||||||
|
options.decMouse = v;
|
||||||
|
break;
|
||||||
|
case 'PTERMMOUSE':
|
||||||
|
options.ptermMouse = v;
|
||||||
|
break;
|
||||||
|
case 'JSBTERMMOUSE':
|
||||||
|
options.jsbtermMouse = v;
|
||||||
|
break;
|
||||||
case 'VT200HILITE':
|
case 'VT200HILITE':
|
||||||
options.vt200Hilite = v;
|
options.vt200Hilite = v;
|
||||||
break;
|
break;
|
||||||
@ -3054,6 +3100,29 @@ Program.prototype.setMouse = function(opt, enable) {
|
|||||||
else this.resetMode('?1015');
|
else this.resetMode('?1015');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// dec mouse
|
||||||
|
if (opt.decMouse != null) {
|
||||||
|
if (opt.decMouse) this._write('\x1b[1;2\'z\x1b[1;3\'{');
|
||||||
|
else this._write('\x1b[\'z');
|
||||||
|
}
|
||||||
|
|
||||||
|
// pterm mouse
|
||||||
|
if (opt.ptermMouse != null) {
|
||||||
|
if (opt.ptermMouse) this._write('\x1b[>1h\x1b[>6h\x1b[>7h\x1b[>1h\x1b[>9l');
|
||||||
|
else this._write('\x1b[>1l\x1b[>6l\x1b[>7l\x1b[>1l\x1b[>9h');
|
||||||
|
}
|
||||||
|
|
||||||
|
// jsbterm mouse
|
||||||
|
if (opt.jsbtermMouse != null) {
|
||||||
|
// + = advanced mode
|
||||||
|
if (opt.jsbtermMouse) this._write('\x1b[0~ZwLMRK+1Q\x1b\\');
|
||||||
|
else this._write('\x1b[0~ZwQ\x1b\\');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// sysmouse
|
||||||
|
// net
|
||||||
|
|
||||||
// gpm mouse
|
// gpm mouse
|
||||||
if (opt.gpmMouse != null) {
|
if (opt.gpmMouse != null) {
|
||||||
if (opt.gpmMouse) this.enableGpm();
|
if (opt.gpmMouse) this.enableGpm();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user