|
TERMINFO(5)НАЗВАНИЕ СИНТАКСИС /usr/lib/terminfo/*/* ОПИСАНИЕ Входы в terminfo состоят из множества полей, разделенных запятой ','. Пробелы после каждой ',' игнорируются. Первый вход для каждого терминала дает различные имена, известные терминалу. Каждый из этих входов разделяется "|". Первое заданное имя - наиболее общая аббревиатура для терминала, (называемая "корневым именем"), последнее заданное имя должно быть длинным именем, полностью идентифицирующем терминал, и все другие воспринимаются как синонимы имени терминала. Все имена, кроме последнего, должны состоять из больших букв и не содержать пробелов; последнее имя может содержать большие буквы и пробелы для читабельности. Имена терминалов (кроме последнего входа) должны выбираться при использовании следующих обозначений. Отдельная аппаратная часть, выполняющая роль терминала, должна иметь выбранное корневое имя, например, "h2621". Это имя не должно содержать черточки, за исключением тех синонимов, которые могут быть выбраны, и не конфликтующих с другими именами. Режимы, в которых может находиться аппартура, или которые не предпочитает пользователь, должны указываться, присоединив черточку к указателю режима. Так, vt-100 в режиме со 132 колонками должен быть vt100-w. Когда возможно, следует использовать следующие суффиксы:
В следующей таблице "variable" - имя, с помощью которого программист (использующий библиотеку terminfo) обозначает возможность. "capname" - короткое имя, используемое в тексте базы данных и с помощью персонального модернизирования базы данных. "i.code" - внутренний код из двух букв, используемый при составлении базы данных, и всегда соответствует имени возможности termcap(5). Имя возможности не имеет жесткого предела длины, но формальный предел из 5 символов позаимствован для сохранения их краткости. Всякий раз, когда возможно, имена выбираются так, чтобы быть такими же или подобными ANSI X3.64-1979 стандарту. Семантики, также, предназначаются для сопоставления их спецификаций.
Простой вход concept100 |c100| concept| c104| c100-4p| concept 100, am, bel=^G, blank=\EH, blink=\EC, clear=^L$<2*>, cnorm=\Ew, cols#80, cr=^M$<9>, cub1=^H, cud1=^J, cuf1=\E=, cup=\Ea&p1&' '&+&c&p2&' '&+&c' cuu1=\E;, cvvis=\EW, db, dch1=\E^A$<16*>, dim=\EE, d11=\E^B$<3*>, ed=\E^C$<16*>, el=\E^U$<16>, eo, flash=\Ek$<20>\Ek, ht=\t$<8>, il1=\E^R$<3*>, in, ind=^J, .ind=^J$<9>, ip=$<16*>, is2=\EU\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E, kbs=^h, kcub1=\E<, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kf1=\E5, kf2=\E6, Kf3=\E7, khome=\E?, lines#24, mir, pb#9600, prot=\EI, rep=\Er&p1&c&p&2&' '&+&c$<.2*), rev=\ED, rmcup=\Ev $<6>\Ep\r\n, rmir=\E\200, rmkx=\Ex, rmso=\Ed\Ee, rmul=\Eg, rmul=\Tg, sgr0=\EN\200, smcup=\EU\Ev8p\Ep\r, smir=\E^P, smkx=\EX, smso=\EE\ED, smull=\EG, tabs, ul, vt#8, xenl. Входы могут продолжаться в размноженные строки путем помещения пробелов в начале каждой строки, кроме первой. Строкикомментарии начинаются с '#'. Средства в terminfo - 3-х типов: булевские средства, которые указывают, что терминал имеет характерные особенности, числовые средства, задающие размер терминала, и величины конкретных задержек, строчные средства,задающие последовательности, которые могут быть использованы для выполнения конкретных операций терминала. Виды средств Наконец, строкоые средства, такие как el (очистить до конца последовательность строк), задаются двухсимвольным кодом, '=', затем следует строка, заканчивающаяся ','. Задержка в миллисекундах может появляться где угодно в этом средстве, заключается в $<..>, как el=\EK$<3>, и символы наполнения поддерживаются tputs для обеспечения этой задержки. Задержка может быть либо числом,например, '20', либо числом, за которым следует '*', например, '3*'. '*' показывает, что требуемое заполнение пропорционально числу строк, на которые действует операция, а задаваемое количество является требуемым заполнением per-affected-unit. (В случае символа вставки этот коэффициент является числом, равным количеству задействованных строк. Это всегда 1, за исключением тех случаев, когда терминал имеет xenl, и аппаратура использует его.) Когда определяется '*', иногда полезно задавать задержку в виде '3.5', чтобы определить задержку на устройство в десятках миллисекунд. (Допускается только одно десятичное значение.) Количество управляющих последовательностей обеспечивается строковыми средствами для облегчения раскодирования символов. Обе \E и \e преобразуются в символ ESCAPE, ^x преобразует в ctrl-x для любого соответственного x, и последовательности \n \l \r \t\ \b \f \s задают новую строку, linefeed, возврат, табуляцию, backspace, formfeed и пробел. Другие управляющие символы включают \^ для ^, \\ для \, \, для запятой, \: для :, \0 для 0. (\0 будет вырабатывать \200, который не звершает строку, но ведет себя как нулевой символ на большинстве терминалов). Наконец, символ может задаваться как три восьмеричные цифры после \a. Иногда отдельные средства могут быть раскомментированы. Для выполнения этого, помещается период перед названием средства. Например, смотри второй ind в примере, приведенном выше. Подготовительное описание Основные средства Существует код для продвижения курсора на одну позицию влево (такую как backspace), средство следует задавать как cub1. Аналогично, коды для продвижения вправо, вверх и вниз определяются как cuf1, cuu1 и cud1. Эти локальные движения курсора не должны изменять текста, который они проходят, например, вы обычно не сможете использовать 'cuf1=', так как область, которую он проходит, будет стираться. Важно, что локальное движения курсора, закодированное в terminfo, не определены в левой и верхней границах терминала CRT. Программы никогда не должны пытаться делать backspace влево, если не задано bw, и переходить через верх. По мере просмотра текста назад программа будет идти к левому углу экрана и посылать строку ind. По мере просмотра текста вперед программа идет в верхний левый угол экрана и посылает строку ri (обратный индекс). Строки ind и ri не определяются, когда они не на соответствующих углах экрана. Параметризованными версиями просматривающих последовательностей являются indn и rin, имеющие ту же самую семантику, что и ind и ri, кроме тех случаев, когда они принимают один параметр и просматривают таким образом много строк. Они также не определяются, кроме как, на соответствующих углах экрана. Средство am говорит, был ли курсор нажат справа от экрана,когда выводился текст, но это не обязательно поддерживать средством cuf1 из последней колонки. Локальное перемещение, которое определяется из левого края при заданном bw, существует, при этом cub1 из левого угла будет двигаться в правый угол предшествующей строки. Если bw не задано, эффект не предсказуем. Это полезно для вычерчивания рамки угла экрана. Если терминал имеет преключатель, способный выбирать автоматические края, то файл terminfo обычно потверждает, что он присутствует; например, am. Если терминал имеют команду, которая перемещает к первой колонки следующей строки, то команда может задаваться как nel (новая строка). Не имеет значения, если команда очищает остаток текущей строки, поэтому, если терминал не имеет cr и lf, то все же возможно обойтись рабочим nel без одной или обоих. Этих средств достаточно для описания твердых копий и glass-tty терминалов. Таким образом, модель 33 телетайпа описывается следующим образом: 33|tty33|ty|model 33 teletype, bel=^G, cols#72, cr=^M, cud1=^J, hc,ind=^j, osгде Lear Siegler ADM-3 описывается следующим образом: adm3|3|lsi adm3, am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J, ind=^J, lines#24 Параметризованные строки Механизм параметризации использует стек и специальный код % для манимулирования. Обычно последовательность помещает один из параметров в стек и потом печатает его в некотором формате. Часто необходимы более сложные операции. % кодирование имеет следующие значения:
Операции в двоичном коде - в виде postfix c операциями в обычном порядке. То есть, для того чтобы получить x-5 следует использовать "%gx%{5}%-". Расмотрим HP2645, которому для получения 3 строки и 12 колонки требуется послать \E&a12c03Y, происходящее за 6 миллисекунд. Отметим, что порядок строк и колонок здесь инвертируется, и эти ряд и колонка печатаются как две цифры. Так, средство 2cup 0 означает cup=\E&%p2%dc%p1%2dY$<6>. Для Microterm ACT-IV перед посылкой текущей строки и колонки нужно выполнить ^T, где строка и колонка закодированы в двоичном исчислении, cup=^T%p1%c%p2%c. Терминалы, использующие %, должны обладать свойством backspace курсора (cub1) и передвижением курсора вверх на одну строку (cuu1). Это необходимо, так как это не всегда сохраняет передачу \n ^D и \r, когда система может изменить или убрать их. (Библиотечные программы имеют дело с режимами tty набора terminfo, так что таблицы никогда не расширяются, поэтому \t сохраняется для посылки. Это существенно для Ann Arbor 4080.) И наконец, пример LSI ADM-IV, использующий смещение по строке и колонке с помощью символа пробела, так cup=\E=%p1%' '%+%c. После посылки '\E=' помещает первый параметр, значение ASCII для области (32), складывает их (помещая сумму в стек на место двух предыдущих значений) и выводит это значение в качестве символа. Затем делает то же самое со вторым параметром. Возможна более сложная арифметика, использующая стек. Если терминал имеет абсолютную адресацию курсора в строке или колонке, она может задаваться единственным параметром hpa (абсолютная горизонтальная позиция) и vpa (абсолютная вертикальная позиция). Иногда они короче, чем более общая последовательность двух параметров (как в HP2645), и могут быть использованы в предпочтении к cup. Если имеются локальные параметризованные перемещения (например, переместиться на n позиций вправо), то они могут быть заданы cud, cub, cuf и cuu с единстенным параметром, показывающим, на сколько позиций двигаться. Преимущественно они используются в терминалах, не имеющих cup, таких как TEKTRONIX 4025. Перемещения курсора Очищение области Вставка/уничтожение строки Если терминал имеет возможность определять окно как часть памяти, на которую воздействуют все команды, то это задается параметризованной сторкой wind. В этом случае используется 4 параметра: начальная и конечная строки в памяти и начальная и конечная колонки в памяти, в таком порядке. Если терминал может сохранять дисплейную память над, то следует задавать средство da; если дисплейная память задается ниже, то db. Это указывает, что уничтожение строки и просмотр может доставлять пустые строки вверх снизу, или же просмотр назад с помощью ri может опускать их сверху. Вставка/стирание символа terminfo может описывать как терминалы, которые имеют режим вставки, так и терминалы, посылающие простую последовательность, чтобы открыть пустую позицию в текущей строке. Чтобы войти в режим вставки, используется последовательность smir. Чтобы выйти из режима встаки используется последовательность rmir. Теперь зададим в качестве ich1 любую последовательность, необходимую для посылки сразу перед тем, как символ, который следует вставить. Большинство терминалов с истинным режимом вставки не выдают ich1; терминалы, посылающие последовательность для открытия экрана, должны его здесь содержать. (Если терминал имеет оба средства, то режим вставки предпочитается ich1. Не используйте ни одного, пока терминал не потребует их для использования в комбинации). Если необходимо последующее (после вставки) заполнение, то задавайте его как число миллисекунд в ip (параметр строки). Любая другая последовательность, которая может потребоваться для посылки после вставки одного символа, также может задаваться в ip. Если вашему терминалу нужны и режим вставки, и специальный код, который предшевствует специальному символу, тогда могут быть заданы smir/rmir и ich1, и оба могут использоваться. Средства ich с одним параметром n повторяют действия ich1 n раз. Иногда бывает необходимо повторить режим вставки для уничтожения символов в той же строке (например, если имеется таблица после вставляемой позиции). Если ваш терминал позволяет перемещение в процессе режима вставки, вы можете задавать средство mir для ускорения вставки в этом случае. Избежание mir будет влиять только на скорость. Некоторые терминалы (как Datamedia) не должны использовать mir из-за работы режима вставки. И наконец, вы можете определить dch1 для уничтожения работы одного символа, dch с одним параметром n для уничтожения n символов и режим уничтожения, задаваемый smdc и rmdc, для входа и выхода в него ( любой режим терминала допускается для работы в 2 dch1 0). Команда для стирания символов (эквивалентная выводу n пробелов без перемещения курсора) может задаваться как ech c одним параметром. Выделение, подчеркивание и видимые сигналы Коды для начала подчеркивания и конца подчеркивания могут задаваться соответственно, как smul и rmul. Если терминал имеет код для подчеркивания текущего символа и сдвигает курсор на позицию вправо, как Microterm Mime, то следует задать uc. Другие средства для входа в различные режимы выделения включают blink (мерцание), bold (повышенная яркость), dim (средняя яркость), invis ( пробел или невидимый текст), prot (защищенный), rev (инверсионный видео), sgr0 (выключение аттрибутных режимов all), smacs (режим ввода набора изменяемых символов). Включение одного из этих режимов может выключать или не выключать эти режимы. Если есть последовательность, устанавливающая произвольные комбинации режимов, она должна задаваться, как sgr (признак установки), используя 9 параметров. Каждый параметр, 0 или 1, означает, присутствует или нет соответствующий признак. Эти 9 параметров идут в порядке: standout, подчеркивание, инверсия, мерцание, низкая яркость, высокая яркость, пробел, защита, изменение набора символов. Не все режимы нуждаются в поддержке с помощью sgr только те, для которых существуют соответствующие аттрибуты команд. Терминал с глитчем "magic cookie" (xmc) приготавливает специальные "cookies", когда они принимают устанавливающие режимы последовательности, которые задействуют дисплейный алгоритм ранее, чем принимают дополнительные биты для каждого символа. Некоторые терминалы, такие как HP 2621, автоматически выходят из режима standout, когда они передвигаются на новую строку, или когда адресуется курсор. Программы, использующие режим standout, должны выйти из этого режима прежде, чем двикать курсор или посылать новую строку, если не присутствует msrg, допускающее для возможности перемещения в режиме standout. Если терминал имеет возможность мерцания экрана для указания ошибки (замещающее звуковой сигнал), то она дается flash; не должно перемещать курсор. Если курсор необходимо сделать более ярким, когда он не на последней строке (выполнить, например, немерцающее подчеркивание для более легкого поиска блока или мерцающее подчеркивание), то последовательность задается как cviis. Средство cnorm должно быть задано, когда допускается влияние на оба эти режима. Если терминал должен находится в специальном режиме во время выполнения программы, используя эти средства, коды для входа и выхода в этот режим могут задаваться как smcup и rmcup. Это увеличивает для терминала, как Сoncept, на более, чем одну страницу. Если терминал имеет только относительную адресацию в памяти курсора, а не относительную адресацию курсора на экране, окно размером в экран должно фиксироваться в терминале для аресации курсора для работы надлежащим образом. Также ээто используется для TEKTRONIX 4025, где smcup устанавливает управляющий символ для того, чтобы использовать его с помощью terminfo. Если ваш терминал правильно генерирует подчеркнутые символы (без требования специальных кодов), даже если они не перебиваются, то вам следует использовать средство ul.Если лишние клавиши затираются пробелами, то следует отметить этот факт, используя eo. Клавиатура Табуляция и инициализация Другие средства включают is1, is2 и is3, строки инициализации для терминала, iprog, составное имя программы, которое следует выполнить для инициализации терминала и if, имя файла, содержащего строки длинной инициализации. Эти строки ожидаются для установки терминала в режим, связанный с остаттком описания файла terminfo. Они обычно посылаются на терминал с помощью программы tset, каждый раз, пока пользователь загружается. Оним будут печататься в следующем порядке: is1, is2, устанавливая символы табуляции, использующие tbc и hts; выполняемую программу iprog; и, наконец, is3. Большая часть инициализации выполняется с помощью is2. Определенные режимы терминала могут устанавливаться без дублирования строк путем помещения общей последовательности в is2 и определенных букв в is1 и is3. Пара последовательностей, которая выполняет жесткую замену из неизвестного состояния, может быть задана rs1,rs2,rf и rs3, аналогично для is2 и if. Команды обычно помещаются в rs2 и rf, если они дают неприятный эффект на экране и не обязательны при загрузке. Например, команды, устанавливающие vt-100 в 80-колонный режим, обычно бывают частью is2, но они вызывают мерцание экрана и не нужны, пока они не перейдут в этот режим. Если есть команды, которые помещают и очищают символы табуляции stop, они могут задаваться tbc ( стереть все символы stop) и hts ( установить символ табуляции stop в текущую колонку текущей строки). Если требуется более сложная последовательность для установки символов табуляции, которые были описаны выше, последовательность может заменяться в is2 или if. Задержки Разное Если в терминале имеется дополнительное "состояние строки", которое, как правило, не используется программами, этот факт может быть отмечен. Если состояние строки показано, как дополнительная строка под нижней строкой, на которую курсор может адресоваться (такие как HEATHKIT h'19's 25ти строковая или 24х строковая vt-100, в которой установлена 24х строковая область просмотра), следует испоьзовать средство hs. Специальные строки, позволяющие попасть в начало строки состояния и вернуться из нее, могут задаваться с помощью tsl и fsl. (fsl должна оставлять курсор в той же позиции, где он находился перед выполнением tsl. Если необходимо, то в tsl и fsl можно включать строки sc и rc для достижения этого результата.) Параметр tsl берет один параметр, который является номером колонки состояния строки, к которой должен двигаться курсор. Если управляющие последовательности и другие специальные команды, такие как tab, работает, если в состоянии строки задан флаг eslok. Строка, которая выключает состояние строки (или в другом случае стирает его содержимое), это можно задать с помощью dsl. Если терминал имеет команды сохранения и восстановления позиции курсора, это можно задать с помощью sc и rc. Состояние строки обычно допускается такой же ширины, как остаток экрана, то есть cols Если состояние строки другой ширины ( возможно потому, что терминал не позволяет загрузить целую линию), ширина в колонках может быть указана с помощью числового параметра wsl. Если терминал может свдигать на полстроки вверх или вниз, это задается как hu (полстроки вверх) и hd (полстроки вниз). Это, главным образом, полезно для подстрочных и надстрочных индексов в терминалах с жесткими копиями. Если терминал с жесткой копией может переходить на следующую страницу (form feed), то это задается как ff (обычно ctrl-L). Если существует команда повторения заданного символа заданное количество раз (чтобы сохранить время передачи большого количества идентичных символов), то это задается с помощью параметризованной строки rep. Первый параметр - это символ, который должен быть повторен, второй - число повторений. Таким образом, tparm(repeat_char, 'x', 10) то же самое, что 'xxxxxxxxxx'. Если терминал имеет устанавливаемый командный символ, так как в TEKTRONIX 4025, он может указываться как cmdch. Командный символ прототипа выбран таким, какой используется во всех средствах. Этот символ задается в средствах cmdch для его идентификации. В некоторых XENIX системах поддерживаются следующие преобразования: Среда, которая должна быть найдена для переменной СС, и если найдена, то все символы прототипа заменяются символом в переменной среды. Описания терминала, которые не представлены в специальных видах отдельных терминалов, такие как switch, dialup, patch, network, должны включать средство gn (generic), так что бы программа не могла пожаловаться на то, что она не знает, как общаться с терминалом. Если терминал использует XON/XOFF квитирование установления связи для управления потоком, дается xon. Информацию заполнения следует включать, для того чтобы программы могли принять выгодное решение о затратах, но в действительности символы заполнения не передаются. Если терминал имеет "метаклавишу", которая действует наподобие клавиши shift, устанавливая восьмой бит в каждый передаваемый символ, это задается как km. В другом случае, программы могут допускать, что восьмой бит - бит четности, и обычно он убирается. Если строки выходят на включение и выключения этого "мета режима", они могут быть заданы как smm и rmm. Если терминал имеет больше строк памяти, чем может поместиться на экране в один прием, число строк в памяти указывается в lm. Значение lm#0 указывает, что число строк не фиксированно, но что памяти остается больше, чем помещается на экране. Если терминал - один из тех, которые поддерживаются протоколом виртуального терминала UNIX, номер терминала задается как vt. Строки средней копии, которые управляют внешним принтером, связанным с терминалом, задаются как mc0: печатать содержимое экрана, mc4: выключить принтер, и mc5: включить принтер. Если принтер включен, весь текст, посылаемый на терминал, будет посылаться на принтер. То есть, не определено, будет ли текст высвечиваться на дисплее, если принтер включен. Вариант mc5p берет один параметр и оставляет принтер включенным для стольких символов, каково значение параметра, потом выключает принтер. Параметр не должен превышать 255. Весь текст, включая mc4, без изменения передается на принтер, пока работает mc5p. Строки для программирования функциональных клавиш задаются как pfkey, pfloc и pfx. Каждая из этих строк имеет два параметра: номер функциональной клавиши, которая программируется (от 0 до 10) и строка, с помощью которой она программируется. Номера функциональных клавиш из этого множества могут программировать неопределенные клавиши способом, зависящим от терминала. Различие между средствами в том, что pfkey вызывает нажатием на заданные клавиши тот же самый эффект, как если бы пользователь печатал заданную строку; pfloc вызывает выполнение строки на терминале локально; а pfx вызывает передачу строки в компьютер. Глитчи и нестандартные средства Терминалы, игнорирующие немедленную подачу строки после am перехода, такие как Concept и vt-100, должны отмечаться xenl. Если требуется el, для того чтобы выйти из режима standout (вместо простой надписи обычного текста наверху экрана), следует задавать xhp. Teleray терминалы, где символы табуляции заставляют игнорировать пробелы перед символами, задаются xt (разрушающие символы). Этот глитч указывает также, что невозможно поместить позицию курсора в начало "magic cookie", и что вместо выхода из режима standout необходимо использовать уничтожение и ввод строки. Beehive Superbee, который не в состоянии правильно передать символы escape и ctrl-C , имеют xtb, который задает, что клавиша f1 используется в качестве escape и f2 в качестве ctrl -C. ( Только некоторые Superbee имеют эти проблемы, зависящие от ROM.) Разные специфические проблемы терминала могут быть исправлены добавлением дополнительных средств в виде xx. Подобные терминалы 262-nl, smkx@, rmkx@, use=2621, определяет 262-nl, который не имеет средств 2smkx и rmkx, и следовательно не включает метки функциональных клавиш, когда режим visual. Это полезно для различных режимов терминала или для различных предпочтений пользователя. ФАЙЛЫ ПРИМЕЧАНИЯ |
|