mirror of
https://github.com/embarklabs/neo-blessed.git
synced 2025-01-23 01:09:32 +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.');
|
||||
}
|
||||
|
||||
// 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
|
||||
this.input.on('keypress', function(ch, key) {
|
||||
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
|
||||
// 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
|
||||
@ -699,6 +715,24 @@ Program.prototype._bindMouse = function(s, buf) {
|
||||
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)) {
|
||||
key.action = parts[1] === 'I'
|
||||
? 'focus'
|
||||
@ -1233,7 +1267,7 @@ Program.prototype._bindResponse = function(s) {
|
||||
// Ps = 2 1 -> Report xterm window's title. Result is OSC l
|
||||
// label ST
|
||||
if (parts = /^\x1b\](l|L)([^\x07\x1b]*)(?:\x07|\x1b\\)/.exec(s)) {
|
||||
out.type = 'window-manipulation';
|
||||
out.event = 'window-manipulation';
|
||||
out.code = '';
|
||||
|
||||
if (parts[1] === 'L') {
|
||||
@ -1367,6 +1401,8 @@ Program.prototype._bindResponse = function(s) {
|
||||
};
|
||||
|
||||
Program.prototype.response = function(name, text, callback) {
|
||||
var self = this;
|
||||
|
||||
if (arguments.length === 2) {
|
||||
callback = text;
|
||||
text = name;
|
||||
@ -1395,6 +1431,7 @@ Program.prototype.response = function(name, text, callback) {
|
||||
|
||||
var timeout = setTimeout(function() {
|
||||
self.removeListener(name, onresponse);
|
||||
return callback(new Error('Timeout.'));
|
||||
}, 2000);
|
||||
|
||||
return this._write(text);
|
||||
@ -2883,6 +2920,15 @@ Program.prototype.enableMouse = function() {
|
||||
case 'X10MOUSE':
|
||||
options.x10Mouse = v;
|
||||
break;
|
||||
case 'DECMOUSE':
|
||||
options.decMouse = v;
|
||||
break;
|
||||
case 'PTERMMOUSE':
|
||||
options.ptermMouse = v;
|
||||
break;
|
||||
case 'JSBTERMMOUSE':
|
||||
options.jsbtermMouse = v;
|
||||
break;
|
||||
case 'VT200HILITE':
|
||||
options.vt200Hilite = v;
|
||||
break;
|
||||
@ -3054,6 +3100,29 @@ Program.prototype.setMouse = function(opt, enable) {
|
||||
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
|
||||
if (opt.gpmMouse != null) {
|
||||
if (opt.gpmMouse) this.enableGpm();
|
||||
|
Loading…
x
Reference in New Issue
Block a user