Node.js TTY
Node.js TTY
When we say about the Node.js TTY, this module contains TTY.ReadStream and TTY.WriteStream classes. And when we say about the most cases, there is no need to use this module directly.
And you have to use require('tty') to access this module.
Syntax:-
var tty = require('tty');
When Node.js discovers that it is being run inside a TTY context, then:
- Well process.stdin will be a tty.ReadStream instance
- Well process.stdout will be a tty.WriteStream instance
And to check that if Node.js is running in a TTY context, we use the following command:
node -p -e "Boolean(process.stdout.isTTY)"
Class: ReadStream
This will contains a net.Socket subclass which represents the readable portion of a tty. And when we say about the normal circumstances, tt.ReadStream has the only instance named process.stdin in any Node.js program (only when isatty(0) is true).
rs.isRawThis is a Boolean which is initialized to false. This will specifies the current "raw" state of the tty.ReadStream instance.
rs.setRawMode(mode):This is true or false. And it is used to set the properties of the tty.ReadStream to act either as a raw device or default. isRaw will be set to the resulting mode.
Class: WriteStream
This will contains a net.Socket subclass which will represents the writable portion of a tty. And in normal circumstances, tty.WriteStream has the only instance named process.stdout in any of Node.js program (only when isatty(1) is true).
Resize event:This event is used when either of the columns or rows properties has changed.
Syntax:
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
ws.columns:This is used to give the number of columns TTY currently have. ANd this property gets updated on 'resize' events.
ws.rows:This is used to give the number of rows the TTY currently have. And this property gets updated on 'resize' events.
Node.js TTY Example
File: tty.js
var tty = require('tty');
process.stdin.setRawMode(true);
process.stdin.resume();
console.log('Test for TTY:- How are you');
process.stdin.on('keypress', function(char, key) {
if (key && key.ctrl && key.name == 'c') {
process.exit()
}
});
Output: