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 ter-
       minal.  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 re-
       members which file descriptor to	use when updating settings.

       Next, tset determines the type of terminal that you  are	 using.	  This
       determination 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 sys-
       tems using that convention, getty(8) does this job by setting TERM  ac-
       cording to the type passed to it	by /etc/inittab.)

       4. The default terminal type, "unknown",	is not suitable	for curses ap-
       plications.

       If  the terminal	type was not specified on the command-line, the	-m op-
       tion 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 de-
       scription 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,

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

	   If  the  window  size cannot	be obtained from the operating system,
	   but the terminal  description  (or  environment,  e.g.,  LINES  and
	   COLUMNS variables specify this), use	this to	set the	operating sys-
	   tem'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 initializa-
	   tion	strings	are sent to the	standard error output, and 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	cooked and echo	modes,

          turns off cbreak and	raw modes,

          turns on newline translation	and

          resets any unset special 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 sys-
       tem  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 desirable 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 (delim-
       ited 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 map-
       pings 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 ap-
       plicable	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 di-
       alup port, regardless 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 de-
       fault 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 option	argument be placed within single quote characters, and
       that csh	users insert a backslash character ("\") before	 any  exclama-
       tion 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 ter-
	    minal.

       -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
	    "Terminal Type Mapping".

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

       -q   The	 terminal  type	 is  displayed to the standard output, and the
	    terminal is	not initialized	in any way.  The option	"-" by	itself
	    is equivalent 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
	    Environment".

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

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

       The arguments for the -e, -i, and -k options may	either be  entered  as
       actual  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)  syn-
	    tax.

       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
	    absolute pathname, e.g., begins with a "/",	tset removes the vari-
	    able from the environment before looking for the terminal descrip-
	    tion.

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 mak-
       ing tset	obsolete.  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;
       under most modern Unices, /etc/inittab and getty(8) can set TERM	appro-
       priately	for each dial-up line, obviating what was tset's  most	impor-
       tant use.  This implementation behaves like 4.4BSD tset,	with a few ex-
       ceptions	we shall consider now.

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

          The -S option of BSD	tset no	longer works; it prints	an error  mes-
	   sage	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  let-
       ter)  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 docu-
       mented 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 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  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
       arguments, although it is strongly recommended that such	usage be fixed
       to explicitly 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.  How-
       ever, 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
	   variables or	the terminal description.

       Obtaining the window size from a	terminal's type	description is	common
       to  both	implementations, but considered	obsolescent.  Its only practi-
       cal use is for hardware terminals.  Generally, the window size will re-
       main uninitialized only if there	were a	problem	 obtaining  the	 value
       from  the operating system (and setupterm would still fail).  The LINES
       and COLUMNS environment variables may thus be useful for	working	around
       window-size problems, but have the drawback that	if the window  is  re-
       sized,  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 @ respec-
       tively.	Mark Horton improved this reset	in 3BSD	(October 1979),	adding
       intr, quit, start/stop, and eof characters as well as changing the pro-
       gram 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	 indi-
       cate  that  he  began work in October 1977, continuing development over
       the next	few years.  By late 1979, it had migrated to termcap and  han-
       dled the	TERMCAP	variable.  Later comments indicate that	tset was modi-
       fied  in	 September 1980	to use logic copied from the 3BSD "reset" pro-
       gram when it was	invoked	as reset.  This	version	appeared  in  4.1cBSD,
       late in 1982.  Other developers such as Keith Bostic and	Jim Bloom con-
       tinued 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			  2024-04-27			       tset(1)

NAME | SYNOPSIS | DESCRIPTION | OPTIONS | ENVIRONMENT | FILES | PORTABILITY | HISTORY | SEE ALSO

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

home | help