termcap - terminal capability database


The termcap database is an obsolete facility for describing the capabilities of character-cell terminals and printers. It is retained only for capability with old programs; new ones should use the terminfo(5) database and associated libraries.

/etc/termcap is an ASCII file (the database master) that lists the capabilities of many different types of terminals. Programs can read termcap to find the particular escape codes needed to control the visual attributes of the terminal actually in use. (Other aspects of the terminal are handled by stty(1).) The termcap database is indexed on the TERM environment variable.

Termcap entries must be defined on a single logical line, with '#39; used to suppress the newline. Fields are separated by ':'. The first field of each entry starts at the left-hand margin, and contains a list of names for the terminal, separated by '|'.

The first subfield may (in BSD termcap entries from versions 4.3 and prior) contain a short name consisting of two characters. This short name may consist of capital or small letters. In 4.4BSD termcap entries this field is omitted.

The second subfield (first, in the newer 4.4BSD format) contains the name used by the environment variable TERM. It should be spelled in lowercase letters. Selectable hardware capabilities should be marked by appending a hyphen and a suffix to this name. See below for an example. Usual suffixes are w (more than 80 characters wide), am (automatic margins), nam (no automatic margins), and rv (reverse video display). The third subfield contains a long and descriptive name for this termcap entry.

Subsequent fields contain the terminal capabilities; any continued capability lines must be indented one tab from the left margin.

Although there is no defined order, it is suggested to write first boolean, then numeric, and then string capabilities, each sorted alphabetically without looking at lower or upper spelling. Capabilities of similar functions can be written in one line.

Example for:

Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\ Head line: Vt|vt101-w|DEC VT 101 terminal in (wide) 132 character mode:\ Boolean: :bs:\ Numeric: :co#80:\ String: :sr=\E[H:\

Boolean Capabilities

5i      Printer will not echo on screen am      Automatic margins which means automatic line wrap bs      Control-H (8 dec.) performs a backspace bw      Backspace on left margin wraps to previous line and right margin da      Display retained above screen db      Display retained below screen eo      A space erases all characters at cursor position es      Escape sequences and special characters work in status line gn      Generic device hc      This is a hardcopy terminal HC      The cursor is hard to see when not on bottom line hs      Has a status line hz      Hazeltine bug, the terminal can not print tilde characters in      Terminal inserts null bytes, not spaces, to fill whitespace km      Terminal has a meta key mi      Cursor movement works in insert mode ms      Cursor movement works in standout/underline mode NP      No pad character NR      ti does not reverse te nx      No padding, must use XON/XOFF os      Terminal can overstrike ul      Terminal underlines although it can not overstrike xb      Beehive glitch, f1 sends ESCAPE, f2 sends ^C xn      Newline/wraparound glitch xo      Terminal uses xon/xoff protocol xs      Text typed over standout text will be displayed in standout xt      Teleray glitch, destructive tabs and odd standout mode

Numeric Capabilities

co      Number of columns dB      Delay in milliseconds for backspace on hardcopy terminals dC      Delay in milliseconds for carriage return on hardcopy terminals dF      Delay in milliseconds for form feed on hardcopy terminals dN      Delay in milliseconds for new line on hardcopy terminals dT      Delay in milliseconds for tabulator stop on hardcopy terminals dV      Delay in milliseconds for vertical tabulator stop on         hardcopy terminals it      Difference between tab positions lh      Height of soft labels lm      Lines of memory lw      Width of soft labels li      Number of lines Nl      Number of soft labels pb      Lowest baud rate which needs padding sg      Standout glitch ug      Underline glitch vt      virtual terminal number ws      Width of status line if different from screen width

String Capabilities

!1      shifted save key !2      shifted suspend key !3      shifted undo key #1      shifted help key #2      shifted home key #3      shifted input key #4      shifted cursor left key %0      redo key %1      help key %2      mark key %3      message key %4      move key %5      next-object key %6      open key %7      options key %8      previous-object key %9      print key %a      shifted message key %b      shifted move key %c      shifted next key %d      shifted options key %e      shifted previous key %f      shifted print key %g      shifted redo key %h      shifted replace key %i      shifted cursor right key %j      shifted resume key &0      shifted cancel key &1      reference key &2      refresh key &3      replace key &4      restart key &5      resume key &6      save key &7      suspend key &8      undo key &9      shifted begin key *0      shifted find key *1      shifted command key *2      shifted copy key *3      shifted create key *4      shifted delete character *5      shifted delete line *6      select key *7      shifted end key *8      shifted clear line key *9      shifted exit key @0      find key @1      begin key @2      cancel key @3      close key @4      command key @5      copy key @6      create key @7      end key @8      enter/send key @9      exit key al      Insert one line AL      Insert %1 lines ac      Pairs of block graphic characters to map alternate character set ae      End alternative character set as      Start alternative character set for block graphic characters bc      Backspace, if not ^H bl      Audio bell bt      Move to previous tab stop cb      Clear from beginning of line to cursor cc      Dummy command character cd      Clear to end of screen ce      Clear to end of line ch      Move cursor horizontally only to column %1 cl      Clear screen and cursor home cm      Cursor move to row %1 and column %2 (on screen) CM      Move cursor to row %1 and column %2 (in memory) cr      Carriage return cs      Scroll region from line %1 to %2 ct      Clear tabs cv      Move cursor vertically only to line %1 dc      Delete one character DC      Delete %1 characters dl      Delete one line DL      Delete %1 lines dm      Begin delete mode do      Cursor down one line DO      Cursor down #1 lines ds      Disable status line eA      Enable alternate character set ec      Erase %1 characters starting at cursor ed      End delete mode ei      End insert mode ff      Formfeed character on hardcopy terminals fs      Return character to its position before going to status line F1      The string sent by function key f11 F2      The string sent by function key f12 F3      The string sent by function key f13 ...     ... F9      The string sent by function key f19 FA      The string sent by function key f20 FB      The string sent by function key f21 ...     ... FZ      The string sent by function key f45 Fa      The string sent by function key f46 Fb      The string sent by function key f47 ...     ... Fr      The string sent by function key f63 hd      Move cursor a half line down ho      Cursor home hu      Move cursor a half line up i1      Initialization string 1 at login i3      Initialization string 3 at login is      Initialization string 2 at login ic      Insert one character IC      Insert %1 characters if      Initialization file im      Begin insert mode ip      Insert pad time and needed special characters after insert iP      Initialization program K1      upper left key on keypad K2      center key on keypad K3      upper right key on keypad K4      bottom left key on keypad K5      bottom right key on keypad k0      Function key 0 k1      Function key 1 k2      Function key 2 k3      Function key 3 k4      Function key 4 k5      Function key 5 k6      Function key 6 k7      Function key 7 k8      Function key 8 k9      Function key 9 k;      Function key 10 ka      Clear all tabs key kA      Insert line key kb      Backspace key kB      Back tab stop kC      Clear screen key kd      Cursor down key kD      Key for delete character under cursor ke      turn keypad off kE      Key for clear to end of line kF      Key for scrolling forward/down kh      Cursor home key kH      Cursor hown down key kI      Insert character/Insert mode key kl      Cursor left key kL      Key for delete line kM      Key for exit insert mode kN      Key for next page kP      Key for previous page kr      Cursor right key kR      Key for scrolling backward/up ks      Turn keypad on kS      Clear to end of screen key kt      Clear this tab key kT      Set tab here key ku      Cursor up key l0      Label of zeroth function key, if not f0 l1      Label of first function key, if not f1 l2      Label of first function key, if not f2 ...     ... la      Label of tenth function key, if not f10 le      Cursor left one character ll      Move cursor to lower left corner LE      Cursor left %1 characters LF      Turn soft labels off LO      Turn soft labels on mb      Start blinking MC      Clear soft margins md      Start bold mode me      End all mode like so, us, mb, md and mr mh      Start half bright mode mk      Dark mode (Characters invisible) ML      Set left soft margin mm      Put terminal in meta mode mo      Put terminal out of meta mode mp      Turn on protected attribute mr      Start reverse mode MR      Set right soft margin nd      Cursor right one character nw      Carriage return command pc      Padding character pf      Turn printer off pk      Program key %1 to send string %2 as if typed by user pl      Program key %1 to execute string %2 in local mode pn      Program soft label %1 to show string %2 po      Turn the printer on pO      Turn the printer on for %1 (<256) bytes ps      Print screen contents on printer px      Program key %1 to send string %2 to computer r1      Reset string 1 to set terminal to sane modes r2      Reset string 2 to set terminal to sane modes r3      Reset string 3 to set terminal to sane modes RA      disable automatic margins rc      Restore saved cursor position rf      Reset string filename RF      Request for input from terminal RI      Cursor right %1 characters rp      Repeat character %1 for %2 times rP      Padding after character sent in replace mode rs      Reset string RX      Turn off XON/XOFF flow control sa      Set %1 %2 %3 %4 %5 %6 %7 %8 %9 attributes SA      enable automatic margins sc      Save cursor position se      End standout mode sf      Normal scroll one line SF      Normal scroll %1 lines so      Start standout mode sr      Reverse scroll SR      scroll back %1 lines st      Set tabulator stop in all rows at current column SX      Turn on XON/XOFF flow control ta      move to next hardware tab tc      Read in terminal description from another entry te      End program that uses cursor motion ti      Begin program that uses cursor motion ts      Move cursor to column %1 of status line uc      Underline character under cursor and move cursor right ue      End underlining up      Cursor up one line UP      Cursor up %1 lines us      Start underlining vb      Visible bell ve      Normal cursor visible vi      Cursor invisible vs      Standout cursor wi      Set window from line %1 to %2 and column %3 to %4 XF      XOFF character if not ^S

There are several ways of defining the control codes for string capabilities:

Every normal character represents itself, except '^', '\', and '%'.

A ^x means Control-x. Control-A equals 1 decimal.

\x means a special code. x can be one of the following characters:

E Escape (27) n Linefeed (10) r Carriage return (13) t Tabulation (9) b Backspace (8) f Form feed (12) 0 Null character. A \xxx specifies the octal character xxx.

i Increments parameters by one.
r Single parameter capability
+ Add value of next character to this parameter and do binary output
2 Do ASCII output of this parameter with a field with of 2
d Do ASCII output of this parameter with a field with of 3
% Print a '%'
If you use binary output, then you should avoid the null character because it terminates the string. You should reset tabulator expansion if a tabulator can be the binary output of a parameter.
Warning: The above metacharacters for parameters may be wrong, they document Minix termcap which may not be compatible with Linux termcap.
The block graphic characters can be specified by three string capabilities:
as start the alternative charset
ae end it
ac pairs of characters. The first character is the name of the block graphic symbol and the second characters is its definition.
The following names are available:

+       right arrow (>) ,       left arrow (<) .       down arrow (v) 0       full square (#) I       lantern (#) -       upper arrow (^) ’       rhombus (+) a       chess board (:) f       degree (’) g       plus-minus (#) h       square (#) j       right bottom corner (+) k       right upper corner (+) l       left upper corner (+) m       left bottom corner (+) n       cross (+) o       upper horizontal line (-) q       middle horizontal line (-) s       bottom horizontal line (_) t       left tee (+) u       right tee (+) v       bottom tee (+) w       normal tee (+) x       vertical line (|) ~       paragraph (???)

The values in parentheses are suggested defaults which are used by curses, if the capabilities are missing.


ncurses(3), termcap(3), terminfo(5)


This page is part of release 3.23 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at

openSUSE Logo