ОПИСАНИЕ
База данных termcap --- это устаревший метод описания возможностей алфавитно-цифровых терминалов и принтеров. Он оставлен лишь для обеспечения совместимости со старыми программами; новые программы должны использовать базу данных terminfo(5) и соответствующие ей библиотеки./etc/termcap представляет собой ASCII-файл (исходный текст базы данных), содержащий список параметров, принадлежащих различным типам терминалов. Программы могут читать содержимое termcap для того, чтобы распознавать управляющие последовательности, необходимые для контроля за визуальными атрибутами терминала. (Другие свойства терминалов контролируются stty(1).) База данных termcap проиндексирована в соответствии с переменной окружения TERM.
Записи termcap должны быть расположены в одной логической строке, в которой '\' используется для подавления символа новой строки. Поля разделяются символом ':'. Первое поле каждой записи начинается с крайней левой колонки и содержит список названий терминала, разделенных '|'.
Первое подполе может содержать краткое название терминала, состоящее из двух символов (это касается записей termcap в BSD версии 4.3 и более ранних). Это короткое имя может состоять из прописных и строчных букв. В записях termcap BSD версии 4.4 это поле не учитывается.
Второе подполе (первое в формате BSD 4.4) содержит название терминала, используемое в переменной окружения 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 Принтер не будет повторять символ на экране am Автоматические поля, т.е. автоматический перевод строки bs Control-H (8 дес.) выполняет забой (стирание) bw При забое на левом поле выполняется переход к правому полю на предыдущую строку da Дисплей фиксируется вверху экрана db Дисплей фиксируется внизу экрана eo Пространство, стирающее все символы от позиции курсора es Спец. последовательность и специальные символы работают в строке состояния gn Обычное устройство hc Печатающий терминал HC Курсор плохо видно, когда он не на нижней строке hs Есть строка состояния hz Ошибка Hazeltine, терминал не может печатать символы тильды in Терминал вставляет байты null, а не пробелы для заполнения km У терминала есть клавиша мета mi В режиме вставки работает перемещение курсора ms В режиме выделения/подчёркивания работает перемещение курсора NP Нет символа-заполнителя NR ti не выполняет инверсию te nx Заполнения нет, нужно использовать XON/XOFF os Терминал может печатать наложением ul Терминал умеет подчёркивать, но не поддерживает наложение xb Сбой beehive, f1 посылает ESCAPE, f2 посылает ^C xn Сбой при добавлении новой строки/переноса xo Терминал использует протокол xon/xoff xs Текст, набранный поверх выделенного, будет показан выделенным xt Сбой teleray, разрушающие табуляции и странный режим выделения
Возможности с цифровыми значениями
co Количество столбцов dB Задержка в миллисекундах для забоя на печатающих терминалах dC Задержка в миллисекундах для возврата каретки на печатающих терминалах dF Задержка в миллисекундах для перевода страницы на печатающих терминалах dN Задержка в миллисекундах для новой строки на печатающих терминалах dT Задержка в миллисекундах для остановки табуляции на печатающих терминалах dV Задержка в миллисекундах для остановки вертикальной табуляции на печатающих терминалах it Промежуток между позициями табуляции lh Высота функциональных ярлыков lm Количество строк памяти lw Ширина функциональных ярлыков li Количество строк Nl Количество функциональных ярлыков pb Минимальная скорость в бодах для заполнения sg Сбой выделения ug Сбой подчёркивания vt Номер виртуального терминала ws Ширина строки состояния (если отличается от ширины экрана)
Возможности со строковыми значениями
!1 клавиша save в другом регистре !2 клавиша suspend в другом регистре !3 клавиша undo в другом регистре #1 клавиша help в другом регистре #2 клавиша home в другом регистре #3 клавиша input в другом регистре #4 клавиша cursor left в другом регистре %0 клавиша redo %1 клавиша help %2 клавиша mark %3 клавиша message %4 клавиша move %5 клавиша next-object %6 клавиша open %7 клавиша options %8 клавиша previous-object %9 клавиша print %a клавиша message в другом регистре %b клавиша move в другом регистре %c клавиша next в другом регистре %d клавиша options в другом регистре %e клавиша previous в другом регистре %f клавиша print в другом регистре %g клавиша redo в другом регистре %h клавиша replace в другом регистре %i клавиша cursor right в другом регистре %j клавиша resume в другом регистре &0 клавиша cancel в другом регистре &1 клавиша reference &2 клавиша refresh &3 клавиша replace &4 клавиша restart &5 клавиша resume &6 клавиша save &7 клавиша suspend &8 клавиша undo &9 клавиша begin в другом регистре *0 клавиша find в другом регистре *1 клавиша command в другом регистре *2 клавиша copy в другом регистре *3 клавиша create в другом регистре *4 клавиша delete в другом регистре *5 клавиша delete line в другом регистре *6 клавиша select *7 клавиша end в другом регистре *8 клавиша clear line в другом регистре *9 клавиша exit в другом регистре @0 клавиша find @1 клавиша begin @2 клавиша cancel @3 клавиша close @4 клавиша command @5 клавиша copy @6 клавиша create @7 клавиша end @8 клавиша enter/send @9 клавиша exit al Вставить одну строку AL Вставить %1 строк ac Пара блоков графических символов для отображения на альтернативный набор символов ae Конец альтернативного символьного набора as Начало альтернативного символьного набора для блока графических символов bc Backspace, если нет ^H bl Звонок bt Переместиться к предыдущей остановке табуляции cb Очистить от начала строки до курсора cc Символ пустой команды cd Очистить до конца экрана ce Очистить до конца строки ch Переместить курсор горизонтально в столбец %1 cl Очистить экран и вернуть курсор в начальную позицию cm Переместить курсор на строку %1 и столбец %2 (на экране) CM Переместить курсор на строку %1 и столбец %2 (в памяти) cr Возврат каретки cs Прокрутить область от строки %1 до %2 ct Очистить табуляции cv Переместить курсор вертикально на строку %1 dc Удалить один символ DC Удалить %1 символов dl Удалить одну строку DL Удалить %1 строк dm Начало режима удаления do Переместить курсор вниз на одну строку DO Переместить курсор вниз на #1 строк ds Выключить строку состояния eA Включить альтернативный набор символов ec Стереть %1 символов, начиная с позиции курсора ed Конец режима удаления ei Конец режима вставки ff Символ перевода страницы на печатающих терминалах fs Вернуть символ в его позицию перед переходом в строку состояния F1 Строка, посылаемая клавишей f11 F2 Строка, посылаемая клавишей f12 F3 Строка, посылаемая клавишей f13 ... ... F9 Строка, посылаемая клавишей f19 FA Строка, посылаемая клавишей f20 FB Строка, посылаемая клавишей f21 ... ... FZ Строка, посылаемая клавишей f45 Fa Строка, посылаемая клавишей f46 Fb Строка, посылаемая клавишей f47 ... ... Fr Строка, посылаемая клавишей f63 hd Переместить курсор на половину строки вниз ho Переместить курсор в начальную позицию hu Переместить курсор на половину строки вверх i1 Строка 1 инициализации при входе в систему i3 Строка 3 инициализации при входе в систему is Строка 2 инициализации при входе в систему ic Вставить один символ IC Вставить %1 символов if Файл инициализации im Начать режим вставки ip Вставить время заполнения и необходимые специальные символы после вставки iP Программа инициализации K1 Левая верхняя клавиша на доп. клавиатуре K2 Центральная клавиша на доп. клавиатуре K3 Правая верхняя клавиша на доп. клавиатуре K4 Левая нижняя клавиша на доп. клавиатуре K5 Правая нижняя клавиша на доп. клавиатуре k0 Функциональная клавиша 0 k1 Функциональная клавиша 1 k2 Функциональная клавиша 2 k3 Функциональная клавиша 3 k4 Функциональная клавиша 4 k5 Функциональная клавиша 5 k6 Функциональная клавиша 6 k7 Функциональная клавиша 7 k8 Функциональная клавиша 8 k9 Функциональная клавиша 9 k; Функциональная клавиша 10 ka Стирание всех кодов табуляции kA Клавиша вставки строки kb Клавиша забоя kB Back tab stop kC Клавиша очистки экрана kd Клавиша курсор вниз kD Клавиша удаления символа под курсором ke Выключить цифровую доп. клавиатуру kE Клавиша очистки до конца строки kF Клавиша прокрутки вперёд/вниз kh Клавиша курсора home kH Клавиша курсора hown down kI Клавиша вставки символа/режима вставки kl Клавиша курсор влево kL Клавиша удаления строки kM Клавиша выхода из режима вставки kN Клавиша следующая страница kP Клавиша предыдущая страница kr Клавиша курсор вправо kR Клавиша прокрутки назад/вверх ks Включить цифровую доп. клавиатуру kS Очистить до конца экрана kt Очистить эту клавишу табуляции kT Задать клавишу Здесь табуляция ku Клавиша курсор вверх l0 Ярлык нулевой функциональной клавиши, если нет f0 l1 Ярлык первой функциональной клавиши, если нет f1 l2 Ярлык второй функциональной клавиши, если нет f2 ... ... la Ярлык десятой функциональной клавиши, если нет f10 le Переместить курсор влево на один символ ll Переместить курсор в левый нижний угол LE Переместить курсор влево на %1 символов LF Выключить функциональные ярлыки LO Включить функциональные ярлыки mb Включить мигание MC Очистить мягкие границы md Включить режим жирности me Выкличить все режимы: so, us, mb, md и mr mh Включить режим половинной яркости mk Тёмный режим (символы невидимы) ML Задать левую мягкую границу mm Перевести терминал в мета режим mo Вывести терминал из мета режима mp Включить атрибут защиты mr Включить обратный режим MR Задать правую мягкую границу nd Переместить курсор вправо на один символ nw Команда возврата каретки pc Символ заполнения pf Выключить принтер pk Запрограммировать клавишу %1 для отправки строки %2, как если бы она была набрана пользователем pl Запрограммировать клавишу %1 для выполнения строки %2 в локальном режиме pn Запрограммировать функциональный ярлык %1 для показа строки %2 po Включить принтер pO Включить принтер в режим по %1 (<256) байт ps Напечатать содержимое экрана на принтере px Запрограммировать клавишу %1 для отправки строки %2 в компьютер r1 Строка сброса 1 для установки терминала в нормальные режимы r2 Строка сброса 2 для установки терминала в нормальные режимы r3 Строка сброса 3 для установки терминала в нормальные режимы RA Выключить автоматические границы rc Восстановить сохранённую позицию курсора rf Имя файла для строки сброса RF Запросить ввод с терминала RI Переместить курсор вправо на %1 символов rp Повторить символ %1 %2 раз rP Заполнить после отправки символа в режиме замены rs Сбросить строку RX Выключить протокол XON/XOFF для управления потоком sa Задать атрибуты %1 %2 %3 %4 %5 %6 %7 %8 %9 SA Включить автоматические границы sc Сохранить позицию курсора se Конец режима выделения sf Прокрутить на одну строку SF Прокрутить на %1 строк so Начало режима выделения sr Изменить направление прокрутки SR Прокрутить назад на %1 строк st Задать остановку табуляции в текущем столбце во всех строках SX Включить протокол XON/XOFF для управления потоком ta Переместиться на следующую аппаратную позицию табуляции tc Прочитать описание терминала из другого элемента te Конец программы для перемещения курсора ti Начало программы для перемещения курсора ts Переместить курсов в столбец %1 в строке состояния uc Подчеркнуть символ под курсором и переместить курсор вправо ue Закончить подчёркивание up Переместить курсор вверх на 1 строку UP Переместить курсор вверх на %1 строк us Начать подчёркивание vb Визуальный звонок ve Видим обычный курсор vi Курсор невидим vs Курсор выделения wi Задать окно от строки %1 до %2 и от столбца %3 до %4 XF Символ XOFF, если нет ^S
Есть несколько способов определения управляющих кодов со строковыми значениями:
Обычные символы, исключая '^', '\', и '%'.
Значение ^x означает Control-x. Control-A эквивалентно десятичной единице.
\x означает специальный код. x может быть одним из следующих символов:
-
E Escape (27)
n Перевод строки (10)
r Возврат каретки (13)
t Табуляция (9)
b Забой (8)
f Прогон страницы (12)
0 Символ Null. Комбинация \xxx задаёт восьмеричный символ xxx.
- i
- Увеличивает параметр на единицу
- r
- Возможность одиночного параметра
- +
- Добавление значения следующего символа к данному параметру и выполнение вывода получившегося двоичного кода
- 2
- Выполнение ASCII вывода данного параметра с полем 2
- d
- Выполнение ASCII вывода данного параметра с полем 3
- %
- Напечатать '%'
Если используется двоичный вывод, то нужно избегать символа null ('\0'), потому что он завершает строку. Вы должны сбросить расширение табуляции, если табуляция может быть в двоичном выводе значения параметра.
- Предупреждение:
- Приведённые ранее, используемые в параметрах метасимволы могут быть ошибочны; так они описаны в Minix termcap, который может быть несовместим с Linux termcap.
Блок графических символов может быть задан через три строковых значения:
- as
- начало альтернативного набора символов
- ae
- конец
- ac
- пара символов. Первый символ является именем блока графического символа, а второй является символом его описания.
Доступны следующие имена:
+ стрелка вправо (>) , стрелка влево (<) . стрелка вниз (v) 0 закрашенный квадрат (#) I фонарик (#) - стрелка вверх (^) ' ромб (+) a шашечки (:) f градус (') g плюс-минус (#) h квадрат (#) j правый нижний уголок (+) k правый верхний уголок (+) l левый верхний уголок (+) m левый нижний уголок (+) n крест (+) o верхняя горизонтальная линия (-) q средняя горизонтальная линия (-) s нижняя горизонтальная линия (_) t Т-образный символ с чертой слева (+) u Т-образный символ с чертой справа (+) v Т-образный символ с чертой снизу (+) w Т-образный символ (+) x вертикальная линия (|) ~ параграф (???)
Значения в круглых скобках являются предлагаемыми значениями по умолчанию, которые используются curses, если эти возможности отсутствуют.