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


TERMINFO(5) - часть 5


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

Параметризованные строки

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

Механизм параметризации использует стек и специальный код % для манимулирования. Обычно последовательность помещает один из параметров в стек и потом печатает его в некотором формате. Часто необходимы более сложные операции.

% кодирование имеет следующие значения:

  • %%

    выводит '%'
  • %d

    print pop() как in printf
  • %2d

    print pop() аналогично %2d
  • %3d

    print pop() аналогично %3d
  • %02d

  • %03d

    как in printf
  • %c

    print pop() дает %с
  • %s

    print pop() дает %s
  • %p[1-9]

    проталкивает i-ую переменную
  • %P[a-z]

    устанавливает переменную [a-z] в pop()
  • %g[a-z]

    вычисляет переменную [a-z] и протолкивает ее
  • %'c'

    символ константа с
  • %[nn]

    целая котстанта nn
  • % + % - %*% /%m

    арифметика (%m является mod): push(pop() op pop())
  • %& %| %^

    битовые операции: push(pop() op pop())
  • %= %> %<

    логические операции: push(pop() op pop())
  • % ! %~

    унарные операции: push(op pop())
  • %i

    прибавить 1 к первым двум параметрам (для терминалов ANSI)
  • % ? expr %t thenpart %e elsepart %;

    if-then-else, %e elsepart - необязательно.
  • else-if

    возможны для Algol 68:
  • %?c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;

    ci - условия, bi - тела.

Операции в двоичном коде - в виде 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.

Перемещения курсора




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



Книжный магазин