Annotation of cci/usr/src/man/man5/termcap.5, revision 1.1.1.1

1.1       root        1: .tr ||
                      2: .TH TERMCAP 5 "10 May 1980"
                      3: .UC
                      4: .SH NAME
                      5: termcap \- terminal capability data base
                      6: .SH SYNOPSIS
                      7: /etc/termcap
                      8: .SH DESCRIPTION
                      9: .I Termcap
                     10: is a data base describing terminals,
                     11: used,
                     12: .IR e.g. ,
                     13: by
                     14: .IR vi (1)
                     15: and
                     16: .IR curses (3X).
                     17: Terminals are described in
                     18: .I termcap
                     19: by giving a set of capabilities which they have, and by describing
                     20: how operations are performed.
                     21: Padding requirements and initialization sequences
                     22: are included in
                     23: .I termcap.
                     24: .PP
                     25: Entries in
                     26: .I termcap
                     27: consist of a number of `:' separated fields.
                     28: The first entry for each terminal gives the names which are known for the
                     29: terminal, separated by `|' characters.  The first name is always 2 characters
                     30: long and is used by older version 6 systems which store the terminal type
                     31: in a 16 bit word in a systemwide data base.
                     32: The second name given is the most common abbreviation for the terminal, and the
                     33: last name given should be a long name fully identifying the terminal.
                     34: The second name should contain no blanks; the last name may well contain
                     35: blanks for readability.
                     36: .SH CAPABILITIES
                     37: .nf
                     38: (P) indicates padding may be specified
                     39: (P*) indicates that padding may be based on no. lines affected
                     40: 
                     41: .ta \w'k0-k9  'u +\w'Type  'u +\w'Pad?  'u
                     42: \fBName        Type    Pad?    Description\fR
                     43: ae     str     (P)     End alternate character set
                     44: al     str     (P*)    Add new blank line
                     45: am     bool            Terminal has automatic margins
                     46: as     str     (P)     Start alternate character set
                     47: bc     str             Backspace if not \fB^H\fR
                     48: bs     bool            Terminal can backspace with \fB^H\fR
                     49: bt     str     (P)     Back tab
                     50: bw     bool            Backspace wraps from column 0 to last column
                     51: CC     str             Command character in prototype if terminal settable
                     52: cd     str     (P*)    Clear to end of display
                     53: ce     str     (P)     Clear to end of line
                     54: ch     str     (P)     Like cm but horizontal motion only, line stays same
                     55: cl     str     (P*)    Clear screen
                     56: cm     str     (P)     Cursor motion
                     57: co     num             Number of columns in a line
                     58: cr     str     (P*)    Carriage return, (default \fB^M\fR)
                     59: cs     str     (P)     Change scrolling region (vt100), like cm
                     60: cv     str     (P)     Like ch but vertical only.
                     61: da     bool            Display may be retained above
                     62: dB     num             Number of millisec of bs delay needed
                     63: db     bool            Display may be retained below
                     64: dC     num             Number of millisec of cr delay needed
                     65: dc     str     (P*)    Delete character
                     66: dF     num             Number of millisec of ff delay needed
                     67: dl     str     (P*)    Delete line
                     68: dm     str             Delete mode (enter)
                     69: dN     num             Number of millisec of nl delay needed
                     70: do     str             Down one line
                     71: dT     num             Number of millisec of tab delay needed
                     72: ed     str             End delete mode
                     73: ei     str             End insert mode; give \*(lq:ei=:\*(rq if \fBic\fR
                     74: eo     str             Can erase overstrikes with a blank
                     75: ff     str     (P*)    Hardcopy terminal page eject (default \fB^L\fR)
                     76: hc     bool            Hardcopy terminal
                     77: hd     str             Half-line down (forward 1/2 linefeed)
                     78: ho     str             Home cursor (if no \fBcm\fR)
                     79: hu     str             Half-line up (reverse 1/2 linefeed)
                     80: hz     str             Hazeltine; can't print ~'s
                     81: ic     str     (P)     Insert character
                     82: if     str             Name of file containing \fBis\fR
                     83: im     bool            Insert mode (enter); give \*(lq:im=:\*(rq if \fBic\fR
                     84: in     bool            Insert mode distinguishes nulls on display
                     85: ip     str     (P*)    Insert pad after character inserted
                     86: is     str             Terminal initialization string
                     87: k0-k9  str             Sent by \*(lqother\*(rq function keys 0-9
                     88: kb     str             Sent by backspace key
                     89: kd     str             Sent by terminal down arrow key
                     90: ke     str             Out of \*(lqkeypad transmit\*(rq mode
                     91: kh     str             Sent by home key
                     92: kl     str             Sent by terminal left arrow key
                     93: kn     num             Number of \*(lqother\*(rq keys
                     94: ko     str             Termcap entries for other non-function keys
                     95: kr     str             Sent by terminal right arrow key
                     96: ks     str             Put terminal in \*(lqkeypad transmit\*(rq mode
                     97: ku     str             Sent by terminal up arrow key
                     98: l0-l9  str             Labels on \*(lqother\*(rq function keys
                     99: li     num             Number of lines on screen or page
                    100: ll     str             Last line, first column (if no \fBcm\fR)
                    101: ma     str             Arrow key map, used by vi version 2 only
                    102: mi     bool            Safe to move while in insert mode
                    103: ml     str             Memory lock on above cursor.
                    104: ms     bool            Safe to move while in standout and underline mode
                    105: mu     str             Memory unlock (turn off memory lock).
                    106: nc     bool            No correctly working carriage return (DM2500,H2000)
                    107: nd     str             Non-destructive space (cursor right)
                    108: nl     str     (P*)    Newline character (default \fB\en\fR)
                    109: ns     bool            Terminal is a \s-2CRT\s+2 but doesn't scroll.
                    110: os     bool            Terminal overstrikes
                    111: pc     str             Pad character (rather than null)
                    112: pt     bool            Has hardware tabs (may need to be set with \fBis\fR)
                    113: se     str             End stand out mode
                    114: sf     str     (P)     Scroll forwards
                    115: sg     num             Number of blank chars left by so or se
                    116: so     str             Begin stand out mode
                    117: sr     str     (P)     Scroll reverse (backwards)
                    118: ta     str     (P)     Tab (other than \fB^I\fR or with padding)
                    119: tc     str             Entry of similar terminal - must be last
                    120: te     str             String to end programs that use \fBcm\fP
                    121: ti     str             String to begin programs that use \fBcm\fR
                    122: uc     str             Underscore one char and move past it
                    123: ue     str             End underscore mode
                    124: ug     num             Number of blank chars left by us or ue
                    125: ul     bool            Terminal underlines even though it doesn't overstrike
                    126: up     str             Upline (cursor up)
                    127: us     str             Start underscore mode
                    128: vb     str             Visible bell (may not move cursor)
                    129: ve     str             Sequence to end open/visual mode
                    130: vs     str             Sequence to start open/visual mode
                    131: xb     bool            Beehive (f1=escape, f2=ctrl C)
                    132: xn     bool            A newline is ignored after a wrap (Concept)
                    133: xr     bool            Return acts like \fBce\fP \er \en (Delta Data)
                    134: xs     bool            Standout not erased by writing over it (HP 264?)
                    135: xt     bool            Tabs are destructive, magic so char (Teleray 1061)
                    136: .fi
                    137: .PP
                    138: .B A Sample Entry
                    139: .PP
                    140: The following entry, which describes the Concept\-100, is among the more
                    141: complex entries in the
                    142: .I termcap
                    143: file as of this writing.
                    144: (This particular concept entry is outdated,
                    145: and is used as an example only.)
                    146: .PP
                    147: .nf
                    148: c1\||\|c100\||\|concept100:is=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200:\e
                    149:         :al=3*\eE^R:am:bs:cd=16*\eE^C:ce=16\eE^S:cl=2*^L:cm=\eEa%+ %+ :co#80:\e
                    150:         :dc=16\eE^A:dl=3*\eE^B:ei=\eE\e200:eo:im=\eE^P:in:ip=16*:li#24:mi:nd=\eE=:\e
                    151:         :se=\eEd\eEe:so=\eED\eEE:ta=8\et:ul:up=\eE;:vb=\eEk\eEK:xn:
                    152: .fi
                    153: .PP
                    154: Entries may continue onto multiple lines by giving a \e as the last
                    155: character of a line, and that empty fields
                    156: may be included for readability (here between the last field on a line
                    157: and the first field on the next).
                    158: Capabilities in
                    159: .I termcap
                    160: are of three types:
                    161: Boolean capabilities which indicate that the terminal has
                    162: some particular feature, numeric capabilities giving the size of the terminal
                    163: or the size of particular delays, and string
                    164: capabilities, which give a sequence which can be used to perform particular
                    165: terminal operations.
                    166: .PP
                    167: .B Types of Capabilities
                    168: .PP
                    169: All capabilities have two letter codes.  For instance, the fact that
                    170: the Concept has \*(lqautomatic margins\*(rq (i.e. an automatic return and linefeed
                    171: when the end of a line is reached) is indicated by the capability \fBam\fR.
                    172: Hence the description of the Concept includes \fBam\fR.
                    173: Numeric capabilities are followed by the character `#' and then the value.
                    174: Thus \fBco\fR which indicates the number of columns the terminal has
                    175: gives the value `80' for the Concept.
                    176: .PP
                    177: Finally, string valued capabilities, such as \fBce\fR (clear to end of line
                    178: sequence) are given by the two character code, an `=', and then a string
                    179: ending at the next following `:'.  A delay in milliseconds may appear after
                    180: the `=' in such a capability, and padding characters are supplied by the
                    181: editor after the remainder of the string is sent to provide this delay.
                    182: The delay can be either a integer, e.g. `20', or an integer followed by
                    183: an `*', i.e. `3*'.  A `*' indicates that the padding required is proportional
                    184: to the number of lines affected by the operation, and the amount given is
                    185: the per-affected-unit padding required.
                    186: When a `*' is specified, it is sometimes useful to give a delay of the form
                    187: `3.5' specify a delay per unit to tenths of milliseconds.
                    188: .PP
                    189: A number of escape sequences are provided in the string valued capabilities
                    190: for easy encoding of characters there.  A \fB\eE\fR maps to an \s-2ESCAPE\s0
                    191: character, \fB^x\fR maps to a control-x for any appropriate x, and the sequences
                    192: \fB\en \er \et \eb \ef\fR give a newline, return, tab, backspace and formfeed.
                    193: Finally, characters may be given as three octal digits after a \fB\e\fR,
                    194: and the characters \fB^\fR and \fB\e\fR may be given as \fB\e^\fR and \fB\e\e\fR.
                    195: If it is necessary to place a \fB:\fR in a capability it must be escaped in
                    196: octal as \fB\e072\fR.
                    197: If it is necessary to place a null character in a string capability it
                    198: must be encoded as \fB\e200\fR.  The routines which deal with
                    199: .I termcap
                    200: use C strings, and strip the high bits of the output very late so that
                    201: a \fB\e200\fR comes out as a \fB\e000\fR would.
                    202: .br
                    203: .ne 5
                    204: .PP
                    205: .B Preparing Descriptions
                    206: .PP
                    207: We now outline how to prepare descriptions of terminals.
                    208: The most effective way to prepare a terminal description is by imitating
                    209: the description of a similar terminal in
                    210: .I termcap
                    211: and to build up a description gradually, using partial descriptions
                    212: with
                    213: .I ex
                    214: to check that they are correct.
                    215: Be aware that a very unusual terminal may expose deficiencies in
                    216: the ability of the
                    217: .I termcap
                    218: file to describe it
                    219: or bugs in
                    220: .I ex.
                    221: To easily test a new terminal description you can set the environment variable
                    222: TERMCAP to a pathname of a file containing the description you are working
                    223: on and the editor will look there rather than in
                    224: .I /etc/termcap.
                    225: TERMCAP can also be set to the termcap entry itself
                    226: to avoid reading the file when starting up the editor.
                    227: (This only works on version 7 systems.)
                    228: .PP
                    229: .B Basic capabilities
                    230: .PP
                    231: The number of columns on each line for the terminal is given by the
                    232: \fBco\fR numeric capability.  If the terminal is a \s-2CRT\s0, then the
                    233: number of lines on the screen is given by the \fBli\fR capability.
                    234: If the terminal wraps around to the beginning of the next line when
                    235: it reaches the right margin, then it should have the \fBam\fR capability.
                    236: If the terminal can clear its screen, then this is given by the
                    237: \fBcl\fR string capability.  If the terminal can backspace, then it
                    238: should have the \fBbs\fR capability, unless a backspace is accomplished
                    239: by a character other than \fB^H\fR (ugh) in which case you should give
                    240: this character as the \fBbc\fR string capability.  If it overstrikes
                    241: (rather than clearing a position when a character is struck over)
                    242: then it should have the \fBos\fR capability.
                    243: .PP
                    244: A very important point here is that the local cursor motions encoded
                    245: in
                    246: .I termcap
                    247: are undefined at the left and top edges of a \s-2CRT\s0 terminal.
                    248: The editor will never attempt to backspace around the left edge, nor
                    249: will it attempt to go up locally off the top.  The editor assumes that
                    250: feeding off the bottom of the screen will cause the screen to scroll up,
                    251: and the \fBam\fR capability tells whether the cursor sticks at the right
                    252: edge of the screen.  If the terminal has switch selectable automatic margins,
                    253: the
                    254: .I termcap
                    255: file usually assumes that this is on, i.e. \fBam\fR.
                    256: .PP
                    257: These capabilities suffice to describe hardcopy and \*(lqglass-tty\*(rq terminals.
                    258: Thus the model 33 teletype is described as
                    259: .PP
                    260: .DT
                    261:        t3\||\|33\||\|tty33:co#72:os
                    262: .PP
                    263: while the Lear Siegler \s-2ADM\-3\s0 is described as
                    264: .PP
                    265: .DT
                    266:        cl\||\|adm3|3|lsi adm3:am:bs:cl=^Z:li#24:co#80
                    267: .PP
                    268: .B Cursor addressing
                    269: .PP
                    270: Cursor addressing in the terminal is described by a
                    271: \fBcm\fR string capability, with 
                    272: .IR printf (3S)
                    273: like escapes \fB%x\fR in it.
                    274: These substitute to encodings of the current line or column position,
                    275: while other characters are passed through unchanged.
                    276: If the \fBcm\fR string is thought of as being a function, then its
                    277: arguments are the line and then the column to which motion is desired,
                    278: and the \fB%\fR encodings have the following meanings:
                    279: .PP
                    280: .DT
                    281: .nf
                    282:        %d      as in \fIprintf\fR, 0 origin
                    283:        %2      like %2d
                    284:        %3      like %3d
                    285:        %.      like %c
                    286:        %+x     adds \fIx\fR to value, then %.
                    287:        %>xy    if value > x adds y, no output.
                    288:        %r      reverses order of line and column, no output
                    289:        %i      increments line/column (for 1 origin)
                    290:        %%      gives a single %
                    291:        %n      exclusive or row and column with 0140 (DM2500)
                    292:        %B      BCD (16*(x/10)) + (x%10), no output.
                    293:        %D      Reverse coding (x-2*(x%16)), no output. (Delta Data).
                    294: .fi
                    295: .PP
                    296: Consider the HP2645, which, to get to row 3 and column 12, needs
                    297: to be sent \eE&a12c03Y padded for 6 milliseconds.  Note that the order
                    298: of the rows and columns is inverted here, and that the row and column
                    299: are printed as two digits.  Thus its \fBcm\fR capability is \*(lqcm=6\eE&%r%2c%2Y\*(rq.
                    300: The Microterm \s-2ACT-IV\s0 needs the current row and column sent
                    301: preceded by a \fB^T\fR, with the row and column simply encoded in binary,
                    302: \*(lqcm=^T%.%.\*(rq.  Terminals which use \*(lq%.\*(rq need to be able to
                    303: backspace the cursor (\fBbs\fR or \fBbc\fR),
                    304: and to move the cursor up one line on the screen (\fBup\fR introduced below).
                    305: This is necessary because it is not always safe to transmit \fB\et\fR, \fB\en\fR
                    306: \fB^D\fR and \fB\er\fR, as the system may change or discard them.
                    307: .PP
                    308: A final example is the \s-2LSI ADM\s0-3a, which uses row and column
                    309: offset by a blank character, thus \*(lqcm=\eE=%+ %+ \*(rq.
                    310: .PP
                    311: .B Cursor motions
                    312: .PP
                    313: If the terminal can move the cursor one position to the right, leaving
                    314: the character at the current position unchanged, then this sequence should
                    315: be given as \fBnd\fR (non-destructive space).  If it can move the cursor
                    316: up a line
                    317: on the screen in the same column, this should be given as \fBup\fR.
                    318: If the terminal has no cursor addressing capability, but can home the cursor
                    319: (to very upper left corner of screen) then this can be given as
                    320: \fBho\fR; similarly a fast way of getting to the lower left hand corner
                    321: can be given as \fBll\fR; this may involve going up with \fBup\fR
                    322: from the home position,
                    323: but the editor will never do this itself (unless \fBll\fR does) because it
                    324: makes no assumption about the effect of moving up from the home position.
                    325: .PP
                    326: .B Area clears
                    327: .PP
                    328: If the terminal can clear from the current position to the end of the
                    329: line, leaving the cursor where it is, this should be given as \fBce\fR.
                    330: If the terminal can clear from the current position to the end of the
                    331: display, then this should be given as \fBcd\fR.
                    332: The editor only uses
                    333: \fBcd\fR from the first column of a line.
                    334: .PP
                    335: .B Insert/delete line
                    336: .PP
                    337: If the terminal can open a new blank line before the line where the cursor
                    338: is, this should be given as \fBal\fR; this is done only from the first
                    339: position of a line.  The cursor must then appear on the newly blank line.
                    340: If the terminal can delete the line which the cursor is on, then this
                    341: should be given as \fBdl\fR; this is done only from the first position on
                    342: the line to be deleted.
                    343: If the terminal can scroll the screen backwards, then this can be given as
                    344: \fBsb\fR, but just \fBal\fR suffices.
                    345: If the terminal can retain display memory above then the
                    346: \fBda\fR capability should be given; if display memory can be retained
                    347: below then \fBdb\fR should be given.  These let the editor understand
                    348: that deleting a line on the screen may bring non-blank lines up from below
                    349: or that scrolling back with \fBsb\fR may bring down non-blank lines.
                    350: .PP
                    351: .B Insert/delete character
                    352: .PP
                    353: There are two basic kinds of intelligent terminals with respect to
                    354: insert/delete character which can be described using
                    355: .I termcap.
                    356: The most common insert/delete character operations affect only the characters
                    357: on the current line and shift characters off the end of the line rigidly.
                    358: Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make
                    359: a distinction between typed and untyped blanks on the screen, shifting
                    360: upon an insert or delete only to an untyped blank on the screen which is
                    361: either eliminated, or expanded to two untyped blanks.  You can find out
                    362: which kind of terminal you have by clearing the screen and then typing
                    363: text separated by cursor motions.  Type \*(lqabc\ \ \ \ def\*(rq using local
                    364: cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq.
                    365: Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert
                    366: mode.  If typing characters causes the rest of the line to shift
                    367: rigidly and characters to fall off the end, then your terminal does
                    368: not distinguish between blanks and untyped positions.  If the \*(lqabc\*(rq
                    369: shifts over to the \*(lqdef\*(rq which then move together around the end of the
                    370: current line and onto the next as you insert, you have the second type of
                    371: terminal, and should give the capability \fBin\fR, which stands for
                    372: \*(lqinsert null\*(rq.  If your terminal does something different and unusual
                    373: then you may have to modify the editor to get it to use the insert
                    374: mode your terminal defines.  We have seen no terminals which have an insert
                    375: mode not not falling into one of these two classes.
                    376: .PP
                    377: The editor can handle both terminals which have an insert mode, and terminals
                    378: which send a simple sequence to open a blank position on the current line.
                    379: Give as \fBim\fR the sequence to get into insert mode, or give it an
                    380: empty value if your terminal uses a sequence to insert a blank position.
                    381: Give as \fBei\fR the sequence to leave insert mode (give this, with
                    382: an empty value also if you gave \fBim\fR so).
                    383: Now give as \fBic\fR any sequence needed to be sent just before sending
                    384: the character to be inserted.  Most terminals with a true insert mode
                    385: will not give \fBic\fR, terminals which send a sequence to open a screen
                    386: position should give it here.  (Insert mode is preferable to the sequence
                    387: to open a position on the screen if your terminal has both.)
                    388: If post insert padding is needed, give this as a number of milliseconds
                    389: in \fBip\fR (a string option).  Any other sequence which may need to be
                    390: sent after an insert of a single character may also be given in \fBip\fR.
                    391: .PP
                    392: It is occasionally necessary to move around while in insert mode
                    393: to delete characters on the same line (e.g. if there is a tab after
                    394: the insertion position).  If your terminal allows motion while in
                    395: insert mode you can give the capability \fBmi\fR to speed up inserting
                    396: in this case.  Omitting \fBmi\fR will affect only speed.   Some terminals
                    397: (notably Datamedia's) must not have \fBmi\fR because of the way their
                    398: insert mode works.
                    399: .PP
                    400: Finally, you can specify delete mode by giving \fBdm\fR and \fBed\fR
                    401: to enter and exit delete mode, and \fBdc\fR to delete a single character
                    402: while in delete mode.
                    403: .PP
                    404: .B "Highlighting, underlining, and visible bells"
                    405: .PP
                    406: If your terminal has sequences to enter and exit standout mode these
                    407: can be given as \fBso\fR and \fBse\fR respectively.
                    408: If there are several flavors of standout mode
                    409: (such as inverse video, blinking, or underlining \-
                    410: half bright is not usually an acceptable \*(lqstandout\*(rq mode
                    411: unless the terminal is in inverse video mode constantly)
                    412: the preferred mode is inverse video by itself.
                    413: If the code to change into or out of standout
                    414: mode leaves one or even two blank spaces on the screen,
                    415: as the TVI 912 and Teleray 1061 do,
                    416: then \fBug\fR should be given to tell how many spaces are left.
                    417: .PP
                    418: Codes to begin underlining and end underlining can be given as \fBus\fR
                    419: and \fBue\fR respectively.
                    420: If the terminal has a code to underline the current character and move
                    421: the cursor one space to the right, 
                    422: such as the Microterm Mime,
                    423: this can be given as \fBuc\fR.
                    424: (If the underline code does not move the cursor to the right,
                    425: give the code followed by a nondestructive space.)
                    426: .PP
                    427: Many terminals, such as the HP 2621, automatically leave standout
                    428: mode when they move to a new line or the cursor is addressed.
                    429: Programs using standout mode should exit standout mode before
                    430: moving the cursor or sending a newline.
                    431: .PP
                    432: If the terminal has
                    433: a way of flashing the screen to indicate an error quietly (a bell replacement)
                    434: then this can be given as \fBvb\fR; it must not move the cursor.
                    435: If the terminal should be placed in a different mode during
                    436: open and visual modes of
                    437: .I ex,
                    438: this can be given as
                    439: \fBvs\fR and \fBve\fR, sent at the start and end of these modes
                    440: respectively.  These can be used to change, e.g., from a underline
                    441: to a block cursor and back.
                    442: .PP
                    443: If the terminal needs to be in a special mode when running
                    444: a program that addresses the cursor,
                    445: the codes to enter and exit this mode can be given as \fBti\fR and \fBte\fR.
                    446: This arises, for example, from terminals like the Concept with more than
                    447: one page of memory.
                    448: If the terminal has only memory relative cursor addressing and not screen
                    449: relative cursor addressing, a one screen-sized window must be fixed into
                    450: the terminal for cursor addressing to work properly.
                    451: .PP
                    452: If your terminal correctly generates underlined characters
                    453: (with no special codes needed)
                    454: even though it does not overstrike,
                    455: then you should give the capability \fBul\fR.
                    456: If overstrikes are erasable with a blank,
                    457: then this should be indicated by giving \fBeo\fR.
                    458: .PP
                    459: .B Keypad
                    460: .PP
                    461: If the terminal has a keypad that transmits codes when the keys are pressed,
                    462: this information can be given. Note that it is not possible to handle
                    463: terminals where the keypad only works in local (this applies, for example,
                    464: to the unshifted HP 2621 keys).
                    465: If the keypad can be set to transmit or not transmit,
                    466: give these codes as \fBks\fR and \fBke\fR.
                    467: Otherwise the keypad is assumed to always transmit.
                    468: The codes sent by the left arrow, right arrow, up arrow, down arrow,
                    469: and home keys can be given as \fBkl, kr, ku, kd, \fRand\fB kh\fR respectively.
                    470: If there are function keys such as f0, f1, ..., f9, the codes they send
                    471: can be given as \fBk0, k1, ..., k9\fR.
                    472: If these keys have labels other than the default f0 through f9, the labels
                    473: can be given as \fBl0, l1, ..., l9\fR.
                    474: If there are other keys that transmit the same code as the terminal expects
                    475: for the corresponding function, such as clear screen, the \fItermcap\fP
                    476: 2 letter codes can be given in the \fBko\fR capability,
                    477: for example, \*(lq:ko=cl,ll,sf,sb:\*(rq, which says that the terminal has
                    478: clear, home down, scroll down, and scroll up keys that transmit
                    479: the same thing as the cl, ll, sf, and sb entries.
                    480: .PP
                    481: The
                    482: .B ma
                    483: entry is also used to indicate arrow keys on terminals which have
                    484: single character arrow keys.  It is obsolete but still in use in
                    485: version 2 of vi, which must be run on some minicomputers due to
                    486: memory limitations.
                    487: This field is redundant with
                    488: .BR "kl, kr, ku, kd, " and " kh" .
                    489: It consists of groups of two characters.
                    490: In each group, the first character is what an arrow key sends, the
                    491: second character is the corresponding vi command.
                    492: These commands are
                    493: .B h
                    494: for
                    495: .BR kl ,
                    496: .B j
                    497: for
                    498: .BR kd ,
                    499: .B k
                    500: for
                    501: .BR ku ,
                    502: .B l
                    503: for
                    504: .BR kr ,
                    505: and
                    506: .B H
                    507: for
                    508: .BR kh .
                    509: For example, the mime would be
                    510: .B ":ma=^Kj^Zk^Xl:"
                    511: indicating arrow keys left (^H), down (^K), up (^Z), and right (^X).
                    512: (There is no home key on the mime.)
                    513: .PP
                    514: .B Miscellaneous
                    515: .PP
                    516: If the terminal requires other than a null (zero) character as a pad,
                    517: then this can be given as \fBpc\fR.
                    518: .PP
                    519: If tabs on the terminal require padding, or if the terminal uses a
                    520: character other than \fB^I\fR to tab, then this can be given as \fBta\fR.
                    521: .PP
                    522: Hazeltine terminals, which don't allow `~' characters to be printed should
                    523: indicate \fBhz\fR.
                    524: Datamedia terminals, which echo carriage-return linefeed for carriage return
                    525: and then ignore a following linefeed should indicate \fBnc\fR.
                    526: Early Concept terminals, which ignore a linefeed immediately after an \fBam\fR
                    527: wrap, should indicate \fBxn\fR.
                    528: If an erase-eol is required to get rid of standout
                    529: (instead of merely writing on top of it),
                    530: \fBxs\fP should be given.
                    531: Teleray terminals, where tabs turn all characters moved over to blanks,
                    532: should indicate \fBxt\fR.
                    533: Other specific terminal problems may be corrected by adding more
                    534: capabilities of the form \fBx\fIx\fR.
                    535: .PP
                    536: Other capabilities
                    537: include \fBis\fR, an initialization string for the terminal,
                    538: and \fBif\fR, the name of a file containing long initialization strings.
                    539: These strings are expected to properly clear and then set the tabs
                    540: on the terminal, if the terminal has settable tabs.
                    541: If both are given, \fBis\fR will be printed before \fBif\fR.
                    542: This is useful where \fBif\fR is
                    543: .I /usr/lib/tabset/std
                    544: but \fBis\fR
                    545: clears the tabs first.
                    546: .PP
                    547: .B Similar Terminals
                    548: .PP
                    549: If there are two very similar terminals,
                    550: one can be defined as being just like the other with certain exceptions.
                    551: The string capability \fBtc\fR can be given
                    552: with the name of the similar terminal.
                    553: This capability must be \fIlast\fP and the combined length of the two entries
                    554: must not exceed 1024. Since
                    555: .I termlib
                    556: routines search the entry from left to right, and since the tc capability is
                    557: replaced by the corresponding entry, the capabilities given at the left
                    558: override the ones in the similar terminal.
                    559: A capability can be canceled with \fBxx@\fR where xx is the capability.
                    560: For example, the entry
                    561: .PP
                    562:        hn\||\|2621nl:ks@:ke@:tc=2621:
                    563: .PP
                    564: defines a 2621nl that does not have the \fBks\fR or \fBke\fR capabilities,
                    565: and hence does not turn on the function key labels when in visual mode.
                    566: This is useful for different modes for a terminal, or for different
                    567: user preferences.
                    568: .SH FILES
                    569: .DT
                    570: /etc/termcap   file containing terminal descriptions
                    571: .SH SEE ALSO
                    572: ex(1), curses(3X), termcap(3X), tset(1), vi(1), ul(1), more(1)
                    573: .SH AUTHOR
                    574: William Joy
                    575: .br
                    576: Mark Horton added underlining and keypad support
                    577: .SH BUGS
                    578: .I Ex
                    579: allows only 256 characters for string capabilities, and the routines
                    580: in 
                    581: .IR termcap (3X)
                    582: do not check for overflow of this buffer.
                    583: The total length of a single entry (excluding only escaped newlines)
                    584: may not exceed 1024.
                    585: .PP
                    586: The
                    587: .BR ma ,
                    588: .BR vs ,
                    589: and
                    590: .B ve
                    591: entries are specific to the
                    592: .I vi
                    593: program.
                    594: .PP
                    595: Not all programs support all entries.
                    596: There are entries that are not supported by any program.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.