ИМЯ
termcap − база данных возможностей терминалов
ОПИСАНИЕ
База termcap является устаревшим способом для описания возможностей символьных терминалов и принтеров. Она оставлена только для совместимости со старыми программами; новые должны использовать базу данных terminfo(5) и соответствующие библиотеки.
/etc/termcap является ASCII файлом, в котором перечисляются возможности множества терминалов разных типов. Программы могут читать termcap, чтобы найти отдельные ESC коды, необходимые для управления визуальными атрибутами, которые использует терминал. (Другие аспекты управления терминалом обрабатываются stty.) База termcap индексируется по переменной окружения TERM.
Записи termcap должны быть заданы в одной логической строке, где ’\’ используется для подавления новой строки. Поля разделяются символом ’:’. Первое поле каждой записи начинается с крайней левой позиции и содержит список имён конкретного терминала, разделяемых символом ’|’.
Первое подполе может (в записях BSD termcap до версии 4.3) содержать короткое имя, состоящее из двух символов. Это короткое имя может содержать денежный символ или маленькие буквы. В записях termcap 4.4BSD это поле опускается.
Во втором подполе (первое, в новом формате 4.4BSD) содержится имя, используемое в переменной окружения TERM. Оно должно быть в нижнем регистре. Выборочные возможности аппаратного обеспечения должны быть отмечены через добавление дефиса и суффикса к их имени. Пример смотри ниже. Обычно суффиксами являются w (ширина больше, чем 80 символов), am (автоматические границы), nam (нет автоматических границ) и rv (дисплей с возможностью реверса изображения). Третье подполе содержит длинное описательное имя для данной записи termcap.
Прочие поля содержат возможности терминала; любые продолженные строки с возможностями должны начинаться с одной табуляции слева.
Несмотря на то, что строгого порядка не существует, рекомендуется первыми устанавливать логические, затем цифровые и затем строковые значения возможностей, каждые из которых сортируются в алфавитном порядке без учёта заглавных и строчных букв. Возможности схожих функций могут быть записаны в одной строке.
Например:
Первая
строка: vt|vt101|DEC VT
101 terminal in 80 character mode:\
Первая
строка: Vt|vt101-w|DEC
VT 101 terminal in (wide) 132 character mode:\
Логическое
значение:
:bs:\
Цифровое
значение:
:co#80:\
Строковое
значение:
: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 nulls, 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 cusor 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
Indert %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 scolling 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 scolling 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 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 file name
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 unvisible
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 Перевод
строки (10)
r Возврат
каретки (13)
t
Табуляция
(9)
b Backspace (8)
f Перевод
формы (12)
0 символ Null.
Комбинация
\xxx задаёт
восьмиричный
символ xxx.
i
Увеличивает параметр на единицу
r
Возможность одиночного параметра
+
Добавить значение следующего символа к данному параметру и выполнить вывод получившегося бинарного кода
2
Выполнить ASCII вывод данного параметра с полем в 2
d
Выполнить ASCII вывод данного параметра с полем в 3
%
Вывести ’%’
Если
вы
используете
вывод
бинарного
кода, то вы
должны
опустить
символ null,
потому
что он
завершает
строку. Вы
должны
сбросить
расширение
табуляции,
если
табуляция
может
быть
осуществлена
через
вывод
бинарного
кода.
Внимание:
Данные выше метасимволы, используемые в параметрах, могут быть ошибочны, они документированы в Minix termcap, который может быть несовместим с Linux termcap.
Блок графических символов может быть задан через три строковые значения:
as
запускает альтернативный набор символов
ae
закрывает его
ac
пары символов. Первый символ является именем блока графического символа, а второй является символом его описания.
Доступны следующие имена:
+ right arrow (>)
,
left arrow (<)
.
down arrow (v)
0
full square (#)
I
latern (#)
-
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, если эти возможности отсутствуют.
СМОТРИ ТАКЖЕ
termcap(3), curses(3), terminfo(5)
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone [AT] perm.ru> 2004