1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
|
.\" Copyright (c) 1993 Michael Haardt (michael@moria.de),
.\" Fri Apr 2 11:32:09 MET DST 1993
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified formatting Sat Jul 24 17:13:38 1993, Rik Faith (faith@cs.unc.edu)
.\" Modified (extensions and corrections)
.\" Sun May 1 14:21:25 MET DST 1994 Michael Haardt
.\" If mistakes in the capabilities are found, please send a bug report to:
.\" michael@moria.de
.\" Modified Mon Oct 21 17:47:19 EDT 1996 by Eric S. Raymond (esr@thyrsus.com)
.TH termcap 5 2023-03-08 "Linux man-pages 6.05.01"
.SH NAME
termcap \- terminal capability database
.SH DESCRIPTION
The termcap database is an obsolete facility for describing the
capabilities of character-cell terminals and printers.
It is retained only for compatibility with old programs;
new programs should use the
.BR terminfo (5)
database and associated libraries.
.PP
.I /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
.BR stty (1).)
The termcap database is indexed on the
.B TERM
environment variable.
.PP
Termcap entries must be defined on a single logical line, with \[aq]\e\[aq]
used to suppress the newline.
Fields are separated by \[aq]:\[aq].
The first field of each entry starts at the left-hand margin,
and contains a list of names for the terminal, separated by \[aq]|\[aq].
.PP
The first subfield may (in BSD termcap entries from 4.3BSD and
earlier) 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.
.PP
The second subfield (first, in the newer 4.4BSD format) contains the
name used by the environment variable
.BR 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.
.PP
Subsequent fields contain the terminal capabilities; any continued
capability lines must be indented one tab from the left margin.
.PP
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.
.PP
Example for:
.nf
.PP
Head line: vt|vt101|DEC VT 101 terminal in 80 character mode:\e
Head line: Vt|vt101-w|DEC VT 101 terminal in (wide) 132 character mode:\e
Boolean: :bs:\e
Numeric: :co#80:\e
String: :sr=\eE[H:\e
.fi
.SS Boolean capabilities
.nf
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 \fB\[ha]C\fP
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
.fi
.SS Numeric capabilities
.nf
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
.fi
.SS String capabilities
.nf
!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 \fB\[ha]H\fP
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 \fB\[ha]S\fP
.fi
.PP
There are several ways of defining the control codes for string capabilities:
.PP
Every normal character represents itself,
except \[aq]\[ha]\[aq], \[aq]\e\[aq], and \[aq]%\[aq].
.PP
A \fB\[ha]x\fP means Control-x.
Control-A equals 1 decimal.
.PP
\ex means a special code.
x can be one of the following characters:
.RS
E Escape (27)
.br
n Linefeed (10)
.br
r Carriage return (13)
.br
t Tabulation (9)
.br
b Backspace (8)
.br
f Form feed (12)
.br
0 Null character.
A \exxx specifies the octal character xxx.
.RE
.TP
i
Increments parameters by one.
.TP
r
Single parameter capability
.TP
+
Add value of next character to this parameter and do binary output
.TP
2
Do ASCII output of this parameter with a field with of 2
.TP
d
Do ASCII output of this parameter with a field with of 3
.TP
%
Print a \[aq]%\[aq]
.PP
If you use binary output,
then you should avoid the null character (\[aq]\e0\[aq])
because it terminates the string.
You should reset tabulator expansion
if a tabulator can be the binary output of a parameter.
.TP
Warning:
The above metacharacters for parameters may be wrong: they document Minix
termcap which may not be compatible with Linux termcap.
.PP
The block graphic characters can be specified by three string capabilities:
.TP
as
start the alternative charset
.TP
ae
end the alternative charset
.TP
ac
pairs of characters.
The first character is the name of the block graphic
symbol and the second characters is its definition.
.PP
The following names are available:
.PP
.nf
+ right arrow (>)
, left arrow (<)
\&. down arrow (v)
0 full square (#)
I lantern (#)
- upper arrow (\[ha])
\&' 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 (|)
\[ti] paragraph (???)
.fi
.PP
The values in parentheses are suggested defaults which are used by the
.I curses
library, if the capabilities are missing.
.SH SEE ALSO
.BR ncurses (3),
.BR termcap (3),
.BR terminfo (5)
|