home *** CD-ROM | disk | FTP | other *** search
Text File | 1987-10-04 | 54.1 KB | 1,255 lines |
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- NAME
- termcap - terminal capability data base
-
- SYNOPSIS
- /etc/termcap
-
- DESCRIPTION
- _✓T_✓e_✓r_✓m_✓c_✓a_✓p is a data base describing terminals, used, _✓e._✓g., by
- _✓v_✓i(1) and _✓c_✓u_✓r_✓s_✓e_✓s(3X). Terminals are described in _✓t_✓e_✓r_✓m_✓c_✓a_✓p by
- giving a set of capabilities that they have and by describ-
- ing how operations are performed. Padding requirements and
- initialization sequences are included in _✓t_✓e_✓r_✓m_✓c_✓a_✓p.
-
- Entries in _✓t_✓e_✓r_✓m_✓c_✓a_✓p consist of a number of `:'-separated
- fields. The first entry for each terminal gives the names
- that are known for the terminal, separated by `|' charac-
- ters. The first name is always two characters long and is
- used by older systems which store the terminal type in a
- 16-bit word in a system-wide data base. The second name
- given is the most common abbreviation for the terminal, the
- last name given should be a long name fully identifying the
- terminal, and all others are understood as synonyms for the
- terminal name. All names but the first and last should be
- in lower case and contain no blanks; the last name may well
- contain upper case and blanks for readability.
-
- Terminal names (except for the last, verbose entry) should
- be chosen using the following conventions. The particular
- piece of hardware making up the terminal should have a root
- name chosen, thus "hp2621". This name should not contain
- hyphens. Modes that the hardware can be in or user prefer-
- ences should be indicated by appending a hyphen and an indi-
- cator of the mode. Therefore, a "vt100" in 132-column mode
- would be "vt100-w". The following suffixes should be used
- where possible:
-
- Suffix Meaning Example
- -w Wide mode (more than 80 columns) vt100-w
- -am With automatic margins (usually default) vt100-am
- -nam Without automatic margins vt100-nam
- -_✓n Number of lines on the screen aaa-60
- -na No arrow keys (leave them in local) concept100-na
- -_✓np Number of pages of memory concept100-4p
- -rv Reverse video concept100-rv
-
- CAPABILITIES
- The characters in the _✓N_✓o_✓t_✓e_✓s field in the table have the fol-
- lowing meanings (more than one may apply to a capability):
-
- N indicates numeric parameter(s)
- P indicates that padding may be specified
- * indicates that padding may be based on the number of lines affected
-
-
-
- Printed 8/14/86 1 November 1985 1
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- o indicates capability is obsolete
-
- "Obsolete" capabilities have no _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o equivalents, since
- they were considered useless, or are subsumed by other capa-
- bilities. New software should not rely on them at all.
-
- Name Type Notes Description
- ae str (P) End alternate character set
- AL str (NP*) Add _✓n new blank lines
- al str (P*) Add new blank line
- am bool Terminal has automatic margins
- as str (P) Start alternate character set
- bc str (o) Backspace if not ^H
- bl str (P) Audible signal (bell)
- bs bool (o) Terminal can backspace with ^H
- bt str (P) Back tab
- bw bool le (backspace) wraps from column 0 to last column
- CC str Terminal settable command character in prototype
- cd str (P*) Clear to end of display
- ce str (P) Clear to end of line
- ch str (NP) Set cursor column (horizontal position)
- cl str (P*) Clear screen and home cursor
- CM str (NP) Memory-relative cursor addressing
- cm str (NP) Screen-relative cursor motion
- co num Number of columns in a line (See BUGS section below)
- cr str (P) Carriage return
- cs str (NP) Change scrolling region (VT100)
- ct str (P) Clear all tab stops
- cv str (NP) Set cursor row (vertical position)
- da bool Display may be retained above the screen
- dB num (o) Milliseconds of bs delay needed (default 0)
- db bool Display may be retained below the screen
- DC str (NP*) Delete _✓n characters
- dC num (o) Milliseconds of cr delay needed (default 0)
- dc str (P*) Delete character
- dF num (o) Milliseconds of ff delay needed (default 0)
- DL str (NP*) Delete _✓n lines
- dl str (P*) Delete line
- dm str Enter delete mode
- dN num (o) Milliseconds of nl delay needed (default 0)
- DO str (NP*) Move cursor down _✓n lines
- do str Down one line
- ds str Disable status line
- dT num (o) Milliseconds of horizontal tab delay needed (default 0)
- dV num (o) Milliseconds of vertical tab delay needed (default 0)
- ec str (NP) Erase _✓n characters
- ed str End delete mode
- ei str End insert mode
- eo bool Can erase overstrikes with a blank
- EP bool (o) Even parity
- es bool Escape can be used on the status line
- ff str (P*) Hardcopy terminal page eject
-
-
-
- Printed 8/14/86 1 November 1985 2
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- fs str Return from status line
- gn bool Generic line type (_✓e._✓g. dialup, switch)
- hc bool Hardcopy terminal
- HD bool (o) Half-duplex
- hd str Half-line down (forward 1/2 linefeed)
- ho str (P) Home cursor
- hs bool Has extra "status line"
- hu str Half-line up (reverse 1/2 linefeed)
- hz bool Cannot print ~s (Hazeltine)
- i1-i3 str Terminal initialization strings (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- IC str (NP*) Insert _✓n blank characters
- ic str (P*) Insert character
- if str Name of file containing initialization string
- im str Enter insert mode
- in bool Insert mode distinguishes nulls
- iP str Pathname of program for initialization (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- ip str (P*) Insert pad after character inserted
- is str Terminal initialization string (_✓t_✓e_✓r_✓m_✓c_✓a_✓p only)
- it num Tabs initially every _✓n positions
- K1 str Sent by keypad upper left
- K2 str Sent by keypad upper right
- K3 str Sent by keypad center
- K4 str Sent by keypad lower left
- K5 str Sent by keypad lower right
- k0-k9 str Sent by function keys 0-9
- kA str Sent by insert-line key
- ka str Sent by clear-all-tabs key
- kb str Sent by backspace key
- kC str Sent by clear-screen or erase key
- kD str Sent by delete-character key
- kd str Sent by down-arrow key
- kE str Sent by clear-to-end-of-line key
- ke str Out of "keypad transmit" mode
- kF str Sent by scroll-forward/down key
- kH str Sent by home-down key
- kh str Sent by home key
- kI str Sent by insert-character or enter-insert-mode key
- kL str Sent by delete-line key
- kl str Sent by left-arrow key
- kM str Sent by insert key while in insert mode
- km bool Has a "meta" key (shift, sets parity bit)
- kN str Sent by next-page key
- kn num (o) Number of function (k0-k9) keys (default 0)
- ko str (o) Termcap entries for other non-function keys
- kP str Sent by previous-page key
- kR str Sent by scroll-backward/up key
- kr str Sent by right-arrow key
- kS str Sent by clear-to-end-of-screen key
- ks str Put terminal in "keypad transmit" mode
- kT str Sent by set-tab key
- kt str Sent by clear-tab key
- ku str Sent by up-arrow key
-
-
-
- Printed 8/14/86 1 November 1985 3
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- l0-l9 str Labels on function keys if not "f_✓n"
- LC bool (o) Lower-case only
- LE str (NP) Move cursor left _✓n positions
- le str (P) Move cursor left one position
- li num Number of lines on screen or page (See BUGS section below)
- ll str Last line, first column
- lm num Lines of memory if > li (0 means varies)
- ma str (o) Arrow key map (used by _✓v_✓i version 2 only)
- mb str Turn on blinking attribute
- md str Turn on bold (extra bright) attribute
- me str Turn off all attributes
- mh str Turn on half-bright attribute
- mi bool Safe to move while in insert mode
- mk str Turn on blank attribute (characters invisible)
- ml str (o) Memory lock on above cursor
- mm str Turn on "meta mode" (8th bit)
- mo str Turn off "meta mode"
- mp str Turn on protected attribute
- mr str Turn on reverse-video attibute
- ms bool Safe to move in standout modes
- mu str (o) Memory unlock (turn off memory lock)
- nc bool (o) No correctly-working cr (Datamedia 2500, Hazeltine 2000)
- nd str Non-destructive space (cursor right)
- NL bool (o) \n is newline, not line feed
- nl str (o) Newline character if not \n
- ns bool (o) Terminal is a CRT but doesn't scroll
- nw str (P) Newline (behaves like cr followed by do)
- OP bool (o) Odd parity
- os bool Terminal overstrikes
- pb num Lowest baud where delays are required
- pc str Pad character (default NUL)
- pf str Turn off the printer
- pk str Program function key _✓n to type string _✓s (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- pl str Program function key _✓n to execute string _✓s (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- pO str (N) Turn on the printer for _✓n bytes
- po str Turn on the printer
- ps str Print contents of the screen
- pt bool (o) Has hardware tabs (may need to be set with is)
- px str Program function key _✓n to transmit string _✓s (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- r1-r3 str Reset terminal completely to sane modes (_✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o only)
- rc str (P) Restore cursor to position of last sc
- rf str Name of file containing reset codes
- RI str (NP) Move cursor right _✓n positions
- rp str (NP*) Repeat character _✓c _✓n times
- rs str Reset terminal completely to sane modes (_✓t_✓e_✓r_✓m_✓c_✓a_✓p only)
- sa str (NP) Define the video attributes
- sc str (P) Save cursor position
- se str End standout mode
- SF str (NP*) Scroll forward _✓n lines
- sf str (P) Scroll text up
- sg num Number of garbage chars left by so or se (default 0)
- so str Begin standout mode
-
-
-
- Printed 8/14/86 1 November 1985 4
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- SR str (NP*) Scroll backward _✓n lines
- sr str (P) Scroll text down
- st str Set a tab in all rows, current column
- ta str (P) Tab to next 8-position hardware tab stop
- tc str Entry of similar terminal - must be last
- te str String to end programs that use _✓t_✓e_✓r_✓m_✓c_✓a_✓p
- ti str String to begin programs that use _✓t_✓e_✓r_✓m_✓c_✓a_✓p
- ts str (N) Go to status line, column _✓n
- UC bool (o) Upper-case only
- uc str Underscore one character and move past it
- ue str End underscore mode
- ug num Number of garbage chars left by us or ue (default 0)
- ul bool Underline character overstrikes
- UP str (NP*) Move cursor up _✓n lines
- up str Upline (cursor up)
- us str Start underscore mode
- vb str Visible bell (must not move cursor)
- ve str Make cursor appear normal (undo vs/vi)
- vi str Make cursor invisible
- vs str Make cursor very visible
- vt num Virtual terminal number (not supported on all systems)
- wi str (N) Set current window
- ws num Number of columns in status line
- xb bool Beehive (f1=ESC, f2=^C)
- xn bool Newline ignored after 80 cols (Concept)
- xo bool Terminal uses xoff/xon (DC3/DC1) handshaking
- xr bool (o) Return acts like ce cr nl (Delta Data)
- xs bool Standout not erased by overwriting (Hewlett-Packard)
- xt bool Tabs ruin, magic so char (Teleray 1061)
- xx bool (o) Tektronix 4025 insert-line
-
- A Sample Entry
-
- The following entry, which describes the Concept-100, is
- among the more complex entries in the _✓t_✓e_✓r_✓m_✓c_✓a_✓p file as of
- this writing.
-
- ca|concept100|c100|concept|c104|concept100-4p|HDS Concept-100:\
- :al=3*\E^R:am:bl=^G:cd=16*\E^C:ce=16\E^U:cl=2*^L:cm=\Ea%+ %+ :\
- :co#80:.cr=9^M:db:dc=16\E^A:dl=3*\E^B:do=^J:ei=\E\200:eo:im=\E^P:in:\
- :ip=16*:is=\EU\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E:k1=\E5:\
- :k2=\E6:k3=\E7:kb=^h:kd=\E<:ke=\Ex:kh=\E?:kl=\E>:kr=\E=:ks=\EX:\
- :ku=\E;:le=^H:li#24:mb=\EC:me=\EN\200:mh=\EE:mi:mk=\EH:mp=\EI:\
- :mr=\ED:nd=\E=:pb#9600:rp=0.2*\Er%.%+ :se=\Ed\Ee:sf=^J:so=\EE\ED:\
- :.ta=8\t:te=\Ev \200\200\200\200\200\200\Ep\r\n:\
- :ti=\EU\Ev 8p\Ep\r:ue=\Eg:ul:up=\E;:us=\EG:\
- :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\
- :ve=\Ew:vs=\EW:vt#8:xn:\
- :bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt:
-
- Entries may continue onto multiple lines by giving a \ as
- the last character of a line, and empty fields may be
-
-
-
- Printed 8/14/86 1 November 1985 5
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- included for readability (here between the last field on a
- line and the first field on the next). Comments may be
- included on lines beginning with "#".
-
- Types of Capabilities
-
- Capabilities in _✓t_✓e_✓r_✓m_✓c_✓a_✓p are of three types: Boolean capabil-
- ities, which indicate particular features that the terminal
- has; numeric capabilities, giving the size of the display or
- the size of other attributes; and string capabilities, which
- give character sequences that can be used to perform partic-
- ular terminal operations. All capabilities have two-letter
- codes. For instance, the fact that the Concept has
- _✓a_✓u_✓t_✓o_✓m_✓a_✓t_✓i_✓c _✓m_✓a_✓r_✓g_✓i_✓n_✓s (_✓i._✓e., an automatic return and linefeed
- when the end of a line is reached) is indicated by the
- Boolean capability am. Hence the description of the Concept
- includes am.
-
- Numeric capabilities are followed by the character `#' then
- the value. In the example above co, which indicates the
- number of columns the display has, gives the value `80' for
- the Concept.
-
- Finally, string-valued capabilities, such as ce (clear-to-
- end-of-line sequence) are given by the two-letter code, an
- `=', then a string ending at the next following `:'. A
- delay in milliseconds may appear after the `=' in such a
- capability, which causes padding characters to be supplied
- by _✓t_✓p_✓u_✓t_✓s after the remainder of the string is sent to pro-
- vide this delay. The delay can be either a number, _✓e._✓g.
- `20', or a number followed by an `*', _✓i._✓e., `3*'. An `*'
- indicates that the padding required is proportional to the
- number of lines affected by the operation, and the amount
- given is the per-affected-line padding required. (In the
- case of insert-character, the factor is still the number of
- _✓l_✓i_✓n_✓e_✓s affected; this is always 1 unless the terminal has in
- and the software uses it.) When an `*' is specified, it is
- sometimes useful to give a delay of the form `3.5' to
- specify a delay per line to tenths of milliseconds. (Only
- one decimal place is allowed.)
-
- A number of escape sequences are provided in the string-
- valued capabilities for easy encoding of control characters
- there. \E maps to an ESC character, ^X maps to a control-X
- for any appropriate X, and the sequences \n \r \t \b \f map
- to linefeed, return, tab, backspace, and formfeed, respec-
- tively. Finally, characters may be given as three octal
- digits after a \, and the characters ^ and \ may be given as
- \^ and \\. If it is necessary to place a : in a capability
- it must be escaped in octal as \072. If it is necessary to
- place a NUL character in a string capability it must be
- encoded as \200. (The routines that deal with _✓t_✓e_✓r_✓m_✓c_✓a_✓p use C
-
-
-
- Printed 8/14/86 1 November 1985 6
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- strings and strip the high bits of the output very late, so
- that a \200 comes out as a \000 would.)
-
- Sometimes individual capabilities must be commented out. To
- do this, put a period before the capability name. For exam-
- ple, see the first cr and ta in the example above.
-
- Preparing Descriptions
-
- We now outline how to prepare descriptions of terminals.
- The most effective way to prepare a terminal description is
- by imitating the description of a similar terminal in
- _✓t_✓e_✓r_✓m_✓c_✓a_✓p and to build up a description gradually, using par-
- tial descriptions with _✓v_✓i to check that they are correct.
- Be aware that a very unusual terminal may expose deficien-
- cies in the ability of the _✓t_✓e_✓r_✓m_✓c_✓a_✓p file to describe it or
- bugs in _✓v_✓i. To easily test a new terminal description you
- can set the environment variable TERMCAP to the absolute
- pathname of a file containing the description you are work-
- ing on and programs will look there rather than in
- /_✓e_✓t_✓c/_✓t_✓e_✓r_✓m_✓c_✓a_✓p. TERMCAP can also be set to the _✓t_✓e_✓r_✓m_✓c_✓a_✓p entry
- itself to avoid reading the file when starting up a program.
-
- To get the padding for insert-line right (if the terminal
- manufacturer did not document it), a severe test is to use
- _✓v_✓i to edit /_✓e_✓t_✓c/_✓p_✓a_✓s_✓s_✓w_✓d at 9600 baud, delete roughly 16 lines
- from the middle of the screen, then hit the `u' key several
- times quickly. If the display messes up, more padding is
- usually needed. A similar test can be used for insert-
- character.
-
- Basic Capabilities
-
- The number of columns on each line of the display is given
- by the co numeric capability. If the display is a CRT, then
- the number of lines on the screen is given by the li capa-
- bility. If the display wraps around to the beginning of the
- next line when the cursor reaches the right margin, then it
- should have the am capability. If the terminal can clear
- its screen, the code to do this is given by the cl string
- capability. If the terminal overstrikes (rather than clear-
- ing the position when a character is overwritten), it should
- have the os capability. If the terminal is a printing ter-
- minal, with no soft copy unit, give it both hc and os. (os
- applies to storage scope terminals, such as the Tektronix
- 4010 series, as well as to hard copy and APL terminals.) If
- there is a code to move the cursor to the left edge of the
- current row, give this as cr. (Normally this will be
- carriage-return, ^M.) If there is a code to produce an audi-
- ble signal (bell, beep, _✓e_✓t_✓c.), give this as bl.
-
-
-
-
-
- Printed 8/14/86 1 November 1985 7
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- If there is a code (such as backspace) to move the cursor
- one position to the left, that capability should be given as
- le. Similarly, codes to move to the right, up, and down
- should be given as nd, up, and do, respectively. These
- _✓l_✓o_✓c_✓a_✓l _✓c_✓u_✓r_✓s_✓o_✓r _✓m_✓o_✓t_✓i_✓o_✓n_✓s should not alter the text they pass
- over; for example, you would not normally use "nd= " unless
- the terminal has the os capability, because the space would
- erase the character moved over.
-
- A very important point here is that the local cursor motions
- encoded in _✓t_✓e_✓r_✓m_✓c_✓a_✓p have undefined behavior at the left and
- top edges of a CRT display. Programs should never attempt
- to backspace around the left edge, unless bw is given, and
- never attempt to go up off the top using local cursor
- motions.
-
- In order to scroll text up, a program goes to the bottom
- left corner of the screen and sends the sf (index) string.
- To scroll text down, a program goes to the top left corner
- of the screen and sends the sr (reverse index) string. The
- strings sf and sr have undefined behavior when not on their
- respective corners of the screen. Parameterized versions of
- the scrolling sequences are SF and SR, which have the same
- semantics as sf and sr except that they take one parameter
- and scroll that many lines. They also have undefined
- behavior except at the appropriate corner of the screen.
-
- The am capability tells whether the cursor sticks at the
- right edge of the screen when text is output there, but this
- does not necessarily apply to nd from the last column.
- Leftward local motion is defined from the left edge only
- when bw is given; then an le from the left edge will move to
- the right edge of the previous row. This is useful for
- drawing a box around the edge of the screen, for example.
- If the terminal has switch-selectable automatic margins, the
- _✓t_✓e_✓r_✓m_✓c_✓a_✓p description usually assumes that this feature is on,
- _✓i._✓e., am. If the terminal has a command that moves to the
- first column of the next line, that command can be given as
- nw (newline). It is permissible for this to clear the
- remainder of the current line, so if the terminal has no
- correctly-working CR and LF it may still be possible to
- craft a working nw out of one or both of them.
-
- These capabilities suffice to describe hardcopy and "glass-
- tty" terminals. Thus the Teletype model 33 is described as
-
- T3|tty33|33|tty|Teletype model 33:\
- :bl=^G:co#72:cr=^M:do=^J:hc:os:
-
- and the Lear Siegler ADM-3 is described as
-
-
-
-
-
- Printed 8/14/86 1 November 1985 8
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- l3|adm3|3|LSI ADM-3:\
- :am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J:
-
- Parameterized Strings
-
- Cursor addressing and other strings requiring parameters are
- described by a parameterized string capability, with
- _✓p_✓r_✓i_✓n_✓t_✓f(3S)-like escapes %x in it, while other characters are
- passed through unchanged. For example, to address the cur-
- sor the cm capability is given, using two parameters: the
- row and column to move to. (Rows and columns are numbered
- from zero and refer to the physical screen visible to the
- user, not to any unseen memory. If the terminal has
- memory-relative cursor addressing, that can be indicated by
- an analogous CM capability.)
-
- The % encodings have the following meanings:
-
- %% output `%'
- %d output value as in _✓p_✓r_✓i_✓n_✓t_✓f %d
- %2 output value as in _✓p_✓r_✓i_✓n_✓t_✓f %2d
- %3 output value as in _✓p_✓r_✓i_✓n_✓t_✓f %3d
- %. output value as in _✓p_✓r_✓i_✓n_✓t_✓f %c
- %+_✓x add _✓x to value, then do %.
- %>_✓x_✓y if value > _✓x then add _✓y, no output
- %r reverse order of two parameters, no output
- %i increment by one, no output
- %n exclusive-or all parameters with 0140 (Datamedia 2500)
- %B BCD (16*(value/10)) + (value%10), no output
- %D Reverse coding (value - 2*(value%16)), no output (Delta Data)
-
- Consider the Hewlett-Packard 2645, which, to get to row 3
- and column 12, needs to be sent "\E&a12c03Y" padded for 6
- milliseconds. Note that the order of the row and column
- coordinates is reversed here and that the row and column are
- sent as two-digit integers. Thus its cm capability is
- "cm=6\E&%r%2c%2Y".
-
- The Microterm ACT-IV needs the current row and column sent
- simply encoded in binary preceded by a ^T, "cm=^T%.%.".
- Terminals that use "%." need to be able to backspace the
- cursor (le) and to move the cursor up one line on the screen
- (up). This is necessary because it is not always safe to
- transmit \n, ^D, and \r, as the system may change or discard
- them. (Programs using _✓t_✓e_✓r_✓m_✓c_✓a_✓p must set terminal modes so
- that tabs are not expanded, so \t is safe to send. This
- turns out to be essential for the Ann Arbor 4080.)
-
- A final example is the Lear Siegler ADM-3a, which offsets
- row and column by a blank character, thus "cm=\E=%+ %+ ".
-
-
-
-
-
- Printed 8/14/86 1 November 1985 9
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- Row or column absolute cursor addressing can be given as
- single parameter capabilities ch (horizontal position abso-
- lute) and cv (vertical position absolute). Sometimes these
- are shorter than the more general two-parameter sequence (as
- with the Hewlett-Packard 2645) and can be used in preference
- to cm. If there are parameterized local motions (_✓e._✓g., move
- _✓n positions to the right) these can be given as DO, LE, RI,
- and UP with a single parameter indicating how many positions
- to move. These are primarily useful if the terminal does
- not have cm, such as the Tektronix 4025.
-
- Cursor Motions
-
- If the terminal has a fast way to home the cursor (to the
- very upper left corner of the screen), this can be given as
- ho. Similarly, a fast way of getting to the lower left-hand
- corner can be given as ll; this may involve going up with up
- from the home position, but a program should never do this
- itself (unless ll does), because it can make no assumption
- about the effect of moving up from the home position. Note
- that the home position is the same as cursor address (0,0):
- to the top left corner of the screen, not of memory.
- (Therefore, the "\EH" sequence on Hewlett-Packard terminals
- cannot be used for ho.)
-
- Area Clears
-
- If the terminal can clear from the current position to the
- end of the line, leaving the cursor where it is, this should
- be given as ce. If the terminal can clear from the current
- position to the end of the display, this should be given as
- cd. cd must only be invoked from the first column of a
- line. (Therefore, it can be simulated by a request to
- delete a large number of lines, if a true cd is not avail-
- able.)
-
- Insert/Delete Line
-
- If the terminal can open a new blank line before the line
- containing the cursor, this should be given as al; this must
- be invoked only from the first position of a line. The cur-
- sor must then appear at the left of the newly blank line.
- If the terminal can delete the line that the cursor is on,
- this should be given as dl; this must only be used from the
- first position on the line to be deleted. Versions of al
- and dl which take a single parameter and insert or delete
- that many lines can be given as AL and DL. If the terminal
- has a settable scrolling region (like the VT100), the com-
- mand to set this can be described with the cs capability,
- which takes two parameters: the top and bottom lines of the
- scrolling region. The cursor position is, alas, undefined
- after using this command. It is possible to get the effect
-
-
-
- Printed 8/14/86 1 November 1985 10
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- of insert or delete line using this command - the sc and rc
- (save and restore cursor) commands are also useful. Insert-
- ing lines at the top or bottom of the screen can also be
- done using sr or sf on many terminals without a true
- insert/delete line, and is often faster even on terminals
- with those features.
-
- If the terminal has the ability to define a window as part
- of memory which all commands affect, it should be given as
- the parameterized string wi. The four parameters are the
- starting and ending lines in memory and the starting and
- ending columns in memory, in that order. (This _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o
- capability is described for completeness. It is unlikely
- that any _✓t_✓e_✓r_✓m_✓c_✓a_✓p-using program will support it.)
-
- If the terminal can retain display memory above the screen,
- then the da capability should be given; if display memory
- can be retained below, then db should be given. These indi-
- cate that deleting a line or scrolling may bring non-blank
- lines up from below or that scrolling back with sr may bring
- down non-blank lines.
-
- Insert/Delete Character
-
- There are two basic kinds of intelligent terminals with
- respect to insert/delete character that can be described
- using _✓t_✓e_✓r_✓m_✓c_✓a_✓p. The most common insert/delete character
- operations affect only the characters on the current line
- and shift characters off the end of the line rigidly. Other
- terminals, such as the Concept-100 and the Perkin Elmer Owl,
- make a distinction between typed and untyped blanks on the
- screen, shifting upon an insert or delete only to an untyped
- blank on the screen which is either eliminated or expanded
- to two untyped blanks. You can determine the kind of termi-
- nal you have by clearing the screen then typing text
- separated by cursor motions. Type "abc def" using local
- cursor motions (not spaces) between the "abc" and the "def".
- Then position the cursor before the "abc" and put the termi-
- nal in insert mode. If typing characters causes the rest of
- the line to shift rigidly and characters to fall off the
- end, then your terminal does not distinguish between blanks
- and untyped positions. If the "abc" shifts over to the
- "def" which then move together around the end of the current
- line and onto the next as you insert, then you have the
- second type of terminal and should give the capability in,
- which stands for "insert null". While these are two logi-
- cally separate attributes (one line _✓v_✓s. multi-line insert
- mode, and special treatment of untyped spaces), we have seen
- no terminals whose insert mode cannot be described with the
- single attribute.
-
-
-
-
-
- Printed 8/14/86 1 November 1985 11
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- _✓T_✓e_✓r_✓m_✓c_✓a_✓p can describe both terminals that have an insert mode
- and terminals that send a simple sequence to open a blank
- position on the current line. Give as im the sequence to
- get into insert mode. Give as ei the sequence to leave
- insert mode. Now give as ic any sequence that needs to be
- sent just before each character to be inserted. Most termi-
- nals with a true insert mode will not give ic; terminals
- that use a sequence to open a screen position should give it
- here. (If your terminal has both, insert mode is usually
- preferable to ic. Do not give both unless the terminal
- actually requires both to be used in combination.) If post-
- insert padding is needed, give this as a number of mil-
- liseconds in ip (a string option). Any other sequence that
- may need to be sent after insertion of a single character
- can also be given in ip. If your terminal needs to be
- placed into an `insert mode' and needs a special code
- preceding each inserted character, then both im/ei and ic
- can be given, and both will be used. The IC capability,
- with one parameter _✓n, will repeat the effects of ic _✓n times.
-
- It is occasionally necessary to move around while in insert
- mode to delete characters on the same line (_✓e._✓g., if there
- is a tab after the insertion position). If your terminal
- allows motion while in insert mode, you can give the capa-
- bility mi to speed up inserting in this case. Omitting mi
- will affect only speed. Some terminals (notably
- Datamedia's) must not have mi because of the way their
- insert mode works.
-
- Finally, you can specify dc to delete a single character, DC
- with one parameter _✓n to delete _✓n characters, and delete mode
- by giving dm and ed to enter and exit delete mode (which is
- any mode the terminal needs to be placed in for dc to work).
-
- Highlighting, Underlining, and Visible Bells
-
- If your terminal has one or more kinds of display attri-
- butes, these can be represented in a number of different
- ways. You should choose one display form as _✓s_✓t_✓a_✓n_✓d_✓o_✓u_✓t _✓m_✓o_✓d_✓e,
- representing a good high-contrast, easy-on-the-eyes format
- for highlighting error messages and other attention getters.
- (If you have a choice, reverse video plus half-bright is
- good, or reverse video alone.) The sequences to enter and
- exit standout mode are given as so and se, respectively. If
- the code to change into or out of standout mode leaves one
- or even two blank spaces or garbage characters on the
- screen, as the TVI 912 and Teleray 1061 do, then sg should
- be given to tell how many characters are left.
-
- Codes to begin underlining and end underlining can be given
- as us and ue, respectively. Underline mode change garbage
- is specified by ug, similar to sg. If the terminal has a
-
-
-
- Printed 8/14/86 1 November 1985 12
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- code to underline the current character and move the cursor
- one position to the right, such as the Microterm Mime, this
- can be given as uc.
-
- Other capabilities to enter various highlighting modes
- include mb (blinking), md (bold or extra bright), mh (dim or
- half-bright), mk (blanking or invisible text), mp (pro-
- tected), mr (reverse video), me (turn off _✓a_✓l_✓l attribute
- modes), as (enter alternate character set mode), and ae
- (exit alternate character set mode). Turning on any of
- these modes singly may or may not turn off other modes.
-
- If there is a sequence to set arbitrary combinations of
- mode, this should be given as sa (set attributes), taking 9
- parameters. Each parameter is either 0 or 1, as the
- corresponding attributes is on or off. The 9 parameters
- are, in order: standout, underline, reverse, blink, dim,
- bold, blank, protect, and alternate character set. Not all
- modes need be supported by sa, only those for which
- corresponding attribute commands exist. (It is unlikely
- that a _✓t_✓e_✓r_✓m_✓c_✓a_✓p-using program will support this capability,
- which is defined for compatibility with _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o.)
-
- Terminals with the "magic cookie" glitches (sg and ug),
- rather than maintaining extra attribute bits for each char-
- acter cell, instead deposit special "cookies", or "garbage
- characters", when they receive mode-setting sequences, which
- affect the display algorithm.
-
- Some terminals, such as the Hewlett-Packard 2621, automati-
- cally leave standout mode when they move to a new line or
- when the cursor is addressed. Programs using standout mode
- should exit standout mode on such terminals before moving
- the cursor or sending a newline. On terminals where this is
- not a problem, the ms capability should be present to say
- that this overhead is unnecessary.
-
- If the terminal has a way of flashing the screen to indicate
- an error quietly (a bell replacement), this can be given as
- vb; it must not move the cursor.
-
- If the cursor needs to be made more visible than normal when
- it is not on the bottom line (to change, for example, a
- non-blinking underline into an easier-to-find block or
- blinking underline), give this sequence as vs. If there is
- a way to make the cursor completely invisible, give that as
- vi. The capability ve, which undoes the effects of both of
- these modes, should also be given.
-
- If your terminal correctly displays underlined characters
- (with no special codes needed) even though it does not over-
- strike, then you should give the capability ul. If
-
-
-
- Printed 8/14/86 1 November 1985 13
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- overstrikes are erasable with a blank, this should be indi-
- cated by giving eo.
-
- Keypad
-
- If the terminal has a keypad that transmits codes when the
- keys are pressed, this information can be given. Note that
- it is not possible to handle terminals where the keypad only
- works in local mode (this applies, for example, to the
- unshifted Hewlett-Packard 2621 keys). If the keypad can be
- set to transmit or not transmit, give these codes as ks and
- ke. Otherwise the keypad is assumed to always transmit.
- The codes sent by the left-arrow, right-arrow, up-arrow,
- down-arrow, and home keys can be given as kl, kr, ku, kd,
- and kh, respectively. If there are function keys such as
- f0, f1, ..., f9, the codes they send can be given as k0, k1,
- k9. If these keys have labels other than the default f0
- through f9, the labels can be given as l0, l1, l9. The
- codes transmitted by certain other special keys can be
- given: kH (home down), kb (backspace), ka (clear all tabs),
- kt (clear the tab stop in this column), kC (clear screen or
- erase), kD (delete character), kL (delete line), kM (exit
- insert mode), kE (clear to end of line), kS (clear to end of
- screen), kI (insert character or enter insert mode), kA
- (insert line), kN (next page), kP (previous page), kF
- (scroll forward/down), kR (scroll backward/up), and kT (set
- a tab stop in this column). In addition, if the keypad has
- a 3 by 3 array of keys including the four arrow keys, then
- the other five keys can be given as K1, K2, K3, K4, and K5.
- These keys are useful when the effects of a 3 by 3 direc-
- tional pad are needed. The obsolete ko capability formerly
- used to describe "other" function keys has been completely
- supplanted by the above capabilities.
-
- The ma entry is also used to indicate arrow keys on termi-
- nals that have single-character arrow keys. It is obsolete
- but still in use in version 2 of _✓v_✓i which must be run on
- some minicomputers due to memory limitations. This field is
- redundant with kl, kr, ku, kd, and kh. It consists of
- groups of two characters. In each group, the first charac-
- ter is what an arrow key sends, and the second character is
- the corresponding _✓v_✓i command. These commands are h for kl,
- j for kd, k for ku, l for kr, and H for kh. For example,
- the Mime would have "ma=^Hh^Kj^Zk^Xl" indicating arrow keys
- left (^H), down (^K), up (^Z), and right (^X). (There is no
- home key on the Mime.)
-
- Tabs and Initialization
-
- If the terminal needs to be in a special mode when running a
- program that uses these capabilities, the codes to enter and
- exit this mode can be given as ti and te. This arises, for
-
-
-
- Printed 8/14/86 1 November 1985 14
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- example, from terminals like the Concept with more than one
- page of memory. If the terminal has only memory-relative
- cursor addressing and not screen-relative cursor addressing,
- a screen-sized window must be fixed into the display for
- cursor addressing to work properly. This is also used for
- the Tektronix 4025, where ti sets the command character to
- be the one used by _✓t_✓e_✓r_✓m_✓c_✓a_✓p.
-
- Other capabilities include is, an initialization string for
- the terminal, and if, the name of a file containing long
- initialization strings. These strings are expected to set
- the terminal into modes consistent with the rest of the
- _✓t_✓e_✓r_✓m_✓c_✓a_✓p description. They are normally sent to the terminal
- by the _✓t_✓s_✓e_✓t program each time the user logs in. They will
- be printed in the following order: is; setting tabs using ct
- and st; and finally if. (_✓T_✓e_✓r_✓m_✓i_✓n_✓f_✓o uses i1-i2 instead of is
- and runs the program iP and prints i3 after the other ini-
- tializations.) A pair of sequences that does a harder reset
- from a totally unknown state can be analogously given as rs
- and if. These strings are output by the _✓r_✓e_✓s_✓e_✓t program,
- which is used when the terminal gets into a wedged state.
- (_✓T_✓e_✓r_✓m_✓i_✓n_✓f_✓o uses r1-r3 instead of rs.) Commands are normally
- placed in rs and rf only if they produce annoying effects on
- the screen and are not necessary when logging in. For exam-
- ple, the command to set the VT100 into 80-column mode would
- normally be part of is, but it causes an annoying glitch of
- the screen and is not normally needed since the terminal is
- usually already in 80-column mode.
-
- If the terminal has hardware tabs, the command to advance to
- the next tab stop can be given as ta (usually ^I). A "back-
- tab" command which moves leftward to the previous tab stop
- can be given as bt. By convention, if the terminal driver
- modes indicate that tab stops are being expanded by the com-
- puter rather than being sent to the terminal, programs
- should not use ta or bt even if they are present, since the
- user may not have the tab stops properly set. If the termi-
- nal has hardware tabs that are initially set every _✓n posi-
- tions when the terminal is powered up, then the numeric
- parameter it is given, showing the number of positions
- between tab stops. This is normally used by the _✓t_✓s_✓e_✓t com-
- mand to determine whether to set the driver mode for
- hardware tab expansion, and whether to set the tab stops.
- If the terminal has tab stops that can be saved in nonvola-
- tile memory, the _✓t_✓e_✓r_✓m_✓c_✓a_✓p description can assume that they
- are properly set.
-
- If there are commands to set and clear tab stops, they can
- be given as ct (clear all tab stops) and st (set a tab stop
- in the current column of every row). If a more complex
- sequence is needed to set the tabs than can be described by
- this, the sequence can be placed in is or if.
-
-
-
- Printed 8/14/86 1 November 1985 15
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- Delays
-
- Certain capabilities control padding in the terminal driver.
- These are primarily needed by hardcopy terminals and are
- used by the _✓t_✓s_✓e_✓t program to set terminal driver modes
- appropriately. Delays embedded in the capabilities cr, sf,
- le, ff, and ta will cause the appropriate delay bits to be
- set in the terminal driver. If pb (padding baud rate) is
- given, these values can be ignored at baud rates below the
- value of pb. For 4.2BSD _✓t_✓s_✓e_✓t, the delays are given as
- numeric capabilities dC, dN, dB, dF, and dT instead.
-
- Miscellaneous
-
- If the terminal requires other than a NUL (zero) character
- as a pad, this can be given as pc. Only the first character
- of the pc string is used.
-
- If the terminal has commands to save and restore the posi-
- tion of the cursor, give them as sc and rc.
-
- If the terminal has an extra "status line" that is not nor-
- mally used by software, this fact can be indicated. If the
- status line is viewed as an extra line below the bottom
- line, then the capability hs should be given. Special
- strings to go to a position in the status line and to return
- from the status line can be given as ts and fs. (fs must
- leave the cursor position in the same place that it was
- before ts. If necessary, the sc and rc strings can be
- included in ts and fs to get this effect.) The capability ts
- takes one parameter, which is the column number of the
- status line to which the cursor is to be moved. If escape
- sequences and other special commands such as tab work while
- in the status line, the flag es can be given. A string that
- turns off the status line (or otherwise erases its contents)
- should be given as ds. The status line is normally assumed
- to be the same width as the rest of the screen, _✓i._✓e., co.
- If the status line is a different width (possibly because
- the terminal does not allow an entire line to be loaded),
- then its width in columns can be indicated with the numeric
- parameter ws.
-
- If the terminal can move up or down half a line, this can be
- indicated with hu (half-line up) and hd (half-line down).
- This is primarily useful for superscripts and subscripts on
- hardcopy terminals. If a hardcopy terminal can eject to the
- next page (form feed), give this as ff (usually ^L).
-
- If there is a command to repeat a given character a given
- number of times (to save time transmitting a large number of
- identical characters), this can be indicated with the
- parameterized string rp. The first parameter is the
-
-
-
- Printed 8/14/86 1 November 1985 16
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- character to be repeated and the second is the number of
- times to repeat it. (This is a _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o feature that is
- unlikely to be supported by a program that uses _✓t_✓e_✓r_✓m_✓c_✓a_✓p.)
-
- If the terminal has a settable command character, such as
- the Tektronix 4025, this can be indicated with CC. A proto-
- type command character is chosen which is used in all capa-
- bilities. This character is given in the CC capability to
- identify it. The following convention is supported on some
- UNIX systems: The environment is to be searched for a CC
- variable, and if found, all occurrences of the prototype
- character are replaced by the character in the environment
- variable. This use of the CC environment variable is a very
- bad idea, as it conflicts with _✓m_✓a_✓k_✓e(1).
-
- Terminal descriptions that do not represent a specific kind
- of known terminal, such as _✓s_✓w_✓i_✓t_✓c_✓h, _✓d_✓i_✓a_✓l_✓u_✓p, _✓p_✓a_✓t_✓c_✓h, and _✓n_✓e_✓t_✓-
- _✓w_✓o_✓r_✓k, should include the gn (generic) capability so that
- programs can complain that they do not know how to talk to
- the terminal. (This capability does not apply to _✓v_✓i_✓r_✓t_✓u_✓a_✓l
- terminal descriptions for which the escape sequences are
- known.)
-
- If the terminal uses xoff/xon (DC3/DC1) handshaking for flow
- control, give xo. Padding information should still be
- included so that routines can make better decisions about
- costs, but actual pad characters will not be transmitted.
-
- If the terminal has a "meta key" which acts as a shift key,
- setting the 8th bit of any character transmitted, then this
- fact can be indicated with km. Otherwise, software will
- assume that the 8th bit is parity and it will usually be
- cleared. If strings exist to turn this "meta mode" on and
- off, they can be given as mm and mo.
-
- If the terminal has more lines of memory than will fit on
- the screen at once, the number of lines of memory can be
- indicated with lm. An explicit value of 0 indicates that
- the number of lines is not fixed, but that there is still
- more memory than fits on the screen.
-
- If the terminal is one of those supported by the UNIX system
- virtual terminal protocol, the terminal number can be given
- as vt.
-
- Media copy strings which control an auxiliary printer con-
- nected to the terminal can be given as ps: print the con-
- tents of the screen; pf: turn off the printer; and po: turn
- on the printer. When the printer is on, all text sent to
- the terminal will be sent to the printer. It is undefined
- whether the text is also displayed on the terminal screen
- when the printer is on. A variation pO takes one parameter
-
-
-
- Printed 8/14/86 1 November 1985 17
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- and leaves the printer on for as many characters as the
- value of the parameter, then turns the printer off. The
- parameter should not exceed 255. All text, including pf, is
- transparently passed to the printer while pO is in effect.
-
- Strings to program function keys can be given as pk, pl, and
- px. Each of these strings takes two parameters: the func-
- tion key number to program (from 0 to 9) and the string to
- program it with. Function key numbers out of this range may
- program undefined keys in a terminal-dependent manner. The
- differences among the capabilities are that pk causes press-
- ing the given key to be the same as the user typing the
- given string; pl causes the string to be executed by the
- terminal in local mode; and px causes the string to be
- transmitted to the computer. Unfortunately, due to lack of
- a definition for string parameters in _✓t_✓e_✓r_✓m_✓c_✓a_✓p, only _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o
- supports these capabilities.
-
- Glitches and Braindamage
-
- Hazeltine terminals, which do not allow `~' characters to be
- displayed, should indicate hz.
-
- The nc capability, now obsolete, formerly indicated
- Datamedia terminals, which echo \r \n for carriage return
- then ignore a following linefeed.
-
- Terminals that ignore a linefeed immediately after an am
- wrap, such as the Concept, should indicate xn.
-
- If ce is required to get rid of standout (instead of merely
- writing normal text on top of it), xs should be given.
-
- Teleray terminals, where tabs turn all characters moved over
- to blanks, should indicate xt (destructive tabs). This
- glitch is also taken to mean that it is not possible to
- position the cursor on top of a "magic cookie", and that to
- erase standout mode it is necessary to use delete and insert
- line.
-
- The Beehive Superbee, which is unable to correctly transmit
- the ESC or ^C characters, has xb, indicating that the "f1"
- key is used for ESC and "f2" for ^C. (Only certain Super-
- bees have this problem, depending on the ROM.)
-
- Other specific terminal problems may be corrected by adding
- more capabilities of the form x_✓x.
-
- Similar Terminals
-
- If there are two very similar terminals, one can be defined
- as being just like the other with certain exceptions. The
-
-
-
- Printed 8/14/86 1 November 1985 18
-
-
-
-
-
-
- TERMCAP(5) UNIX Programmer's Manual TERMCAP(5)
-
-
-
- string capability tc can be given with the name of the simi-
- lar terminal. This capability must be _✓l_✓a_✓s_✓t, and the com-
- bined length of the entries must not exceed 1024. The capa-
- bilities given before tc override those in the terminal type
- invoked by tc. A capability can be canceled by placing xx@
- to the left of the tc invocation, where _✓x_✓x is the capabil-
- ity. For example, the entry
-
- hn|2621-nl:ks@:ke@:tc=2621:
-
- defines a "2621-nl" that does not have the ks or ke capabil-
- ities, hence does not turn on the function key labels when
- in visual mode. This is useful for different modes for a
- terminal, or for different user preferences.
-
- AUTHOR
- William Joy
- Mark Horton added underlining and keypad support
-
- FILES
- /etc/termcap file containing terminal descriptions
-
- SEE ALSO
- ex(1), more(1), tset(1), ul(1), vi(1), curses(3X),
- printf(3S), term(7).
-
- CAVEATS AND BUGS
- Note: _✓t_✓e_✓r_✓m_✓c_✓a_✓p was replaced by _✓t_✓e_✓r_✓m_✓i_✓n_✓f_✓o in UNIX System V
- Release 2.0. The transition will be relatively painless if
- capabilities flagged as "obsolete" are avoided.
-
- Lines and columns are now stored by the kernel as well as in
- the termcap entry. Most programs now use the kernel infor-
- mation primarily; the information in this file is used only
- if the kernel does not have any information.
-
- _✓V_✓i allows only 256 characters for string capabilities, and
- the routines in _✓t_✓e_✓r_✓m_✓l_✓i_✓b(3) do not check for overflow of this
- buffer. The total length of a single entry (excluding only
- escaped newlines) may not exceed 1024.
-
- Not all programs support all entries.
-
-
-
-
-
-
-
-
-
-
-
-
-
- Printed 8/14/86 1 November 1985 19
-
-
-
-