start using tput.

This commit is contained in:
Christopher Jeffrey 2013-02-25 01:14:38 -06:00
parent edf2dfa5dc
commit 55ba68195e
1 changed files with 73 additions and 0 deletions

View File

@ -743,6 +743,7 @@ Program.prototype.esc = function(code) {
// ESC D Index (IND is 0x84). // ESC D Index (IND is 0x84).
Program.prototype.index = function() { Program.prototype.index = function() {
this.y++; this.y++;
if (this.tput) return this.tput.ind(); // indn
return this.write('\x1bD'); return this.write('\x1bD');
}; };
@ -750,6 +751,7 @@ Program.prototype.index = function() {
Program.prototype.reverse = Program.prototype.reverse =
Program.prototype.reverseIndex = function() { Program.prototype.reverseIndex = function() {
this.y--; this.y--;
if (this.tput) return this.tput.ri(); // rin
return this.write('\x1bM'); return this.write('\x1bM');
}; };
@ -757,17 +759,20 @@ Program.prototype.reverseIndex = function() {
Program.prototype.nextLine = function() { Program.prototype.nextLine = function() {
this.y++; this.y++;
this.x = 1; this.x = 1;
if (this.tput) return this.tput.nel();
return this.write('\x1bE'); return this.write('\x1bE');
}; };
// ESC c Full Reset (RIS). // ESC c Full Reset (RIS).
Program.prototype.reset = function() { Program.prototype.reset = function() {
//this.x = this.y = 1; //this.x = this.y = 1;
if (this.tput) return this.tput.ris();
return this.write('\x1bc'); return this.write('\x1bc');
}; };
// ESC H Tab Set (HTS is 0x88). // ESC H Tab Set (HTS is 0x88).
Program.prototype.tabSet = function() { Program.prototype.tabSet = function() {
if (this.tput) return this.tput.hts();
return this.write('\x1bH'); return this.write('\x1bH');
}; };
@ -775,6 +780,7 @@ Program.prototype.tabSet = function() {
Program.prototype.saveCursor = function() { Program.prototype.saveCursor = function() {
this.savedX = this.x || 1; this.savedX = this.x || 1;
this.savedY = this.y || 1; this.savedY = this.y || 1;
if (this.tput) return this.tput.decsc();
return this.esc('7'); return this.esc('7');
}; };
@ -782,6 +788,7 @@ Program.prototype.saveCursor = function() {
Program.prototype.restoreCursor = function() { Program.prototype.restoreCursor = function() {
this.x = this.savedX || 1; this.x = this.savedX || 1;
this.y = this.savedY || 1; this.y = this.savedY || 1;
if (this.tput) return this.tput.decrc();
return this.esc('8'); return this.esc('8');
}; };
@ -794,6 +801,8 @@ Program.prototype.lineHeight = function() {
Program.prototype.charset = function(val, level) { Program.prototype.charset = function(val, level) {
level = level || 0; level = level || 0;
if (this.tput) return this.tput['s' + level](val);
switch (level) { switch (level) {
case 0: case 0:
level = '('; level = '(';
@ -880,6 +889,7 @@ Program.prototype.charset = function(val, level) {
// ESC ~ // ESC ~
// Invoke the G1 Character Set as GR (LS1R). // Invoke the G1 Character Set as GR (LS1R).
Program.prototype.setG = function(val) { Program.prototype.setG = function(val) {
// tput: TODO
switch (val) { switch (val) {
case 1: case 1:
val = '~'; // GR val = '~'; // GR
@ -927,6 +937,7 @@ Program.prototype.cuu =
Program.prototype.up = Program.prototype.up =
Program.prototype.cursorUp = function(param) { Program.prototype.cursorUp = function(param) {
this.y -= param || 1; this.y -= param || 1;
if (this.tput) return this.tput.cuu(param);
return this.write('\x1b[' + (param || '') + 'A'); return this.write('\x1b[' + (param || '') + 'A');
}; };
@ -936,6 +947,7 @@ Program.prototype.cud =
Program.prototype.down = Program.prototype.down =
Program.prototype.cursorDown = function(param) { Program.prototype.cursorDown = function(param) {
this.y += param || 1; this.y += param || 1;
if (this.tput) return this.tput.cud(param);
return this.write('\x1b[' + (param || '') + 'B'); return this.write('\x1b[' + (param || '') + 'B');
}; };
@ -946,6 +958,7 @@ Program.prototype.right =
Program.prototype.forward = Program.prototype.forward =
Program.prototype.cursorForward = function(param) { Program.prototype.cursorForward = function(param) {
this.x += param || 1; this.x += param || 1;
if (this.tput) return this.tput.cuf(param);
return this.write('\x1b[' + (param || '') + 'C'); return this.write('\x1b[' + (param || '') + 'C');
}; };
@ -956,6 +969,7 @@ Program.prototype.left =
Program.prototype.back = Program.prototype.back =
Program.prototype.cursorBackward = function(param) { Program.prototype.cursorBackward = function(param) {
this.x -= param || 1; this.x -= param || 1;
if (this.tput) return this.tput.cub(param);
return this.write('\x1b[' + (param || '') + 'D'); return this.write('\x1b[' + (param || '') + 'D');
}; };
@ -966,6 +980,7 @@ Program.prototype.pos =
Program.prototype.cursorPos = function(row, col) { Program.prototype.cursorPos = function(row, col) {
this.x = col || 1; this.x = col || 1;
this.y = row || 1; this.y = row || 1;
if (this.tput) return this.tput.cup(row, col);
return this.write('\x1b[' + (row || '1') + ';' + (col || '1') + 'H'); return this.write('\x1b[' + (row || '1') + ';' + (col || '1') + 'H');
}; };
@ -981,6 +996,24 @@ Program.prototype.cursorPos = function(row, col) {
// Ps = 2 -> Selective Erase All. // Ps = 2 -> Selective Erase All.
Program.prototype.ed = Program.prototype.ed =
Program.prototype.eraseInDisplay = function(param) { Program.prototype.eraseInDisplay = function(param) {
if (this.tput) {
switch (param) {
case 'above':
param = 1;
break;
case 'all':
param = 2;
break;
case 'saved':
param = 3;
break;
case 'below':
default:
param = null;
break;
}
return this.tput.ed(param);
}
switch (param) { switch (param) {
case 'above': case 'above':
this.write('\x1b[1J'); this.write('\x1b[1J');
@ -1013,6 +1046,21 @@ Program.prototype.clear = function() {
// Ps = 2 -> Selective Erase All. // Ps = 2 -> Selective Erase All.
Program.prototype.el = Program.prototype.el =
Program.prototype.eraseInLine = function(param) { Program.prototype.eraseInLine = function(param) {
if (this.tput) {
switch (param) {
case 'left':
param = 1;
break;
case 'all':
param = 2;
break;
case 'right':
default:
param = null;
break;
}
return this.tput.el(param);
}
switch (param) { switch (param) {
case 'left': case 'left':
this.write('\x1b[1K'); this.write('\x1b[1K');
@ -1394,6 +1442,7 @@ Program.prototype.getCursor = function(callback) {
Program.prototype.ich = Program.prototype.ich =
Program.prototype.insertChars = function(param) { Program.prototype.insertChars = function(param) {
this.x += param || 1; this.x += param || 1;
if (this.tput) return this.tput.ich(param);
return this.write('\x1b[' + (param || 1) + '@'); return this.write('\x1b[' + (param || 1) + '@');
}; };
@ -1421,6 +1470,7 @@ Program.prototype.cha =
Program.prototype.cursorCharAbsolute = function(param) { Program.prototype.cursorCharAbsolute = function(param) {
this.x = param || 1; this.x = param || 1;
this.y = 1; this.y = 1;
if (this.tput) return this.tput.cha(param);
return this.write('\x1b[' + (param || '') + 'G'); return this.write('\x1b[' + (param || '') + 'G');
}; };
@ -1428,6 +1478,7 @@ Program.prototype.cursorCharAbsolute = function(param) {
// Insert Ps Line(s) (default = 1) (IL). // Insert Ps Line(s) (default = 1) (IL).
Program.prototype.il = Program.prototype.il =
Program.prototype.insertLines = function(param) { Program.prototype.insertLines = function(param) {
if (this.tput) return this.tput.il(param);
return this.write('\x1b[' + (param || '') + 'L'); return this.write('\x1b[' + (param || '') + 'L');
}; };
@ -1435,6 +1486,7 @@ Program.prototype.insertLines = function(param) {
// Delete Ps Line(s) (default = 1) (DL). // Delete Ps Line(s) (default = 1) (DL).
Program.prototype.dl = Program.prototype.dl =
Program.prototype.deleteLines = function(param) { Program.prototype.deleteLines = function(param) {
if (this.tput) return this.tput.dl(param);
return this.write('\x1b[' + (param || '') + 'M'); return this.write('\x1b[' + (param || '') + 'M');
}; };
@ -1442,6 +1494,7 @@ Program.prototype.deleteLines = function(param) {
// Delete Ps Character(s) (default = 1) (DCH). // Delete Ps Character(s) (default = 1) (DCH).
Program.prototype.dch = Program.prototype.dch =
Program.prototype.deleteChars = function(param) { Program.prototype.deleteChars = function(param) {
if (this.tput) return this.tput.dch(param);
return this.write('\x1b[' + (param || '') + 'P'); return this.write('\x1b[' + (param || '') + 'P');
}; };
@ -1449,6 +1502,7 @@ Program.prototype.deleteChars = function(param) {
// Erase Ps Character(s) (default = 1) (ECH). // Erase Ps Character(s) (default = 1) (ECH).
Program.prototype.ech = Program.prototype.ech =
Program.prototype.eraseChars = function(param) { Program.prototype.eraseChars = function(param) {
if (this.tput) return this.tput.ech(param);
return this.write('\x1b[' + (param || '') + 'X'); return this.write('\x1b[' + (param || '') + 'X');
}; };
@ -1457,6 +1511,7 @@ Program.prototype.eraseChars = function(param) {
Program.prototype.hpa = Program.prototype.hpa =
Program.prototype.charPosAbsolute = function() { Program.prototype.charPosAbsolute = function() {
this.x = arguments[0] || 1; this.x = arguments[0] || 1;
if (this.tput) return this.tput.hpa.apply(this.tput, arguments);
var param = Array.prototype.slice.call(arguments).join(';'); var param = Array.prototype.slice.call(arguments).join(';');
return this.write('\x1b[' + (param || '') + '`'); return this.write('\x1b[' + (param || '') + '`');
}; };
@ -1467,6 +1522,7 @@ Program.prototype.charPosAbsolute = function() {
Program.prototype.hpr = Program.prototype.hpr =
Program.prototype.HPositionRelative = function(param) { Program.prototype.HPositionRelative = function(param) {
this.x += param || 1; this.x += param || 1;
if (this.tput) return this.tput.hpr(param);
return this.write('\x1b[' + (param || '') + 'a'); return this.write('\x1b[' + (param || '') + 'a');
}; };
@ -1521,6 +1577,7 @@ Program.prototype.sendDeviceAttributes = function(param, callback) {
Program.prototype.vpa = Program.prototype.vpa =
Program.prototype.linePosAbsolute = function() { Program.prototype.linePosAbsolute = function() {
this.y = arguments[0] || 1; this.y = arguments[0] || 1;
if (this.tput) return this.tput.vpa.apply(this.tput, arguments);
var param = Array.prototype.slice.call(arguments).join(';'); var param = Array.prototype.slice.call(arguments).join(';');
return this.write('\x1b[' + (param || '') + 'd'); return this.write('\x1b[' + (param || '') + 'd');
}; };
@ -1530,6 +1587,7 @@ Program.prototype.linePosAbsolute = function() {
Program.prototype.vpr = Program.prototype.vpr =
Program.prototype.VPositionRelative = function(param) { Program.prototype.VPositionRelative = function(param) {
this.y += param || 1; this.y += param || 1;
if (this.tput) return this.tput.vpr(param);
return this.write('\x1b[' + (param || '') + 'e'); return this.write('\x1b[' + (param || '') + 'e');
}; };
@ -1540,6 +1598,7 @@ Program.prototype.hvp =
Program.prototype.HVPosition = function(row, col) { Program.prototype.HVPosition = function(row, col) {
this.y += row || 1; this.y += row || 1;
this.x += col || 1; this.x += col || 1;
if (this.tput) return this.tput.hvp(row, col);
return this.write('\x1b[' + (row || '1') + ';' + (col || '1') + 'f'); return this.write('\x1b[' + (row || '1') + ';' + (col || '1') + 'f');
}; };
@ -1629,6 +1688,7 @@ Program.prototype.HVPosition = function(row, col) {
// http://vt100.net/docs/vt220-rm/chapter4.html // http://vt100.net/docs/vt220-rm/chapter4.html
Program.prototype.sm = Program.prototype.sm =
Program.prototype.setMode = function() { Program.prototype.setMode = function() {
// tput: TODO
var param = Array.prototype.slice.call(arguments).join(';'); var param = Array.prototype.slice.call(arguments).join(';');
//if (private) { //if (private) {
// return this.write('\x1b[?' + (param || '') + 'h'); // return this.write('\x1b[?' + (param || '') + 'h');
@ -1735,6 +1795,7 @@ Program.prototype.alternateBuffer = function() {
// Ps = 2 0 0 4 -> Reset bracketed paste mode. // Ps = 2 0 0 4 -> Reset bracketed paste mode.
Program.prototype.rm = Program.prototype.rm =
Program.prototype.resetMode = function() { Program.prototype.resetMode = function() {
// tput: TODO
var param = Array.prototype.slice.call(arguments).join(';'); var param = Array.prototype.slice.call(arguments).join(';');
//if (private) { //if (private) {
// return this.write('\x1b[?' + (param || '') + 'l'); // return this.write('\x1b[?' + (param || '') + 'l');
@ -1876,6 +1937,7 @@ Program.prototype.setScrollRegion = function(top, bottom) {
this.scrollBottom = (bottom || this.rows) - 1; this.scrollBottom = (bottom || this.rows) - 1;
this.x = 1; this.x = 1;
this.y = 1; this.y = 1;
if (this.tput) return this.tput.csr(top - 1, bottom - 1);
return this.write('\x1b[' + (top || 1) + ';' + (bottom || this.rows) + 'r'); return this.write('\x1b[' + (top || 1) + ';' + (bottom || this.rows) + 'r');
}; };
@ -1884,6 +1946,7 @@ Program.prototype.setScrollRegion = function(top, bottom) {
Program.prototype.saveCursor = function() { Program.prototype.saveCursor = function() {
this.savedX = this.x; this.savedX = this.x;
this.savedY = this.y; this.savedY = this.y;
if (this.tput) return this.tput.sc();
return this.write('\x1b[s'); return this.write('\x1b[s');
}; };
@ -1892,6 +1955,7 @@ Program.prototype.saveCursor = function() {
Program.prototype.restoreCursor = function() { Program.prototype.restoreCursor = function() {
this.x = this.savedX || 1; this.x = this.savedX || 1;
this.y = this.savedY || 1; this.y = this.savedY || 1;
if (this.tput) return this.tput.rc();
return this.write('\x1b[u'); return this.write('\x1b[u');
}; };
@ -1904,6 +1968,7 @@ Program.prototype.restoreCursor = function() {
Program.prototype.cht = Program.prototype.cht =
Program.prototype.cursorForwardTab = function(param) { Program.prototype.cursorForwardTab = function(param) {
this.x += 8; this.x += 8;
if (this.tput) return this.tput.cht(param);
return this.write('\x1b[' + (param || 1) + 'I'); return this.write('\x1b[' + (param || 1) + 'I');
}; };
@ -1911,6 +1976,7 @@ Program.prototype.cursorForwardTab = function(param) {
Program.prototype.su = Program.prototype.su =
Program.prototype.scrollUp = function(param) { Program.prototype.scrollUp = function(param) {
this.y -= param || 1; this.y -= param || 1;
if (this.tput) return this.tput.su(param);
return this.write('\x1b[' + (param || 1) + 'I'); return this.write('\x1b[' + (param || 1) + 'I');
}; };
@ -1918,6 +1984,7 @@ Program.prototype.scrollUp = function(param) {
Program.prototype.sd = Program.prototype.sd =
Program.prototype.scrollDown = function(param) { Program.prototype.scrollDown = function(param) {
this.y += param || 1; this.y += param || 1;
if (this.tput) return this.tput.sd(param);
return this.write('\x1b[' + (param || 1) + 'T'); return this.write('\x1b[' + (param || 1) + 'T');
}; };
@ -1948,6 +2015,7 @@ Program.prototype.resetTitleModes = function() {
Program.prototype.cbt = Program.prototype.cbt =
Program.prototype.cursorBackwardTab = function(param) { Program.prototype.cursorBackwardTab = function(param) {
this.x -= 8; this.x -= 8;
if (this.tput) return this.tput.cbt(param);
return this.write('\x1b[' + (param || 1) + 'Z'); return this.write('\x1b[' + (param || 1) + 'Z');
}; };
@ -1955,6 +2023,7 @@ Program.prototype.cursorBackwardTab = function(param) {
Program.prototype.rep = Program.prototype.rep =
Program.prototype.repeatPrecedingCharacter = function(param) { Program.prototype.repeatPrecedingCharacter = function(param) {
//this.x += param || 1; //this.x += param || 1;
if (this.tput) return this.tput.rep(param);
return this.write('\x1b[' + (param || 1) + 'b'); return this.write('\x1b[' + (param || 1) + 'b');
}; };
@ -1966,6 +2035,7 @@ Program.prototype.repeatPrecedingCharacter = function(param) {
// http://vt100.net/annarbor/aaa-ug/section6.html // http://vt100.net/annarbor/aaa-ug/section6.html
Program.prototype.tbc = Program.prototype.tbc =
Program.prototype.tabClear = function(param) { Program.prototype.tabClear = function(param) {
if (this.tput) return this.tput.tbc(param);
return this.write('\x1b[' + (param || 0) + 'g'); return this.write('\x1b[' + (param || 0) + 'g');
}; };
@ -1982,6 +2052,7 @@ Program.prototype.tabClear = function(param) {
// Ps = 1 1 -> Print all pages. // Ps = 1 1 -> Print all pages.
Program.prototype.mc = Program.prototype.mc =
Program.prototype.mediaCopy = function() { Program.prototype.mediaCopy = function() {
if (this.tput) return this.tput.mc.apply(this.tput, arguments);
//if (dec) { //if (dec) {
// this.write('\x1b[?' + Array.prototype.slice.call(arguments).join(';') + 'i'); // this.write('\x1b[?' + Array.prototype.slice.call(arguments).join(';') + 'i');
// return; // return;
@ -2430,6 +2501,8 @@ Program.prototype.selectiveEraseRectangle = function(params) {
// ted. // ted.
Program.prototype.decrqlp = Program.prototype.decrqlp =
Program.prototype.requestLocatorPosition = function(params, callback) { Program.prototype.requestLocatorPosition = function(params, callback) {
// Correct for tput?
// if (this.tput) return this.tput.req_mouse_pos.apply(this.tput, arguments);
return this.receive('\x1b[' + (param || '') + '\'|', callback); return this.receive('\x1b[' + (param || '') + '\'|', callback);
}; };