Mon 21 Jul 22:43:21 CEST 2025

This commit is contained in:
sbosse 2025-07-21 23:10:37 +02:00
parent 3eb7f9ecdc
commit 031e91f9ae

71
js/term/ttyrawtest.js Normal file
View 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);