TERM(4) TERM(4)
НАЗВАНИЕ
term - формат скомпилированного файла описаний термина-
лов
СИНТАКСИС
/usr/lib/terminfo/?/*
ОПИСАНИЕ
Скомпилированные terminfo(4) описания помещаются в ка-
талог /usr/lib/terminfo. Чтобы предотвратить последова-
тельный поиск в огромном каталоге, используется двуху-
ровневая схема: /usr/lib/terminfo/с/имя, где имя - это
имя терминала, а с - первый символ имени. Так, скомпи-
лированное описание терминала att4425 находится в файле
/usr/lib/terminfo/a/att4425. Синонимы реализуются с по-
мощью ссылок на один и тот же скомпилированный файл.
Формат скомпилированных файлов выбран так, чтобы он не
зависел от оборудования. Считается, что байт содержит 8
бит, но не делается никаких предположений о порядке
байт или размножении знака. Таким образом, двоичные
файлы terminfo(4) могут быть перенесены на любое обору-
дование, в котором байт содержит 8 бит.
Короткие целые числа записываются в двух восьмибитных
байтах. Первый байт содержит наименее значимые 8 бит
значения, второй содержит наиболее значимые 8 бит (то
есть значение равно 256*второй_байт+первый_байт). Зна-
чение -1 представляется в виде 0377,0377, значение -2 -
в виде 0376,0377, остальные отрицательные числа недо-
пустимы. На компьютерах, на которых эти соглашения не
соответствуют оборудованию, необходимо читать целые
числа как 2 байта, а затем вычислять значение, обеспе-
чивая таким образом переносимость скомпилированных фай-
лов на разные типы компьютеров. Значение, равное -1,
обычно означает, что указанная характеристика у терми-
нала отсутствует. Значение, равное -2, означает, что
характеристика отменена в исходном описании terminfo(4)
и считается отсутствующей.
Скомпилированный файл создается из исходных файлов опи-
саний терминалов [см опцию -I в infocmp(1M)] с помощью
компилятора tic(1M). Чтение этого файла производится с
помощью процедуры setupterm [см. curses(3X)].
Скомпилированный файл делится на 6 секций: заголовок,
имена терминалов, флаги, числа, цепочки символов, таб-
лица цепочек.
Секция заголовок находится в начале файла. В этой сек-
ции содержатся 6 коротких целых чисел:
1. Магическое число (восьмеричное 0432).
2. Размер (в байтах) секции имен.
3. Размер (в байтах) секции флагов.
4. Количество коротких целых в секции чисел.
5. Количество коротких целых (смещений) в секции це-
почек символов.
6. Размер (в байтах) таблицы цепочек.
Следующей идет секция имен терминалов. В ней содержится
первая строка из описания terminfo(4), в которой пере-
числяются различные имена данного терминала, разделен-
ные символами | [см. term(5)]. Эта секция завершается
нулевым байтом.
В секции флагов под каждый флаг отводится один байт.
Этот байт равен 0 или 1, в зависимости от того, при-
сутствует соответствующая характеристика или отсутству-
ет. Значение 2 означает, что соответствующая характе-
ристика отменена. Характеристики перечисляются в том же
порядке, что и во включаемом файле .
Между секцией флагов и секцией чисел при необходимости
вставляется нулевой байт, обеспечивающий выравнивание
начала секции чисел по границе полуслова. Все короткие
целые выравниваются по границе полуслова.
Секция чисел похожа на секцию флагов. Описание каждой
характеристики занимает 2 байта и представляется корот-
ким целым числом. Значения -1 и -2 означают, что харак-
теристика отсутствует.
Секция цепочек устроена аналогично. Описание каждой ха-
рактеристики занимает 2 байта и представляется коротким
целым числом. Значения -1 и -2 означают, что характе-
ристика отсутствует. В противном случае значение предс-
тавляет собой смещение цепочки от начала таблицы цепо-
чек. Специальные символы типа ^X или \c записываются во
внутреннем виде, а не в виде пары печатных символов.
Информация о заполнителях ($) и о параметрах (%x)
записывается в текстовом виде, без интерпретации.
Последней секцией является таблица цепочек. Она содер-
жит все цепочки символов, на которые есть ссылки из
секции цепочек. Каждая цепочка завершается нулевым бай-
том.
Отметим, что процедура setupterm может быть рассчитана
на другой набор характеристик, чем тот, который реально
присутствует в файле. База данных может измениться пос-
ле компиляции setupterm, из-за чего в ней могут поя-
виться нераспознаваемые характеристики или наоборот,
setupterm может распознавать больше характеристик, чем
реально описано в базе данных. Для того, чтобы
setupterm могла работать во всех случаях, в заголовок
включены размеры других секций. Новые характеристики
должны добавляться после уже существующих.
В качестве примера ниже приводится восьмеричный дамп
описания терминала Data General Dasher D200:
d200|d100|data general dasher 200,
am, bw,
cols#80, lines#24,
bel=^G, clear=\f, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X,
cup=^P%p2%c%p1%c, cuu1=^W, el=^K, home=\b, ind=\n,
kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z,
kf1=^^q, kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v,
kf7=^^w, kf8=^^x, kf9=^^y, khome=\b, lf0=f10, nel=\n,
rmso=^^E, rmul=^U, smso=^^D, smul=^T,
0000 032 001 " \0 033 \0 \r \0 ) 001 z \0 d 2 0 0
0020 | d 1 0 0 | d a t a g e n e r
0040 a l d a s h e r 2 0 0 \0 001 001
0060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0100 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 P \0 377 377 030 \0
0120 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
0140 377 377 377 377 377 377 " \0 & \0 377 377 377 377 $ \0
0160 < \0 377 377 377 377 377 377 . \0 * \0 > \0 377 377
0200 ( \0 377 377 377 377 , \0 377 377 : \0 377 377 377 377
0220 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
0240 377 377 377 377 377 377 377 377 377 377 u \0 x \0 377 377
0260 377 377 377 377 377 377 377 377 377 377 p \0 s \0 377 377
0300 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
0320 377 377 377 377 377 377 377 377 377 377 377 377 377 377 D \0
0340 377 377 377 377 377 377 J \0 M \0 377 377 P \0 S \0
0360 V \0 Y \0 \ \0 _ \0 b \0 e \0 h \0 377 377
0400 377 377 B \0 377 377 377 377 377 377 F \0 377 377 377 377
0420 377 377 H \0 377 377 377 377 j \0 377 377 377 377 377 377
0440 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
0460 377 377 n \0 377 377 377 377 377 377 377 377 377 377 377 377
0500 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
*
0540 377 377 377 377 377 377 @ \0 377 377 377 377 377 377 377 377
0560 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377 377
*
1260 377 377 377 377 377 377 d 2 0 0 | d 1 0 0 |
1300 d a t a g e n e r a l d a s
1320 h e r 2 0 0 \0 007 \0 \f \0 \r \0 031 \0
1340 032 \0 030 \0 020 % p 2 % c % p 1 % c \0
1360 027 \0 013 \0 \b \0 \n \0 031 \0 032 \0 030 \0 027 \0
1400 036 z \0 036 q \0 036 r \0 036 s \0 036 t \0 036
1420 u \0 036 v \0 036 w \0 036 x \0 036 y \0 \b \0
1440 f 1 0 \0 \n \0 036 E \0 025 \0 036 D \0 024 \0
1460
ФАЙЛЫ
/usr/lib/terminfo/?/* Скомпилированная база данных опи-
саний терминалов.
/usr/unclude/term.h Включаемый файл описаний для
terminfo(4).
СМ. ТАКЖЕ
curses(3X), terminfo(4), term(5).
infocmp(1M) в Справочнике администратора.
ОГРАНИЧЕНИЯ
Общий размер скомпилированного описания каждого терми-
нала не должен превышать 4096 байт; размер секции имен
терминалов не должен превышать 128 байт.
TERM(5) TERM(5)
НАЗВАНИЕ
term - соглашения об именах терминалов
ОПИСАНИЕ
Имена из этого файла используются некоторыми командами
[например, man(1), tabs(1), tput(1), vi(1), curses(3X)]
и рассматриваются, в качестве значения переменной
$TERM, как часть окружения shell'а [см. sh(1),
profile(4), environ(5)].
Исходные файлы terminfo(4) содержат элементы, состоящие
из полей, разделенных запятыми. [Чтобы получить исход-
ное описание терминала, используйте опцию -I в
infocmp(1M).] Пробелы и табуляции после запятых игнори-
руются. В первой строке каждого описания терминала в
базе данных terminfo(4) задаются имена, по которым
terminfo(4) распознает терминал. Имена разделяются сим-
волами |. Первое имя задает наиболее часто используемое
сокращение для терминала [это имя и нужно использовать
как значение переменной TERM в $HOME/.profile, см.
profile(4)], последнее имя - длинное, полностью опреде-
ляющее терминал, все остальные имена являются синонима-
ми первого.
Имена терминалов (кроме последнего) должны выбираться в
соответствии со следующими соглашениями. Необходимо
выбрать некоторое базовое имя, определяющее терминаль-
ное оборудование, например, для терминала AT&T 4425 та-
ким именем может быть att4425. Длина базового имени не
более восьми символов, в него могут входить малые ла-
тинские буквы и цифры. При выборе имени терминала целе-
сообразно опираться на название фирмы-производителя, а
не поставщика. Терминалы одного и того же производителя
не должны иметь различных базовых имен. Модели одного и
того же терминала, различные режимы, в которых может
функционировать оборудование, или режимы, которые пред-
почитают пользователи, обозначаются суффиксами, начина-
ющимися с символа -. Так, терминал AT&T 4425 в режиме
132 колонок обозначится как att4425-w. Рекомендуется
использовать следующие суффиксы:
Суффикс Значение Примеры
-w Расширенный режим (более 80 колонок) att4425-w
-am С автоматическими границами (этот vt100-am
суффикс обычно используется по умолчанию)
-nam Без автоматических границ vt100-nam
-число Количество строк на экране aaa-60
-na Нет клавиш управления курсором c100-na
-числоp Количество страниц памяти c100-4p
-rv Инвертированное изображение att4415-rv
Чтобы предотвратить конфликты имен при описании различ-
ных режимов (например, -w), не рекомендуется в базовых
именах использовать дефис. Очень хорошо, если все имена
терминалов, которые занесены в базу данных terminfo(4),
являются уникальными. Описатели терминалов, которые ис-
пользуются только для включения в другие описатели с
помощью use=, должны содержать в своем имени +, напри-
мер 4415+nl.
Ниже перечислены некоторые имена терминалов; полный
список можно получить с помощью команды
ls -C /usr/lib/terminfo/?
1520 Datamedia 1520
155 Motorola EXORterm 155
1620 Diablo 1620 и другие, использующие принтер
HyType II
1620-12 То же, в режиме 12 точек
165 Motorola EXORset 165
2621 Серия Hewlett-Packard HP2621
2631 Принтер Hewlett-Packard 2631
2631-c Принтер Hewlett-Packard 2631 - уплотненный
режим
2631-e Принтер Hewlett-Packard 2631 - расширенный
режим
2640,hp2640 Серия Hewlett-Packard HP2640
2645,hp2645 Серия Hewlett-Packard HP264n (но не 2640)
3270 Модель IBM 3270
300 DASI/DTC/GSI 300 и другие, использующие
принтер HyType I
300-12 То же, в режиме 12 точек
300s DASI/DTC/GSI 300s
382 DTC 382
300s-12 То же, в режиме 12 точек
3045 Datamedia 3045
33,tty33 AT&T-терминал, модель 33 KSR
35,tty35 AT&T-терминал, модель 35 KSR
37,tty37 AT&T-терминал, модель 37 KSR
40-2 AT&T-терминал, модель 40/2
40-4 AT&T-терминал, модель 40/4
4540 AT&T-терминал, модель 4540
4000a Trendata 4000a
4014 Tektronix 4014
43 Модель 43 KSR
450 DASI 450 (то же, что и Diablo 1620)
450-12 То же, в режиме 12 точек
735 Texas Instruments TI735 and TI725
745 Texas Instruments TI745
dumb Общее имя для терминалов, которые отверга-
ют обратный прогон бумаги и другие специ-
альные управляющие последовательности
sync Общее имя для синхронных терминалов, сов-
местимых с TELETYPE 4540
hp Hewlett-Packard (то же, что и 2645)
lp Общее имя для строчных принтеров
tn1200 General Electric TermiNet 1200
tn300 General Electric TermiNet 300
tvi950 TeleVideo 950
Команды, поведение которых зависит от типа терминала,
должны обрабатывать аргументы вида -T имя_терминала;
если такого аргумента нет, команда должна получить тип
терминала из переменной окружения $TERM, в которой, в
свою очередь, должно содержаться имя_терминала.
ФАЙЛЫ
/usr/lib/terminfo/?/* Скомпилированная база данных опи-
саний терминалов.
СМ. ТАКЖЕ
curses(3X), profile(4), terminfo(4), environ(5).
sh(1), stty(1), tabs(1), tplot(1G), tput(1), vi(1) в
Справочнике пользователя.
infocmp(1M) в Справочнике администратора.
СЮРПРИЗЫ
Не все программы используют сформулированные выше сог-
лашения. Некоторые программы, использующие базу данных
описаний терминалов, проводят принцип независимости от
номенклатуры устройств непоследовательно.
|