Возможности терминала

редактировать

В вычислительной и телекоммуникационной сфере возможности терминала представляют собой различные функции терминала, выходящие за рамки того, что доступны с чистого телетайпа, которые могут использоваться хост-системами (и программами, работающими на них). Это (в основном) управляющие коды a nd escape-коды, которые можно отправлять на терминал или получать от него. Управляющие коды, отправляемые на терминал, выполняют различные функции, на которые способен терминал CRT (и программные эмуляторы терминала ), но которые не могут выполнять телетайп; например, перемещение курсора терминала в нужные места на экране, очистка и прокрутка всего или части экрана, включение и выключение подключенных принтеров, программирование программируемых функциональных клавиш, изменение цветов и атрибутов дисплея (например, обратное видео ) и настройку отображаемых строк заголовков. Управляющие коды, полученные с терминала, обозначают такие вещи, как функциональная клавиша, клавиша со стрелкой и другие специальные клавиши (клавиша возврата, клавиша завершения,, клавиша PgUp, клавиша PgDn, клавиша вставки, клавиша удаления и т. Д.) нажатия клавиш.

Содержание
  • 1 Unix и POSIX: termcap, terminfo и др.
    • 1.1 termcap
    • 1.2 terminfo
    • 1.3 Служебные программы для реализации возможностей терминала
  • 2 Ссылки
    • 2.1 Что поддерживает
    • 2.2 Используемые источники
  • 3 Дополнительная литература
Unix и POSIX: termcap, terminfo и др.

В Unix и других POSIX -совместимых системах, которые поддерживают интерфейс терминала POSIX, эти возможности закодированы в базах данных, которые настраиваются системным администратором и доступны из программ. через библиотеку terminfo (которая заменяет старую библиотеку termcap ), на основе которой, в свою очередь, создаются библиотеки, такие как curses и ncurses библиотеки, с помощью которых прикладные программы используют возможности терминала для предоставления текстовых пользовательских интерфейсов с окнами, диалоговыми окнами, кнопками, метками, полями ввода, меню и т. д. Предполагается, что это позволяет прикладным программам быть независимыми от фактических характеристик терминала. Им не нужно жестко встраивать в свой код какие-либо управляющие коды или escape-последовательности, и поэтому у них нет проблем с использованием на ряде терминалов с рядом возможностей.

termcap

Библиотека termcap (для «term inal cap abilities») была разработана для систем BSD. Он использует базу данных, хранящуюся в файле / etc / termcap. Эта база данных состоит из серии записей (каждая из которых состоит из одной или нескольких строк в файле, соединенных символами обратной косой черты на концах каждой строки, которая продолжается до следующей), каждая из которых представляет возможности конкретного терминала. Поля записи содержат имя типа терминала или имена, за которыми следует последовательность возможностей, разделенных двоеточиями. Сами поля возможностей делятся на три группы:

характеристики терминала
Сюда входят такие вещи, как (номинальное) количество строк и столбцов, которые имеет дисплей терминала, будет ли вывод автоматически переноситься на следующую строку, когда он достигает конца строки и т. д.
управляющие последовательности, отправляемые в качестве вывода на терминал
Они включают управляющие коды и управляющие последовательности, отправляемые на терминал, чтобы он выполнял какое-то действие (не обязательно действие отображения). Примером одного из простейших примеров является последовательность вывода для очистки экрана, которая может быть символом подачи формы (ASCII FF) на некоторых типах терминалов, но может, скажем, быть управляющая последовательность ␛2Jна терминале, которая требует управляющих последовательностей ANSI.
, отправляемых в качестве входных данных терминалом
. Они включают управляющие коды и управляющие последовательности, которые терминал отправляет на хост для представления различных действий и событий, таких как нажатие функциональных клавиш и клавиш со стрелками.

terminfo

terminfo ("term inal info rlation ") была разработана для систем System V. Он использует базу данных, хранящуюся в нескольких файлах в каталоге, которые могут быть разными (в разных Unix и POSIX-совместимых системах) / usr / lib / terminfo, / usr / share / terminfo или даже / usr / share / lib / terminfo. (Его расположение даже не одинаково в разных дистрибутивах Linux.)

В отличие от базы данных termcap, база данных terminfo является компилируемой, машиночитаемой базой данных, созданной человеком. формат исходного файла, читаемый служебной программой, tic. Их можно декомпилировать из машиночитаемой формы обратно в удобочитаемую с помощью другой служебной программы, infocmp. Например, команда для вывода определения терминала "vt100" в удобочитаемой форме:

infocmp vt100

Использование машиночитаемого формата было направлено на то, чтобы избежать ненужных накладных расходов в прикладных программах, использующих системы например, библиотека termcap, многократного анализа содержимого базы данных для чтения полей записи. Использование нескольких файлов должно было избежать аналогичных накладных расходов на анализ содержимого базы данных для поиска записи базы данных для целевого типа терминала. Индекс имени типа терминала фактически представляет собой обычную структуру каталогов файловой системы Unix / POSIX. Первоначально у Unix были серьезные проблемы с производительностью при работе с большими каталогами, содержащими много файлов, и поэтому terminfo использует двухуровневую структуру, разделяя записи каталога по первой букве на ряд подкаталогов. Более поздние форматы файловых систем, используемые в системах Unix, не страдают от таких проблем (поскольку их структуры каталогов на диске больше не являются простыми массивами записей, а организованы в виде деревьев или хеш-таблиц), и поэтому необходимость в этом элементе дизайна, который все еще существует в современных реализациях terminfo, с тех пор исчез.

Служебные программы для реализации возможностей терминала

В системах Unix команда tput используется для поиска определенной возможности в базы данных системы и выведите ее в стандартный вывод команды (который, предположительно, является терминалом, с помощью которого должна выполняться функция, обозначенная возможностью). Одна из самых простых операций - очистка экрана. Имя поля базы данных, в котором хранится последовательность вывода для этого, - clear, поэтому аргументы команды для программы tput для очистки экрана:

tput clear

Другая операция - инициализация или сброс терминала до известного состояния по умолчанию (атрибутов символов, шрифтов, цветов и т. д.). Для этого используются следующие команды:

tput init

и

tput reset

Обычно команда tput использует тип терминала, указанный в переменной среды TERM, одна из управляющих переменных среды терминального интерфейса POSIX. Однако это можно переопределить, чтобы заставить tput искать терминал другого типа в базе данных с помощью параметра командной строки для команды. Так, например, чтобы выполнить последовательность сброса, соответствующую типу терминала с именем «vt100» в базе данных (обычно терминал DEC VT100 ), независимо от типа терминала, указанного в переменных среды, команда следующая:

tput -T vt100 reset
Ссылки

Что поддерживает

Используемые источники

Дополнительная литература
  • Strang, John; Муи, Линда; О'Рейли, Тим (1991). Termcap и terminfo. Справочник по скорлупе (3-е изд.). O'Reilly Media, Inc. ISBN 978-0-937175-22-4. CS1 maint: ref = harv (ссылка )
Последняя правка сделана 2021-06-10 14:03:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте