2012-02-27 20:09:35 +01:00
|
|
|
# TTY
|
2010-11-26 04:09:28 +01:00
|
|
|
|
2017-01-23 04:16:21 +01:00
|
|
|
<!--introduced_in=v0.10.0-->
|
|
|
|
|
2016-07-16 00:35:38 +02:00
|
|
|
> Stability: 2 - Stable
|
2012-03-03 00:14:03 +01:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
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:
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
```js
|
|
|
|
const tty = require('tty');
|
|
|
|
```
|
|
|
|
|
|
|
|
When Node.js detects that it is being run inside a text terminal ("TTY")
|
|
|
|
context, the `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`:
|
2011-02-20 22:53:40 +01:00
|
|
|
|
2016-07-09 07:13:09 +02:00
|
|
|
```sh
|
2016-01-17 18:39:07 +01:00
|
|
|
$ node -p -e "Boolean(process.stdout.isTTY)"
|
|
|
|
true
|
|
|
|
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
|
|
|
|
false
|
|
|
|
```
|
2011-02-20 22:53:40 +01:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
In most cases, there should be little to no reason for an application to
|
|
|
|
create instances of the `tty.ReadStream` and `tty.WriteStream` classes.
|
|
|
|
|
|
|
|
## Class: tty.ReadStream
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.5.8
|
|
|
|
-->
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
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.
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
### readStream.isRaw
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.7.7
|
|
|
|
-->
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
A `boolean` that is `true` if the TTY is currently configured to operate as a
|
|
|
|
raw device. Defaults to `false`.
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
### readStream.setRawMode(mode)
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.7.7
|
|
|
|
-->
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-12-06 17:24:26 +01:00
|
|
|
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.
|
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
* `mode` {boolean} If `true`, configures the `tty.ReadStream` to operate as a
|
|
|
|
raw device. If `false`, configures the `tty.ReadStream` to operate in its
|
|
|
|
default mode. The `readStream.isRaw` property will be set to the resulting
|
|
|
|
mode.
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
## Class: tty.WriteStream
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.5.8
|
|
|
|
-->
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
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.
|
2012-03-27 00:21:25 +02:00
|
|
|
|
|
|
|
### Event: 'resize'
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.7.7
|
|
|
|
-->
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
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.
|
2012-03-27 00:21:25 +02:00
|
|
|
|
2016-01-17 18:39:07 +01:00
|
|
|
```js
|
|
|
|
process.stdout.on('resize', () => {
|
|
|
|
console.log('screen size has changed!');
|
|
|
|
console.log(`${process.stdout.columns}x${process.stdout.rows}`);
|
|
|
|
});
|
|
|
|
```
|
2015-08-20 00:37:52 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
### writeStream.columns
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.7.7
|
|
|
|
-->
|
2015-08-20 00:37:52 +02:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
A `number` specifying the number of columns the TTY currently has. This property
|
|
|
|
is updated whenever the `'resize'` event is emitted.
|
2015-11-04 18:33:35 +01:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
### writeStream.rows
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.7.7
|
|
|
|
-->
|
2015-11-04 18:33:35 +01:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
A `number` specifying the number of rows the TTY currently has. This property
|
|
|
|
is updated whenever the `'resize'` event is emitted.
|
2015-11-04 18:33:35 +01:00
|
|
|
|
|
|
|
## tty.isatty(fd)
|
2016-05-16 08:15:46 +02:00
|
|
|
<!-- YAML
|
|
|
|
added: v0.5.8
|
|
|
|
-->
|
2015-11-04 18:33:35 +01:00
|
|
|
|
2016-05-23 18:28:04 +02:00
|
|
|
* `fd` {number} A numeric file descriptor
|
|
|
|
|
|
|
|
The `tty.isatty()` method returns `true` if the given `fd` is associated with
|
2017-09-23 10:40:35 +02:00
|
|
|
a TTY and `false` if it is not, including whenever `fd` is not a non-negative
|
|
|
|
integer.
|