termcap(5) File Formats Manual termcap(5)

termcap - پایگاه‌داده قابلیت‌های پایانه

پایگاه‌دادهٔ termcap یک سازوکار منسوخ‌شده برای توصیف قابلیت‌های پایانه‌های سلول نویسه‌ای و چاپگرها است. این پایگاه‌داده تنها برای سازگاری با برنامه‌های قدیمی نگه داشته شده است؛ برنامه‌های جدید باید از پایگاه‌دادهٔ terminfo(5) و کتابخانه‌های مرتبط با آن استفاده کنند.

پروندهٔ /etc/termcap یک پروندهٔ متنی ASCII (نسخهٔ اصلی پایگاه‌داده) است که قابلیت‌های انواع مختلفی از پایانه‌ها را فهرست می‌کند. برنامه‌ها می‌توانند termcap را برای یافتن کدهای گریز (escape codes) مشخصی که برای کنترل ویژگی‌های بصری پایانه‌ای که در حال استفاده است مورد نیاز است، بخوانند. (سایر جنبه‌های پایانه توسط stty(1) مدیریت می‌شود.) پایگاه‌دادهٔ termcap بر پایهٔ متغیر محیطی TERM نمایه‌گذاری می‌شود.

مدخل‌های termcap باید روی یک خط منطقی منفرد تعریف شوند، که از '\' برای جلوگیری از رفتن به خط جدید استفاده می‌شود. فیلدها با ':' از یکدیگر جدا می‌شوند. نخستین فیلد هر مدخل از حاشیهٔ سمت چپ آغاز می‌شود و شامل فهرستی از نام‌های پایانه است که با '|' از یکدیگر جدا شده‌اند.

زیرفیلد نخست ممکن است (در مدخل‌های BSD termcap مربوط به 4.3BSD و پیش از آن) حاوی نامی کوتاه متشکل از دو نویسه باشد. این نام کوتاه می‌تواند از حروف بزرگ یا کوچک تشکیل شده باشد. در مدخل‌های termcap در 4.4BSD، این فیلد حذف شده است.

زیرفیلد دوم (یا اول، در قالب جدیدتر 4.4BSD) حاوی نامی است که توسط متغیر محیطی TERM استفاده می‌شود. این نام باید با حروف کوچک نوشته شود. قابلیت‌های سخت‌افزاریِ قابل‌انتخاب باید با افزودن یک خط تیره و یک پسوند به این نام مشخص شوند. برای نمونه به بخش زیر نگاه کنید. پسوندهای معمول عبارتند از: w (عرض بیشتر از ۸۰ نویسه)، am (حاشیه‌های خودکار)، nam (بدون حاشیه‌های خودکار)، و rv (نمایش ویدئویی معکوس). زیرفیلد سوم شامل یک نام طولانی و توصیفی برای این مدخل termcap است.

فیلدهای بعدی شامل قابلیت‌های پایانه هستند؛ هر خط ادامه‌دارِ قابلیت‌ها باید به اندازهٔ یک تب از حاشیهٔ چپ تو رفتگی داشته باشد.

اگرچه ترتیب مشخصی تعریف نشده است، پیشنهاد می‌شود ابتدا قابلیت‌های بولی، سپس عددی، و پس از آن قابلیت‌های رشته‌ای نوشته شوند، که هر کدام بدون در نظر گرفتن بزرگی و کوچکی حروف، به ترتیب الفبایی مرتب شده باشند. قابلیت‌هایی با کارکرد مشابه می‌توانند در یک خط نوشته شوند.

نمونه‌ای برای:

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:\

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

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

!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

چندین روش برای تعریف کدهای کنترلی برای قابلیت‌های رشته‌ای وجود دارد:

هر نویسهٔ عادی خودش را نشان می‌دهد، به جز '^'، '\' و '%'.

یک ^x به معنای Control-x است. کلید Control-A برابر با مقدار ده‌دهی ۱ است.

عبارت \x نشان‌دهندهٔ یک کد ویژه است. x می‌تواند یکی از نویسه‌های زیر باشد:

E کلید گریز Escape (27)
n رفتن به خط بعد Linefeed (10)
r بازگشت به ابتدای خط Carriage return (13)
t نویسه تب Tabulation (9)
b پس‌بر Backspace (8)
f صفحه بعد Form feed (12)
0 نویسه تهی Null character. عبارت \xxx نویسه هشت‌هشتی xxx را مشخص می‌کند.
پارامترها را یک واحد افزایش می‌دهد.
قابلیت تک‌پارامتری
+
مقدار نویسه بعدی را به این پارامتر اضافه کرده و خروجی دودویی تولید می‌کند
2
خروجی ASCII این پارامتر را با پهنای فیلد ۲ تولید می‌کند
خروجی ASCII این پارامتر را با پهنای فیلد ۳ تولید می‌کند
%
یک '%' چاپ می‌کند

اگر از خروجی دودویی استفاده می‌کنید، باید از نویسهٔ تهی ('\0') پرهیز کنید زیرا رشته را خاتمه می‌دهد. در صورتی که یک تب بتواند خروجی دودویی یک پارامتر باشد، باید بازگشایی تب (tabulator expansion) را بازنشانی کنید.

هشدار:
ابرنویسه‌های فوق برای پارامترها ممکن است نادرست باشند: آن‌ها termcap مربوط به Minix را مستند می‌کنند که ممکن است با termcap در لینوکس سازگار نباشد.

نویسه‌های گرافیک بلوکی را می‌توان با سه قابلیت رشته‌ای مشخص کرد:

شروع مجموعه نویسه جایگزین
پایان مجموعه نویسه جایگزین
جفت‌های نویسه‌ای. نویسه نخست نام نماد گرافیک بلوکی و نویسه دوم تعریف آن است.

نام‌های زیر در دسترس هستند:

+	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 (???)

مقادیر داخل پرانتز پیش‌فرض‌های پیشنهادی هستند که در صورت ناموجود بودن قابلیت‌ها توسط کتابخانهٔ curses استفاده می‌شوند.

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

2025-09-21 Linux man-pages 6.19