<!--
****************************************************************************
- * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tset.1,v 1.37 2016/05/21 23:36:51 tom Exp @
+ * @Id: tset.1,v 1.48 2017/01/14 20:55:07 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
</PRE><H3><a name="h3-tset---initialization">tset - initialization</a></H3><PRE>
- <STRONG>Tset</STRONG> initializes terminals. <STRONG>Tset</STRONG> first determines the
- type of terminal that you are using. This determination
- is done as follows, using the first terminal type found.
+ This program initializes terminals.
+
+ First, <STRONG>tset</STRONG> retrieves the current terminal mode settings
+ for your terminal. It does this by successively testing
+
+ <STRONG>o</STRONG> the standard error,
+
+ <STRONG>o</STRONG> standard output,
+
+ <STRONG>o</STRONG> standard input and
+
+ <STRONG>o</STRONG> ultimately "/dev/tty"
+
+ to obtain terminal settings. Having retrieved these set-
+ tings, <STRONG>tset</STRONG> remembers which file descriptor to use when
+ updating settings.
+
+ Next, <STRONG>tset</STRONG> determines the type of terminal that you are
+ using. This determination is done as follows, using the
+ first terminal type found.
1. The <STRONG>terminal</STRONG> argument specified on the command line.
2. The value of the <STRONG>TERM</STRONG> environmental variable.
- 3. (BSD systems only.) The terminal type associated with
- the standard error output device in the <EM>/etc/ttys</EM> file.
- (On System-V-like UNIXes and systems using that conven-
+ 3. (BSD systems only.) The terminal type associated with
+ the standard error output device in the <EM>/etc/ttys</EM> file.
+ (On System-V-like UNIXes and systems using that conven-
tion, <EM>getty</EM> does this job by setting <STRONG>TERM</STRONG> according to the
type passed to it by <EM>/etc/inittab</EM>.)
4. The default terminal type, "unknown".
- If the terminal type was not specified on the command-
- line, the <STRONG>-m</STRONG> option mappings are then applied (see the
+ If the terminal type was not specified on the command-
+ line, the <STRONG>-m</STRONG> option mappings are then applied (see the
section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information).
- Then, if the terminal type begins with a question mark
+ Then, if the terminal type begins with a question mark
("?"), the user is prompted for confirmation of the termi-
- nal type. An empty response confirms the type, or,
- another type can be entered to specify a new type. Once
- the terminal type has been determined, the terminfo entry
- for the terminal is retrieved. If no terminfo entry is
- found for the type, the user is prompted for another ter-
- minal type.
-
- Once the terminfo entry is retrieved, the window size,
- backspace, interrupt and line kill characters (among many
- other things) are set and the terminal and tab initializa-
- tion strings are sent to the standard error output.
- Finally, if the erase, interrupt and line kill characters
- have changed, or are not set to their default values,
- their values are displayed to the standard error output.
+ nal type. An empty response confirms the type, or,
+ another type can be entered to specify a new type. Once
+ the terminal type has been determined, the terminal
+ description for the terminal is retrieved. If no terminal
+ description is found for the type, the user is prompted
+ for another terminal type.
+
+ Once the terminal description is retrieved,
+
+ <STRONG>o</STRONG> if the "<STRONG>-w</STRONG>" option is enabled, <STRONG>tset</STRONG> may update the
+ terminal's window size.
+
+ If the window size cannot be obtained from the operat-
+ ing system, but the terminal description (or environ-
+ ment, e.g., <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> variables specify this),
+ use this to set the operating system's notion of the
+ window size.
+
+ <STRONG>o</STRONG> if the "<STRONG>-c</STRONG>" option is enabled, the backspace, inter-
+ rupt and line kill characters (among many other
+ things) are set
+
+ <STRONG>o</STRONG> unless the "<STRONG>-I</STRONG>" option is enabled, the terminal and
+ tab <EM>initialization</EM> strings are sent to the standard
+ error output, and <STRONG>tset</STRONG> waits one second (in case a
+ hardware reset was issued).
+
+ <STRONG>o</STRONG> Finally, if the erase, interrupt and line kill charac-
+ ters have changed, or are not set to their default
+ values, their values are displayed to the standard
+ error output.
</PRE><H3><a name="h3-reset---reinitialization">reset - reinitialization</a></H3><PRE>
- When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets cooked and echo modes,
- turns off cbreak and raw modes, turns on newline transla-
- tion and resets any unset special characters to their
- default values before doing the terminal initialization
- described above. This is useful after a program dies
- leaving a terminal in an abnormal state. Note, you may
- have to type
+ When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets the terminal modes to
+ "sane" values:
- <STRONG><LF>reset<LF></STRONG>
+ <STRONG>o</STRONG> sets cooked and echo modes,
- (the line-feed character is normally control-J) to get the
- terminal to work, as carriage-return may no longer work in
- the abnormal state. Also, the terminal will often not
- echo the command.
+ <STRONG>o</STRONG> turns off cbreak and raw modes,
+
+ <STRONG>o</STRONG> turns on newline translation and
+
+ <STRONG>o</STRONG> resets any unset special characters to their default
+ values
+
+ before doing the terminal initialization described above.
+ Also, rather than using the terminal <EM>initialization</EM>
+ strings, it uses the terminal <EM>reset</EM> strings.
+
+ The <STRONG>reset</STRONG> command is useful after a program dies leaving a
+ terminal in an abnormal state:
+
+ <STRONG>o</STRONG> you may have to type
+
+ <EM><LF></EM><STRONG>reset</STRONG><EM><LF></EM>
+
+ (the line-feed character is normally control-J) to get
+ the terminal to work, as carriage-return may no longer
+ work in the abnormal state.
+
+ <STRONG>o</STRONG> Also, the terminal will often not echo the command.
</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
program, and exits.
<STRONG>-w</STRONG> Resize the window to match the size deduced via
- <STRONG>setupterm</STRONG>. Normally this has no effect, unless
+ <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. Normally this has no effect, unless
<STRONG>setupterm</STRONG> is not able to detect the window size.
The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be
often desirable to provide information about the type of
terminal used on such ports.
- The purpose of the <STRONG>-m</STRONG> option is to map from some set of
- conditions to a terminal type, that is, to tell <STRONG>tset</STRONG> "If
- I'm on this port at a particular speed, guess that I'm on
- that kind of terminal".
+ The <STRONG>-m</STRONG> options maps from some set of conditions to a ter-
+ minal type, that is, to tell <STRONG>tset</STRONG> "If I'm on this port at
+ a particular speed, guess that I'm on that kind of termi-
+ nal".
The argument to the <STRONG>-m</STRONG> option consists of an optional port
type, an optional operator, an optional baud rate specifi-
</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
- The <STRONG>tset</STRONG> command appeared in BSD 3.0. The <STRONG>ncurses</STRONG> imple-
- mentation was lightly adapted from the 4.4BSD sources for
- a terminfo environment by Eric S. Raymond <esr@snark.thyr-
- sus.com>.
+ A <STRONG>reset</STRONG> command appeared in 2BSD (April 1979), written by
+ Kurt Shoens. This program set the <EM>erase</EM> and <EM>kill</EM> charac-
+ ters to <STRONG>^H</STRONG> (backspace) and <STRONG>@</STRONG> respectively. Mark Horton
+ improved that in 3BSD (October 1979), adding <EM>intr</EM>, <EM>quit</EM>,
+ <EM>start</EM>/<EM>stop</EM> and <EM>eof</EM> characters as well as changing the pro-
+ gram to avoid modifying any user settings.
+
+ Later in 4.1BSD (December 1980), Mark Horton added a call
+ to the <STRONG>tset</STRONG> program using the <STRONG>-I</STRONG> and <STRONG>-Q</STRONG> options, i.e.,
+ using that to improve the terminal modes. With those
+ options, that version of <STRONG>reset</STRONG> did not use the termcap
+ database.
+
+ A separate <STRONG>tset</STRONG> command was provided in 2BSD by Eric All-
+ man. While the oldest published source (from 1979) pro-
+ vides both <STRONG>tset</STRONG> and <STRONG>reset</STRONG>, Allman's comments in the 2BSD
+ source code indicate that he began work in October 1977,
+ continuing development over the next few years.
+
+ In September 1980, Eric Allman modified <STRONG>tset</STRONG>, adding the
+ code from the existing "reset" feature when <STRONG>tset</STRONG> was
+ invoked as <STRONG>reset</STRONG>. Rather than simply copying the existing
+ program, in this merged version, <STRONG>tset</STRONG> used the termcap
+ database to do additional (re)initialization of the termi-
+ nal. This version appeared in 4.1cBSD, late in 1982.
+
+ Other developers (e.g., Keith Bostic and Jim Bloom) con-
+ tinued to modify <STRONG>tset</STRONG> until 4.4BSD was released in 1993.
+
+ The <STRONG>ncurses</STRONG> implementation was lightly adapted from the
+ 4.4BSD sources for a terminfo environment by Eric S. Ray-
+ mond <esr@snark.thyrsus.com>.
</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
Issue 7 (POSIX.1-2008) nor X/Open Curses Issue 7 documents
<STRONG>tset</STRONG> or <STRONG>reset</STRONG>.
- The <STRONG>tset</STRONG> utility has been provided for backward-compati-
- bility with BSD environments (under most modern UNIXes,
- <STRONG>/etc/inittab</STRONG> and <STRONG>getty(1)</STRONG> can set <STRONG>TERM</STRONG> appropriately for
- each dial-up line; this obviates what was <STRONG>tset</STRONG>'s most
- important use). This implementation behaves like 4.4BSD
- tset, with a few exceptions specified here.
-
- The <STRONG>-S</STRONG> option of BSD tset no longer works; it prints an
- error message to stderr and dies. The <STRONG>-s</STRONG> option only sets
- <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>. Both of these changes are because the
- <STRONG>TERMCAP</STRONG> variable is no longer supported under terminfo-
- based <STRONG>ncurses</STRONG>, which makes <STRONG>tset</STRONG> <STRONG>-S</STRONG> useless (we made it die
- noisily rather than silently induce lossage).
-
- There was an undocumented 4.4BSD feature that invoking
+ The AT&T <STRONG>tput</STRONG> utility (AIX, HPUX, Solaris) incorporated
+ the terminal-mode manipulation as well as termcap-based
+ features such as resetting tabstops from <STRONG>tset</STRONG> in BSD
+ (4.1c), presumably with the intention of making <STRONG>tset</STRONG> obso-
+ lete. However, each of those systems still provides <STRONG>tset</STRONG>.
+ In fact, the commonly-used <STRONG>reset</STRONG> utility is always an
+ alias for <STRONG>tset</STRONG>.
+
+ The <STRONG>tset</STRONG> utility provides for backward-compatibility with
+ BSD environments (under most modern UNIXes, <STRONG>/etc/inittab</STRONG>
+ and <STRONG>getty(1)</STRONG> can set <STRONG>TERM</STRONG> appropriately for each dial-up
+ line; this obviates what was <STRONG>tset</STRONG>'s most important use).
+ This implementation behaves like 4.4BSD <STRONG>tset</STRONG>, with a few
+ exceptions specified here.
+
+ A few options are different because the <STRONG>TERMCAP</STRONG> variable
+ is no longer supported under terminfo-based <STRONG>ncurses</STRONG>:
+
+ <STRONG>o</STRONG> The <STRONG>-S</STRONG> option of BSD <STRONG>tset</STRONG> no longer works; it prints
+ an error message to the standard error and dies.
+
+ <STRONG>o</STRONG> The <STRONG>-s</STRONG> option only sets <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.
+
+ There was an undocumented 4.4BSD feature that invoking
<STRONG>tset</STRONG> via a link named "TSET" (or via any other name begin-
- ning with an upper-case letter) set the terminal to use
+ ning with an upper-case letter) set the terminal to use
upper-case only. This feature has been omitted.
- The <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were deleted from the
- <STRONG>tset</STRONG> utility in 4.4BSD. None of them were documented in
- 4.3BSD and all are of limited utility at best. The <STRONG>-a</STRONG>,
+ The <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were deleted from the
+ <STRONG>tset</STRONG> utility in 4.4BSD. None of them were documented in
+ 4.3BSD and all are of limited utility at best. The <STRONG>-a</STRONG>,
<STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not documented or useful,
- but were retained as they appear to be in widespread use.
- It is strongly recommended that any usage of these three
- options be changed to use the <STRONG>-m</STRONG> option instead. The <STRONG>-a</STRONG>,
- <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are therefore omitted from the usage
+ but were retained as they appear to be in widespread use.
+ It is strongly recommended that any usage of these three
+ options be changed to use the <STRONG>-m</STRONG> option instead. The <STRONG>-a</STRONG>,
+ <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are therefore omitted from the usage
summary above.
- Very old systems, e.g., 3BSD, used a different terminal
- driver which was replaced in 4BSD in the early 1980s. To
- accommodate these older systems, the 4BSD <STRONG>tset</STRONG> provided a
- <STRONG>-n</STRONG> option to specify that the new terminal driver should
+ Very old systems, e.g., 3BSD, used a different terminal
+ driver which was replaced in 4BSD in the early 1980s. To
+ accommodate these older systems, the 4BSD <STRONG>tset</STRONG> provided a
+ <STRONG>-n</STRONG> option to specify that the new terminal driver should
be used. This implementation does not provide that
choice.
- It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG>
- options without arguments, although it is strongly recom-
- mended that such usage be fixed to explicitly specify the
+ It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG>
+ options without arguments, although it is strongly recom-
+ mended that such usage be fixed to explicitly specify the
character.
- As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies
+ As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies
the <STRONG>-Q</STRONG> option. Also, the interaction between the - option
and the <EM>terminal</EM> argument in some historic implementations
of <STRONG>tset</STRONG> has been removed.
The <STRONG>-c</STRONG> and <STRONG>-w</STRONG> options are not found in earlier implementa-
- tions. However, a different window size-change feature
+ tions. However, a different window size-change feature
was provided in 4.4BSD.
- <STRONG>o</STRONG> In 4.4BSD, <STRONG>tset</STRONG> uses the window size from the termcap
+ <STRONG>o</STRONG> In 4.4BSD, <STRONG>tset</STRONG> uses the window size from the termcap
description to set the window size if <STRONG>tset</STRONG> is not able
to obtain the window size from the operating system.
- <STRONG>o</STRONG> In ncurses, <STRONG>tset</STRONG> obtains the window size using
+ <STRONG>o</STRONG> In ncurses, <STRONG>tset</STRONG> obtains the window size using
<STRONG>setupterm</STRONG>, which may be from the operating system, the
- <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables or the termi-
+ <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables or the termi-
nal description.
Obtaining the window size from the terminal description is
- common to both implementations, but considered obsoles-
- cent. Its only practical use is for hardware terminals.
- Generally speaking, a window size would be unset only if
+ common to both implementations, but considered obsoles-
+ cent. Its only practical use is for hardware terminals.
+ Generally speaking, a window size would be unset only if
there were some problem obtaining the value from the oper-
- ating system (and <STRONG>setupterm</STRONG> would still fail). For that
+ ating system (and <STRONG>setupterm</STRONG> would still fail). For that
reason, the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables may be
- useful for working around window-size problems. Those
- have the drawback that if the window is resized, those
- variables must be recomputed and reassigned. To do this
+ useful for working around window-size problems. Those
+ have the drawback that if the window is resized, those
+ variables must be recomputed and reassigned. To do this
more easily, use the <STRONG><A HREF="resize.1.html">resize(1)</A></STRONG> program.
tells <STRONG>tset</STRONG> whether to initialize <STRONG>TERM</STRONG> using <STRONG>sh</STRONG> or <STRONG>csh</STRONG>
syntax.
- TERM Denotes your terminal type. Each terminal type is
+ TERM Denotes your terminal type. Each terminal type is
distinct, though many are similar.
TERMCAP
</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
/etc/ttys
- system port name to terminal type mapping database
+ system port name to terminal type mapping database
(BSD versions only).
/usr/share/terminfo
<STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>,
<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20160521).
+ This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20170318).