Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
parent
3eb7f9ecdc
commit
031e91f9ae
71
js/term/ttyrawtest.js
Normal file
71
js/term/ttyrawtest.js
Normal file
|
@ -0,0 +1,71 @@
|
|||
// 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);
|
Loading…
Reference in New Issue
Block a user