1866 lines
		
	
	
		
			49 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			1866 lines
		
	
	
		
			49 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\" Copyright (c) 1980 Regents of the University of California.
 | |
| .\" All rights reserved.  The Berkeley software License Agreement
 | |
| .\" specifies the terms and conditions for redistribution.
 | |
| .\"
 | |
| .\"	@(#)termcap.5	6.4 (Berkeley) 5/15/86
 | |
| .\"
 | |
| .tr ||
 | |
| .tr *\(**
 | |
| .TH TERMCAP 5 "1 November 1985"
 | |
| .UC
 | |
| .SH NAME
 | |
| termcap \- terminal capability data base
 | |
| .SH SYNOPSIS
 | |
| .B /etc/termcap
 | |
| .SH DESCRIPTION
 | |
| .B Termcap\^
 | |
| is a data base describing terminals,
 | |
| used,
 | |
| .IR e.g. ,
 | |
| by
 | |
| .BR vi\^ (1)
 | |
| and
 | |
| .BR curses\^ (3).
 | |
| Terminals are described in
 | |
| .B termcap\^
 | |
| by giving a set of capabilities that they have and by describing
 | |
| how operations are performed.
 | |
| Padding requirements and initialization sequences
 | |
| are included in
 | |
| .BR termcap\^ .
 | |
| .PP
 | |
| Entries in
 | |
| .B termcap\^
 | |
| consist of a number of `:'-separated fields.
 | |
| The first entry for each terminal gives the names that are known for the
 | |
| terminal, separated by `|' characters.
 | |
| 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.
 | |
| .PP
 | |
| 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 \*(lqhp2621\*(rq.
 | |
| This name should not contain hyphens.
 | |
| Modes that the hardware can be in
 | |
| or user preferences
 | |
| should be indicated by appending a hyphen and an indicator of the mode.
 | |
| Therefore, a \*(lqvt100\*(rq in 132-column mode would be \*(lqvt100-w\*(rq.
 | |
| The following suffixes should be used where possible:
 | |
| .sp
 | |
| .ta
 | |
| .if t .ta \w'\fBSuffix\fP\ \ \ 'u +\w'With automatic margins (usually default)\ \ 'u
 | |
| .if n .ta \w'Suffix\ \ \ 'u +\w'With automatic margins (usually default)\ \ 'u
 | |
| .nf
 | |
| .if t .nr Xx \n(.lu-\n(.i-\w'\fBSuffix\fP\ \ \ With automatic margins (usually default)\ \ vt100-am'u
 | |
| .if t .in +\n(Xxu/2u
 | |
| \fBSuffix	Meaning	Example\fP
 | |
| -w	Wide mode (more than 80 columns)	vt100-w
 | |
| -am	With automatic margins (usually default)	vt100-am
 | |
| -nam	Without automatic margins	vt100-nam
 | |
| -\fIn\fP	Number of lines on the screen	aaa-60
 | |
| -na	No arrow keys (leave them in local)	concept100-na
 | |
| -\fIn\^\fPp	Number of pages of memory	concept100-4p
 | |
| -rv	Reverse video	concept100-rv
 | |
| .fi
 | |
| .SH CAPABILITIES
 | |
| .PP
 | |
| The characters in the
 | |
| .B Notes
 | |
| field in the table have the following meanings
 | |
| (more than one may apply to a capability):
 | |
| .PP
 | |
| .ta
 | |
| .ta \w'N\ \ \ 'u
 | |
| .nr fi \w'N\ \ \ '
 | |
| .in +\n(fiu
 | |
| .ti -\n(fiu
 | |
| N	indicates numeric parameter(s)
 | |
| .ti -\n(fiu
 | |
| P	indicates that padding may be specified
 | |
| .ti -\n(fiu
 | |
| *	indicates that padding may be based on the number of lines affected
 | |
| .ti -\n(fiu
 | |
| o	indicates capability is obsolete
 | |
| .in +\n(fiu
 | |
| .PP
 | |
| \*(lqObsolete\*(rq capabilities have no
 | |
| .B terminfo\^
 | |
| equivalents,
 | |
| since they were considered useless,
 | |
| or are subsumed by other capabilities.
 | |
| New software should not rely on them at all.
 | |
| .PP
 | |
| .if t .ta \w'\fBName  \fP'u +\w'\fBType  \fP'u +\w'\fBNotes  \fP'u
 | |
| .if n .ta \w'Name  'u +\w'Type  'u +\w'Notes  'u  \" Cawf troubled by \w'\fB
 | |
| .if t .nr fi \w'\fBName  Type  Notes  \fP'
 | |
| .if n .nr fi \w'Name  Type  Notes  '
 | |
| .in +\n(fiu
 | |
| .ti -\n(fiu
 | |
| \fBName	Type	Notes	Description\fP
 | |
| .ti -\n(fiu
 | |
| ae	str	(P)	End alternate character set
 | |
| .ti -\n(fiu
 | |
| AL	str	(NP*)	Add \fIn\^\fP new blank lines
 | |
| .ti -\n(fiu
 | |
| al	str	(P*)	Add new blank line
 | |
| .ti -\n(fiu
 | |
| am	bool		Terminal has automatic margins
 | |
| .ti -\n(fiu
 | |
| as	str	(P)	Start alternate character set
 | |
| .ti -\n(fiu
 | |
| bc	str	(o)	Backspace if not \fB^H\fP
 | |
| .ti -\n(fiu
 | |
| bl	str	(P)	Audible signal (bell)
 | |
| .ti -\n(fiu
 | |
| bs	bool	(o)	Terminal can backspace with \fB^H\fP
 | |
| .ti -\n(fiu
 | |
| bt	str	(P)	Back tab
 | |
| .ti -\n(fiu
 | |
| bw	bool		\fBle\fP (backspace) wraps from column 0 to last column
 | |
| .ti -\n(fiu
 | |
| CC	str		Terminal settable command character in prototype
 | |
| .ti -\n(fiu
 | |
| cd	str	(P*)	Clear to end of display
 | |
| .ti -\n(fiu
 | |
| ce	str	(P)	Clear to end of line
 | |
| .ti -\n(fiu
 | |
| ch	str	(NP)	Set cursor column (horizontal position)
 | |
| .ti -\n(fiu
 | |
| cl	str	(P*)	Clear screen and home cursor
 | |
| .ti -\n(fiu
 | |
| CM	str	(NP)	Memory-relative cursor addressing
 | |
| .ti -\n(fiu
 | |
| cm	str	(NP)	Screen-relative cursor motion
 | |
| .ti -\n(fiu
 | |
| co	num		Number of columns in a line (See BUGS section below)
 | |
| .ti -\n(fiu
 | |
| cr	str	(P)	Carriage return
 | |
| .ti -\n(fiu
 | |
| cs	str	(NP)	Change scrolling region (VT100)
 | |
| .ti -\n(fiu
 | |
| ct	str	(P)	Clear all tab stops
 | |
| .ti -\n(fiu
 | |
| cv	str	(NP)	Set cursor row (vertical position)
 | |
| .ti -\n(fiu
 | |
| da	bool		Display may be retained above the screen
 | |
| .ti -\n(fiu
 | |
| dB	num	(o)	Milliseconds of \fBbs\fP delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| db	bool		Display may be retained below the screen
 | |
| .ti -\n(fiu
 | |
| DC	str	(NP*)	Delete \fIn\^\fP characters
 | |
| .ti -\n(fiu
 | |
| dC	num	(o)	Milliseconds of \fBcr\fP delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| dc	str	(P*)	Delete character
 | |
| .ti -\n(fiu
 | |
| dF	num	(o)	Milliseconds of \fBff\fP delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| DL	str	(NP*)	Delete \fIn\^\fP lines
 | |
| .ti -\n(fiu
 | |
| dl	str	(P*)	Delete line
 | |
| .ti -\n(fiu
 | |
| dm	str		Enter delete mode
 | |
| .ti -\n(fiu
 | |
| dN	num	(o)	Milliseconds of \fBnl\fP delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| DO	str	(NP*)	Move cursor down \fIn\^\fP lines
 | |
| .ti -\n(fiu
 | |
| do	str		Down one line
 | |
| .ti -\n(fiu
 | |
| ds	str		Disable status line
 | |
| .ti -\n(fiu
 | |
| dT	num	(o)	Milliseconds of horizontal tab delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| dV	num	(o)	Milliseconds of vertical tab delay needed (default 0)
 | |
| .ti -\n(fiu
 | |
| ec	str	(NP)	Erase \fIn\^\fP characters
 | |
| .ti -\n(fiu
 | |
| ed	str		End delete mode
 | |
| .ti -\n(fiu
 | |
| ei	str		End insert mode
 | |
| .ti -\n(fiu
 | |
| eo	bool		Can erase overstrikes with a blank
 | |
| .ti -\n(fiu
 | |
| EP	bool	(o)	Even parity
 | |
| .ti -\n(fiu
 | |
| es	bool		Escape can be used on the status line
 | |
| .ti -\n(fiu
 | |
| ff	str	(P*)	Hardcopy terminal page eject
 | |
| .ti -\n(fiu
 | |
| fs	str		Return from status line
 | |
| .ti -\n(fiu
 | |
| gn	bool		Generic line type (\fIe.g.\fP dialup, switch)
 | |
| .ti -\n(fiu
 | |
| hc	bool		Hardcopy terminal
 | |
| .ti -\n(fiu
 | |
| HD	bool	(o)	Half-duplex
 | |
| .ti -\n(fiu
 | |
| hd	str		Half-line down (forward 1/2 linefeed)
 | |
| .ti -\n(fiu
 | |
| ho	str	(P)	Home cursor
 | |
| .ti -\n(fiu
 | |
| hs	bool		Has extra \*(lqstatus line\*(rq
 | |
| .ti -\n(fiu
 | |
| hu	str		Half-line up (reverse 1/2 linefeed)
 | |
| .ti -\n(fiu
 | |
| hz	bool		Cannot print ~s (Hazeltine)
 | |
| .ti -\n(fiu
 | |
| i1-i3	str		Terminal initialization strings (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| IC	str	(NP*)	Insert \fIn\^\fP blank characters
 | |
| .ti -\n(fiu
 | |
| ic	str	(P*)	Insert character
 | |
| .ti -\n(fiu
 | |
| if	str		Name of file containing initialization string
 | |
| .ti -\n(fiu
 | |
| im	str		Enter insert mode
 | |
| .ti -\n(fiu
 | |
| in	bool		Insert mode distinguishes nulls
 | |
| .ti -\n(fiu
 | |
| iP	str		Pathname of program for initialization (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| ip	str	(P*)	Insert pad after character inserted
 | |
| .ti -\n(fiu
 | |
| is	str		Terminal initialization string (\fBtermcap\^\fP only)
 | |
| .ti -\n(fiu
 | |
| it	num		Tabs initially every \fIn\^\fP positions
 | |
| .ti -\n(fiu
 | |
| K1	str		Sent by keypad upper left
 | |
| .ti -\n(fiu
 | |
| K2	str		Sent by keypad upper right
 | |
| .ti -\n(fiu
 | |
| K3	str		Sent by keypad center
 | |
| .ti -\n(fiu
 | |
| K4	str		Sent by keypad lower left
 | |
| .ti -\n(fiu
 | |
| K5	str		Sent by keypad lower right
 | |
| .ti -\n(fiu
 | |
| k0-k9	str		Sent by function keys 0-9
 | |
| .ti -\n(fiu
 | |
| kA	str		Sent by insert-line key
 | |
| .ti -\n(fiu
 | |
| ka	str		Sent by clear-all-tabs key
 | |
| .ti -\n(fiu
 | |
| kb	str		Sent by backspace key
 | |
| .ti -\n(fiu
 | |
| kC	str		Sent by clear-screen or erase key
 | |
| .ti -\n(fiu
 | |
| kD	str		Sent by delete-character key
 | |
| .ti -\n(fiu
 | |
| kd	str		Sent by down-arrow key
 | |
| .ti -\n(fiu
 | |
| kE	str		Sent by clear-to-end-of-line key
 | |
| .ti -\n(fiu
 | |
| ke	str		Out of \*(lqkeypad transmit\*(rq mode
 | |
| .ti -\n(fiu
 | |
| kF	str		Sent by scroll-forward/down key
 | |
| .ti -\n(fiu
 | |
| kH	str		Sent by home-down key
 | |
| .ti -\n(fiu
 | |
| kh	str		Sent by home key
 | |
| .ti -\n(fiu
 | |
| kI	str		Sent by insert-character or enter-insert-mode key
 | |
| .ti -\n(fiu
 | |
| kL	str		Sent by delete-line key
 | |
| .ti -\n(fiu
 | |
| kl	str		Sent by left-arrow key
 | |
| .ti -\n(fiu
 | |
| kM	str		Sent by insert key while in insert mode
 | |
| .ti -\n(fiu
 | |
| km	bool		Has a \*(lqmeta\*(rq key (shift, sets parity bit)
 | |
| .ti -\n(fiu
 | |
| kN	str		Sent by next-page key
 | |
| .ti -\n(fiu
 | |
| kn	num	(o)	Number of function (\fBk0\fP\-\fBk9\fP) keys (default 0)
 | |
| .ti -\n(fiu
 | |
| ko	str	(o)	Termcap entries for other non-function keys
 | |
| .ti -\n(fiu
 | |
| kP	str		Sent by previous-page key
 | |
| .ti -\n(fiu
 | |
| kR	str		Sent by scroll-backward/up key
 | |
| .ti -\n(fiu
 | |
| kr	str		Sent by right-arrow key
 | |
| .ti -\n(fiu
 | |
| kS	str		Sent by clear-to-end-of-screen key
 | |
| .ti -\n(fiu
 | |
| ks	str		Put terminal in \*(lqkeypad transmit\*(rq mode
 | |
| .ti -\n(fiu
 | |
| kT	str		Sent by set-tab key
 | |
| .ti -\n(fiu
 | |
| kt	str		Sent by clear-tab key
 | |
| .ti -\n(fiu
 | |
| ku	str		Sent by up-arrow key
 | |
| .ti -\n(fiu
 | |
| l0-l9	str		Labels on function keys if not \*(lqf\fIn\^\fP\*(rq
 | |
| .ti -\n(fiu
 | |
| LC	bool	(o)	Lower-case only
 | |
| .ti -\n(fiu
 | |
| LE	str	(NP)	Move cursor left \fIn\^\fP positions
 | |
| .ti -\n(fiu
 | |
| le	str	(P)	Move cursor left one position
 | |
| .ti -\n(fiu
 | |
| li	num		Number of lines on screen or page (See BUGS section below)
 | |
| .ti -\n(fiu
 | |
| ll	str		Last line, first column
 | |
| .ti -\n(fiu
 | |
| lm	num		Lines of memory if > \fBli\fP (0 means varies)
 | |
| .ti -\n(fiu
 | |
| ma	str	(o)	Arrow key map (used by \fBvi\^\fP version 2 only)
 | |
| .ti -\n(fiu
 | |
| mb	str		Turn on blinking attribute
 | |
| .ti -\n(fiu
 | |
| md	str		Turn on bold (extra bright) attribute
 | |
| .ti -\n(fiu
 | |
| me	str		Turn off all attributes
 | |
| .ti -\n(fiu
 | |
| mh	str		Turn on half-bright attribute
 | |
| .ti -\n(fiu
 | |
| mi	bool		Safe to move while in insert mode
 | |
| .ti -\n(fiu
 | |
| mk	str		Turn on blank attribute (characters invisible)
 | |
| .ti -\n(fiu
 | |
| ml	str	(o)	Memory lock on above cursor
 | |
| .ti -\n(fiu
 | |
| mm	str		Turn on \*(lqmeta mode\*(rq (8th bit)
 | |
| .ti -\n(fiu
 | |
| mo	str		Turn off \*(lqmeta mode\*(rq
 | |
| .ti -\n(fiu
 | |
| mp	str		Turn on protected attribute
 | |
| .ti -\n(fiu
 | |
| mr	str		Turn on reverse-video attibute
 | |
| .ti -\n(fiu
 | |
| ms	bool		Safe to move in standout modes
 | |
| .ti -\n(fiu
 | |
| mu	str	(o)	Memory unlock (turn off memory lock)
 | |
| .ti -\n(fiu
 | |
| nc	bool	(o)	No correctly-working \fBcr\fP (Datamedia 2500, Hazeltine 2000)
 | |
| .ti -\n(fiu
 | |
| nd	str		Non-destructive space (cursor right)
 | |
| .ti -\n(fiu
 | |
| NL	bool	(o)	\fB\\n\fP is newline, not line feed
 | |
| .ti -\n(fiu
 | |
| nl	str	(o)	Newline character if not \fB\\n\fP
 | |
| .ti -\n(fiu
 | |
| ns	bool	(o)	Terminal is a \s-1CRT\s0 but doesn't scroll
 | |
| .ti -\n(fiu
 | |
| nw	str	(P)	Newline (behaves like \fBcr\fP followed by \fBdo\fP)
 | |
| .ti -\n(fiu
 | |
| OP	bool	(o)	Odd parity
 | |
| .ti -\n(fiu
 | |
| os	bool		Terminal overstrikes
 | |
| .ti -\n(fiu
 | |
| pb	num		Lowest baud where delays are required
 | |
| .ti -\n(fiu
 | |
| pc	str		Pad character (default \s-2NUL\s0)
 | |
| .ti -\n(fiu
 | |
| pf	str		Turn off the printer
 | |
| .ti -\n(fiu
 | |
| pk	str		Program function key \fIn\^\fP to type string \fIs\fP (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| pl	str		Program function key \fIn\^\fP to execute string \fIs\fP (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| pO	str	(N)	Turn on the printer for \fIn\^\fP bytes
 | |
| .ti -\n(fiu
 | |
| po	str		Turn on the printer
 | |
| .ti -\n(fiu
 | |
| ps	str		Print contents of the screen
 | |
| .ti -\n(fiu
 | |
| pt	bool	(o)	Has hardware tabs (may need to be set with \fBis\fP)
 | |
| .ti -\n(fiu
 | |
| px	str		Program function key \fIn\^\fP to transmit string \fIs\fP (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| r1-r3	str		Reset terminal completely to sane modes (\fBterminfo\^\fP only)
 | |
| .ti -\n(fiu
 | |
| rc	str	(P)	Restore cursor to position of last \fBsc\fP
 | |
| .ti -\n(fiu
 | |
| rf	str		Name of file containing reset codes
 | |
| .ti -\n(fiu
 | |
| RI	str	(NP)	Move cursor right \fIn\^\fP positions
 | |
| .ti -\n(fiu
 | |
| rp	str	(NP*)	Repeat character \fIc n\^\fP times
 | |
| .ti -\n(fiu
 | |
| rs	str		Reset terminal completely to sane modes (\fBtermcap\^\fP only)
 | |
| .ti -\n(fiu
 | |
| sa	str	(NP)	Define the video attributes
 | |
| .ti -\n(fiu
 | |
| sc	str	(P)	Save cursor position
 | |
| .ti -\n(fiu
 | |
| se	str		End standout mode
 | |
| .ti -\n(fiu
 | |
| SF	str	(NP*)	Scroll forward \fIn\^\fP lines
 | |
| .ti -\n(fiu
 | |
| sf	str	(P)	Scroll text up
 | |
| .ti -\n(fiu
 | |
| sg	num		Number of garbage chars left by \fBso\fP or \fBse\fP (default 0)
 | |
| .ti -\n(fiu
 | |
| so	str		Begin standout mode
 | |
| .ti -\n(fiu
 | |
| SR	str	(NP*)	Scroll backward \fIn\^\fP lines
 | |
| .ti -\n(fiu
 | |
| sr	str	(P)	Scroll text down
 | |
| .ti -\n(fiu
 | |
| st	str		Set a tab in all rows, current column
 | |
| .ti -\n(fiu
 | |
| ta	str	(P)	Tab to next 8-position hardware tab stop
 | |
| .ti -\n(fiu
 | |
| tc	str		Entry of similar terminal \- must be last
 | |
| .ti -\n(fiu
 | |
| te	str		String to end programs that use \fBtermcap\fP
 | |
| .ti -\n(fiu
 | |
| ti	str		String to begin programs that use \fBtermcap\fP
 | |
| .ti -\n(fiu
 | |
| ts	str	(N)	Go to status line, column \fIn\^\fP
 | |
| .ti -\n(fiu
 | |
| UC	bool	(o)	Upper-case only
 | |
| .ti -\n(fiu
 | |
| uc	str		Underscore one character and move past it
 | |
| .ti -\n(fiu
 | |
| ue	str		End underscore mode
 | |
| .ti -\n(fiu
 | |
| ug	num		Number of garbage chars left by \fBus\fP or \fBue\fP (default 0)
 | |
| .ti -\n(fiu
 | |
| ul	bool		Underline character overstrikes
 | |
| .ti -\n(fiu
 | |
| UP	str	(NP*)	Move cursor up \fIn\^\fP lines
 | |
| .ti -\n(fiu
 | |
| up	str		Upline (cursor up)
 | |
| .ti -\n(fiu
 | |
| us	str		Start underscore mode
 | |
| .ti -\n(fiu
 | |
| vb	str		Visible bell (must not move cursor)
 | |
| .ti -\n(fiu
 | |
| ve	str		Make cursor appear normal (undo \fBvs\fP/\fBvi\fP)
 | |
| .ti -\n(fiu
 | |
| vi	str		Make cursor invisible
 | |
| .ti -\n(fiu
 | |
| vs	str		Make cursor very visible
 | |
| .ti -\n(fiu
 | |
| vt	num		Virtual terminal number (not supported on all systems)
 | |
| .ti -\n(fiu
 | |
| wi	str	(N)	Set current window
 | |
| .ti -\n(fiu
 | |
| ws	num		Number of columns in status line
 | |
| .ti -\n(fiu
 | |
| xb	bool		Beehive (f1=\s-2ESC\s0, f2=^C)
 | |
| .ti -\n(fiu
 | |
| xn	bool		Newline ignored after 80 cols (Concept)
 | |
| .ti -\n(fiu
 | |
| xo	bool		Terminal uses xoff/xon (\s-2DC3\s0/\s-2DC1\s0) handshaking
 | |
| .ti -\n(fiu
 | |
| xr	bool	(o)	Return acts like \fBce cr nl\fP (Delta Data)
 | |
| .ti -\n(fiu
 | |
| xs	bool		Standout not erased by overwriting (Hewlett-Packard)
 | |
| .ti -\n(fiu
 | |
| xt	bool		Tabs ruin, magic \fBso\fP char (Teleray 1061)
 | |
| .ti -\n(fiu
 | |
| xx	bool	(o)	Tektronix 4025 insert-line
 | |
| .in -\n(fiu
 | |
| .PP
 | |
| .B A Sample Entry
 | |
| .PP
 | |
| The following entry, which describes the Concept\-100, is among the more
 | |
| complex entries in the
 | |
| .B termcap\^
 | |
| file as of this writing.
 | |
| .PP
 | |
| .nf
 | |
| .if t .ta 8n +8n
 | |
| .if n .ta 2n +2n
 | |
| ca\||\|concept100\||\|c100\||\|concept\||\|c104\||\|concept100-4p\||\|HDS Concept\-100:\e
 | |
| 	:al=3*\eE^R:am:bl=^G:cd=16*\eE^C:ce=16\eE^U:cl=2*^L:cm=\eEa%+ %+ :\e
 | |
| 	:co#80:.cr=9^M:db:dc=16\eE^A:dl=3*\eE^B:do=^J:ei=\eE\e200:eo:im=\eE^P:in:\e
 | |
| 	:ip=16*:is=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE:k1=\eE5:\e
 | |
| 	:k2=\eE6:k3=\eE7:kb=^h:kd=\eE<:ke=\eEx:kh=\eE?:kl=\eE>:kr=\eE=:ks=\eEX:\e
 | |
| 	:ku=\eE;:le=^H:li#24:mb=\eEC:me=\eEN\e200:mh=\eEE:mi:mk=\eEH:mp=\eEI:\e
 | |
| 	:mr=\eED:nd=\eE=:pb#9600:rp=0.2*\eEr%.%+ :se=\eEd\eEe:sf=^J:so=\eEE\eED:\e
 | |
| 	:.ta=8\et:te=\eEv    \e200\e200\e200\e200\e200\e200\eEp\er\en:\e
 | |
| 	:ti=\eEU\eEv  8p\eEp\er:ue=\eEg:ul:up=\eE;:us=\eEG:\e
 | |
| 	:vb=\eEk\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\eEK:\e
 | |
| 	:ve=\eEw:vs=\eEW:vt#8:xn:\e
 | |
| 	:bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt:
 | |
| .fi
 | |
| .PP
 | |
| Entries may continue onto multiple lines by giving a \e as the last
 | |
| character of a line, and empty fields
 | |
| may be 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 \*(lq#\*(rq.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Types of Capabilities
 | |
| .PP
 | |
| Capabilities in
 | |
| .B termcap\^
 | |
| are of three types: Boolean capabilities,
 | |
| 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 particular
 | |
| terminal operations.
 | |
| All capabilities have two-letter codes.
 | |
| For instance, the fact that
 | |
| the Concept has
 | |
| .I automatic margins
 | |
| .RI ( i.e. ,
 | |
| an automatic return and linefeed
 | |
| when the end of a line is reached) is indicated by the Boolean capability
 | |
| .BR am .
 | |
| Hence the description of the Concept includes
 | |
| .BR am .
 | |
| .PP
 | |
| Numeric capabilities are followed by the character `#' then the value.
 | |
| In the example above
 | |
| .BR co ,
 | |
| which indicates the number of columns the display has,
 | |
| gives the value `80' for the Concept.
 | |
| .PP
 | |
| Finally, string-valued capabilities, such as
 | |
| .B 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
 | |
| .B tputs\^
 | |
| after the remainder of the string is sent to provide this delay.
 | |
| The delay can be either a number,
 | |
| .I e.g.
 | |
| `20', or a number followed by
 | |
| an `*',
 | |
| .IR 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
 | |
| .I lines\^
 | |
| affected;
 | |
| this is always 1 unless the terminal has
 | |
| .B 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.)
 | |
| .PP
 | |
| A number of escape sequences are provided in the string-valued capabilities
 | |
| for easy encoding of control characters there.
 | |
| .B \eE
 | |
| maps to an \s-2ESC\s0
 | |
| character,
 | |
| .B ^X
 | |
| maps to a control-X for any appropriate X,
 | |
| and the sequences
 | |
| .B \en
 | |
| .B \er
 | |
| .B \et
 | |
| .B \eb
 | |
| .B \ef
 | |
| map to linefeed, return, tab, backspace, and formfeed, respectively.
 | |
| Finally, characters may be given as three octal digits after a
 | |
| .BR \e ,
 | |
| and the characters
 | |
| .B ^
 | |
| and
 | |
| .B \e
 | |
| may be given as
 | |
| .B \e^
 | |
| and
 | |
| .BR \e\e .
 | |
| If it is necessary to place a
 | |
| .B :
 | |
| in a capability it must be escaped in
 | |
| octal as
 | |
| .BR \e072 .
 | |
| If it is necessary to place a \s-2NUL\s0
 | |
| character in a string capability it
 | |
| must be encoded as
 | |
| .BR \e200 .
 | |
| (The routines that deal with
 | |
| .B termcap\^
 | |
| use C strings and strip the high bits of the output very late, so that
 | |
| a
 | |
| .B \e200
 | |
| comes out as a
 | |
| .B \e000
 | |
| would.)
 | |
| .PP
 | |
| Sometimes individual capabilities must be commented out.
 | |
| To do this, put a period before the capability name.
 | |
| For example, see the first
 | |
| .B cr
 | |
| and
 | |
| .B ta
 | |
| in the example above.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Preparing Descriptions
 | |
| .PP
 | |
| 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
 | |
| .B termcap\^
 | |
| and to build up a description gradually, using partial descriptions
 | |
| with
 | |
| .B vi\^
 | |
| to check that they are correct.
 | |
| Be aware that a very unusual terminal may expose deficiencies in
 | |
| the ability of the
 | |
| .B termcap\^
 | |
| file to describe it
 | |
| or bugs in
 | |
| .BR vi\^ .
 | |
| To easily test a new terminal description you can set the environment variable
 | |
| .B
 | |
| .SM TERMCAP
 | |
| to the absolute pathname of a file containing the description you are working
 | |
| on and programs will look there rather than in
 | |
| .BR /etc/termcap\^ .
 | |
| .B
 | |
| .SM TERMCAP
 | |
| can also be set to the
 | |
| .B termcap\^
 | |
| entry itself
 | |
| to avoid reading the file when starting up a program.
 | |
| .PP
 | |
| To get the padding for insert-line right
 | |
| (if the terminal manufacturer did not document it),
 | |
| a severe test is to use
 | |
| .B vi\^
 | |
| to edit
 | |
| .B /etc/passwd\^
 | |
| 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.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Basic Capabilities
 | |
| .PP
 | |
| The number of columns on each line of the display is given by the
 | |
| .B co
 | |
| numeric capability.
 | |
| If the display is a \s-1CRT\s0, then the
 | |
| number of lines on the screen is given by the
 | |
| .B li
 | |
| capability.
 | |
| If the display wraps around to the beginning of the next line when
 | |
| the cursor reaches the right margin, then it should have the
 | |
| .B am
 | |
| capability.
 | |
| If the terminal can clear its screen,
 | |
| the code to do this is given by the
 | |
| .B cl
 | |
| string capability.
 | |
| If the terminal overstrikes
 | |
| (rather than clearing the position when a character is overwritten),
 | |
| it should have the
 | |
| .B os
 | |
| capability.
 | |
| If the terminal is a printing terminal,
 | |
| with no soft copy unit,
 | |
| give it both
 | |
| .B hc
 | |
| and
 | |
| .BR os .
 | |
| .RB ( os
 | |
| applies to storage scope terminals,
 | |
| such as the Tektronix 4010 series,
 | |
| as well as to hard copy and
 | |
| .SM APL
 | |
| terminals.)
 | |
| If there is a code to move the cursor to the left edge of the current row,
 | |
| give this as
 | |
| .BR cr .
 | |
| (Normally this will be carriage-return,
 | |
| .BR ^M .)
 | |
| If there is a code to produce an audible signal (bell, beep,
 | |
| .IR etc.\^ ),
 | |
| give this as
 | |
| .BR bl .
 | |
| .PP
 | |
| If there is a code (such as backspace)
 | |
| to move the cursor one position to the left,
 | |
| that capability should be given as
 | |
| .BR le .
 | |
| Similarly,
 | |
| codes to move to the right, up, and down
 | |
| should be given as
 | |
| .BR nd ,
 | |
| .BR up ,
 | |
| and
 | |
| .BR do ,
 | |
| respectively.
 | |
| These
 | |
| .I local cursor motions\^
 | |
| should not alter the text they pass over;
 | |
| for example, you would not normally use
 | |
| \*(lqnd=\ \*(rq
 | |
| unless the terminal has the
 | |
| .B os
 | |
| capability,
 | |
| because the space would erase the character moved over.
 | |
| .PP
 | |
| A very important point here is that the local cursor motions encoded
 | |
| in
 | |
| .B termcap\^
 | |
| have undefined behavior at the left and top edges of a
 | |
| .SM CRT
 | |
| display.
 | |
| Programs should never attempt to backspace around the left edge,
 | |
| unless
 | |
| .B bw
 | |
| is given, and never attempt to go up off the top
 | |
| using local cursor motions.
 | |
| .PP
 | |
| In order to scroll text up,
 | |
| a program goes to the bottom left corner of the screen and sends the
 | |
| .B sf
 | |
| (index) string.
 | |
| To scroll text down,
 | |
| a program goes to the top left corner of the screen and sends the
 | |
| .B sr
 | |
| (reverse index) string.
 | |
| The strings
 | |
| .B sf
 | |
| and
 | |
| .B sr
 | |
| have undefined behavior
 | |
| when not on their respective corners of the screen.
 | |
| Parameterized versions of the scrolling sequences are
 | |
| .B SF
 | |
| and
 | |
| .BR SR ,
 | |
| which have the same semantics as
 | |
| .B sf
 | |
| and
 | |
| .B 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.
 | |
| .PP
 | |
| The
 | |
| .B 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
 | |
| .B nd
 | |
| from the last column.
 | |
| Leftward local motion is defined from the left edge only when
 | |
| .B bw
 | |
| is given; then an
 | |
| .B 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
 | |
| .B termcap\^
 | |
| description usually assumes that this feature is on,
 | |
| .IR i.e. ,
 | |
| .BR am .
 | |
| If the terminal has a command
 | |
| that moves to the first column of the next line,
 | |
| that command can be given as
 | |
| .B nw
 | |
| (newline).
 | |
| It is permissible for this to clear the remainder of the current line,
 | |
| so if the terminal has no correctly-working \s-2CR\s0 and \s-2LF\s0
 | |
| it may still be possible to craft a working
 | |
| .B nw
 | |
| out of one or both of them.
 | |
| .PP
 | |
| These capabilities suffice to describe hardcopy and \*(lqglass-tty\*(rq terminals.
 | |
| Thus the Teletype model 33 is described as
 | |
| .PP
 | |
| .nf
 | |
| 	T3\||\|tty33\||\|33\||\|tty\||\|Teletype model 33:\e
 | |
| 		:bl=^G:co#72:cr=^M:do=^J:hc:os:
 | |
| .fi
 | |
| .PP
 | |
| and the Lear Siegler \s-1ADM\s0\-3 is described as
 | |
| .PP
 | |
| .nf
 | |
| 	l3\||\|adm3\||\|3\||\|LSI \s-1ADM\s0-3:\e
 | |
| 		:am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J:
 | |
| .fi
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Parameterized Strings
 | |
| .PP
 | |
| Cursor addressing and other strings requiring parameters
 | |
| are described by a
 | |
| parameterized string capability, with 
 | |
| .BR printf\^ (3)-like
 | |
| escapes
 | |
| .B %x
 | |
| in it,
 | |
| while other characters are passed through unchanged.
 | |
| For example, to address the cursor the
 | |
| .B 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
 | |
| .B CM
 | |
| capability.)
 | |
| .PP
 | |
| The
 | |
| .B %
 | |
| encodings have the following meanings:
 | |
| .PP
 | |
| .in +16n
 | |
| .ta +8n
 | |
| .ti -8n
 | |
| %%	output `%'
 | |
| .ti -8n
 | |
| %d	output value as in \fBprintf\^\fP %d
 | |
| .ti -8n
 | |
| %2	output value as in \fBprintf\^\fP %2d
 | |
| .ti -8n
 | |
| %3	output value as in \fBprintf\^\fP %3d
 | |
| .ti -8n
 | |
| %.	output value as in \fBprintf\^\fP %c
 | |
| .ti -8n
 | |
| %+\fIx\fP	add \fIx\^\fP to value, then do %.
 | |
| .ti -8n
 | |
| %>\fIxy\fP	if value > \fIx\^\fP then add \fIy\^\fP, no output
 | |
| .ti -8n
 | |
| %r	reverse order of two parameters, no output
 | |
| .ti -8n
 | |
| %i	increment by one, no output
 | |
| .ti -8n
 | |
| %n	exclusive-or all parameters with 0140 (Datamedia 2500)
 | |
| .ti -8n
 | |
| %B	BCD (16*(value/10)) + (value%10), no output
 | |
| .ti -8n
 | |
| %D	Reverse coding (value \- 2*(value%16)), no output (Delta Data)
 | |
| .ti -16n
 | |
| .fi
 | |
| .PP
 | |
| Consider the Hewlett-Packard 2645, which, to get to row 3 and column 12, needs
 | |
| to be sent \*(lq\eE&a12c03Y\*(rq 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
 | |
| .B cm
 | |
| capability is \*(lqcm=6\eE&%r%2c%2Y\*(rq.
 | |
| .PP
 | |
| The Microterm
 | |
| .SM ACT-IV
 | |
| needs the current row and column sent
 | |
| simply encoded in binary
 | |
| preceded by a
 | |
| .BR ^T ,
 | |
| \*(lqcm=^T%.%.\*(rq.
 | |
| Terminals that use \*(lq%.\*(rq need to be able to
 | |
| backspace the cursor
 | |
| .RB ( le )
 | |
| and to move the cursor up one line on the screen
 | |
| .RB ( up ).
 | |
| This is necessary because it is not always safe to transmit
 | |
| .BR \en ,
 | |
| .BR ^D ,
 | |
| and
 | |
| .BR \er ,
 | |
| as the system may change or discard them.
 | |
| (Programs using
 | |
| .B termcap\^
 | |
| must set terminal modes so that tabs are not expanded, so
 | |
| .B \et
 | |
| is safe to send.
 | |
| This turns out to be essential for the Ann Arbor 4080.)
 | |
| .PP
 | |
| A final example is the Lear Siegler \s-1ADM\s0\-3a,
 | |
| which offsets row and column
 | |
| by a blank character, thus \*(lqcm=\eE=%+ %+ \*(rq.
 | |
| .PP
 | |
| Row or column absolute cursor addressing
 | |
| can be given as single parameter capabilities
 | |
| .B ch
 | |
| (horizontal position absolute) and
 | |
| .B 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
 | |
| .BR cm .
 | |
| If there are parameterized local motions
 | |
| .RI ( e.g. ,
 | |
| move
 | |
| .I n\^
 | |
| positions to the right)
 | |
| these can be given as
 | |
| .BR DO ,
 | |
| .BR LE ,
 | |
| .BR RI ,
 | |
| and
 | |
| .B UP
 | |
| with a single parameter indicating how many positions to move.
 | |
| These are primarily useful if the terminal does not have
 | |
| .BR cm ,
 | |
| such as the Tektronix 4025.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Cursor Motions
 | |
| .PP
 | |
| 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
 | |
| .BR ho .
 | |
| Similarly, a fast way of getting to the lower left-hand corner
 | |
| can be given as
 | |
| .BR ll ;
 | |
| this may involve going up with
 | |
| .B up
 | |
| from the home position,
 | |
| but a program should never do this itself (unless
 | |
| .B 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 \*(lq\eEH\*(rq sequence on Hewlett-Packard terminals
 | |
| cannot be used for
 | |
| .BR ho .)
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Area Clears
 | |
| .PP
 | |
| 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
 | |
| .BR ce .
 | |
| If the terminal can clear from the current position to the end of the
 | |
| display, this should be given as
 | |
| .BR cd .
 | |
| .B 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
 | |
| .B cd
 | |
| is not available.)
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Insert/Delete Line
 | |
| .PP
 | |
| If the terminal can open a new blank line
 | |
| before the line containing the cursor,
 | |
| this should be given as
 | |
| .BR al ;
 | |
| this must be invoked only from the first
 | |
| position of a line.
 | |
| The cursor 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
 | |
| .BR dl ;
 | |
| this must only be used from the first position on
 | |
| the line to be deleted.
 | |
| Versions of
 | |
| .B al
 | |
| and
 | |
| .B dl
 | |
| which take a single parameter
 | |
| and insert or delete that many lines
 | |
| can be given as
 | |
| .B AL
 | |
| and
 | |
| .BR DL .
 | |
| If the terminal has a settable scrolling region
 | |
| (like the VT100),
 | |
| the command to set this can be described with the
 | |
| .B 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 of insert or delete line
 | |
| using this command \(em the
 | |
| .B sc
 | |
| and
 | |
| .B rc
 | |
| (save and restore cursor) commands are also useful.
 | |
| Inserting lines at the top or bottom of the screen can also be done using
 | |
| .B sr
 | |
| or
 | |
| .B sf
 | |
| on many terminals without a true insert/delete line,
 | |
| and is often faster even on terminals with those features.
 | |
| .PP
 | |
| 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
 | |
| .BR wi .
 | |
| The four parameters are the starting and ending lines in memory
 | |
| and the starting and ending columns in memory, in that order.
 | |
| (This
 | |
| .B terminfo\^
 | |
| capability is described for completeness.
 | |
| It is unlikely that any
 | |
| .BR termcap\^ -using
 | |
| program will support it.)
 | |
| .PP
 | |
| If the terminal can retain display memory above the screen, then the
 | |
| .B da
 | |
| capability should be given;
 | |
| if display memory can be retained
 | |
| below, then
 | |
| .B db
 | |
| should be given.
 | |
| These indicate
 | |
| that deleting a line or scrolling may bring non-blank lines up from below
 | |
| or that scrolling back with
 | |
| .B sr
 | |
| may bring down non-blank lines.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Insert/Delete Character
 | |
| .PP
 | |
| There are two basic kinds of intelligent terminals with respect to
 | |
| insert/delete character that can be described using
 | |
| .BR termcap\^ .
 | |
| 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 terminal you have by clearing the screen then typing
 | |
| text separated by cursor motions.
 | |
| Type \*(lqabc\ \ \ \ def\*(rq using local
 | |
| cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq.
 | |
| Then position the cursor before the \*(lqabc\*(rq and put the terminal 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 \*(lqabc\*(rq
 | |
| shifts over to the \*(lqdef\*(rq 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 \fBin\fP, which stands for
 | |
| \*(lqinsert null\*(rq.
 | |
| While these are two logically separate attributes
 | |
| (one line
 | |
| .I vs.
 | |
| 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.
 | |
| .PP
 | |
| .B Termcap\^
 | |
| 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
 | |
| .B im
 | |
| the sequence to get into insert mode.
 | |
| Give as
 | |
| .B ei
 | |
| the sequence to leave insert mode.
 | |
| Now give as
 | |
| .B ic
 | |
| any sequence that needs to be sent just before
 | |
| each character to be inserted.
 | |
| Most terminals with a true insert mode
 | |
| will not give
 | |
| .BR 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
 | |
| .BR 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 milliseconds
 | |
| in
 | |
| .B ip
 | |
| (a string option).
 | |
| Any other sequence that may need to be
 | |
| sent after insertion of a single character can also be given in
 | |
| .BR ip .
 | |
| If your terminal needs to be placed into an `insert mode'
 | |
| and needs a special code preceding each inserted character,
 | |
| then both
 | |
| .BR im / ei
 | |
| and
 | |
| .B ic
 | |
| can be given, and both will be used.
 | |
| The
 | |
| .B IC
 | |
| capability, with one parameter
 | |
| .IR n\^ ,
 | |
| will repeat the effects of
 | |
| .B ic
 | |
| .I n\^
 | |
| times.
 | |
| .PP
 | |
| It is occasionally necessary to move around while in insert mode
 | |
| to delete characters on the same line
 | |
| .RI ( e.g. ,
 | |
| if there is a tab after
 | |
| the insertion position).
 | |
| If your terminal allows motion while in
 | |
| insert mode, you can give the capability
 | |
| .B mi
 | |
| to speed up inserting
 | |
| in this case.
 | |
| Omitting
 | |
| .B mi
 | |
| will affect only speed.
 | |
| Some terminals
 | |
| (notably Datamedia's) must not have
 | |
| .B mi
 | |
| because of the way their
 | |
| insert mode works.
 | |
| .PP
 | |
| Finally, you can specify
 | |
| .B dc
 | |
| to delete a single character,
 | |
| .B DC
 | |
| with one parameter
 | |
| .I n\^
 | |
| to delete
 | |
| .I n\^
 | |
| characters,
 | |
| and delete mode by giving
 | |
| .B dm
 | |
| and
 | |
| .B ed
 | |
| to enter and exit delete mode
 | |
| (which is any mode the terminal needs to be placed in for
 | |
| .B dc
 | |
| to work).
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Highlighting, Underlining, and Visible Bells
 | |
| .PP
 | |
| If your terminal has one or more kinds of display attributes,
 | |
| these can be represented in a number of different ways.
 | |
| You should choose one display form as
 | |
| .IR "standout mode" ,
 | |
| 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
 | |
| .B so
 | |
| and
 | |
| .BR 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
 | |
| .B sg
 | |
| should be given to tell how many characters are left.
 | |
| .PP
 | |
| Codes to begin underlining and end underlining can be given as
 | |
| .B us
 | |
| and
 | |
| .BR ue ,
 | |
| respectively.
 | |
| Underline mode change garbage is specified by
 | |
| .BR ug ,
 | |
| similar to
 | |
| .BR sg .
 | |
| If the terminal has a 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
 | |
| .BR uc .
 | |
| .PP
 | |
| Other capabilities to enter various highlighting modes include
 | |
| .B mb
 | |
| (blinking),
 | |
| .B md
 | |
| (bold or extra bright),
 | |
| .B mh
 | |
| (dim or half-bright),
 | |
| .B mk
 | |
| (blanking or invisible text),
 | |
| .B mp
 | |
| (protected),
 | |
| .B mr
 | |
| (reverse video),
 | |
| .B me
 | |
| (turn off
 | |
| .I all
 | |
| attribute modes),
 | |
| .B as
 | |
| (enter alternate character set mode), and
 | |
| .B ae
 | |
| (exit alternate character set mode).
 | |
| Turning on any of these modes singly may or may not turn off other modes.
 | |
| .PP
 | |
| If there is a sequence to set arbitrary combinations of mode,
 | |
| this should be given as
 | |
| .B 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
 | |
| .BR sa ,
 | |
| only those for which corresponding attribute commands exist.
 | |
| (It is unlikely that a
 | |
| .BR termcap\^ -using
 | |
| program will support this capability, which is defined for compatibility
 | |
| with
 | |
| .BR terminfo\^ .)
 | |
| .PP
 | |
| Terminals with the \*(lqmagic cookie\*(rq glitches
 | |
| .RB ( sg
 | |
| and
 | |
| .BR ug ),
 | |
| rather than maintaining extra attribute bits for each character cell,
 | |
| instead deposit special \*(lqcookies\*(rq,
 | |
| or \*(lqgarbage characters\*(rq,
 | |
| when they receive mode-setting sequences,
 | |
| which affect the display algorithm.
 | |
| .PP
 | |
| Some terminals,
 | |
| such as the Hewlett-Packard 2621,
 | |
| automatically 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
 | |
| .B ms
 | |
| capability should be present
 | |
| to say that this overhead is unnecessary.
 | |
| .PP
 | |
| If the terminal has
 | |
| a way of flashing the screen to indicate an error quietly
 | |
| (a bell replacement),
 | |
| this can be given as
 | |
| .BR vb ;
 | |
| it must not move the cursor.
 | |
| .PP
 | |
| 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
 | |
| .BR vs .
 | |
| If there is a way to make the cursor completely invisible, give that as
 | |
| .BR vi .
 | |
| The capability
 | |
| .BR ve ,
 | |
| which undoes the effects of both of these modes,
 | |
| should also be given.
 | |
| .PP
 | |
| If your terminal correctly displays underlined characters
 | |
| (with no special codes needed)
 | |
| even though it does not overstrike,
 | |
| then you should give the capability
 | |
| .BR ul .
 | |
| If overstrikes are erasable with a blank,
 | |
| this should be indicated by giving
 | |
| .BR eo .
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Keypad
 | |
| .PP
 | |
| 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
 | |
| .B ks
 | |
| and
 | |
| .BR 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
 | |
| .BR kl ,
 | |
| .BR kr ,
 | |
| .BR ku ,
 | |
| .BR kd ,
 | |
| and
 | |
| .BR kh ,
 | |
| respectively.
 | |
| If there are function keys such as f0, f1, ..., f9, the codes they send
 | |
| can be given as
 | |
| .BR k0 ,
 | |
| .BR k1 , "" ...,
 | |
| .BR k9 .
 | |
| If these keys have labels other than the default f0 through f9, the labels
 | |
| can be given as
 | |
| .BR l0 ,
 | |
| .BR l1 , "" ...,
 | |
| .BR l9 .
 | |
| The codes transmitted by certain other special keys can be given:
 | |
| .B kH
 | |
| (home down),
 | |
| .B kb
 | |
| (backspace),
 | |
| .B ka
 | |
| (clear all tabs),
 | |
| .B kt
 | |
| (clear the tab stop in this column),
 | |
| .B kC
 | |
| (clear screen or erase),
 | |
| .B kD
 | |
| (delete character),
 | |
| .B kL
 | |
| (delete line),
 | |
| .B kM
 | |
| (exit insert mode),
 | |
| .B kE
 | |
| (clear to end of line),
 | |
| .B kS
 | |
| (clear to end of screen),
 | |
| .B kI
 | |
| (insert character or enter insert mode),
 | |
| .B kA
 | |
| (insert line),
 | |
| .B kN
 | |
| (next page),
 | |
| .B kP
 | |
| (previous page),
 | |
| .B kF
 | |
| (scroll forward/down),
 | |
| .B kR
 | |
| (scroll backward/up), and
 | |
| .B 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
 | |
| .BR K1 ,
 | |
| .BR K2 ,
 | |
| .BR K3 ,
 | |
| .BR K4 ,
 | |
| and
 | |
| .BR K5 .
 | |
| These keys are useful when the effects of a 3 by 3 directional pad are needed.
 | |
| The obsolete
 | |
| .B ko
 | |
| capability formerly used to describe \*(lqother\*(rq function keys has been
 | |
| completely supplanted by the above capabilities.
 | |
| .PP
 | |
| The
 | |
| .B ma
 | |
| entry is also used to indicate arrow keys on terminals that have
 | |
| single-character arrow keys.
 | |
| It is obsolete but still in use in
 | |
| version 2 of
 | |
| .B vi\^
 | |
| which must be run on some minicomputers due to
 | |
| memory limitations.
 | |
| This field is redundant with
 | |
| .BR kl ,
 | |
| .BR kr ,
 | |
| .BR ku ,
 | |
| .BR kd ,
 | |
| and
 | |
| .BR kh .
 | |
| It consists of groups of two characters.
 | |
| In each group, the first character is what an arrow key sends, and the
 | |
| second character is the corresponding
 | |
| .B vi\^
 | |
| command.
 | |
| These commands are
 | |
| .B h
 | |
| for
 | |
| .BR kl ,
 | |
| .B j
 | |
| for
 | |
| .BR kd ,
 | |
| .B k
 | |
| for
 | |
| .BR ku ,
 | |
| .B l
 | |
| for
 | |
| .BR kr ,
 | |
| and
 | |
| .B H
 | |
| for
 | |
| .BR kh .
 | |
| For example, the Mime would have \*(lqma=^Hh^Kj^Zk^Xl\*(rq
 | |
| indicating arrow keys left (^H), down (^K), up (^Z), and right (^X).
 | |
| (There is no home key on the Mime.)
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Tabs and Initialization
 | |
| .PP
 | |
| 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
 | |
| .B ti
 | |
| and
 | |
| .BR te .
 | |
| This arises, for 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
 | |
| .B ti
 | |
| sets the command character to be the one used by
 | |
| .BR termcap\^ .
 | |
| .PP
 | |
| Other capabilities
 | |
| include
 | |
| .BR is ,
 | |
| an initialization string for the terminal,
 | |
| and
 | |
| .BR 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
 | |
| .B termcap\^
 | |
| description.
 | |
| They are normally sent to the terminal by the
 | |
| .B tset\^
 | |
| program each time the user logs in.
 | |
| They will be printed in the following order:
 | |
| .BR is ;
 | |
| setting tabs using
 | |
| .B ct
 | |
| and
 | |
| .BR st ;
 | |
| and finally
 | |
| .BR if .
 | |
| .RI ( Terminfo\^
 | |
| uses
 | |
| .B i1-i2
 | |
| instead of
 | |
| .B is
 | |
| and runs the program
 | |
| .B iP
 | |
| and prints
 | |
| .B i3
 | |
| after the other initializations.)
 | |
| A pair of sequences that does a harder reset from a totally unknown state
 | |
| can be analogously given as
 | |
| .B rs
 | |
| and
 | |
| .BR if .
 | |
| These strings are output by the
 | |
| .B reset\^
 | |
| program, which is used when the terminal gets into a wedged state.
 | |
| .RI ( Terminfo\^
 | |
| uses
 | |
| .B r1-r3
 | |
| instead of
 | |
| .BR rs .)
 | |
| Commands are normally placed in
 | |
| .B rs
 | |
| and
 | |
| .B rf
 | |
| only if they produce annoying effects on the screen and are not necessary
 | |
| when logging in.
 | |
| For example, the command to set the VT100 into 80-column mode
 | |
| would normally be part of
 | |
| .BR 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.
 | |
| .PP
 | |
| If the terminal has hardware tabs,
 | |
| the command to advance to the next tab stop can be given as
 | |
| .B ta
 | |
| (usually
 | |
| .BR ^I ).
 | |
| A \*(lqbacktab\*(rq command which moves leftward to the previous tab stop
 | |
| can be given as
 | |
| .BR bt .
 | |
| By convention,
 | |
| if the terminal driver modes indicate that tab stops are being expanded
 | |
| by the computer rather than being sent to the terminal,
 | |
| programs should not use
 | |
| .B ta
 | |
| or
 | |
| .B bt
 | |
| even if they are present,
 | |
| since the user may not have the tab stops properly set.
 | |
| If the terminal has hardware tabs that are initially set every
 | |
| .I n\^
 | |
| positions when the terminal is powered up, then the numeric parameter
 | |
| .B it
 | |
| is given, showing the number of positions between tab stops.
 | |
| This is normally used by the
 | |
| .B tset\^
 | |
| command 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 nonvolatile memory, the
 | |
| .B termcap\^
 | |
| description can assume that they are properly set.
 | |
| .PP
 | |
| If there are commands to set and clear tab stops, they can be given as
 | |
| .B ct
 | |
| (clear all tab stops) and
 | |
| .B 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
 | |
| .B is
 | |
| or
 | |
| .BR if .
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Delays
 | |
| .PP
 | |
| Certain capabilities control padding in the terminal driver.
 | |
| These are primarily needed by hardcopy terminals and are used by the
 | |
| .B tset\^
 | |
| program to set terminal driver modes appropriately.
 | |
| Delays embedded in the capabilities
 | |
| .BR cr ,
 | |
| .BR sf ,
 | |
| .BR le ,
 | |
| .BR ff ,
 | |
| and
 | |
| .B ta
 | |
| will cause the appropriate delay bits to be set in the terminal driver.
 | |
| If
 | |
| .B pb
 | |
| (padding baud rate) is given, these values can be ignored at baud rates
 | |
| below the value of
 | |
| .BR pb .
 | |
| For 4.2BSD
 | |
| .BR tset\^ ,
 | |
| the delays are given as numeric capabilities
 | |
| .BR dC ,
 | |
| .BR dN ,
 | |
| .BR dB ,
 | |
| .BR dF ,
 | |
| and
 | |
| .BR dT
 | |
| instead.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Miscellaneous
 | |
| .PP
 | |
| If the terminal requires other than a \s-2NUL\s0 (zero) character as a pad,
 | |
| this can be given as
 | |
| .BR pc .
 | |
| Only the first character of the
 | |
| .B pc
 | |
| string is used.
 | |
| .PP
 | |
| If the terminal has commands to save and restore the position of the
 | |
| cursor, give them as
 | |
| .B sc
 | |
| and
 | |
| .BR rc .
 | |
| .PP
 | |
| If the terminal has an extra \*(lqstatus line\*(rq that is not normally 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
 | |
| .B 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
 | |
| .B ts
 | |
| and
 | |
| .BR fs .
 | |
| .RB ( fs
 | |
| must leave the cursor position in the same place that it was before
 | |
| .BR ts .
 | |
| If necessary, the
 | |
| .B sc
 | |
| and
 | |
| .B rc
 | |
| strings can be included in
 | |
| .B ts
 | |
| and
 | |
| .B fs
 | |
| to get this effect.)
 | |
| The capability
 | |
| .B 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
 | |
| .B es
 | |
| can be given.
 | |
| A string that turns off the status line (or otherwise erases its contents)
 | |
| should be given as
 | |
| .BR ds .
 | |
| The status line is normally assumed to be the same width as the
 | |
| rest of the screen,
 | |
| .IR i.e. ,
 | |
| .BR 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
 | |
| .BR ws .
 | |
| .PP
 | |
| If the terminal can move up or down half a line, this can be
 | |
| indicated with
 | |
| .B hu
 | |
| (half-line up) and
 | |
| .B 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
 | |
| .B ff
 | |
| (usually
 | |
| .BR ^L ).
 | |
| .PP
 | |
| 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
 | |
| .BR rp .
 | |
| The first parameter is the character to be repeated and the second is
 | |
| the number of times to repeat it.
 | |
| (This is a
 | |
| .B terminfo\^
 | |
| feature that is unlikely to be supported by a program that uses
 | |
| .BR termcap\^ .)
 | |
| .PP
 | |
| If the terminal has a settable command character, such as the
 | |
| Tektronix 4025, this can be indicated with
 | |
| .BR CC .
 | |
| A prototype command character is chosen which is used in all capabilities.
 | |
| This character is given in the
 | |
| .B CC
 | |
| capability to identify it.
 | |
| The following convention is supported on some UNIX systems:
 | |
| The environment is to be searched for a
 | |
| .B
 | |
| .SM CC
 | |
| variable,
 | |
| and if found,
 | |
| all occurrences of the prototype character are replaced by the character
 | |
| in the environment variable.
 | |
| This use of the
 | |
| .B
 | |
| .SM CC
 | |
| environment variable
 | |
| is a very bad idea, as it conflicts with
 | |
| .BR make\^ (1).
 | |
| .PP
 | |
| Terminal descriptions that do not represent a specific kind of known
 | |
| terminal, such as
 | |
| .BR switch\^ ,
 | |
| .BR dialup\^ ,
 | |
| .BR patch\^ ,
 | |
| and
 | |
| .BR network\^ ,
 | |
| should include the
 | |
| .B 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
 | |
| .I virtual\^
 | |
| terminal descriptions for which the escape sequences are known.)
 | |
| .PP
 | |
| If the terminal uses xoff/xon (\s-2DC3\s0/\s-2DC1\s0)
 | |
| handshaking for flow control, give
 | |
| .BR xo .
 | |
| Padding information should still be included so that routines can make
 | |
| better decisions about costs, but actual pad characters will not be
 | |
| transmitted.
 | |
| .PP
 | |
| If the terminal has a \*(lqmeta key\*(rq which acts as a shift key, setting the
 | |
| 8th bit of any character transmitted, then this fact can be indicated with
 | |
| .BR km .
 | |
| Otherwise, software will assume that the 8th bit is parity and it will
 | |
| usually be cleared.
 | |
| If strings exist to turn this \*(lqmeta mode\*(rq on and off, they can be given as
 | |
| .B mm
 | |
| and
 | |
| .BR mo .
 | |
| .PP
 | |
| 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
 | |
| .BR 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.
 | |
| .PP
 | |
| If the terminal is one of those supported by the UNIX system virtual
 | |
| terminal protocol, the terminal number can be given as
 | |
| .BR vt .
 | |
| .PP
 | |
| Media copy strings which control an auxiliary printer
 | |
| connected to the terminal can be given as
 | |
| .BR ps :
 | |
| print the contents of the screen;
 | |
| .BR pf :
 | |
| turn off the printer; and
 | |
| .BR 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
 | |
| .B pO
 | |
| takes one parameter 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
 | |
| .BR pf ,
 | |
| is transparently passed to the printer while
 | |
| .B pO
 | |
| is in effect.
 | |
| .PP
 | |
| Strings to program function keys can be given as
 | |
| .BR pk ,
 | |
| .BR pl ,
 | |
| and
 | |
| .BR px .
 | |
| Each of these strings takes two parameters: the function 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
 | |
| .B pk
 | |
| causes pressing the given key to be the same as the user typing the given
 | |
| string;
 | |
| .B pl
 | |
| causes the string to be executed by the terminal in local mode;
 | |
| and
 | |
| .B px
 | |
| causes the string to be transmitted to the computer.
 | |
| Unfortunately, due to lack of a definition for string parameters in
 | |
| .BR termcap\^ ,
 | |
| only
 | |
| .B terminfo\^
 | |
| supports these capabilities.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Glitches and Braindamage
 | |
| .PP
 | |
| Hazeltine terminals, which do not allow `~' characters to be displayed,
 | |
| should indicate
 | |
| .BR hz .
 | |
| .PP
 | |
| The
 | |
| .B nc
 | |
| capability, now obsolete, formerly indicated Datamedia terminals,
 | |
| which echo
 | |
| .B \er \en
 | |
| for
 | |
| carriage return then ignore a following linefeed.
 | |
| .PP
 | |
| Terminals that ignore a linefeed immediately after an
 | |
| .B am
 | |
| wrap, such as the Concept, should indicate
 | |
| .BR xn .
 | |
| .PP
 | |
| If
 | |
| .B ce
 | |
| is required to get rid of standout
 | |
| (instead of merely writing normal text on top of it),
 | |
| .B xs
 | |
| should be given.
 | |
| .PP
 | |
| Teleray terminals, where tabs turn all characters moved over to blanks,
 | |
| should indicate
 | |
| .B xt
 | |
| (destructive tabs).
 | |
| This glitch is also taken to mean that it is not possible
 | |
| to position the cursor on top of a \*(lqmagic cookie\*(rq, and that
 | |
| to erase standout mode it is necessary to use delete and insert line.
 | |
| .PP
 | |
| The Beehive Superbee, which is unable to correctly transmit the
 | |
| \s-2ESC\s0 or ^C characters, has
 | |
| .BR xb ,
 | |
| indicating that the \*(lqf1\*(rq key is used for \s-2ESC\s0 and \*(lqf2\*(rq for ^C.
 | |
| (Only certain Superbees have this problem, depending on the ROM.)
 | |
| .PP
 | |
| Other specific terminal problems may be corrected by adding more
 | |
| capabilities of the form \fBx\fIx\^\fP.
 | |
| .br
 | |
| .ne 5
 | |
| .PP
 | |
| .B Similar Terminals
 | |
| .PP
 | |
| If there are two very similar terminals,
 | |
| one can be defined as being just like the other with certain exceptions.
 | |
| The string capability
 | |
| .B tc
 | |
| can be given
 | |
| with the name of the similar terminal.
 | |
| This capability must be
 | |
| .IR last\^ ,
 | |
| and the combined length of the entries
 | |
| must not exceed 1024.
 | |
| The capabilities given before
 | |
| .B tc
 | |
| override those in the terminal type invoked by
 | |
| .BR tc .
 | |
| A capability can be canceled by placing
 | |
| .B xx@
 | |
| to the left of the
 | |
| .B tc
 | |
| invocation, where
 | |
| .I xx\^
 | |
| is the capability.
 | |
| For example, the entry
 | |
| .PP
 | |
| 	hn\||\|2621\-nl:ks@:ke@:tc=2621:
 | |
| .PP
 | |
| defines a \*(lq2621\-nl\*(rq that does not have the
 | |
| .B ks
 | |
| or
 | |
| .B ke
 | |
| capabilities,
 | |
| 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.
 | |
| .SH AUTHOR
 | |
| William Joy
 | |
| .br
 | |
| Mark Horton added underlining and keypad support
 | |
| .SH FILES
 | |
| .TP 15
 | |
| .B /etc/termcap
 | |
| file containing terminal descriptions
 | |
| .B /usr/etc/termcap
 | |
| file containing more terminal descriptions (Minix-vmd)
 | |
| .SH SEE ALSO
 | |
| .BR elvis (1),
 | |
| .BR more (1),
 | |
| .BR termcap (3),
 | |
| .BR printf (3).
 | |
| .SH "CAVEATS AND BUGS"
 | |
| Lines and columns are now stored by the kernel as well as in the termcap
 | |
| entry.
 | |
| Most programs now use the kernel information primarily; the information
 | |
| in this file is used only if the kernel does not have any information.
 | |
| .PP
 | |
| Not all programs support all entries.
 | |
| .PP
 | |
| The MINIX 3
 | |
| .BR termcap (3)
 | |
| does not understand everything described here, unlike the one Minix-vmd uses.
 | 
