- Assertion Testing
- Async Hooks
- Buffer
- C++ Addons
- C/C++ Addons - N-API
- Child Processes
- Cluster
- Command Line Options
- Console
- Crypto
- Debugger
- Deprecated APIs
- DNS
- Domain
- ECMAScript Modules
- Errors
- Events
- File System
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules
- Net
- OS
- Path
- Performance Hooks
- Process
- Punycode
- Query Strings
- Readline
- REPL
- Stream
- String Decoder
- Timers
- TLS/SSL
- Tracing
- TTY
- UDP/Datagram
- URL
- Utilities
- V8
- VM
- ZLIB
Node.js v8.11.2-test33c8647936e120b0f24c6d04841e96ab69919abb Documentation
Table of Contents
TTY#
The tty
module provides the tty.ReadStream
and tty.WriteStream
classes.
In most cases, it will not be necessary or possible to use this module directly.
However, it can be accessed using:
const tty = require('tty');
When Node.js detects that it is being run with a text terminal ("TTY")
attached, process.stdin
will, by default, be initialized as an instance of
tty.ReadStream
and both process.stdout
and process.stderr
will, by
default be instances of tty.WriteStream
. The preferred method of determining
whether Node.js is being run within a TTY context is to check that the value of
the process.stdout.isTTY
property is true
:
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false
In most cases, there should be little to no reason for an application to
manually create instances of the tty.ReadStream
and tty.WriteStream
classes.
Class: tty.ReadStream#
The tty.ReadStream
class is a subclass of net.Socket
that represents the
readable side of a TTY. In normal circumstances process.stdin
will be the
only tty.ReadStream
instance in a Node.js process and there should be no
reason to create additional instances.
readStream.isRaw#
A boolean
that is true
if the TTY is currently configured to operate as a
raw device. Defaults to false
.
readStream.isTTY#
A boolean
that is always true
for tty.ReadStream
instances.
readStream.setRawMode(mode)#
Allows configuration of tty.ReadStream
so that it operates as a raw device.
When in raw mode, input is always available character-by-character, not
including modifiers. Additionally, all special processing of characters by the
terminal is disabled, including echoing input characters.
Note that CTRL
+C
will no longer cause a SIGINT
when in this mode.
mode
<boolean> Iftrue
, configures thetty.ReadStream
to operate as a raw device. Iffalse
, configures thetty.ReadStream
to operate in its default mode. ThereadStream.isRaw
property will be set to the resulting mode.
Class: tty.WriteStream#
The tty.WriteStream
class is a subclass of net.Socket
that represents the
writable side of a TTY. In normal circumstances, process.stdout
and
process.stderr
will be the only tty.WriteStream
instances created for a
Node.js process and there should be no reason to create additional instances.
Event: 'resize'#
The 'resize'
event is emitted whenever either of the writeStream.columns
or writeStream.rows
properties have changed. No arguments are passed to the
listener callback when called.
process.stdout.on('resize', () => {
console.log('screen size has changed!');
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
});
writeStream.columns#
A number
specifying the number of columns the TTY currently has. This property
is updated whenever the 'resize'
event is emitted.
writeStream.isTTY#
A boolean
that is always true
.
writeStream.rows#
A number
specifying the number of rows the TTY currently has. This property
is updated whenever the 'resize'
event is emitted.
tty.isatty(fd)#
fd
<number> A numeric file descriptor
The tty.isatty()
method returns true
if the given fd
is associated with
a TTY and false
if it is not, including whenever fd
is not a non-negative
integer.