micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 1 | <!-- |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 2 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 3 | * Copyright 2018-2023,2024 Thomas E. Dickey * |
| 4 | * Copyright 1998-2016,2017 Free Software Foundation, Inc. * |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 5 | * * |
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a * |
| 7 | * copy of this software and associated documentation files (the * |
| 8 | * "Software"), to deal in the Software without restriction, including * |
| 9 | * without limitation the rights to use, copy, modify, merge, publish, * |
| 10 | * distribute, distribute with modifications, sublicense, and/or sell * |
| 11 | * copies of the Software, and to permit persons to whom the Software is * |
| 12 | * furnished to do so, subject to the following conditions: * |
| 13 | * * |
| 14 | * The above copyright notice and this permission notice shall be included * |
| 15 | * in all copies or substantial portions of the Software. * |
| 16 | * * |
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| 18 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| 19 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| 20 | * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| 21 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| 22 | * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| 23 | * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| 24 | * * |
| 25 | * Except as contained in this notice, the name(s) of the above copyright * |
| 26 | * holders shall not be used in advertising or otherwise to promote the * |
| 27 | * sale, use or other dealings in this Software without prior written * |
| 28 | * authorization. * |
| 29 | **************************************************************************** |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 30 | * @Id: tset.1,v 1.85 2024/04/27 17:57:47 tom Exp @ |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 31 | --> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 32 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 33 | <HTML> |
| 34 | <HEAD> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 35 | <meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 36 | <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> |
| 37 | <TITLE>tset 1 2024-04-27 ncurses 6.5 User commands</TITLE> |
| 38 | <link rel="author" href="mailto:bug-ncurses@gnu.org"> |
| 39 | |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 40 | </HEAD> |
| 41 | <BODY> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 42 | <H1 class="no-header">tset 1 2024-04-27 ncurses 6.5 User commands</H1> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 43 | <PRE> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 44 | <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> User commands <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 45 | |
| 46 | |
| 47 | |
| 48 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 49 | </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> |
| 50 | <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - initialize or reset terminal state |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 51 | |
| 52 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 53 | </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> |
| 54 | <STRONG>tset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal-</EM> |
| 55 | <EM>type</EM>] |
| 56 | <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal-</EM> |
| 57 | <EM>type</EM>] |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 58 | |
| 59 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 60 | </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> |
| 61 | |
| 62 | </PRE><H3><a name="h3-tset----initialization"><EM>tset</EM> -- initialization</a></H3><PRE> |
| 63 | This program initializes terminals. |
| 64 | |
| 65 | First, <STRONG>tset</STRONG> retrieves the current terminal mode settings for your |
| 66 | terminal. It does this by successively testing |
| 67 | |
| 68 | <STRONG>o</STRONG> the standard error, |
| 69 | |
| 70 | <STRONG>o</STRONG> standard output, |
| 71 | |
| 72 | <STRONG>o</STRONG> standard input and |
| 73 | |
| 74 | <STRONG>o</STRONG> ultimately "/dev/tty" |
| 75 | |
| 76 | to obtain terminal settings. Having retrieved these settings, <STRONG>tset</STRONG> |
| 77 | remembers which file descriptor to use when updating settings. |
| 78 | |
| 79 | Next, <STRONG>tset</STRONG> determines the type of terminal that you are using. This |
| 80 | determination is done as follows, using the first terminal type found. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 81 | |
| 82 | 1. The <STRONG>terminal</STRONG> argument specified on the command line. |
| 83 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 84 | 2. The value of the <EM>TERM</EM> environment variable. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 85 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 86 | 3. (BSD systems only.) The terminal type associated with the standard |
| 87 | error output device in the <EM>/etc/ttys</EM> file. (On System V hosts and |
| 88 | systems using that convention, <STRONG>getty(8)</STRONG> does this job by setting <EM>TERM</EM> |
| 89 | according to the type passed to it by <EM>/etc/inittab</EM>.) |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 90 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 91 | 4. The default terminal type, "unknown", is not suitable for curses |
| 92 | applications. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 93 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 94 | If the terminal type was not specified on the command-line, the <STRONG>-m</STRONG> |
| 95 | option mappings are then applied; see subsection "Terminal Type |
| 96 | Mapping". Then, if the terminal type begins with a question mark |
| 97 | ("?"), the user is prompted for confirmation of the terminal type. An |
| 98 | empty response confirms the type, or, another type can be entered to |
| 99 | specify a new type. Once the terminal type has been determined, the |
| 100 | terminal description for the terminal is retrieved. If no terminal |
| 101 | description is found for the type, the user is prompted for another |
| 102 | terminal type. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 103 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 104 | Once the terminal description is retrieved, |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 105 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 106 | <STRONG>o</STRONG> if the "<STRONG>-w</STRONG>" option is enabled, <STRONG>tset</STRONG> may update the terminal's |
| 107 | window size. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 108 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 109 | If the window size cannot be obtained from the operating system, |
| 110 | but the terminal description (or environment, e.g., <EM>LINES</EM> and |
| 111 | <EM>COLUMNS</EM> variables specify this), use this to set the operating |
| 112 | system's notion of the window size. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 113 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 114 | <STRONG>o</STRONG> if the "<STRONG>-c</STRONG>" option is enabled, the backspace, interrupt and line |
| 115 | kill characters (among many other things) are set |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 116 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 117 | <STRONG>o</STRONG> unless the "<STRONG>-I</STRONG>" option is enabled, the terminal and tab |
| 118 | <EM>initialization</EM> strings are sent to the standard error output, and |
| 119 | <STRONG>tset</STRONG> waits one second (in case a hardware reset was issued). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 120 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 121 | <STRONG>o</STRONG> Finally, if the erase, interrupt and line kill characters have |
| 122 | changed, or are not set to their default values, their values are |
| 123 | displayed to the standard error output. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 124 | |
| 125 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 126 | </PRE><H3><a name="h3-reset----reinitialization"><EM>reset</EM> -- reinitialization</a></H3><PRE> |
| 127 | When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets the terminal modes to "sane" values: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 128 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 129 | <STRONG>o</STRONG> sets cooked and echo modes, |
| 130 | |
| 131 | <STRONG>o</STRONG> turns off cbreak and raw modes, |
| 132 | |
| 133 | <STRONG>o</STRONG> turns on newline translation and |
| 134 | |
| 135 | <STRONG>o</STRONG> resets any unset special characters to their default values |
| 136 | |
| 137 | before doing the terminal initialization described above. Also, rather |
| 138 | than using the terminal <EM>initialization</EM> strings, it uses the terminal |
| 139 | <EM>reset</EM> strings. |
| 140 | |
| 141 | The <STRONG>reset</STRONG> command is useful after a program dies leaving a terminal in |
| 142 | an abnormal state: |
| 143 | |
| 144 | <STRONG>o</STRONG> you may have to type |
| 145 | |
| 146 | <EM><LF></EM><STRONG>reset</STRONG><EM><LF></EM> |
| 147 | |
| 148 | (the line-feed character is normally control-J) to get the terminal |
| 149 | to work, as carriage-return may no longer work in the abnormal |
| 150 | state. |
| 151 | |
| 152 | <STRONG>o</STRONG> Also, the terminal will often not echo the command. |
| 153 | |
| 154 | |
| 155 | </PRE><H3><a name="h3-Setting-the-Environment">Setting the Environment</a></H3><PRE> |
| 156 | It is often desirable to enter the terminal type and information about |
| 157 | the terminal's capabilities into the shell's environment. This is done |
| 158 | using the <STRONG>-s</STRONG> option. |
| 159 | |
| 160 | When the <STRONG>-s</STRONG> option is specified, the commands to enter the information |
| 161 | into the shell's environment are written to the standard output. If |
| 162 | the <EM>SHELL</EM> environment variable ends in "csh", the commands are for |
| 163 | <STRONG>csh(1)</STRONG>, otherwise, they are for <STRONG>sh(1)</STRONG>. The <EM>csh</EM> commands set and unset |
| 164 | the shell variable <STRONG>noglob</STRONG>, leaving it unset. The following line in the |
| 165 | <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will initialize the environment correctly: |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 166 | |
| 167 | eval `tset -s options ... ` |
| 168 | |
| 169 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 170 | </PRE><H3><a name="h3-Terminal-Type-Mapping">Terminal Type Mapping</a></H3><PRE> |
| 171 | When the terminal is not hardwired into the system (or the current |
| 172 | system information is incorrect) the terminal type derived from the |
| 173 | <EM>/etc/ttys</EM> file or the <EM>TERM</EM> environment variable is often something |
| 174 | generic like <STRONG>network</STRONG>, <STRONG>dialup</STRONG>, or <STRONG>unknown</STRONG>. When <STRONG>tset</STRONG> is used in a |
| 175 | startup script it is often desirable to provide information about the |
| 176 | type of terminal used on such ports. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 177 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 178 | The <STRONG>-m</STRONG> options maps from some set of conditions to a terminal type, |
| 179 | that is, to tell <STRONG>tset</STRONG> "If I'm on this port at a particular speed, guess |
| 180 | that I'm on that kind of terminal". |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 181 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 182 | The argument to the <STRONG>-m</STRONG> option consists of an optional port type, an |
| 183 | optional operator, an optional baud rate specification, an optional |
| 184 | colon (":") character and a terminal type. The port type is a string |
| 185 | (delimited by either the operator or the colon character). The |
| 186 | operator may be any combination of ">", "<", "@", and "!"; ">" means |
| 187 | greater than, "<" means less than, "@" means equal to and "!" inverts |
| 188 | the sense of the test. The baud rate is specified as a number and is |
| 189 | compared with the speed of the standard error output (which should be |
| 190 | the control terminal). The terminal type is a string. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 191 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 192 | If the terminal type is not specified on the command line, the <STRONG>-m</STRONG> |
| 193 | mappings are applied to the terminal type. If the port type and baud |
| 194 | rate match the mapping, the terminal type specified in the mapping |
| 195 | replaces the current type. If more than one mapping is specified, the |
| 196 | first applicable mapping is used. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 197 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 198 | For example, consider the following mapping: <STRONG>dialup>9600:vt100</STRONG>. The |
| 199 | port type is dialup , the operator is >, the baud rate specification is |
| 200 | 9600, and the terminal type is vt100. The result of this mapping is to |
| 201 | specify that if the terminal type is <STRONG>dialup</STRONG>, and the baud rate is |
| 202 | greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> will be used. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 203 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 204 | If no baud rate is specified, the terminal type will match any baud |
| 205 | rate. If no port type is specified, the terminal type will match any |
| 206 | port type. For example, <STRONG>-m</STRONG> <STRONG>dialup:vt100</STRONG> <STRONG>-m</STRONG> <STRONG>:?xterm</STRONG> will cause any |
| 207 | dialup port, regardless of baud rate, to match the terminal type vt100, |
| 208 | and any non-dialup port type to match the terminal type ?xterm. Note, |
| 209 | because of the leading question mark, the user will be queried on a |
| 210 | default port as to whether they are actually using an xterm terminal. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 211 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 212 | No whitespace characters are permitted in the <STRONG>-m</STRONG> option argument. |
| 213 | Also, to avoid problems with meta-characters, it is suggested that the |
| 214 | entire <STRONG>-m</STRONG> option argument be placed within single quote characters, and |
| 215 | that <EM>csh</EM> users insert a backslash character ("\") before any |
| 216 | exclamation marks ("!"). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 217 | |
| 218 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 219 | </PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> |
| 220 | The options are as follows: |
| 221 | |
| 222 | <STRONG>-c</STRONG> Set control characters and modes. |
| 223 | |
| 224 | <STRONG>-e</STRONG> <EM>ch</EM> |
| 225 | Set the erase character to <EM>ch</EM>. |
| 226 | |
| 227 | <STRONG>-I</STRONG> Do not send the terminal or tab initialization strings to the |
| 228 | terminal. |
| 229 | |
| 230 | <STRONG>-i</STRONG> <EM>ch</EM> |
| 231 | Set the interrupt character to <EM>ch</EM>. |
| 232 | |
| 233 | <STRONG>-k</STRONG> <EM>ch</EM> |
| 234 | Set the line kill character to <EM>ch</EM>. |
| 235 | |
| 236 | <STRONG>-m</STRONG> <EM>mapping</EM> |
| 237 | Specify a mapping from a port type to a terminal; see subsection |
| 238 | "Terminal Type Mapping". |
| 239 | |
| 240 | <STRONG>-Q</STRONG> Do not display any values for the erase, interrupt and line kill |
| 241 | characters. Normally <STRONG>tset</STRONG> displays the values for control |
| 242 | characters which differ from the system's default values. |
| 243 | |
| 244 | <STRONG>-q</STRONG> The terminal type is displayed to the standard output, and the |
| 245 | terminal is not initialized in any way. The option "-" by itself |
| 246 | is equivalent but archaic. |
| 247 | |
| 248 | <STRONG>-r</STRONG> Print the terminal type to the standard error output. |
| 249 | |
| 250 | <STRONG>-s</STRONG> Print the sequence of shell commands to initialize the environment |
| 251 | variable <EM>TERM</EM> to the standard output; see subsection "Setting the |
| 252 | Environment". |
| 253 | |
| 254 | <STRONG>-V</STRONG> reports the version of <EM>ncurses</EM> which was used in this program, and |
| 255 | exits. |
| 256 | |
| 257 | <STRONG>-w</STRONG> Resize the window to match the size deduced via <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. |
| 258 | Normally this has no effect, unless <STRONG>setupterm</STRONG> is not able to |
| 259 | detect the window size. |
| 260 | |
| 261 | The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be entered as |
| 262 | actual characters or by using the "hat" notation, i.e., control-h may |
| 263 | be specified as "^H" or "^h". |
| 264 | |
| 265 | If neither <STRONG>-c</STRONG> or <STRONG>-w</STRONG> is given, both options are assumed. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 266 | |
| 267 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 268 | </PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 269 | The <STRONG>tset</STRONG> command uses these environment variables: |
| 270 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 271 | <EM>SHELL</EM> |
| 272 | tells <STRONG>tset</STRONG> whether to initialize <EM>TERM</EM> using <STRONG>sh(1)</STRONG> or <STRONG>csh(1)</STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 273 | syntax. |
| 274 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 275 | <EM>TERM</EM> Denotes your terminal type. Each terminal type is distinct, |
| 276 | though many are similar. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 277 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 278 | <EM>TERMCAP</EM> |
| 279 | may denote the location of a termcap database. If it is not an |
| 280 | absolute pathname, e.g., begins with a "/", <STRONG>tset</STRONG> removes the |
| 281 | variable from the environment before looking for the terminal |
| 282 | description. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 283 | |
| 284 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 285 | </PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> |
| 286 | <EM>/etc/ttys</EM> |
| 287 | system port name to terminal type mapping database (BSD versions |
| 288 | only). |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 289 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 290 | <EM>/usr/share/terminfo</EM> |
| 291 | compiled terminal description database directory |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 292 | |
| 293 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 294 | </PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> |
| 295 | Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 |
| 296 | (POSIX.1-2008) nor X/Open Curses Issue 7 documents <STRONG>tset</STRONG> or <STRONG>reset</STRONG>. |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 297 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 298 | The AT&T <STRONG>tput</STRONG> utility (AIX, HP-UX, Solaris) incorporated the terminal- |
| 299 | mode manipulation as well as termcap-based features such as resetting |
| 300 | tabstops from <STRONG>tset</STRONG> in BSD (4.1c), presumably with the intention of |
| 301 | making <STRONG>tset</STRONG> obsolete. However, each of those systems still provides |
| 302 | <STRONG>tset</STRONG>. In fact, the commonly-used <STRONG>reset</STRONG> utility is always an alias for |
| 303 | <STRONG>tset</STRONG>. |
| 304 | |
| 305 | The <STRONG>tset</STRONG> utility provides backward compatibility with BSD environments; |
| 306 | under most modern Unices, <EM>/etc/inittab</EM> and <STRONG>getty(8)</STRONG> can set <EM>TERM</EM> |
| 307 | appropriately for each dial-up line, obviating what was <STRONG>tset</STRONG>'s most |
| 308 | important use. This implementation behaves like 4.4BSD <STRONG>tset</STRONG>, with a |
| 309 | few exceptions we shall consider now. |
| 310 | |
| 311 | A few options are different because the <EM>TERMCAP</EM> variable is no longer |
| 312 | supported under terminfo-based <EM>ncurses</EM>: |
| 313 | |
| 314 | <STRONG>o</STRONG> The <STRONG>-S</STRONG> option of BSD <STRONG>tset</STRONG> no longer works; it prints an error |
| 315 | message to the standard error and dies. |
| 316 | |
| 317 | <STRONG>o</STRONG> The <STRONG>-s</STRONG> option only sets <EM>TERM</EM>, not <EM>TERMCAP</EM>. |
| 318 | |
| 319 | There was an undocumented 4.4BSD feature that invoking <STRONG>tset</STRONG> via a link |
| 320 | named "TSET" (or via any other name beginning with an upper-case |
| 321 | letter) set the terminal to use upper-case only. This feature has been |
| 322 | omitted. |
| 323 | |
| 324 | 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 |
| 325 | 4.4BSD. None of them were documented in 4.3BSD and all are of limited |
| 326 | utility at best. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not |
| 327 | documented or useful, but were retained as they appear to be in |
| 328 | widespread use. It is strongly recommended that any usage of these |
| 329 | three options be changed to use the <STRONG>-m</STRONG> option instead. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and |
| 330 | <STRONG>-p</STRONG> options are therefore omitted from the usage summary above. |
| 331 | |
| 332 | Very old systems, e.g., 3BSD, used a different terminal driver which |
| 333 | was replaced in 4BSD in the early 1980s. To accommodate these older |
| 334 | systems, the 4BSD <STRONG>tset</STRONG> provided a <STRONG>-n</STRONG> option to specify that the new |
| 335 | terminal driver should be used. This implementation does not provide |
| 336 | that choice. |
| 337 | |
| 338 | It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options without |
| 339 | arguments, although it is strongly recommended that such usage be fixed |
| 340 | to explicitly specify the character. |
| 341 | |
| 342 | As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies the <STRONG>-Q</STRONG> option. |
| 343 | Also, the interaction between the - option and the <EM>terminal</EM> argument in |
| 344 | some historic implementations of <STRONG>tset</STRONG> has been removed. |
| 345 | |
| 346 | The <STRONG>-c</STRONG> and <STRONG>-w</STRONG> options are not found in earlier implementations. |
| 347 | However, a different window size-change feature was provided in 4.4BSD. |
| 348 | |
| 349 | <STRONG>o</STRONG> In 4.4BSD, <STRONG>tset</STRONG> uses the window size from the termcap description |
| 350 | to set the window size if <STRONG>tset</STRONG> is not able to obtain the window |
| 351 | size from the operating system. |
| 352 | |
| 353 | <STRONG>o</STRONG> In <EM>ncurses</EM>, <STRONG>tset</STRONG> obtains the window size using <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>, which |
| 354 | may be from the operating system, the <EM>LINES</EM> and <EM>COLUMNS</EM> environment |
| 355 | variables or the terminal description. |
| 356 | |
| 357 | Obtaining the window size from a terminal's type description is common |
| 358 | to both implementations, but considered obsolescent. Its only |
| 359 | practical use is for hardware terminals. Generally, the window size |
| 360 | will remain uninitialized only if there were a problem obtaining the |
| 361 | value from the operating system (and <STRONG>setupterm</STRONG> would still fail). The |
| 362 | <EM>LINES</EM> and <EM>COLUMNS</EM> environment variables may thus be useful for working |
| 363 | around window-size problems, but have the drawback that if the window |
| 364 | is resized, their values must be recomputed and reassigned. The |
| 365 | <STRONG>resize(1)</STRONG> program distributed with <STRONG>xterm(1)</STRONG> assists this activity. |
| 366 | |
| 367 | |
| 368 | </PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> |
| 369 | A <STRONG>reset</STRONG> command written by Kurt Shoens appeared in 1BSD (March 1978). |
| 370 | It set the <EM>erase</EM> and <EM>kill</EM> characters to <STRONG>^H</STRONG> (backspace) and <STRONG>@</STRONG> |
| 371 | respectively. Mark Horton improved this <STRONG>reset</STRONG> in 3BSD (October 1979), |
| 372 | adding <EM>intr</EM>, <EM>quit</EM>, <EM>start</EM>/<EM>stop</EM>, and <EM>eof</EM> characters as well as changing |
| 373 | the program to avoid modifying any user settings. That version of |
| 374 | <STRONG>reset</STRONG> did not use <EM>termcap</EM>. |
| 375 | |
| 376 | Eric Allman wrote a distinct <STRONG>tset</STRONG> command for 1BSD, using a forerunner |
| 377 | of <EM>termcap</EM> called <EM>ttycap</EM>. Allman's comments in the source code |
| 378 | indicate that he began work in October 1977, continuing development |
| 379 | over the next few years. By late 1979, it had migrated to <EM>termcap</EM> and |
| 380 | handled the <EM>TERMCAP</EM> variable. Later comments indicate that <STRONG>tset</STRONG> was |
| 381 | modified in September 1980 to use logic copied from the 3BSD "reset" |
| 382 | program when it was invoked as <STRONG>reset</STRONG>. This version appeared in |
| 383 | 4.1cBSD, late in 1982. Other developers such as Keith Bostic and Jim |
| 384 | Bloom continued to modify <STRONG>tset</STRONG> until 4.4BSD was released in 1993. |
| 385 | |
| 386 | The <EM>ncurses</EM> implementation was lightly adapted from the 4.4BSD sources |
| 387 | to use the <EM>terminfo</EM> API by Eric S. Raymond <esr@snark.thyrsus.com>. |
| 388 | |
| 389 | |
| 390 | </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> |
| 391 | <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>, |
| 392 | <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 393 | |
| 394 | |
| 395 | |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 396 | ncurses 6.5 2024-04-27 <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 397 | </PRE> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 398 | <div class="nav"> |
| 399 | <ul> |
| 400 | <li><a href="#h2-NAME">NAME</a></li> |
| 401 | <li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 402 | <li><a href="#h2-DESCRIPTION">DESCRIPTION</a> |
| 403 | <ul> |
| 404 | <li><a href="#h3-tset----initialization">tset -- initialization</a></li> |
| 405 | <li><a href="#h3-reset----reinitialization">reset -- reinitialization</a></li> |
| 406 | <li><a href="#h3-Setting-the-Environment">Setting the Environment</a></li> |
| 407 | <li><a href="#h3-Terminal-Type-Mapping">Terminal Type Mapping</a></li> |
| 408 | </ul> |
| 409 | </li> |
| 410 | <li><a href="#h2-OPTIONS">OPTIONS</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 411 | <li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li> |
| 412 | <li><a href="#h2-FILES">FILES</a></li> |
micky387 | 9b9f5e7 | 2025-07-08 18:04:53 -0400 | [diff] [blame] | 413 | <li><a href="#h2-PORTABILITY">PORTABILITY</a></li> |
| 414 | <li><a href="#h2-HISTORY">HISTORY</a></li> |
Steve Kondik | ae271bc | 2015-11-15 02:50:53 +0100 | [diff] [blame] | 415 | <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> |
| 416 | </ul> |
| 417 | </div> |
Amit Daniel Kachhap | e6a01f5 | 2011-07-20 11:45:59 +0530 | [diff] [blame] | 418 | </BODY> |
| 419 | </HTML> |