4BSD/usr/man/cat4/tty.4
TTY(4) UNIX Programmer's Manual TTY(4)
NAME
tty - general terminal interface
DESCRIPTION
This section describes both a particular special file
/dev/tty and the terminal drivers used for conversational
computing.
Line disciplines.
The system provides different _l_i_n_e _d_i_s_c_i_p_l_i_n_e_s for control-
ling communications lines. In this version of the system
there are three disciplines available:
old The old (standard) terminal driver. This is used
when using the standard shell _s_h(1) and for compati-
bility with other standard version 7 UNIX systems.
new A newer terminal driver, with features for job con-
trol; this must be used when using _c_s_h(1). See
_n_e_w_t_t_y(1) for a short user-level summary.
net A line discipline used for networking and loading
data into the system over communications lines. It
allows high speed input at very low overhead, and is
described in _b_k(4).
Line discipline switching is accomplished with the TIOCSETD
_i_o_c_t_l:
int ldisc = LDISC; ioctl(filedes, TIOCSETD, &ldisc);
where LDISC is OTTYDISC for the standard tty driver,
NTTYDISC for the new driver and NETLDISC for the networking
discipline. The standard (currently old) tty driver is dis-
cipline 0 by convention. The current line discipline can be
obtained with the TIOCGETD ioctl. Pending input is dis-
carded when the line discipline is changed.
All of the low-speed asynchronous communications ports can
use any of the available line disciplines, no matter what
hardware is involved. The remainder of this section
discusses the "old" and "new" disciplines.
The control terminal.
When a terminal file is opened, it causes the process to
wait until a connection is established. In practice, user
programs seldom open these files; they are opened by _i_n_i_t(8)
and become a user's standard input and output file.
Printed 11/10/80 1
TTY(4) UNIX Programmer's Manual TTY(4)
If a process which has no control terminal opens a terminal
file, then that terminal file becomes the control terminal
for that process. The control terminal is thereafter inher-
ited by a child process during a _f_o_r_k(2), even if the con-
trol terminal is closed.
The file /dev/tty is, in each process, a synonym for a _c_o_n_-
_t_r_o_l _t_e_r_m_i_n_a_l associated with that process. It is useful
for programs that wish to be sure of writing messages on the
terminal no matter how output has been redirected. It can
also be used for programs that demand a file name for out-
put, when typed output is desired and it is tiresome to find
out which terminal is currently in use.
Process groups.
As described more completely in _j_o_b_s(3), command processors
such as _c_s_h(1) can arbitrate the terminal between different
_j_o_b_s by placing related jobs in a single process group and
associating this process group with the terminal. A termi-
nals associated process group may be set using the TIOCSPGRP
_i_o_c_t_l(2):
ioctl(fildes, TIOCSPGRP, &pgrp)
or examined using TIOCGPGRP rather than TIOCSPGRP, returning
the current process group in _p_g_r_p. The new terminal driver
aids in this arbitration by restricting access to the termi-
nal by processes which are not in the current process group;
see Job access control below.
Modes.
The terminal drivers have three major modes, characterized
by the amount of processing on the input and output charac-
ters:
cooked The normal mode. In this mode lines of input are
collected and input editing is done. The edited
line is made available when it is completed by a
newline or when an EOT (control-D, hereafter ^D)
is entered. A carriage return is usually made
synonymous with newline in this mode, and replaced
with a newline whenever it is typed. All driver
functions (input editing, interrupt generation,
output processing such as delay generation and tab
expansion, etc.) are available in this mode.
CBREAK This mode eliminates the character, word, and line
editing input facilities, making the input charac-
ter available to the user program as it is typed.
Flow control, literal-next and interrupt
Printed 11/10/80 2
TTY(4) UNIX Programmer's Manual TTY(4)
processing are still done in this mode. Output
processing is done.
RAW This mode eliminates all input processing and
makes all input characters available as they are
typed; no output processing is done either.
The style of input processing can also be very different
when, in the new terminal driver, a process asks for notifi-
cation via a SIGTTIN _s_i_g_n_a_l(2) when input is ready to be
read from the control terminal. In this case a _r_e_a_d(2) from
the control terminal will never block, but rather return an
error indication (EIO) if there is no input available.
Input editing.
A UNIX terminal ordinarily operates in full-duplex mode.
Characters may be typed at any time, even while output is
occurring, and are only lost when the system's character
input buffers become completely choked, which is rare, or
when the user has accumulated the maximum allowed number of
input characters that have not yet been read by some pro-
gram. Currently this limit is 256 characters. In the old
terminal driver all the saved characters are thrown away
when the limit is reached, without notice; the new driver
simply refuses to accept any further input, and rings the
terminal bell.
Input characters are normally accepted in either even or odd
parity with the parity bit being stripped off before the
character is given to the program. By clearing either the
EVEN or ODD bit in the flags word it is possible to have
input characters with that parity discarded (see the Summary
below.)
In all of the line disciplines, it is possible to simulate
terminal input using the TIOCSTI ioctl, which takes, as its
third argument, the address of a character. The system pre-
tends that this character was typed on the argument termi-
nal, which must be the control terminal except for the
super-user (this call is not in standard version 7 UNIX)..
Input characters are normally echoed by putting them in an
output queue as they arrive. This may be disabled by clear-
ing the ECHO bit in the flags word using the _s_t_t_y(2) call or
the TIOCSETN or TIOCSETP ioctls (see the Summary below).
In cooked mode, terminal input is processed in units of
lines. A program attempting to read will normally be
suspended until an entire line has been received (but see
the description of SIGTTIN in Modes above and FIONREAD in
Summary below.) No matter how many characters are requested
Printed 11/10/80 3
TTY(4) UNIX Programmer's Manual TTY(4)
in the read call, at most one line will be returned. It is
not, however, necessary to read a whole line at once; any
number of characters may be requested in a read, even one,
without losing information.
During input, line editing is normally done, with the char-
acter `#' logically erasing the last character typed and the
character `@' logically erasing the entire current input
line. These are often reset on crt's, with ^H replacing #,
and ^U replacing @. These characters never erase beyond the
beginning of the current input line or an ^D. These charac-
ters may be entered literally by preceding them with `\'; in
the old teletype driver both the `\' and the character
entered literally will appear on the screen; in the new
driver the `\' will normally disappear.
The drivers normally treat either a carriage return or a
newline character as terminating an input line, replacing
the return with a newline and echoing a return and a line
feed. If the CRMOD bit is cleared in the local mode word
then the processing for carriage return is disabled, and it
is simply echoed as a return, and does not terminate cooked
mode input.
In the new driver there is a literal-next character ^V which
can be typed in both cooked and CBREAK mode preceding any
character to prevent its special meaning. This is to be
preferred to the use of `\' escaping erase and kill charac-
ters, but `\' is (at least temporarily) retained with its
old function in the new driver for historical reasons.
The new terminal driver also provides two other editing
characters in normal mode. The word-erase character, nor-
mally ^W, erases the preceding word, but not any spaces
before it. For the purposes of ^W, a word is defined as a
sequence of non-blank characters, with tabs counted as
blanks. Finally, the reprint character, normally ^R,
retypes the pending input beginning on a new line. Retyping
occurs automagically in cooked mode if characters which
would normally be erased from the screen are fouled by pro-
gram output.
Input echoing and redisplay
In the old terminal driver, nothing special occurs when an
erase character is typed; the erase character is simply
echoed. When a kill character is typed it is echoed fol-
lowed by a new-line (even if the character is not killing
the line, because it was preceded by a `\'!.)
The new terminal driver has several modes for handling the
echoing of terminal input, controlled by bits in a local
Printed 11/10/80 4
TTY(4) UNIX Programmer's Manual TTY(4)
mode word.
_H_a_r_d_c_o_p_y _t_e_r_m_i_n_a_l_s. When a hardcopy terminal is in use, the
LPRTERA bit is normally set in the local mode word. Charac-
ters which are logically erased are then printed out back-
wards preceded by `\' and followed by `/' in this mode.
_C_r_t _t_e_r_m_i_n_a_l_s. When a crt terminal is in use, the LCRTBS bit
is normally set in the local mode word. The terminal driver
then echoes the proper number of erase characters when input
is erased; in the normal case where the erase character is a
^H this causes the cursor of the terminal to back up to
where it was before the logically erased character was
typed. If the input has become fouled due to interspersed
asynchronous output, the input is automagically retyped.
_E_r_a_s_i_n_g _c_h_a_r_a_c_t_e_r_s _f_r_o_m _a _c_r_t. When a crt terminal is in
use, the LCRTERA bit may be set to cause input to be erased
from the screen with a "backspace-space-backspace" sequence
when character or word deleting sequences are used. A
LCRTKIL bit may be set as well, causing the input to be
erased in this manner on line kill sequences as well.
_E_c_h_o_i_n_g _o_f _c_o_n_t_r_o_l _c_h_a_r_a_c_t_e_r_s. If the LCTLECH bit is set in
the local state word, then non-printing (control) characters
are normally echoed as ^X (for some X) rather than being
echoed unmodified; delete is echoed as ^?.
The normal modes for using the new terminal driver on crt
terminals are speed dependent. At speeds less than 1200
baud, the LCRTERA and LCRTKILL processing is painfully slow,
so _s_t_t_y(1) normally just sets LCRTBS and LCTLECH; at speeds
of 1200 baud or greater all of these bits are normally set.
_S_t_t_y(1) summarizes these option settings and the use of the
new terminal driver as "newcrt."
Output processing.
When one or more characters are written, they are actually
transmitted to the terminal as soon as previously-written
characters have finished typing. (As noted above, input
characters are normally echoed by putting them in the output
queue as they arrive.) When a process produces characters
more rapidly than they can be typed, it will be suspended
when its output queue exceeds some limit. When the queue
has drained down to some threshold the program is resumed.
Even parity is normally generated on output. The EOT char-
acter is not transmitted in cooked mode to prevent terminals
that respond to it from hanging up; programs using raw or
cbreak mode should be careful.
Printed 11/10/80 5
TTY(4) UNIX Programmer's Manual TTY(4)
The terminal drivers provide necessary processing for cooked
and CBREAK mode output including delay generation for cer-
tain special characters and parity generation. Delays are
available after backspaces ^H, form feeds ^L, carriage
returns ^M, tabs ^I and newlines ^J. The driver will also
optionally expand tabs into spaces, where the tab stops are
assumed to be set every eight columns. These functions are
controlled by bits in the tty flags word; see Summary below.
The terminal drivers provide for mapping between upper and
lower case on terminals lacking lower case, and for other
special processing on deficient terminals.
Finally, in the new terminal driver, there is a output flush
character, normally ^O, which sets the LFLUSHO bit in the
local mode word, causing subsequent output to be flushed
until it is cleared by a program or more input is typed.
This character has effect in both cooked and CBREAK modes
and causes pending input to be retyped if there is any pend-
ing input. Ioctls to flush the characters in the input and
output queues TIOCFLUSH, and to return the number of charac-
ter still in the output queue TIOCOUTQ are also available.
Upper case terminals and Hazeltines
If the LCASE bit is set in the tty flags, then all upper-
case letters are mapped into the corresponding lower-case
letter. The upper-case letter may be generated by preceding
it by `\'. If the new terminal driver is being used, then
upper case letters are preceded by a `\' when output. In
addition, the following escape sequences can be generated on
output and accepted on input:
for ` | ~ { }
use \' \! \^ \( \)
To deal with Hazeltine terminals, which do not understand
that ~ has been made into an ASCII character, the LTILDE bit
may be set in the local mode word when using the new termi-
nal driver; in this case the character ~ will be replaced
with the character ` on output.
Flow control.
There are two characters (the stop character, normally ^S,
and the start character, normally ^Q) which cause output to
be suspended and resumed respectively. Extra stop charac-
ters typed when output is already stopped have no effect,
unless the start and stop characters are made the same, in
which case output resumes.
Printed 11/10/80 6
TTY(4) UNIX Programmer's Manual TTY(4)
A bit in the flags word may be set to put the terminal into
TANDEM mode. In this mode the system produces a stop char-
acter (default ^S) when the input queue is in danger of
overflowing, and a start character (default ^Q) when the
input has drained sufficiently. This mode is useful when
the terminal is actually another machine that obeys the con-
ventions.
Line control and breaks.
There are several _i_o_c_t_l calls available to control the state
of the terminal line. The TIOCSBRK ioctl will set the break
bit in the hardware interface causing a break condition to
exist; this can be cleared (usually after a delay with
_s_l_e_e_p(3)) by TIOCCBRK. Break conditions in the input are
reflected as a null character in RAW mode or as the inter-
rupt character in cooked or CBREAK mode. The TIOCCDTR ioctl
will clear the data terminal ready condition; it can be set
again by TIOCSDTR.
When the carrier signal from the dataset drops (usually
because the user has hung up his terminal) a SIGHUP hangup
signal is sent to the processes in the distinguished process
group of the terminal; this usually causes them to terminate
(the SIGHUP can be suppressed by setting the LNOHANG bit in
the local state word of the driver.) Access to the terminal
by other processes is then normally revoked, so any further
reads will fail, and programs that read a terminal and test
for end-of-file on their input will terminate appropriately.
When using an ACU it is possible to ask that the phone line
be hung up on the last close with the TIOCHPCL ioctl; this
is normally done on the outgoing line.
Interrupt characters.
There are several characters that generate interrupts in
cooked and CBREAK mode; all are sent the processes in the
control group of the terminal, as if a TIOCGPGRP ioctl were
done to get the process group and then a _k_i_l_l_p_g(2) system
call were done, except that these characters also flush
pending input and output when typed at a terminal ('_a`'_l_a
TIOCFLUSH). The characters shown here are the defaults; the
field names in the structures (given below) are also shown.
The characters may be changed, although this is not often
done.
^? t_intrc (Delete) generates a SIGINTR signal. This is
the normal way to stop a process which is no longer
interesting, or to regain control in an interactive
program.
Printed 11/10/80 7
TTY(4) UNIX Programmer's Manual TTY(4)
^\ t_quitc (FS) generates a SIGQUIT signal. This is used
to cause a program to terminate and produce a core
image, if possible, in the file core in the current
directory.
^Z t_suspc (EM) generates a SIGTSTP signal, which is used
to suspend the current process group.
^Y t_dstopc (SUB) generates a SIGTSTP signal as ^Z does,
but the signal is sent when a program attempts to read
the ^Y, rather than when it is typed.
Job access control.
When using the new terminal driver, if a process which is
not in the distinguished process group of its control termi-
nal attempts to read from that terminal its process group is
sent a SIGTTIN signal, which normally causes the members of
that process group to stop. If, however, the process is
ignoring or holding SIGTTIN signal is an orphan its parent
has exited and it has been inherited by the _i_n_i_t(8) process,
or if it is a process in the middle of process creation
using _v_f_o_r_k(2)), it is instead returned an end-of-file.
Under older UNIX systems these processes would typically
have had their input files reset to /dev/null, so this is a
compatible change.
When using the new terminal driver with the LTOSTOP bit set
in the local modes, a process is prohibited from writing on
its control terminal if it is not in the distinguished pro-
cess group for that terminal. Processes which are holding
or ignoring SIGTTOU signals, which are orphans, or which are
in the middle of a _v_f_o_r_k(2) are excepted and allowed to pro-
duce output.
Summary of modes.
Unfortunately, due to the evolution of the terminal driver,
there are 4 different structures which contain various por-
tions of the driver data. The first of these (sgttyb) con-
tains that part of the information largely common between
version 6 and version 7 UNIX systems. The second contains
additional control characters added in version 7. The third
is a word of local state peculiar to the new terminal
driver, and the fourth is another structure of special char-
acters added for the new driver. In the future a single
structure may be made available to programs which need to
access all this information; most programs need not concern
themselves with all this state.
_B_a_s_i_c _m_o_d_e_s: _s_g_t_t_y.
Printed 11/10/80 8
TTY(4) UNIX Programmer's Manual TTY(4)
The basic _i_o_c_t_ls use the structure defined in <_s_g_t_t_y._h>:
struct sgttyb {
char sg_ispeed;
char sg_ospeed;
char sg_erase;
char sg_kill;
shortsg_flags;
};
The _s_g__i_s_p_e_e_d and _s_g__o_s_p_e_e_d fields describe the input and
output speeds of the device according to the following
table, which corresponds to the DEC DH-11 interface. If
other hardware is used, impossible speed changes are
ignored. Symbolic values in the table are as defined in
<_s_g_t_t_y._h>.
B0 0 (hang up dataphone)
B50 1 50 baud
B75 2 75 baud
B110 3 110 baud
B134 4 134.5 baud
B150 5 150 baud
B200 6 200 baud
B300 7 300 baud
B600 8 600 baud
B1200 9 1200 baud
B1800 10 1800 baud
B2400 11 2400 baud
B4800 12 4800 baud
B9600 13 9600 baud
EXTA 14 External A
EXTB 15 External B
In the current configuration, only 110, 150, 300 and 1200
baud are really supported on dial-up lines. Code conversion
and line control required for IBM 2741's (134.5 baud) must
be implemented by the user's program. The half-duplex line
discipline required for the 202 dataset (1200 baud) is not
supplied; full-duplex 212 datasets work fine.
The _s_g__e_r_a_s_e and _s_g__k_i_l_l fields of the argument structure
specify the erase and kill characters respectively.
(Defaults are # and @.)
The _s_g__f_l_a_g_s field of the argument structure contains
several bits that determine the system's treatment of the
terminal:
ALLDELAY 0177400 Delay algorithm selection
BSDELAY 0100000 Select backspace delays (not implemented):
BS0 0
Printed 11/10/80 9
TTY(4) UNIX Programmer's Manual TTY(4)
BS1 0100000
VTDELAY 0040000 Select form-feed and vertical-tab delays:
FF0 0
FF1 0100000
CRDELAY 0030000 Select carriage-return delays:
CR0 0
CR1 0010000
CR2 0020000
CR3 0030000
TBDELAY 0006000 Select tab delays:
TAB0 0
TAB1 0001000
TAB2 0004000
XTABS 0006000
NLDELAY 0001400 Select new-line delays:
NL0 0
NL1 0000400
NL2 0001000
NL3 0001400
EVENP 0000200 Even parity allowed on input (most terminals)
ODDP 0000100 Odd parity allowed on input
RAW 0000040 Raw mode: wake up on all characters, 8-bit interface
CRMOD 0000020 Map CR into LF; echo LF or CR as CR-LF
ECHO 0000010 Echo (full duplex)
LCASE 0000004 Map upper case to lower on input
CBREAK 0000002 Return each character as soon as typed
TANDEM 0000001 Automatic flow control
The delay bits specify how long transmission stops to allow
for mechanical or other movement when certain characters are
sent to the terminal. In all cases a value of 0 indicates
no delay.
Backspace delays are currently ignored but might be used for
Terminet 300's.
If a form-feed/vertical tab delay is specified, it lasts for
about 2 seconds.
Carriage-return delay type 1 lasts about .08 seconds and is
suitable for the Terminet 300. Delay type 2 lasts about .16
seconds and is suitable for the VT05 and the TI 700. Delay
type 3 is suitable for the concept-100 and pads lines to be
at least 9 characters at 9600 baud.
New-line delay type 1 is dependent on the current column and
is tuned for Teletype model 37's. Type 2 is useful for the
VT05 and is about .10 seconds. Type 3 is unimplemented and
is 0.
Tab delay type 1 is dependent on the amount of movement and
is tuned to the Teletype model 37. Type 3, called XTABS, is
Printed 11/10/80 10
TTY(4) UNIX Programmer's Manual TTY(4)
not a delay at all but causes tabs to be replaced by the
appropriate number of spaces on output.
Input characters with the wrong parity, as determined by
bits 200 and 100, are ignored in cooked and CBREAK mode.
RAW disables all processing save output flushing with
LFLUSHO; full 8 bits of input are given as soon as it is
available; all 8 bits are passed on output. A break condi-
tion in the input is reported as a null character. If the
input queue overflows in raw mode it is discarded; this
applies to both new and old drivers.
CRMOD causes input carriage returns to be turned into new-
lines; input of either CR or LF causes LF-CR both to be
echoed (for terminals with a new-line function).
CBREAK is a sort of half-cooked (rare?) mode. Programs can
read each character as soon as typed, instead of waiting for
a full line; all processing is done except the input edit-
ing: character and word erase and line kill, input reprint,
and the special treatment of \ or EOT are disabled.
TANDEM mode causes the system to produce a stop character
(default ^S) whenever the input queue is in danger of over-
flowing, and a start character (default ^Q) when the input
queue has drained sufficiently. It is useful for flow con-
trol when the `terminal' is really another computer which
understands the conventions.
_B_a_s_i_c _i_o_c_t_l_s
In addition to the TIOCSETD and TIOCGETD disciplines dis-
cussed in Line disciplines above, a large number of other
_i_o_c_t_l(2) calls apply to terminals, and have the general
form:
#include <sgtty.h>
ioctl(fildes, code, arg)
struct sgttyb *arg;
The applicable codes are:
TIOCGETP Fetch the basic parameters associated with
the terminal, and store in the pointed-to
_s_g_t_t_y_b structure.
TIOCSETP Set the parameters according to the pointed-
to _s_g_t_t_y_b structure. The interface delays
until output is quiescent, then throws away
any unread characters, before changing the
Printed 11/10/80 11
TTY(4) UNIX Programmer's Manual TTY(4)
modes.
TIOCSETN Set the parameters like TIOCSETP but do not
delay or flush input. Input is not
preserved, however, when changing to or from
RAW.
With the following codes the _a_r_g is ignored.
TIOCEXCL Set "exclusive-use" mode: no further opens
are permitted until the file has been closed.
TIOCNXCL Turn off "exclusive-use" mode.
TIOCHPCL When the file is closed for the last time,
hang up the terminal. This is useful when
the line is associated with an ACU used to
place outgoing calls.
TIOCFLUSH All characters waiting in input or output
queues are flushed.
The remaining calls are not available in vanilla version 7
UNIX. In cases where arguments are required, they are
described; _a_r_g should otherwise be given as 0.
TIOCSTI the argument is the address of a character
which the system pretends was typed on the
terminal.
TIOCSBRK the break bit is set in the terminal.
TIOCCBRK the break bit is cleared.
TIOCSDTR data terminal ready is set.
TIOCCDTR data terminal ready is cleared.
TIOCGPGRP arg is the address of a word into which is
placed the process group number of the con-
trol terminal.
TIOCSPGRP arg is a word (typically a process id) which
becomes the process group for the control
terminal.
FIONREAD returns in the long integer whose address is
arg the number of immediately readable char-
acters from the argument unit. This works
for files, pipes, and terminals, but not
(yet) for multiplexed channels.
Printed 11/10/80 12
TTY(4) UNIX Programmer's Manual TTY(4)
_T_c_h_a_r_s
The second structure associated with each terminal specifies
characters that are special in both the old and new terminal
interfaces: The following structure is defined in
<_s_y_s/_i_o_c_t_l._h>, which is automatically included in <_s_g_t_t_y._h>:
struct tchars {
char t_intrc; /* interrupt */
char t_quitc; /* quit */
char t_startc; /* start output */
char t_stopc; /* stop output */
char t_eofc; /* end-of-file */
char t_brkc; /* input delimiter (like nl) */
};
The default values for these characters are ^?, ^\, ^Q, ^S,
^D, and -1. A character value of -1 eliminates the effect
of that character. The _t__b_r_k_c character, by default -1,
acts like a new-line in that it terminates a `line,' is
echoed, and is passed to the program. The `stop' and
`start' characters may be the same, to produce a toggle
effect. It is probably counterproductive to make other spe-
cial characters (including erase and kill) identical. The
applicable ioctl calls are:
TIOCGETC Get the special characters and put them in the
specified structure.
TIOCSETC Set the special characters to those given in the
structure.
_L_o_c_a_l _m_o_d_e
The third structure associated with each terminal is a local
mode word; except for the LNOHANG bit, this word is inter-
preted only when the new driver is in use. The bits of the
local mode word are:
LCRTBS 000001 Backspace on erase rather than echoing erase
LPRTERA 000002 Printing terminal erase mode
LCRTERA 000004 Erase character echoes as backspace-space-backspace
LTILDE 000010 Convert ~ to ` on output (for Hazeltine terminals)
LMDMBUF 000020 Stop/start output when carrier drops
LLITOUT 000040 Suppress output translations
LTOSTOP 000100 Send SIGTTOU for background output
LFLUSHO 000200 Output is being flushed
LNOHANG 000400 Don't send hangup when carrier drops
LETXACK 001000 Diablo style buffer hacking (unimplemented)
LCRTKIL 002000 BS-space-BS erase entire line on line kill
LINTRUP 004000 Generate interrupt SIGTINT when input ready to read
LCTLECH 010000 Echo input control chars as ^X, delete as ^?
Printed 11/10/80 13
TTY(4) UNIX Programmer's Manual TTY(4)
LPENDIN 020000 Retype pending input at next read or input character
The applicable _i_o_c_t_l functions are:
TIOCLBIS arg is the address of a mask which is the
bits to be set in the local mode word.
TIOCLBIC arg is the address of a mask of bits to be
cleared in the local mode word.
TIOCLSET arg is the address of a mask to be placed in
the local mode word.
TIOCLGET arg is the address of a word into which the
current mask is placed.
_L_o_c_a_l _s_p_e_c_i_a_l _c_h_a_r_s
The final structure associated with each terminal is the
_l_t_c_h_a_r_s structure which defines interrupt characters for the
new terminal driver. Its structure is:
struct ltchars {
char t_suspc; /* stop process signal */
char t_dstopc; /* delayed stop process signal */
char t_rprntc; /* reprint line */
char t_flushc; /* flush output (toggles) */
char t_werasec;/* word erase */
char t_lnextc; /* literal next character */
};
The default values for these characters are ^Z, ^Y, ^R, ^O,
^W, and ^V. A value of -1 disables the character.
The applicable _i_o_c_t_l functions are:
TIOCSLTC args is the address of a _l_t_c_h_a_r_s structure which
defines the new local special characters.
TIOCGLTC args is the address of a _l_t_c_h_a_r_s structure into
which is placed the current set of local special
characters.
FILES
/dev/tty
/dev/tty*
/dev/console
SEE ALSO
csh(1), stty(1), ioctl(2), signal(2), sigsys(2), stty(2),
getty(8), init(8), newtty(4)
Printed 11/10/80 14
TTY(4) UNIX Programmer's Manual TTY(4)
BUGS
Half-duplex terminals are not supported.
Printed 11/10/80 15