Terminfo

редактировать
Termapi.svg

Terminfo - это библиотека и база данных, которая позволяет программам использовать дисплей терминалов в устройстве -независимо. Марк Хортон реализовал первую библиотеку terminfo в 1981–1982 годах как усовершенствование по сравнению с termcap. Усовершенствования включают

  • более быстрый доступ к сохраненным описаниям терминала,
  • более длинные и понятные имена для возможностей терминала и
  • оценка общих выражений для строк, отправленных на терминал.

Terminfo был включен в UNIX System V Release 2 и вскоре стал предпочтительной формой описаний терминалов в System V, а не termcap (который BSD продолжал использовать). Это имитировалось в pcurses в 1982–1984 гг. Павлом Кертисом, и было доступно в других реализациях UNIX, адаптируя или включая исправления от Марка Хортона. Для получения дополнительной информации см. Сообщение в группе новостей comp.sources.unixот декабря 1986 года.

База данных terminfo может описывать возможности сотен различных терминалов с дисплеем. Это позволяет внешним программам иметь возможность вывода символьного дисплея независимо от типа терминала.

Некоторые конфигурации:

  • Количество строк на экране
  • Монохромный режим; подавить цвет
  • Использовать видимый звонок вместо звукового сигнала
Содержание
  • 1 Модель данных
    • 1.1 Индексы
    • 1.2 Значения данных
    • 1.3 Иерархия
  • 2 Модель хранения
    • 2.1 Дерево каталогов
    • 2.2 Хэшированная база данных
  • 3 Ограничения и расширения
  • 4 См. Также
  • 5 Ссылки
  • 6 Внешние ссылки
Модель данных

Базы данных Terminfo состоят из одной или нескольких описания терминалов.

Индексы

Каждое описание должно содержать каноническое имя терминала. Он также может содержать один или несколько псевдонимов для имени терминала. Каноническое имя или псевдонимы - это ключи, по которым библиотека выполняет поиск в базе данных terminfo.

Значения данных

Описание содержит одну или несколько возможностей, которые имеют условные названия. Возможности типизированы: логические, числовые и строковые. Библиотека terminfo имеет заранее определенные типы для каждого имени возможности. Он проверяет типы каждой возможности по синтаксису:

  • строковые возможности имеют знак "=" между именем возможности и ее значением,
  • числовые возможности имеют знак "#" между именем возможности и ее значением, и
  • логические возможности не имеют связанного значения (они всегда истинны, если указаны).

Приложения, которые используют terminfo, знают типы для соответствующих возможностей и получают значения возможностей из базы данных terminfo с помощью библиотечных вызовов которые возвращаются успешно только тогда, когда имя возможности соответствует одной из предопределенных типизированных возможностей.

Как и termcap, некоторые строковые возможности представляют собой escape-последовательности, которые могут быть отправлены на хост путем нажатия специальных клавиш на клавиатуре. Другие возможности представляют собой строки, которые могут быть отправлены приложением на терминал. В последнем случае библиотека terminfo (как и библиотека termcap) выполняет функцию подстановки параметров приложения в отправляемую строку. Эти функции предоставляют анализатор выражения на основе стека, который в основном используется для минимизации количества символов, отправляемых для управляющих последовательностей, которые имеют дополнительные параметры, такие как SGR (выбор графического представления). Напротив, библиотеки termcap предоставляют ограниченный набор операций, которые полезны для большинства терминалов.

Иерархия

Описание Terminfo может быть построено путем включения содержимого одного описания в другое, подавления возможностей из включенного описания или переопределения или добавления возможностей. Независимо от того, какая модель хранения используется, библиотека terminfo возвращает описание терминала из запрошенного описания, используя данные, которые скомпилированы с помощью автономного инструмента (например, tic ).

Модель хранения

Данные Terminfo хранятся в виде двоичного файла, что делает его менее простым для изменения, чем termcap. Данные могут быть получены библиотекой terminfo из файлов, в которых они хранятся. Сами данные организованы в виде таблиц для логических, числовых и строковых возможностей соответственно. Это схема, разработанная Марком Хортоном, и, за исключением некоторых различий в доступных именах, используется в большинстве реализаций terminfo. X / Open не определяет формат скомпилированного описания терминала. Фактически, здесь даже не упоминаются общие утилиты tic или infocmp . Поскольку скомпилированные записи terminfo не содержат метаданных, идентифицирующих индексы в таблицах, которым назначена каждая возможность, они не обязательно совместимы между реализациями. Однако, поскольку в большинстве реализаций используется одна и та же общая структура таблицы (включая размеры заголовка и элементов данных), можно автоматически создавать настраиваемые библиотеки terminfo, которые могут считывать данные для данной реализации. Например, ncurses может быть построен для сопоставления данных terminfo для нескольких других реализаций.

Дерево каталогов

Исходная (и наиболее распространенная) реализация библиотеки terminfo извлекает данные из каталога иерархии. За счет использования первого символа имени описания терминала в качестве одного из компонентов имени пути и имени описания терминала в качестве имени файла для извлечения библиотека terminfo обычно превосходит поиск в большом файле termcap.

Хешированная база данных

Некоторые реализации terminfo хранят описание терминала в хэшированной базе данных (например, что-то вроде Berkeley DB версии 1.85). В них хранятся два типа записей: псевдонимы, указывающие на каноническую запись, и сама каноническая запись, которая содержит данные о возможностях терминала.

Ограничения и расширения

Открытая группа документирует ограничения для terminfo (минимальные гарантированные значения), которые применяются только к исходному файлу. Два из них представляют особый интерес:

  • максимум 14 символов для псевдонимов терминала
  • максимум 32,767 для числовых величин

Ограничение в 14 символов касается очень старых файловых систем, которые могут представлять имена файлов не длиннее этого. Хотя эти файловые системы, как правило, устарели, эти ограничения были задокументированы с конца 1980-х годов и с тех пор не пересматривались.

Предел 32 767 предназначен для положительных значений в 16-битном значении со знаком с дополнением до двух. Запись terminfo может использовать отрицательные числа для представления отмененных или отсутствующих значений.

В отличие от termcap, terminfo имеет как исходное, так и скомпилированное представление. Пределы для скомпилированного представления не указаны. Однако большинство реализаций отмечают в своей документации для tic (компилятор информации о терминале), что размер скомпилированных записей не может превышать 4096 байт.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-10 14:05:13
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте