glenda.party
term% ls -F
term% cat index.txt
TTYLD(4)                   Kernel Interfaces Manual                   TTYLD(4)

NAME
       ttyld - terminal processing

SYNOPSIS
       #include <sgtty.h>

DESCRIPTION
       This  processing  module is usually inserted into a stream(4) connected
       to a terminal device.  It gathers input into lines, performs erase  and
       kill processing, and translates control sequences.

       Certain  special  characters  have  particular meaning on input.  These
       characters are not passed to a program except in raw mode,  where  they
       lose  their  special character.  It is possible to change these charac‐
       ters from the default.

       #      erases the last-typed character.  It will not erase  beyond  the
              beginning of a line or an EOT.

       @      erases  the entire preceding part of the line, but not beyond an
              EOT.

       EOT    (Control-D) may be used to generate an end of file from a termi‐
              nal.  When an EOT is received, all the characters waiting to  be
              read  are immediately passed to the program, without waiting for
              a new-line, and the EOT is discarded.   Thus  if  there  are  no
              characters  waiting, which is to say the EOT occurred at the be‐
              ginning of a line, zero characters will be passed back, and this
              is the standard end-of-file indication.

       \      escapes a following erase, kill, or EOT character and allows  it
              to be treated as ordinary data.

       DEL    is  not  passed  to a program but generates the interrupt signal
              (2).  The signal is sent to any processes in the  process  group
              of the stream; see stream(4).

       FS     generates the quit signal (3).

       DC3    delays all printing on the terminal until something is typed in.

       DC1    restarts   printing  after DC3 without generating any input to a
              program.

       Several ioctl(2) calls apply to terminals.  Most of them use  the  fol‐
       lowing structure, defined in <sgtty.h>:

              struct    sgttyb {
                   char sg_ispeed;
                   char sg_ospeed;
                   char sg_erase;
                   char sg_kill;
                   int  sg_flags;
              };

       The sg_ispeed and sg_ospeed fields describe the input and output speeds
       of  the  device  according to the following table.  They are not inter‐
       preted by the tty line discipline, but merely passed on to the  device.
       Devices  ignore impossible speed changes.  Symbolic values in the table
       are as defined in <sgtty.h>.

       B0      0    (hang up device)
       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

       The sg_erase and sg_kill fields of the argument structure  specify  the
       erase and kill characters respectively.  (Defaults are # and @.)

       The sg_flags field of the argument structure contains several bits that
       determine the system's treatment of the terminal:

       ALLDELAY 0177400 Delay algorithm selection
       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 mechan‐
       ical  or  other movement when certain characters are sent to the termi‐
       nal.  In all cases a value of 0 indicates no delay.

       If a form-feed/vertical tab delay is specified, it lasts  for  about  2
       seconds.

       Carriage-return  delay  type  1  lasts about .08 seconds.  Delay type 2
       lasts about .16 seconds.  Delay type 3 is supposed to be for  the  Con‐
       cept 100.

       New-line  delay  type  1  is  supposed to be for the Teletype model 37.
       Type 2 is about .10 seconds.  Type 3 is unimplemented and is 0.

       Tab delay type 1 is supposed to be for the Teletype model 37.  Type  3,
       called  XTABS,  is not a delay at all but causes tabs to be replaced by
       the appropriate number of spaces on output.

       In raw mode, every character is passed immediately to the program with‐
       out waiting until a full line has been typed.  No erase  or  kill  pro‐
       cessing is done; the end-of-file indicator (EOT), the interrupt charac‐
       ter (DEL) and the quit character (FS) are not treated specially.  There
       are  no  delays and no echoing, and no replacement of one character for
       another; characters are a full 8 bits for both input and output.

       Mode 020 causes input carriage returns to be turned into new-lines; in‐
       put of either CR or LF causes LF-CR both to be  echoed  (for  terminals
       without a new-line function).

       CBREAK  is a sort of half-cooked mode.  Programs read each character as
       soon as typed, instead of waiting for a full line, but quit and  inter‐
       rupt  work,  and output delays CRMOD, XTABS, ECHO, and parity work nor‐
       mally.  On the other hand there is no erase or  kill,  and  no  special
       treatment of \ or EOT.

       TANDEM mode causes the system to produce a stop character (default DC3)
       whenever the input queue is in danger of overflowing, and a start char‐
       acter  (default DC1) when the input queue has drained sufficiently.  It
       is useful for flow control when the ‘terminal' is actually another  ma‐
       chine that obeys the conventions.

       Several ioctl calls have the form:

              #include <sgtty.h>

              ioctl(fildes, code, arg)
              struct sgttyb *arg;

       The applicable codes are:

       TIOCGETP
              Fetch  the parameters associated with the terminal, and store in
              the pointed-to structure.

       TIOCSETP, TIOCSETN
              Set the parameters according to the pointed-to structure.  These
              (equivalent) codes are synchronous with output data.

       The following codes affect characters that are special to the  terminal
       interface.   The  argument is a pointer to the following structure, de‐
       fined in <sgtty.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 DEL, FS, DC1, DC3, EOT, and
       -1.  A character value of -1 eliminates the effect of  that  character.
       The  t_brkc  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 ef‐
       fect.  It is counterproductive to make other  special  characters  (in‐
       cluding erase and kill) identical.

       TIOCSETC
              Change  the  various  special  characters  to those given in the
              structure.

       TIOCGETC
              Fill in the structure with the current special characters.

SEE ALSO
       getty(8), stty(1), signal(2), ioctl(2), stream(4)

                                                                      TTYLD(4)