8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / man / man1b / tset.1b
blob66c60b8913ee6198d5ea369794d1f87f7b82d238
1 '\" te
2 .\"  Copyright (c) 1988, 1995 Sun Microsystems, Inc.   All Rights Reserved
3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
6 .TH TSET 1B "Feb 15, 1995"
7 .SH NAME
8 tset, reset \- establish or restore terminal characteristics
9 .SH SYNOPSIS
10 .LP
11 .nf
12 \fBtset\fR [\fB-InQrs\fR] [\fB-e\fR\fIc\fR] [\fB-k\fR\fIc\fR]
13      [\fB-m\fR [\fIport-ID\fR [\fIbaudrate\fR] : \fItype\fR]...] [\fItype\fR]
14 .fi
16 .LP
17 .nf
18 \fBreset\fR [\fB-\fR] [\fB-e\fR\fIc\fR] [\fB-I\fR] [\fB-k\fR\fIc\fR]
19      [\fB-n\fR] [\fB-Q\fR] [\fB-r\fR] [\fB-s\fR]
20      [\fB-m\fR [\fIindent\fR] [\fItest\fR \fIbaudrate\fR] : \fItype\fR]... [\fItype\fR]
21 .fi
23 .SH DESCRIPTION
24 .sp
25 .LP
26 The \fBtset\fR utility sets up your terminal, typically when you first log in.
27 It does terminal dependent processing such as setting erase and kill
28 characters, setting or resetting delays, sending any sequences needed to
29 properly initialized the terminal, and the like. \fBtset\fR first determines
30 the \fBtype\fR of terminal involved, and then does necessary initializations
31 and mode settings. If a port is not wired permanently to a specific terminal
32 (not hardwired) it is given an appropriate generic identifier such as
33 \fBdialup\fR.
34 .sp
35 .LP
36 \fBreset\fR clears the terminal settings by turning off  CBREAK and  RAW modes,
37 output delays and parity checking, turns on NEWLINE translation, echo and TAB
38 expansion, and restores undefined special characters to their default state.
39 It then sets the modes as usual, based on the terminal type (which will
40 probably override some of the above). See \fBstty\fR(1) for more information.
41 All arguments to \fBtset\fR may be used with \fBreset\fR. \fBreset\fR also uses
42 \fBrs=\fR and \fBrf=\fR to reset the initialization string and file. This is
43 useful after a program dies and leaves the terminal in a funny state. Often in
44 this situation, characters will not echo as you type them. You may have to type
45 LINEFEED \fBreset\fR LINEFEED since RETURN may not work.
46 .sp
47 .LP
48 When no arguments are specified, \fBtset\fR reads the terminal type from the
49 \fBTERM\fR environment variable and re-initializes the terminal, and performs
50 initialization of mode, environment and other options at login time to
51 determine the terminal type and set up terminal modes.
52 .sp
53 .LP
54 When used in a startup script (\fB\&.profile\fR for \fBsh\fR(1) users or
55 \fB\&.login\fR for \fBcsh\fR(1) users) it is desirable to give information
56 about the type of terminal you will usually use on ports that are not
57 hardwired. Any of the alternate generic names given in the file
58 \fB/etc/termcap\fR are possible identifiers. Refer to the \fB-m\fR option below
59 for more information. If no mapping applies and a final \fBtype\fR option, not
60 preceded by a \fB-m\fR, is given on the command line then that type is used.
61 .sp
62 .LP
63 It is usually desirable to return the terminal type, as finally determined by
64 \fBtset\fR, and information about the terminal's capabilities, to a shell's
65 environment. This can be done using the \fB\(mi\fR, \fB-s\fR, or \fB-S\fR
66 options.
67 .sp
68 .LP
69 For the Bourne shell, put this command in your \fB\&.profile\fR file:
70 .sp
71 .in +2
72 .nf
73 eval `tset \fB-s\fR \fIoptions...\fR`
74 .fi
75 .in -2
77 .sp
78 .LP
79 or using the C shell, put these commands in your \fB\&.login\fR file:
80 .sp
81 .in +2
82 .nf
83 set noglob
84 eval `tset \fB-s\fR \fIoptions...\fR\fB`\fRunset noglob
85 .fi
86 .in -2
88 .sp
89 .LP
90 With the C shell, it is also convenient to make an alias in your \fB\&.cshrc\fR
91 file:
92 .sp
93 .in +2
94 .nf
95 alias ts 'eval `tset \fB-s\fR \e!*`'
96 .fi
97 .in -2
99 .sp
101 This also allows the command:
103 .in +2
105 ts 2621
107 .in -2
111 to be invoked at any time to set the terminal and environment. It is not
112 possible to get this aliasing effect with a Bourne shell script, because shell
113 scripts cannot set the environment of their parent. If a process could set its
114 parent's environment, none of this nonsense would be necessary in the first
115 place.
118 Once the terminal type is known, \fBtset\fR sets the terminal driver mode. This
119 normally involves sending an initialization sequence to the terminal, setting
120 the single character erase (and optionally the line-kill (full line erase))
121 characters, and setting special character delays. TAB and NEWLINE expansion are
122 turned off during transmission of the terminal initialization sequence.
125 On terminals that can backspace but not overstrike (such as a CRT), and when
126 the erase character is `\fB#\fR', the erase character is changed as if \fB-e\fR
127 had been used.
128 .SH OPTIONS
130 .ne 2
132 \fB\fB\(mi\fR\fR
134 .RS 8n
135 The name of the terminal finally decided upon is output on the standard output.
136 This is intended to be captured by the shell and placed in the \fBTERM\fR
137 environment variable.
141 .ne 2
143 \fB\fB-e\fR\fIc\fR\fR
145 .RS 8n
146 Set the erase character to be the named character \fIc\fR on all terminals.
147 Default is the BACKSPACE key on the keyboard, usually \fB^H\fR (CTRL-H). The
148 character \fIc\fR can either be typed directly, or entered using the
149 circumflex-character notation used here.
153 .ne 2
155 \fB\fB-i\fR\fIc\fR\fR
157 .RS 8n
158 Set the interrupt character to be the named character \fIc\fR on all terminals.
159 Default is \fB^C\fR (CTRL-C). The character \fIc\fR can either be typed
160 directly, or entered using the circumflex-character notation used here.
164 .ne 2
166 \fB\fB-I\fR\fR
168 .RS 8n
169 Suppress transmitting terminal-initialization strings.
173 .ne 2
175 \fB\fB-k\fR\fIc\fR\fR
177 .RS 8n
178 Set the line kill character to be the named character \fIc\fR on all terminals.
179 Default is \fB^U\fR (CTRL-U). The kill character is left alone if \fB-k\fR is
180 not specified. Control characters can be specified by prefixing the
181 alphabetical character with a circumflex (as in CTRL-U) instead of entering the
182 actual control key itself.  This allows you to specify control keys that are
183 currently assigned.
187 .ne 2
189 \fB\fB-n\fR\fR
191 .RS 8n
192 Specify that the new tty driver modes should be initialized for this terminal.
193 Probably useless since \fBstty new\fR is the default.
197 .ne 2
199 \fB\fB-Q\fR\fR
201 .RS 8n
202 Suppress printing the `\fBErase set to\fR' and `\fBKill set to\fR' messages.
206 .ne 2
208 \fB\fB-r\fR\fR
210 .RS 8n
211 In addition to other actions, reports the terminal type.
215 .ne 2
217 \fB\fB-s\fR\fR
219 .RS 8n
220 Output commands to set and export \fBTERM\fR. This can be used with
222 .in +2
224 \fBset noglob
225 eval `tset \fR\fB-s\fR\fB .\|.\|.`
226 unset noglob\fR
228 .in -2
231 to bring the terminal information into the environment. Doing so makes programs
232 such as \fBvi\fR(1) start up faster. If the \fBSHELL\fR environment variable
233 ends with \fBcsh\fR, C shell commands are output, otherwise Bourne shell
234 commands are output.
238 .ne 2
240 \fB\fB-m\fR [ \fIport-ID\fR [ \fIbaudrate\fR ] \fB:\fR \fBtype\fR ] .\|.\|.\fR
242 .sp .6
243 .RS 4n
244 Specify (map) a terminal type when connected to a generic port (such as
245 \fIdialup\fR or \fIplugboard\fR) identified by \fIport-ID\fR. The
246 \fIbaudrate\fR argument can be used to check the baudrate of the port and set
247 the terminal type accordingly.  The target rate is prefixed by any combination
248 of the following operators to specify the conditions under which the mapping is
249 made:
251 .ne 2
253 \fB\fB>\fR\fR
255 .RS 5n
256 Greater than
260 .ne 2
262 \fB\fB@\fR\fR
264 .RS 5n
265 Equals or ``at''
269 .ne 2
271 \fB\fB<\fR\fR
273 .RS 5n
274 Less than
278 .ne 2
280 \fB\fB!\fR\fR
282 .RS 5n
283 It is not the case that (negates the above operators)
287 .ne 2
289 \fB\fB?\fR\fR
291 .RS 5n
292 Prompt for the terminal type.  If no response is given, then \fBtype\fR is
293 selected by default.
296 In the following example, the terminal type is set to \fBadm3a\fR if the port
297 is a dialup with a speed of greater than 300 or to \fBdw2\fR if the port is a
298 dialup at 300 baud or less. In the third case, the question mark preceding the
299 terminal type indicates that the user is to verify the type desired.  A
300 \fINULL\fR response indicates that the named type is correct. Otherwise, the
301 user's response is taken to be the type desired.
303 .in +2
305 \fBtset \fR\fB-m\fR\fB 'dialup>300:adm3a' \fR\fB-m\fR\fB 'dialup:dw2' \fR\fB-m\fR\fB 'plugboard:?adm3a'\fR
307 .in -2
310 To prevent interpretation as metacharacters, the entire argument to \fB-m\fR
311 should be enclosed in single quotes.   When using the C shell, exclamation
312 points should be preceded by a backslash (\e).
315 .SH EXAMPLES
318 These examples all use the `\fB\(mi\fR\&' option.  A typical use of \fBtset\fR
319 in a \fB\&.profile\fR or \fB\&.login\fR will also use the \fB-e\fR and \fB-k\fR
320 options, and often the \fB-n\fR or \fB-Q\fR options as well. These options have
321 been omitted here to keep the examples short.
323 \fBExample 1 \fRSelecting a terminal
326 To select a 2621, you might put the following sequence of commands in your
327 \fB\&.login\fR file (or \fB\&.profile\fR for Bourne shell users).
330 .in +2
332 \fBset noglob
333 eval `tset \fR\fB-s\fR\fB 2621`
334 unset noglob\fR
336 .in -2
341 If you want to make the selection based only on the baud rate, you might use
342 the following:
345 .in +2
347 \fBset noglob
348 eval `tset \fR\fB-s\fR\fB \fR\fB-m\fR\fB '>1200:wy' 2621`
349 unset noglob\fR
351 .in -2
355 \fBExample 2 \fRSelecting terminals according to speed or baud rate
358 If you have a switch which connects to various ports (making it impractical to
359 identify which port you may be connected to), and use various terminals from
360 time to time, you can select from among those terminals according to the
361 \fIspeed\fR or baud rate. In the example below, \fBtset\fR will prompt you for
362 a terminal type if the baud rate is greater than 1200 (say, 9600 for a terminal
363 connected by an RS-232 line), and use a Wyse\(rg 50 by default.  If the baud
364 rate is less than or equal to 1200, it will select a 2621. Note the placement
365 of the question mark, and the quotes to protect the \fB>\fR and \fB?\fR from
366 interpretation by the shell.
369 .in +2
371 \fBset noglob
372 eval `tset \fR\fB-s\fR\fB \fR\fB-m\fR\fB 'switch>1200:?wy' \fR\fB-m\fR\fB 'switch<=1200:2621'`
373 unset noglob\fR
375 .in -2
379 \fBExample 3 \fRSelecting the terminal used most often
382 The following entry is appropriate if you always dial up, always at the same
383 baud rate, on many different kinds of terminals, and the terminal you use most
384 often is an \fBadm3a\fR.
387 .in +2
389 \fBset noglob
390 eval `tset \fR\fB-s\fR\fB ?adm3a`
391 unset noglob\fR
393 .in -2
397 \fBExample 4 \fRSelecting a terminal with specific settings
400 The following example quietly sets the erase character to \fBBACKSPACE,\fR and
401 kill to \fBCTRL-U.\fR If the port is switched, it selects a Concept\(tm 100 for
402 speeds less than or equal to 1200, and asks for the terminal type otherwise
403 (the default in this case is a Wyse 50). If the port is a direct dialup, it
404 selects Concept 100 as the terminal type. If logging in over the \fBARPANET,\fR
405 the terminal type selected is a Datamedia\(rg 2500 terminal or emulator.  Note
406 the backslash escaping the \fBNEWLINE\fR at the end of the first line in the
407 example.
410 .in +2
412 set noglob
413 eval `tset \fB-e\fR \fB-k\fR^U \fB-Q\fR \fB-s\fR \fB-m\fR 'switch<=1200:concept100' \fB-m\fR\e
414    'switch:?wy' \fB-m\fR dialup:concept100 \fB-m\fR arpanet:dm2500`
415 unset noglob
417 .in -2
420 .SH FILES
422 .ne 2
424 \fB\fB\&.login\fR\fR
426 .RS 16n
431 .ne 2
433 \fB\fB\&.profile\fR\fR
435 .RS 16n
440 .ne 2
442 \fB\fB/etc/termcap\fR\fR
444 .RS 16n
448 .SH SEE ALSO
451 \fBcsh\fR(1), \fBsh\fR(1), \fBstty\fR(1), \fBvi\fR(1), \fBattributes\fR(5),
452 \fBenviron\fR(5)
453 .SH NOTES
456 The \fBtset\fR command is one of the first commands a user must master when
457 getting started on a \fBUNIX\fR system. Unfortunately, it is one of the most
458 complex, largely because of the extra effort the user must go through to get
459 the environment of the login shell set. Something needs to be done to make all
460 this simpler, either the \fBlogin\fR program should do this stuff, or a default
461 shell alias should be made, or a way to set the environment of the parent
462 should exist.
465 This program cannot intuit personal choices for erase, interrupt and line kill
466 characters, so it leaves these set to the local system standards.
469 It could well be argued that the shell should be responsible for ensuring that
470 the terminal remains in a sane state; this would eliminate the need for the
471 \fBreset\fR program.