Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
tset(1) 			  User commands 			 tset(1)

NAME
     tset, reset - initialize or reset terminal state

SYNOPSIS
     tset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal-type]
     reset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal-type]

DESCRIPTION
   tset -- initialization
     This program initializes terminals.

     First, tset retrieves the current terminal mode settings for your terminal.
     It does this by successively testing

     *	 the standard error,

     *	 standard output,

     *	 standard input and

     *	 ultimately "/dev/tty"

     to  obtain terminal settings.  Having retrieved these settings, tset remem-
     bers which file descriptor to use when updating settings.

     Next, tset determines the type of terminal that you are using.  This deter-
     mination is done as follows, using the first terminal type found.

     1. The terminal argument specified on the command line.

     2. The value of the TERM environment variable.

     3. (BSD systems only.) The terminal type associated with the standard error
     output device in the /etc/ttys file.  (On System V hosts and systems  using
     that  convention,	getty(8)  does this job by setting TERM according to the
     type passed to it by /etc/inittab.)

     4. The default terminal type, "unknown", is not suitable for curses  appli-
     cations.

     If  the  terminal type was not specified on the command-line, the -m option
     mappings are then applied; see subsection "Terminal Type  Mapping".   Then,
     if  the  terminal	type  begins  with  a  question  mark ("?"), the user is
     prompted for confirmation of the terminal 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 termi-
     nal 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,

     *	 if  the  "-w"	option is enabled, tset may update the terminal's window
	 size.

	 If the window size cannot be obtained from the  operating  system,  but
	 the terminal description (or environment, e.g., LINES and COLUMNS vari-
	 ables	specify  this), use this to set the operating system's notion of
	 the window size.

     *	 if the "-c" option is enabled, the backspace, interrupt and  line  kill
	 characters (among many other things) are set

     *	 unless  the "-I" option is enabled, the terminal and tab initialization
	 strings are sent to the standard error output, and, if the terminal de-
	 vice does not appear to be a pseudoterminal (as might be used by a ter-
	 minal emulator program), tset waits one second in case a hardware reset
	 was issued.

     *	 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.

   reset -- reinitialization
     When invoked as reset, tset sets the terminal modes to "sane" values:

     *	 sets canonical ("cooked") and echo modes,

     *	 turns off cbreak and raw modes,

     *	 turns on newline translation and

     *	 resets special input characters to their default values

     before  doing  the  terminal  initialization described above.  Also, rather
     than using the terminal initialization strings, it uses the terminal  reset
     strings.

     The  reset  command is useful after a program dies leaving a terminal in an
     abnormal state:

     *	 you may have to type

	     <LF>reset<LF>

	 (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.

   Setting the Environment
     It  is often desirable to enter the terminal type and information about the
     terminal's capabilities into the shell's environment.  This is  done  using
     the -s option.

     When the -s option is specified, the commands to enter the information into
     the  shell's  environment are written to the standard output.  If the SHELL
     environment variable ends in "csh", the commands are for csh(1), otherwise,
     they are for sh(1).  The csh commands set	and  unset  the  shell	variable
     noglob,  leaving  it  unset.   The following line in the .login or .profile
     files will initialize the environment correctly:

	 eval `tset -s options ... `

   Terminal Type Mapping
     When the terminal is not hardwired into the system (or the  current  system
     information is incorrect) the terminal type derived from the /etc/ttys file
     or  the  TERM environment variable is often something generic like network,
     dialup, or unknown.  When tset is used in a startup script it is often  de-
     sirable  to  provide  information	about  the type of terminal used on such
     ports.

     The -m options maps from some set of conditions to a  terminal  type,  that
     is, to tell tset "If I'm on this port at a particular speed, guess that I'm
     on that kind of terminal".

     The  argument  to	the  -m option consists of an optional port type, an op-
     tional operator, an optional baud rate  specification,  an  optional  colon
     (":")  character and a terminal type.  The port type is a string (delimited
     by either the operator or the colon character).  The operator  may  be  any
     combination  of  ">",  "<", "@", and "!"; ">" means greater than, "<" means
     less than, "@" means equal to and "!" inverts the sense of the  test.   The
     baud  rate  is  specified as a number and is compared with the speed of the
     standard error output (which should be the control terminal).  The terminal
     type is a string.

     If the terminal type is not specified on the command line, the -m	mappings
     are applied to the terminal type.	If the port type and baud rate match the
     mapping,  the  terminal  type specified in the mapping replaces the current
     type.  If more than one mapping is specified, the first applicable  mapping
     is used.

     For  example,  consider the following mapping: dialup>9600:vt100.	The port
     type is dialup , the operator is >, the baud rate	specification  is  9600,
     and  the  terminal type is vt100.	The result of this mapping is to specify
     that if the terminal type is dialup, and the baud rate is greater than 9600
     baud, a terminal type of vt100 will be used.

     If no baud rate is specified, the terminal type will match any  baud  rate.
     If  no  port type is specified, the terminal type will match any port type.
     For example, -m dialup:vt100 -m :?xterm will cause any dialup port, regard-
     less of baud rate, to match the terminal type  vt100,  and  any  non-dialup
     port  type to match the terminal type ?xterm.  Note, because of the leading
     question mark, the user will be queried on a default  port  as  to  whether
     they are actually using an xterm terminal.

     No whitespace characters are permitted in the -m option argument.	Also, to
     avoid problems with meta-characters, it is suggested that the entire -m op-
     tion  argument be placed within single quote characters, and that csh users
     insert a backslash character ("\") before any exclamation marks ("!").

OPTIONS
     The options are as follows:

     -c   Set control characters and modes.

     -e ch
	  Set the erase character to ch.

     -I   Do not send the terminal or tab initialization strings to  the  termi-
	  nal.

     -i ch
	  Set the interrupt character to ch.

     -k ch
	  Set the line kill character to ch.

     -m mapping
	  Specify a mapping from a port type to a terminal; see subsection "Ter-
	  minal Type Mapping".

     -Q   Do not display any values for the erase, interrupt and line kill char-
	  acters.   Normally  tset  displays  the  values for control characters
	  which differ from the system's default values.

     -q   The terminal type is displayed to the standard output, and the  termi-
	  nal is not initialized in any way.  The option "-" by itself is equiv-
	  alent but archaic.

     -r   Print the terminal type to the standard error output.

     -s   Print  the  sequence	of  shell commands to initialize the environment
	  variable TERM to the standard output; see subsection "Setting the  En-
	  vironment".

     -V   reports the version of ncurses which was used in this program, and ex-
	  its.

     -w   Resize  the  window to match the size deduced via setupterm(3X).  Nor-
	  mally this has no effect, unless setupterm is not able to  detect  the
	  window size.

     The  arguments  for the -e, -i, and -k options may either be entered as ac-
     tual characters or by using the "hat"  notation,  i.e.,  control-h  may  be
     specified as "^H" or "^h".

     If neither -c or -w is given, both options are assumed.

ENVIRONMENT
     The tset command uses these environment variables:

     SHELL
	  tells tset whether to initialize TERM using sh(1) or csh(1) syntax.

     TERM
	  Denotes  your  terminal  type.  Each terminal type is distinct, though
	  many are similar.

     TERMCAP
	  may denote the location of a termcap database.  If it is  not  an  ab-
	  solute  pathname,  e.g.,  begins with a "/", tset removes the variable
	  from the environment before looking for the terminal description.

FILES
     /etc/ttys
	    system port name to terminal type  mapping	database  (BSD	versions
	    only).

     /usr/share/misc/terminfo
	    compiled terminal description database directory

PORTABILITY
     Neither   IEEE  Std  1003.1/The  Open  Group  Base  Specifications  Issue 7
     (POSIX.1-2008) nor X/Open Curses Issue 7 documents tset or reset.

     The AT&T tput utility (AIX, HP-UX, Solaris) incorporated the  terminal-mode
     manipulation  as  well as termcap-based features such as resetting tabstops
     from tset in BSD (4.1c), presumably with the intention of making tset obso-
     lete.  However, each of those systems still provides tset.   In  fact,  the
     commonly-used reset utility is always an alias for tset.

     The tset utility provides backward compatibility with BSD environments; un-
     der  most	modern	Unices, /etc/inittab and getty(8) can set TERM appropri-
     ately for each dial-up line, obviating what was tset's most important  use.
     This  implementation  behaves  like  4.4BSD  tset, with a few exceptions we
     shall consider now.

     A few options are different because the TERMCAP variable is no longer  sup-
     ported under terminfo-based ncurses:

     *	 The  -S  option of BSD tset no longer works; it prints an error message
	 to the standard error and dies.

     *	 The -s option only sets TERM, not TERMCAP.

     There was an undocumented 4.4BSD feature that  invoking  tset  via  a  link
     named  "TSET"  (or  via any other name beginning with an upper-case letter)
     set the terminal to use upper-case only.  This feature has been omitted.

     The -A, -E, -h, -u and -v options were deleted from  the  tset  utility  in
     4.4BSD.   None  of  them  were  documented in 4.3BSD and all are of limited
     utility at best.  The -a, -d, and -p 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 -m option instead.  The -a, -d, and -p options are therefore  omit-
     ted 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 tset provided a -n 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 -e, -i, and -k options without argu-
     ments, although it is strongly recommended that such usage be fixed to  ex-
     plicitly specify the character.

     As  of  4.4BSD,  executing  tset  as reset no longer implies the -Q option.
     Also, the interaction between the - option and  the  terminal  argument  in
     some historic implementations of tset has been removed.

     The -c and -w options are not found in earlier implementations.  However, a
     different window size-change feature was provided in 4.4BSD.

     *	 In  4.4BSD,  tset  uses the window size from the termcap description to
	 set the window size if tset is not able to obtain the window size  from
	 the operating system.

     *	 In ncurses, tset obtains the window size using setupterm(3X), which may
	 be  from  the operating system, the LINES and COLUMNS environment vari-
	 ables or the terminal description.

     Obtaining the window size from a terminal's type description is  common  to
     both  implementations,  but considered obsolescent.  Its only practical use
     is for hardware terminals.  Generally, the window size will  remain  unini-
     tialized  only if there were a problem obtaining the value from the operat-
     ing system (and setupterm would still fail).  The LINES and  COLUMNS  envi-
     ronment  variables  may thus be useful for working around window-size prob-
     lems, but have the drawback that if the window  is  resized,  their  values
     must  be recomputed and reassigned.  The resize(1) program distributed with
     xterm(1) assists this activity.

HISTORY
     A reset command written by Kurt Shoens appeared in 1BSD (March  1978).   It
     set  the  erase  and  kill characters to ^H (backspace) and @ respectively.
     Mark Horton improved this reset in 3BSD (October 1979), adding intr,  quit,
     start/stop,  and  eof  characters	as well as changing the program to avoid
     modifying any user settings.  That version of reset did not use termcap.

     Eric Allman wrote a distinct tset command for 1BSD, using a  forerunner  of
     termcap  called ttycap.  Allman's comments in the source code indicate that
     he began work in October 1977, continuing development  over  the  next  few
     years.   By  late	1979, it had migrated to termcap and handled the TERMCAP
     variable.	Later comments indicate that tset was modified in September 1980
     to use logic copied from the 3BSD "reset" program when it	was  invoked  as
     reset.   This  version appeared in 4.1cBSD, late in 1982.	Other developers
     such as Keith Bostic and Jim Bloom continued to modify  tset  until  4.4BSD
     was released in 1993.

     The  ncurses  implementation was lightly adapted from the 4.4BSD sources to
     use the terminfo API by Eric S. Raymond <esr@snark.thyrsus.com>.

SEE ALSO
     csh(1), sh(1), stty(1), curs_terminfo(3X),  tty(4),  terminfo(5),	ttys(5),
     environ(7)

ncurses 6.5			   2025-01-18				 tset(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=reset&sektion=1&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help