Unix Man (Справочное руководство)


TERMINFO(4) - часть 8


Упомянутых возможностей достаточно для описания как печатающий устройств, так и дисплеев. Например, телетайп (модель 33) описывается следующим образом:

33|tty33|tty|AT&T model 33 teletype, hc, os, xon, cols#72, bel=^G, cr=\r, cud1=\n, ind=\n,

А вот описание терминала Lear Siegler ADM-3:

adm3|lsi adm3, am, cols#80, lines#24, bel=^G, clear=^Z, cr=\r, cub1=\b, cud1=\n, ind=\n,

Параметризованные цепочки символов


Цепочки символов, служащие для адресации курсора, а также другие цепочки, требующие параметров, задаются с помощью так называемых параметризованных цепочек, содержащих команды, по типу форматных цепочек в . Например, для позиционирования курсора существует характеристика cup, которой требуются два параметра: номер строки и номер колонки. (Строки и колонки нумеруются с нуля и представляют физический экран, видимый пользователю, они не относятся к скрытой, невидимой пользователю дисплейной памяти.) Если терминал допускает относительную адресацию курсора, это отражается в характеристике mrcup.

Механизм разбора параметризованных цепочек символов использует стек и специальные команды (начинающиеся со знака %), манипулирующие стеком. Параметризованные цепочки при этом похожи на программу для калькулятора в обратной польской записи. Обычно вначале параметры загружаются в стек, а затем извлекаются из него с преобразованием в определенный формат. Часто требуются более сложные операции. Бинарные операции записываются в постфикстной форме с традиционным порядком операндов. Так, например, вычитание пятерки из значения x записывается как %gx%{5}%-.

В параметризованных цепочках допустимы следующие команды [pop() обозначает извлечение верхнего элемента стека, push(аргумент) - добавление своего аргумента в стек]:

%%вывести символ %
%[[:]флаги][ширина[.точность]][doxXs]вывести pop() в формате, аналогичном , в качестве флагов можно указать [-+#] и пробел.
%cвывести pop() в формате %c
%p[1-9]push(i-й аргумент)
%P[a-z]присвоить переменной [a-z] значение pop()
%g[a-z]push(значение переменной [a-z])
%'c'push(символьная константа c)
%{nn}push(десятичная константа nn)
%lpush(strlen(pop()))
%+ %- %* %/ %mвыполнить соответствующую арифметическую операцию (%m - взятие по модулю): push(pop() операция pop())
%& %| %^выполнить соответствующую битную операцию: push(pop() операция pop())
%= %> %<выполнить соответствующую логическую операцию: push(pop() операция pop())
%A %Oлогические операции И и ИЛИ
%! %~ унарные операции: push( операция pop())
%iдобавить 1 к первому параметру, если он один, и к первым двум параметрам, если их более одного (используется для ANSI терминалов)
%? выражение %t то %e иначе %;если-то-иначе, часть %e иначе может быть опущена. Допустимы конструкции иначе-если с синтаксисом в духе Алгола 68: %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e b4 %; где ci - условия, bi - тела
<


Начало  Назад  Вперед