72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
// Test TTY raw mode with xterm-vt100 escape sequences
|
|
var util=require('util');
|
|
function exec(cmds) {
|
|
var top=cmds.shift();
|
|
if (top==undefined) return;
|
|
if (top.write) {
|
|
process.stdout.write(top.write);
|
|
return exec(cmds);
|
|
}
|
|
if (top.sleep) setTimeout(function () {exec(cmds)},top.sleep);
|
|
if (top.exit) {
|
|
process.stdout.write('\x1b[?1000l'); // disable mouse tracking
|
|
console.log('DONE');
|
|
process.stdin.setRawMode(false);
|
|
process.exit();
|
|
}
|
|
}
|
|
process.stdout.write('hello world\n');
|
|
console.log(process.stdout.columns+' * '+process.stdout.rows);
|
|
console.log('Setting raw mode ..')
|
|
process.stdin.setRawMode(true);
|
|
console.log('Installing event listener .. ')
|
|
process.stdin.on('keypress',function (ch,key) {
|
|
console.log('X: '+ch+' <'+key+'>');
|
|
});
|
|
if (process.argv.indexOf('event')!=-1)
|
|
process.stdin.on('data',function (ch) {
|
|
var key={};
|
|
console.log('DATA: <'+ch.length+'>');
|
|
for(var i=0;i<ch.length;i++) console.log(ch[i]);
|
|
//process.stdin.emit('keypress', ch, key);
|
|
});
|
|
//process.stdin.emit('keypress', {}, 'c');
|
|
if (process.argv.indexOf('event')!=-1) console.log('Listening for events ..')
|
|
else console.log('Starting ..')
|
|
|
|
var cmds = [
|
|
{write:'\x1b[?1000h' },// enable mouse tracking
|
|
{write:'\x1b];Test Window\x07'}, // set window title
|
|
{write:'\x1b[2J'}, // erase display
|
|
{sleep:1000},
|
|
{write:'\x1b[2A'}, // move cursor up
|
|
{sleep:1000},
|
|
{write:'\x1b[10;10H'}, // move cursor to 10,10
|
|
{sleep:500},
|
|
{write:'\x1b[44m'}, // set blue background
|
|
{write:'\x1b[37m'}, // set white foreground
|
|
{write:'\x1b[1m'}, // set bold
|
|
{write:' TEXT at (10,10) '}, //
|
|
{sleep:500},
|
|
{write:'\x1b[11;10H'}, // move cursor to 10,11
|
|
{write:'\x1b[41m'}, // set red background
|
|
{write:' TEXT at (10,11)'}, //
|
|
{sleep:500},
|
|
{write:'\x1b[9;10H'}, // move cursor to 10,9
|
|
{write:'\x1b[43m'}, // set blue background
|
|
{write:' TEXT at (10,9)'}, //
|
|
|
|
{write:'\x1b[0m'}, // restore
|
|
{sleep:5000},
|
|
{exit:true}
|
|
]
|
|
|
|
if (process.argv.indexOf('event')!=-1)
|
|
exec([
|
|
{write:'\x1b[?1000h' },
|
|
{sleep:5000},
|
|
{exit:true}
|
|
]);
|
|
else
|
|
exec(cmds);
|