mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

TERMINFO(4)                                         TERMINFO(4)

НАЗВАНИЕ 
	terminfo - база данных характеристик терминалов

СИНТАКСИС 
	/usr/lib/terminfo/?/*

ОПИСАНИЕ 
	Terminfo  -  это  скомпилированная  база  данных   [см.
	tic(1M)],  описывающая характеристики терминалов. В ис-
	ходных файлах terminfo задаются характеристики термина-
	лов, описывается, как выполняются операции, какие  тре-
	буются  заполнители или инициализирующие последователь-
	ности. Эта база данных используется  прикладными  прог-
	раммами,    например,   редактором   vi   или   пакетом
	curses(3X), так что эти  программы  могут  работать  на
	различных  терминалах без всяких изменений. Чтобы полу-
	чить исходное описание  терминала,  следует  воспользо-
	ваться утилитой infocmp(1M) с опцией -I.

	Элементы  исходных  файлов  terminfo  состоят из полей,
	разделенных запятыми. Пробелы и табуляции после  каждой
	запятой  игнорируются.  Первая  строка каждого описания
	терминала в базе данных terminfo(4)  задает  имена,  по
	которым terminfo(4) распознает терминал. Имена разделя-
	ются  символами |. Первое имя задает наиболее часто ис-
	пользуемое сокращение для  терминала  [именно  это  имя
	нужно использовать в качестве значения переменной  TERM
	в   $HOME/.profile,   см.  profile(4)],  последнее  имя
	  длинное, полностью определяющее терминал, все осталь-
	ные имена являются синонимами первого. Все имена, кроме
	последнего, не должны содержать пробелов и первые их 14
	символов должны быть уникальными; в последнем имени для
	удобства допускаются пробелы.

	Имена терминалов (кроме последнего) должны выбираться в
	соответствии  со  следующими  соглашениями.  Необходимо
	выбрать некоторое базовое имя, определяющее  терминаль-
	ное  оборудование. Так, для терминала AT&T 4425 выбрано
	имя att4425. Режимы, в которых может находиться  терми-
	нал, и режимы, которые предпочитают пользователи, обоз-
	начаются суффиксами, начинающимися с -. Примеры и более
	подробную  информацию  о  выборе имен и синонимов можно
	найти в term(5).

   Характеристики 
	В описаниях, приведенных ниже, переменная - это имя, по
	которому  программист,  пишущий  на  языке C (на уровне
	terminfo), получает доступ к указанной  характеристике.
	Сокращение  - это короткое имя для этой переменной, ис-
	пользуемое в тексте базы данных. Оно употребляется  че-
	ловеком,  изменяющим  базу  данных,  а  также  командой
	tput(1) при опросе  значения  указанной  характеристики
	для  конкретного  терминала. Код termcap - это двухсим-
	вольный код, соответствующий базе данных termcap, кото-
	рая раньше использовалась  для  тех  же  целей,  что  и
	terminfo.

	Хотя длина имен,  соответствующих  характеристикам,  не
	ограничена,  имена, содержащие более 5 символов, не ис-
	пользуются. Всюду, где возможно,  имена  совпадают  или
	соответствуют  тем,  что  предложены  в  стандарте ANSI
	X3.64-1979. Их семантика также соответствует указанному
	стандарту.

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

	(G)  Означает,  что  цепочка  символов передается через
	     функцию tparm с указанными параметрами (#i).

	(*)  Означает, что заполнитель  зависит  от  количества
	     затронутых строк.

	(#i) Обозначает i-й параметр.

Имя                  Сокращение Код      Описание
переменной                      termcap  

     Булевы характеристики: 
auto_left_margin          bw      bw     cub1  переводит курсор
					 из колонки 0 в послед-
					 нюю колонку
auto_right_margin         am      am     В терминале есть авто-
					 матические границы
beehive_glitch            xsb     xb     Терминал       Beehive
					 (f1=escape,  f2=ctrl C)
ceol_standout_glitch      xhp     xs     Текст,  выведенный   в
					 режиме  сообщений,  не
					 очищается при  повтор-
					 ном  выводе  в  то  же
					 место (терминал hp)
eat_newline_glitch        xenl    xn     Перевод  строки  после
					 80 колонок игнорирует-
					 ся (терминал Concept)
erase_overstrike          eo      eo     Может  зачищать надпе-
					 чатку пробелом
generic_type              gn      gn     Тип   терминала  может
					 меняться    (например,
					 коммутируемая  или пе-
					 реключаемая линия)
hard_copy                 hc      hc     Терминал  - печатающее
					 устройство
hard_cursor               chts    chts   Курсор трудно увидеть
has_meta_key              km      km     Есть ключ  МЕТА  (если
					 нажат, устанавливается
					 бит четности)
has_status_line           hs      hs     Имеется дополнительная
					 служебная строка
insert_null_glitch        in      in     При   режиме   вставки
					 распознаются пустоты
memory_above              da      da     В  терминале запомина-
					 ется информация, нахо-
					 дящаяся выше экрана
memory_below              db      db     В  терминале запомина-
					 ется информация, нахо-
					 дящаяся ниже экрана
move_insert_mode          mir     mi     Можно без опасений пе-
					 ремещаться  в   режиме
					 вставки
move_standout_mode        msgr    ms     Можно без опасений пе-
					 ремещаться  в   режиме
					 сообщений
needs_xon_xoff            nxon    nx     Заполнение не  работа-
					 ет, требуется  xon/xoff
non_rev_rmcup             nrrmc   NR     smcup не обратен  rmcup
no_pad_char               npc     NP     Символ-заполнитель  не
					 существует
over_strike               os      os     Терминал может  произ-
					 водить надпечатку
prtr_silent               mc5i    5i     Ввод  не  изображается
					 на экране
status_line_esc_ok        eslok   es     В служебной строке мо-
					 жет     использоваться
					 escape
teleray_glitch            xt      xt     Вывод символа  табуля-
					 ции  портит  терминал,
					 не пользуйтесь    smso
					 (Терминал  Teleray1061)
tilde_glitch              hz      hz     Терминал    Hazeltine,
					 нельзя выводить симво-
					 лы ~
transparent_underline     ul      ul     Символ  _   производит
					 надпечатку
xon_xoff                  xon     xo     Терминал    использует
					 протокол xon/xoff

      Числовые характеристики: 
columns                   cols    co     Число колонок  в строке
init_tabs                 it      it     Шаг позиций табуляции
label_height              lh      lh     Количество   строк   в
					 каждой метке
label_width               lw      lw     Количество колонок   в
					 каждой метке
lines                     lines   li     Число строк на  экране
					 или странице
lines_of_memory           lm      lm     Число   строк  памяти,
					 если > lines. 0  озна-
					 чает переменное число
magic_cookie_glitch       xmc     sg     Количество пустых сим-
					 волов, остающихся пос-
					 ле smso или rmso
num_labels                nlab    Nl     Количество  меток   на
					 экране (начиная с 1)
padding_baud_rate         pb      pb     Минимальная   скорость
					 обмена,  для   которой
					 требуется заполнитель
virtual_terminal          vt      vt     Номер     виртуального
					 терминала
width_status_line         wsl     ws     Количество  колонок  в
					 служебной строке

     Символьные характеристики: 
acs_chars                 acsc    ac     Пары символов из  гра-
					 фического     алфавита
					 aAbBcC  (по  умолчанию
					 =vt100+)
back_tab                  cbt     bt     Обратная табуляция
bell                      bel     bl     Звуковой сигнал
carriage_return           cr      cr     Возврат каретки (*)
change_scroll_region      csr     cs     Установить  в качестве
					 роллируемой    области
					 строки   с  #1  по  #2
					 (vt100) (G)
char_padding              rmp     rP     Аналогично  lp,  но  в
					 режиме замены
clear_all_tabs            tbc     ct     Сбросить  все  позиции
					 табуляции
clear_margins             mgc     MC     Сбросить левую и  пра-
					 вую  границы, установ-
					 ленные программно
clear_screen              clear   cl     Очистить экран  и  по-
					 местить  курсор  в на-
					 чальную позицию (*)
clr_bol                   el1     cb     Очистить начало  стро-
					 ки, включительно
clr_eol                   el      ce     Очистить конец строки
clr_eos                   ed      cd     Очистить  конец экрана
					 (*)
column_address            hpa     ch     Установить    горизон-
					 тальную позицию (в аб-
					 солютных  координатах)
					 (G)
command_character         cmdch   CC     Устанавливаемый в тер-
					 минале символ-команда
cursor_address            cup     cm     Перемещение курсора  в
					 строку  #1  колонку #2
					 (G)
cursor_down               cud1    do     Вниз на одну строку
cursor_home               home    ho     Курсор в начальную по-
					 зицию (если нет cup)
cursor_invisible          civis   vi     Сделать курсор невиди-
					 мым
cursor_left               cub1    le     Курсор влево  на  один
					 шаг
cursor_mem_address        mrcup   CM     Адресация  курсора от-
					 носительно памяти
cursor_normal             cnorm   ve     Сделать  курсор   нор-
					 мальным  (отменить vs/
					 vi)
cursor_right              cuf1    nd     Неразрушающий   пробел
					 (курсор вправо)
cursor_to_ll              ll      ll     Последняя строка, пер-
					 вая  колонка (если нет
					 cup)
cursor_up                 cuu1    up     Предыдущая      строка
					 (курсор вверх)
cursor_visible            cvvis   vs     Сделать  курсор  очень
					 хорошо видимым
delete_character          dch1    dc     Удалить символ (*)
delete_line               dl1     dl     Удалить строку (*)
dis_status_line           dsl     ds     Отменить     служебную
					 строку
down_half_line            hd      hd     На полстроки вниз
ena_acs                   enacs   aA     Разрешить  использова-
					 ние    дополнительного
					 алфавита
enter_alt_charset_mode    smacs   as     Перейти к дополнитель-
					 ному алфавиту
enter_am_mode             smam    SA     Включить  автоматичес-
					 кие границы
enter_blink_mode          blink   mb     Включить мерцание
enter_bold_mode           bold    md     Включить  режим  выде-
					 ленных символов
enter_ca_mode             smcup   ti     Начальная цепочка  для
					 программ, использующих
					 cup
enter_delete_mode         smdc    dm     Войти  в режим удаления
enter_dim_mode            dim     mh     Включить    пониженную
					 яркость
enter_insert_mode         smir    im     Войти в режим вставки
enter_protected_mode      prot    mp     Войти в защищенный ре-
					 жим
enter_reverse_mode        rev     mr     Войти  в режим инверсии
enter_secure_mode         invis   mk     Войти в режим, в кото-
					 ром   не  изображаются
					 выводимые символы
enter_standout_mode       smso    so     Войти  в режим сообще-
					 ний
enter_underline_mode      smul    us     Войти  в режим подчер-
					 кивания
enter_xon_mode            smxon   SX     Включить xon/xoff про-
					 токол
erase_chars               ech     ec     Удалить   #1  символов
					 (G)
exit_alt_charset_mode     rmacs   ae     Вернуться из  дополни-
					 тельного алфавита
exit_attribute_mode       sgr0    me     Выключить  все атрибуты
exit_ca_mode              rmcup   te     Завершающая    цепочка
					 для программ,  исполь-
					 зующих cup
exit_delete_mode          rmdc    ed     Выйти из режима удале-
					 ния
exit_insert_mode          rmir    ei     Выйти из режима встав-
					 ки
exit_standout_mode        rmso    se     Выйти из режима  сооб-
					 щений
exit_underline_mode       rmul    ue     Выйти  из  режима под-
					 черкивания
exit_xon_mode             rmxon   RX     Выключить     xon/xoff
					 протокол
flash_screen              flash   vb     Видимый звонок  (может
					 не перемещать курсор)
form_feed                 ff      ff     Прогон страницы в тер-
					 минале-принтере (*)
from_status_line          fsl     fs     Возврат  из  служебной
					 строки
init_1string              is1     i1     Первая цепочка инициа-
					 лизации терминала
init_2string              is2     i2     Вторая цепочка инициа-
					 лизации терминала
init_3string              is3     i3     Третья цепочка инициа-
					 лизации терминала
init_file                 if      if     Имя файла, содержащего
					 цепочку  инициализации
					 терминала
init_prog                 iprog   iP     Имя  программы, произ-
					 водящей  инициализацию
					 терминала
insert_character          ich1    ic     Вставить символ
insert_line               il1     al     Вставить пустую строку
					 (*)
insert_padding            ip      ip     Вывести    заполнитель
					 после вставки  символа
					 (*)
key_a1                    ka1     K1     KEY_A1,  0534,   слева
					 вверху на дополнитель-
					 ной клавиатуре
key_a3                    ka3     K3     KEY_A3,  0535,  справа
					 вверху на дополнитель-
					 ной клавиатуре
key_b2                    kb2     K2     KEY_B2, 0536, в центре
					 клавиатуры
key_backspace             kbs     kb     KEY_BACKSPACE,   0407,
					 посылается    клавишей
					 "забой"
key_beg                   kbeg    @1     KEY_BEG, 0542, посыла-
					 ется клавишей BEG
key_btab                  kcbt    kB     KEY_BTAB, 0541,  посы-
					 лается клавишей BTAB
key_c1                    kc1     K4     KEY_C1,  0537,   слева
					 внизу на  дополнитель-
					 ной клавиатуре
key_c3                    kc3     K5     KEY_C3,  0540,  справа
					 внизу  на дополнитель-
					 ной клавиатуре
key_cancel                kcan    @2     KEY_CANCEL, 0543,  по-
					 сылается      клавишей
					 CANCEL
key_catab                 ktbc    ka     KEY_CATAB, 0526, посы-
					 лается        клавишей
					 "очистка  всех табуля-
					 ций"
key_clear                 kclr    kC     KEY_CLEAR, 0515, посы-
					 лается        клавишей
					 "очистка экрана"
key_close                 kclo    @3     KEY_CLOSE, 0544, посы-
					 лается клавишей CLOSE
key_command               kcmd    @4     KEY_COMMAND, 0545, по-
					 сылается клавишей CMD
key_copy                  kcpy    @5     KEY_COPY, 0546,  посы-
					 лается клавишей COPY
key_create                kcrt    @6     KEY_CREATE,  0547, по-
					 сылается      клавишей
					 CREATE
key_ctab                  kctab   kt     KEY_CTAB,  0525, посы-
					 лается        клавишей
					 "очистка табуляции"
key_dc                    kdch1   kD     KEY_DC,  0512, посыла-
					 ется клавишей  "удале-
					 ние символа"
key_dl                    kdl1    kL     KEY_DL,  0510, посыла-
					 ется клавишей  "удале-
					 ние строки"
key_down                  kcud1   kd     KEY_DOWN,  0402, посы-
					 лается        клавишей
					 "стрелка вниз"
key_eic                   krmir   kM     KEY_EIC, 0514, посыла-
					 ется  rmir  или smir в
					 режиме вставки
key_end                   kend    @7     KEY_END, 0550, посыла-
					 ется клавишей END
key_enter                 kent    @8     KEY_ENTER, 0527, посы-
					 лается клавишей ENTER/
					 SEND
key_eol                   kel     kE     KEY_EOL, 0517, посыла-
					 ется клавишей "очистка
					 конца строки"
key_eos                   ked     kS     KEY_EOL, 0516, посыла-
					 ется клавишей "очистка
					 конца экрана"
key_exit                  kext    @9     KEY_EXIT, 0551,  посы-
					 лается клавишей EXIT
key_f0                    kf0     k0     KEY_F(0), 0410,  посы-
					 лается  функциональной
					 клавишей f0
key_f1                    kf1     k1     KEY_F(1), 0411,  посы-
					 лается  функциональной
					 клавишей f1
key_f2                    kf2     k2     KEY_F(2), 0412,  посы-
					 лается  функциональной
					 клавишей f2
key_f3                    kf3     k3     KEY_F(3), 0413,  посы-
					 лается  функциональной
					 клавишей f3
key_f4                    kf4     k4     KEY_F(4), 0414,  посы-
					 лается  функциональной
					 клавишей f4
key_f5                    kf5     k5     KEY_F(5), 0415,  посы-
					 лается  функциональной
					 клавишей f5
key_f6                    kf6     k6     KEY_F(6), 0416,  посы-
					 лается  функциональной
					 клавишей f6
key_f7                    kf7     k7     KEY_F(7), 0417,  посы-
					 лается  функциональной
					 клавишей f7
key_f8                    kf8     k8     KEY_F(8), 0420,  посы-
					 лается  функциональной
					 клавишей f8
key_f9                    kf9     k9     KEY_F(9), 0421,  посы-
					 лается  функциональной
					 клавишей f9
key_f10                   kf10    k;     KEY_F(10), 0422, посы-
					 лается  функциональной
					 клавишей f10
key_f11                   kf11    F1     KEY_F(11), 0423, посы-
					 лается  функциональной
					 клавишей f11
key_f12                   kf12    F2     KEY_F(12), 0424, посы-
					 лается  функциональной
					 клавишей f12
key_f13                   kf13    F3     KEY_F(13), 0425, посы-
					 лается  функциональной
					 клавишей f13
key_f14                   kf14    F4     KEY_F(14), 0426, посы-
					 лается  функциональной
					 клавишей f14
key_f15                   kf15    F5     KEY_F(15), 0427, посы-
					 лается  функциональной
					 клавишей f15
key_f16                   kf16    F6     KEY_F(16), 0430, посы-
					 лается  функциональной
					 клавишей f16
key_f17                   kf17    F7     KEY_F(17), 0431, посы-
					 лается  функциональной
					 клавишей f17
key_f18                   kf18    F8     KEY_F(18), 0432, посы-
					 лается  функциональной
					 клавишей f18
key_f19                   kf19    F9     KEY_F(19), 0433, посы-
					 лается  функциональной
					 клавишей f19
key_f20                   kf20    FA     KEY_F(20), 0434, посы-
					 лается  функциональной
					 клавишей f20
key_f21                   kf21    FB     KEY_F(21), 0435, посы-
					 лается  функциональной
					 клавишей f21
key_f22                   kf22    FC     KEY_F(22), 0436, посы-
					 лается  функциональной
					 клавишей f22
key_f23                   kf23    FD     KEY_F(23), 0437, посы-
					 лается  функциональной
					 клавишей f23
key_f24                   kf24    FE     KEY_F(24), 0440, посы-
					 лается  функциональной
					 клавишей f24
key_f25                   kf25    FF     KEY_F(25), 0441, посы-
					 лается  функциональной
					 клавишей f25
key_f26                   kf26    FG     KEY_F(26), 0442, посы-
					 лается  функциональной
					 клавишей f26
key_f27                   kf27    FH     KEY_F(27), 0443, посы-
					 лается  функциональной
					 клавишей f27
key_f28                   kf28    FI     KEY_F(28), 0444, посы-
					 лается  функциональной
					 клавишей f28
key_f29                   kf29    FJ     KEY_F(29), 0445, посы-
					 лается  функциональной
					 клавишей f29
key_f30                   kf30    FK     KEY_F(30), 0446, посы-
					 лается  функциональной
					 клавишей f30
key_f31                   kf31    FL     KEY_F(31), 0447, посы-
					 лается  функциональной
					 клавишей f31
key_f32                   kf32    FM     KEY_F(32), 0450, посы-
					 лается  функциональной
					 клавишей f32
key_f33                   kf33    FN     KEY_F(33), 0451, посы-
					 лается  функциональной
					 клавишей f33
key_f34                   kf34    FO     KEY_F(34), 0452, посы-
					 лается  функциональной
					 клавишей f34
key_f35                   kf35    FP     KEY_F(35), 0453, посы-
					 лается  функциональной
					 клавишей f35
key_f36                   kf36    FQ     KEY_F(36), 0454, посы-
					 лается  функциональной
					 клавишей f36
key_f37                   kf37    FR     KEY_F(37), 0455, посы-
					 лается  функциональной
					 клавишей f37
key_f38                   kf38    FS     KEY_F(38), 0456, посы-
					 лается  функциональной
					 клавишей f38
key_f39                   kf39    FT     KEY_F(39), 0457, посы-
					 лается  функциональной
					 клавишей f39
key_f40                   kf40    FU     KEY_F(40), 0460, посы-
					 лается  функциональной
					 клавишей f40
key_f41                   kf41    FV     KEY_F(41), 0461, посы-
					 лается  функциональной
					 клавишей f41
key_f42                   kf42    FW     KEY_F(42), 0462, посы-
					 лается  функциональной
					 клавишей f42
key_f43                   kf43    FX     KEY_F(43), 0463, посы-
					 лается  функциональной
					 клавишей f43
key_f44                   kf44    FY     KEY_F(44), 0464, посы-
					 лается  функциональной
					 клавишей f44
key_f45                   kf45    FZ     KEY_F(45), 0465, посы-
					 лается  функциональной
					 клавишей f45
key_f46                   kf46    Fa     KEY_F(46), 0466, посы-
					 лается  функциональной
					 клавишей f46
key_f47                   kf47    Fb     KEY_F(47), 0467, посы-
					 лается  функциональной
					 клавишей f47
key_f48                   kf48    Fc     KEY_F(48), 0470, посы-
					 лается  функциональной
					 клавишей f48
key_f49                   kf49    Fd     KEY_F(49), 0471, посы-
					 лается  функциональной
					 клавишей f49
key_f50                   kf50    Fe     KEY_F(50), 0472, посы-
					 лается  функциональной
					 клавишей f50
key_f51                   kf51    Ff     KEY_F(51), 0473, посы-
					 лается  функциональной
					 клавишей f51
key_f52                   kf52    Fg     KEY_F(52), 0474, посы-
					 лается  функциональной
					 клавишей f52
key_f53                   kf53    Fh     KEY_F(53), 0475, посы-
					 лается  функциональной
					 клавишей f53
key_f54                   kf54    Fi     KEY_F(54), 0476, посы-
					 лается  функциональной
					 клавишей f54
key_f55                   kf55    Fj     KEY_F(55), 0477, посы-
					 лается  функциональной
					 клавишей f55
key_f56                   kf56    Fk     KEY_F(56), 0500, посы-
					 лается  функциональной
					 клавишей f56
key_f57                   kf57    Fl     KEY_F(57), 0501, посы-
					 лается  функциональной
					 клавишей f57
key_f58                   kf58    Fm     KEY_F(58), 0502, посы-
					 лается  функциональной
					 клавишей f58
key_f59                   kf59    Fn     KEY_F(59), 0503, посы-
					 лается  функциональной
					 клавишей f59
key_f60                   kf60    Fo     KEY_F(60), 0504, посы-
					 лается  функциональной
					 клавишей f60
key_f61                   kf61    Fp     KEY_F(61), 0505, посы-
					 лается  функциональной
					 клавишей f61
key_f62                   kf62    Fq     KEY_F(62), 0506, посы-
					 лается  функциональной
					 клавишей f62
key_f63                   kf63    Fr     KEY_F(63), 0507, посы-
					 лается  функциональной
					 клавишей f63
key_find                  kfnd    @0     KEY_FIND,  0552, посы-
					 лается клавишей FIND
key_help                  khlp    %1     KEY_HELP, 0553,  посы-
					 лается клавишей HELP
key_home                  khome   kh     KEY_HOME,  0406, посы-
					 лается клавишей HOME
key_ic                    kich1   kI     KEY_IC, 0513,  посыла-
					 ется  клавишей  "вста-
					 вить символ"
key_il                    kil1    kA     KEY_IL, 0511,  посыла-
					 ется  клавишей  "вста-
					 вить строку"
key_left                  kcub1   kl     KEY_LEFT, 0404,  посы-
					 лается        клавишей
					 "стрелка влево"
key_ll                    kll     kH     KEY_LL, 0533,  посыла-
					 ется   клавишей   HOME
					 DOWN
key_mark                  kmrk    %2     KEY_MARK, 0554,  посы-
					 лается клавишей MARK
key_message               kmsg    %3     KEY_MESSAGE, 0555, по-
					 сылается      клавишей
					 MESSAGE
key_move                  kmov    %4     KEY_MOVE, 0556,  посы-
					 лается клавишей MOVE
key_next                  knxt    %5     KEY_NEXT,  0557, посы-
					 лается клавишей NEXT
key_npage                 knp     kN     KEY_NPAGE, 0522, посы-
					 лается  клавишей  NEXT
					 PAGE
key_open                  kopn    %6     KEY_OPEN,  0560, посы-
					 лается клавишей OPEN
key_options               kopt    %7     KEY_OPTIONS, 0561, по-
					 сылается      клавишей
					 OPTIONS
key_ppage                 kpp     kP     KEY_PPAGE, 0523, посы-
					 лается  клавишей  PREV
					 PAGE
key_previous              kprv    %8     KEY_PREVIOUS,    0562,
					 посылается    клавишей
					 PREVIOUS
key_print                 kprt    %9     KEY_PRINT, 0532, посы-
					 лается клавишей  PRINT
					 или COPY
key_redo                  krdo    %0     KEY_REDO,  0563, посы-
					 лается клавишей REDO
key_reference             kref    &1     KEY_REFERENCE,   0564,
					 посылается    клавишей
					 REFERENCE
key_refresh               krfr    &2     KEY_REFRESH, 0565, по-
					 сылается      клавишей
					 REFRESH
key_replace               krpl    &3     KEY_REPLACE, 0566, по-
					 сылается      клавишей
					 REPLACE
key_restart               krst    &4     KEY_RESTART, 0567, по-
					 сылается      клавишей
					 RESTART
key_resume                kres    &5     KEY_RESUME,  0570, по-
					 сылается      клавишей
					 RESUME
key_right                 kcuf1   kr     KEY_RIGHT, 0405, посы-
					 лается        клавишей
					 "стрелка вправо"
key_save                  ksav    &6     KEY_SAVE, 0571,  посы-
					 лается клавишей SAVE
key_sbeg                  kBEG    &9     KEY_SBEG,  0572, посы-
					 лается        клавишей
					 SHIFT+BEG
key_scancel               kCAN    &0     KEY_SCANCEL, 0573, по-
					 сылается      клавишей
					 SHIFT+CANCEL
key_scommand              kCMD    *1     KEY_SCOMMAND,    0574,
					 посылается    клавишей
					 SHIFT+COMMAND
key_scopy                 kCPY    *2     KEY_SCOPY, 0575, посы-
					 лается        клавишей
					 SHIFT+COPY
key_screate               kCRT    *3     KEY_SCREATE, 0576, по-
					 сылается      клавишей
					 SHIFT+CREATE
key_sdc                   kDC     *4     KEY_SDC, 0577, посыла-
					 ется          клавишей
					 SHIFT+"удалить  символ"
key_sdl                   kDL     *5     KEY_SDL, 0600, посыла-
					 ется          клавишей
					 SHIFT+"удалить  строку"
key_select                kslt    *6     KEY_SELECT, 0601,  по-
					 сылается      клавишей
					 SELECT
key_send                  kEND    *7     KEY_SEND, 0602,  посы-
					 лается клавишей SEND
key_seol                  kEOL    *8     KEY_SEOL,  0603, посы-
					 лается        клавишей
					 SHIFT+EOL
key_sexit                 kEXT    *9     KEY_SEXIT, 0604, посы-
					 лается        клавишей
					 SHIFT+EXIT
key_sf                    kind    kF     KEY_SF, 0520,  посыла-
					 ется  клавишей  SCROLL
					 FORWARD
key_sfind                 kFND    *0     KEY_SFIND, 0605, посы-
					 лается        клавишей
					 SHIFT+FIND
key_shelp                 kHLP    #1     KEY_SHELP, 0606, посы-
					 лается        клавишей
					 SHIFT+HELP
key_shome                 kHOM    #2     KEY_SHOME, 0607, посы-
					 лается        клавишей
					 SHIFT+HOME
key_sic                   kIC     #3     KEY_SIC, 0610, посыла-
					 ется          клавишей
					 SHIFT+"вставить   сим-
					 вол"
key_sleft                 kLFT    #4     KEY_SLEFT, 0611, посы-
					 лается        клавишей
					 SHIFT+"стрелка влево"
key_smessage              kMSG    %1     KEY_SMESSAGE,    0612,
					 посылается    клавишей
					 SHIFT+MESSAGE
key_smove                 kMOV    %b     KEY_SMOVE, 0613, посы-
					 лается        клавишей
					 SHIFT+MOVE
key_snext                 kNXT    %c     KEY_SNEXT, 0614, посы-
					 лается        клавишей
					 SHIFT+NEXT
key_soptions              kOPT    %d     KEY_SOPTIONS,    0615,
					 посылается    клавишей
					 SHIFT+OPTIONS
key_sprevious             kPRV    %e     KEY_SPREVIOUS,   0616,
					 посылается    клавишей
					 SHIFT+PREVIOUS
key_sprint                kPRT    %f     KEY_SPRINT,  0617, по-
					 сылается      клавишей
					 SHIFT+PRINT
key_sr                    kri     kR     KEY_SR,  0521, посыла-
					 ется  клавишей  SCROLL
					 BACK
key_sredo                 kRDO    %g     KEY_SREDO, 0620, посы-
					 лается        клавишей
					 SHIFT+REDO
key_sreplace              kRPL    %h     KEY_SREPLACE,    0621,
					 посылается    клавишей
					 SHIFT+REPLACE
key_sright                kRIT    %i     KEY_SRIGHT, 0622,  по-
					 сылается      клавишей
					 SHIFT+"стрелка  вправо"
key_srsume                kRES    %j     KEY_SRSUME, 0623,  по-
					 сылается      клавишей
					 SHIFT+RESUME
key_ssave                 kSAV    !1     KEY_SSAVE, 0624, посы-
					 лается        клавишей
					 SHIFT+SAVE
key_ssuspend              kSPD    !2     KEY_SSUSPEND,    0625,
					 посылается    клавишей
					 SHIFT+SUSPEND
key_stab                  khts    kT     KEY_STAB,  0524, посы-
					 лается  клавишей   SET
					 TAB
key_sundo                 kUND    !3     KEY_SUNDO, 0626, посы-
					 лается        клавишей
					 SHIFT+UNDO
key_suspend               kspd    &7     KEY_SUSPEND, 0627, по-
					 сылается      клавишей
					 SUSPEND
key_undo                  kund    &8     KEY_UNDO,  0630, посы-
					 лается клавишей UNDO
key_up                    kcuu1   ku     KEY_UP, 0403,  посыла-
					 ется клавишей "стрелка
					 вверх"
keypad_local              rmkx    ke     Выход из "прозрачного"
					 режима
keypad_xmit               smkx    ks     Вход   в  "прозрачный"
					 режим
lab_f0                    lf0     l0     f0 если на ней написа-
					 но не f0
lab_f1                    lf1     l1     f1 если на ней написа-
					 но не f1
lab_f2                    lf2     l2     f2 если на ней написа-
					 но не f2
lab_f3                    lf3     l3     f3 если на ней написа-
					 но не f3
lab_f4                    lf4     l4     f4 если на ней написа-
					 но не f4
lab_f5                    lf5     l5     f5 если на ней написа-
					 но не f5
lab_f6                    lf6     l6     f6 если на ней написа-
					 но не f6
lab_f7                    lf7     l7     f7 если на ней написа-
					 но не f7
lab_f8                    lf8     l8     f8 если на ней написа-
					 но не f8
lab_f9                    lf9     l9     f9 если на ней написа-
					 но не f9
lab_f10                   lf10    la     f10  если на ней напи-
					 сано не f10
label_off                 rmln    LF     Выключить программиру-
					 емые надписи на клави-
					 шах
label_on                  smln    LO     Включить программируе-
					 мые надписи на  клави-
					 шах
meta_off                  rmm     mo     Выключить режим   МЕТА
					 (взведение 8-го бита)
meta_on                   smm     mm     Включить   режим  МЕТА
					 (взведение 8-го бита)
newline                   nel     nw     Перевод  строки (возв-
					 рат каретки и  переход
					 к новой строке)
pad_char                  pad     pc     Символ-заполнитель от-
					 личный от нуля
parm_dch                  dch     DC     Удалить   #1  символов
					 (G*)
parm_delete_line          dl      DL     Удалить #1 строк (G*)
parm_down_cursor          cud     DO     Курсор  вниз   на   #1
					 строк (G*)
parm_ich                  ich     IC     Вставить   #1   пустых
					 символов (G*)
parm_index                indn    SF     Сроллировать вперед на
					 #1 строк (G)
parm_insert_line          il      AL     Вставить   #1   пустых
					 строк (G*)
parm_left_cursor          cub     LE     Переместить     курсор
					 влево  на  #1  позиций
					 (G)
parm_right_cursor         cuf     RI     Переместить     курсор
					 вправо на  #1  позиций
					 (G*)
parm_rindex               rin     SR     Сроллировать  назад на
					 #1 строк (G)
parm_up_cursor            cuu     UP     Переместить     курсор
					 вверх  на  #1  позиций
					 (G*)
pkey_key                  pfkey   pk     Программировать  функ-
					 циональную  клавишу #1
					 на печать строки #2
pkey_local                pfloc   pl     Программировать  функ-
					 циональную  клавишу #1
					 на  выполнение  строки
					 #2
pkey_xmit                 pfx     px     Программировать  функ-
					 циональную  клавишу #1
					 на выдачу цепочки #2
pkey_norm                 pln     pn     Программировать  метку
					 #1 на показ цепочки  #2
print_screen              mc0     ps     Напечатать  содержимое
					 экрана
prtr_non                  mc5p    pO     Включить  принтер  для
					 печати #1 байт
prtr_off                  mc4     pf     Выключить принтер
prtr_on                   mc5     po     Включить принтер
repeat_char               rep     rp     Повторить символ #1 #2
					 раз (G*)
req_for_input             rfi     RF     Послать следующий вве-
					 денный   символ   (для
					 pty)
reset_1string             rs1     r1     Приведение терминала в
					 нормальное состояние
reset_2string             rs2     r2     Приведение терминала в
					 нормальное состояние
reset_3string             rs3     r3     Приведение терминала в
					 нормальное состояние
reset_file                rf      rf     Имя файла, содержащего
					 коды   для  приведения
					 терминала в нормальное
					 состояние
restore_cursor            rc      rc     Восстановить   позицию
					 курсора (при последней
					 команде sc)
row_address               vpa     cv     Абсолютная  вертикаль-
					 ная позиция (G)
save_cursor               sc      sc     Сохранить позицию кур-
					 сора
scroll_forward            ind     sf     Сроллировать     текст
					 вверх
scroll_reverse            ri      sr     Сроллировать     текст
					 вниз
set_attributes            sgr     sa     Задать  атрибуты изоб-
					 ражения #1-#9 (G)
set_left_margin           smgl    ML     Установить левую  гра-
					 ницу
set_right_margin          smgr    MR     Установить правую гра-
					 ницу
set_tab                   hts     st     Установить   остановку
					 по табуляции  во  всех
					 строках  в текущей ко-
					 лонке
set_window                wind    wi     Установить текущее ок-
					 но  в  строках  #1-#2,
					 колонках #3-#4 (G)
tab                       ht      ta     Переместиться к следу-
					 ющей остановке по  та-
					 буляции
to_status_line            tsl     ts     Перейти   в  служебную
					 строку, колонку #1
underline_char            uc      uc     Подчеркнуть один  сим-
					 вол и встать за ним
up_half_line              hu      hu     На полстроки вверх
xoff_character            xoffc   XF     Символ XOFF
xon_character             xonc    XN     Символ XON

     Пример задания элемента исходного файла 
	Следующий элемент, описывающий терминал Concept-100,  в
	момент  написания  настоящего руководства являлся одним
	из самых сложных в файле terminfo.

      c100|concept100|concept|c104|c100-4p|hds concept 100,
	am, eo, mir, ul, xenl,
	cols#80, lines#24, pb#9600, vt#8,
	bel=^G, blink=\EC, clear=\E?\E^E$<2*>, cr=$<9>\r,
	cub1=\b, cud1=\n, cuf1=\E=,
	cup=\Ea%p1%'\s'%+%c%p2%'\s'%+%c, cuu1=\E;,
	dch1=\E^Q$<16*>, dim=\EE, dl1=\E^B$<3*>,
	ed=\E^E$<16*>, el=\E^U$<16>, flash=\Ek$<20>\EK,
	ht=\t$<8>, il1=\E^R$<3*>, ind=\n, .ind=\n$<9>, invis=\EH,
	ip=$<16*>, is1=\EK,
	is2=\EU\Ef\E7\E5\E8\El\ENH\EK\E\0\Eo&\0\Eo'\E,
	is3=\Ev\s\s\s\s$<6>\Ep\n, kbs=\b, kcbt=\E', kctab=\E_,
	kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;,
	kdch1=\E^Q, kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5,
	kf2=\E6, kf3=\E7, kf4=\E8, kf5=\E9, kf6=\E:a,
	kf7=\E:b, kf8=\E:c, khome=\E?, khts=\E], kich1=\E^P,
	kil1=\E^R, kind=\E[, knp=\E-, kpp=\E., kri=\E\\,
	krmir=\E\200, mc4=^^o\s\E\EQ!\EYP^W,
	mc5=\EQ"\EY(^W\EYD\Eo\s^^, prot=\EI,
	rep=\Er%p1%c%p2%'\s'%+%c$<.2*>, rev=\ED,
	rmcup=\Ev\s\s\s\s$<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex,
	rmso=\Ed, rmul=\Eg, sgr0=\EN@,
	smcup=\EU\Ev\s\s8p\Ep\r\E^U$<16>, smir=\E^P, smkx=\EX,
	smso=\ED, smul=\EG,

	Элементы  могут  располагаться  на  нескольких строках,
	каждая строка, кроме первой, должна начинаться с пробе-
	ла. Строки, начинающиеся с символа #, считаются коммен-
	тариями.

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

	Все характеристики имеют имена. Например, то, что  тер-
	минал Concept имеет автоматические границы (то есть при
	достижении конца строки автоматически выполняется возв-
	рат каретки и перевод строки), отражается характеристи-
	кой  am. За числовыми характеристиками следует знак # и
	числовое значение,  например,  для  терминала  Concept,
	cols#80  задает число колонок, равное 80. Числовое зна-
	чение может быть записано как десятичное,  восьмеричное
	или  шестнадцатеричное,  в соответствии с соглашениями,
	принятыми в языке C.

	Наконец, символьные характеристики, например el (после-
	довательность кодов для очистки конца строки), задаются
	именем (от двух до пяти символов), за которыми  следует
	знак = и цепочка символов, завершающаяся запятой. В лю-
	бом месте внутри цепочки символов может встречаться за-
	держка  в миллисекундах, заключенная в "скобки" $<...>.
	Например, задержка el=\EK$<3> обеспечивается процедурой
	tputs [см. curses(3X)] путем посылки  символов-заполни-
	телей.  Задержка  может задаваться числом, например 20,
	или числом, за которым следует символ * (например, 3*),
	символ / (например, 5/) или оба символа (например, 10*/
	). Символ * означает, что задержка пропорциональна  ко-
	личеству  строк,  вовлеченных  в операцию, при этом для
	каждой строки задержка равна  указанной  (заметим,  что
	для  операции  вставки  символа число вовлеченных строк
	всегда равно 1). При использовании * можно задавать за-
	держку с точностью до 0.1 миллисекунды (с одним  знаком
	после  десятичной точки, например 3.5*). Символ / озна-
	чает, что задержка обязательна. В противном случае, ес-
	ли терминал поддерживает xon/xoff протокол (характерис-
	тика xon), задержка не обязательна  и  будет  использо-
	ваться  только  для  оценки сложности операции, а также
	при двоичном режиме передачи. Обязательная задержка вы-
	полняется всегда, независимо от значения характеристики
	xon.

	Для  удобства  записи  управляющих  последовательностей
	применяются следующие соглашения. Последовательности \E
	и \e обозначают символ ESCAPE (код ASCII 033), ^x обоз-
	начает  CTRL+x  для всех допустимых x, а последователь-
	ности \n, \l, \r, \t, \b, \f и  \s  представляют  соот-
	ветственно  перевод  строки,  переход  к  новой строке,
	возврат каретки, горизонтальную табуляцию,  возврат  на
	шаг,  "переход к новой странице и пробел. Дополнительно
	имеются следующие последовательности:  \^  представляет
	^,  \\  представляет  \,  \,  представляет  запятую, \:
	представляет :, \0 представляет пустой символ (на самом
	деле \0 порождает символ \200, который не является тер-
	минатором строки и действует на большинстве терминалов,
	как пустой символ).  Наконец,  символы  можно  задавать
	трехзначным  восьмеричным  числом после знака \ (напри-
	мер, \123).

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

     Подготовка описаний 
	Наиболее эффективный путь  подготовки  описания  нового
	терминала  -  выбрать  из базы данных terminfo описание
	похожего терминала, а затем постепенно исправлять  его,
	каждый  раз проверяя исправления запуском редактора vi.
	Для проверки нового описания установите переменной  ок-
	ружения  TERMINFO  значение, равное имени каталога, где
	хранится скомпилированное новое описание,  после  этого
	все  программы будут использовать новое описание вместо
	стандартного. Для определения необходимой задержки  при
	вставке строки (если она не указана производителем обо-
	рудования)  можно  рекомендовать следующий тест. Заком-
	ментируйте в описании характеристику xon,  войдите  ре-
	дактором  vi в большой файл, удалите 16 строк, находясь
	на середине экрана, и затем быстро несколько раз нажми-
	те клавишу u. Если экран испортился, то требуется б яль-
	шая задержка. Аналогичный тест можно  использоваться  и
	для вставки символа.

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

     Основные характеристики 
	Количество колонок в каждой строке  терминала  задается
	числовой  характеристикой  cols.  Если у терминала есть
	экран, число строк на нем задается числовой характерис-
	тикой lines. Если терминал переводит строку при  дости-
	жении правой границы, ему нужно приписать булеву харак-
	теристику am. Если терминал может очистить экран, поме-
	щая курсор в начальную позицию, следует задать символь-
	ную  характеристику clear. Если терминал при выводе од-
	ного символа поверх другого  производит  не  замену,  а
	надпечатку,  должна  быть указана булева характеристика
	os. Если терминал является печатающим устройством, нуж-
	но указать одновременно булевы характеристики hc и  os.
	(Характеристика   os   применяется  к  терминалам  типа
	Tektronix 4010, печатающим  устройствам  и  терминалам,
	поддерживающим символы языка APL.) Если существует код,
	помещающий курсор на левую границу текущей строки, ука-
	жите его в символьной характеристике cr (обычно это код
	CTRL+M, возврат каретки). Если существует код, произво-
	дящий  звуковой сигнал, укажите его в символьной харак-
	теристике bel. Если терминал, как большинство  термина-
	лов, поддерживает протокол xon/xoff, укажите булеву ха-
	рактеристику xon.

	Если  существует код, перемещающий курсор на одну пози-
	цию влево (обычно это CTRL+H, возврат на шаг),  укажите
	его в символьной характеристике cub1. Аналогично, коды,
	перемещающие курсор вправо, вверх и вниз задаются в ха-
	рактеристиках  cuf1, cuu1 и cud1. Эти локальные переме-
	щения курсора не должны изменять текст,  через  который
	проходит  курсор.  Например, обычно нельзя использовать
	cuf1=\s, поскольку пробел стирает символ, находящийся в
	текущей позиции.

	Важно отметить, что локальные перемещения курсора нель-
	зя применять, если  курсор находится на верхнем или ле-
	вом краю экрана. Если терминал не обладает  характерис-
	тикой  bw, программа не должна пытаться сдвинуть курсор
	влево из самой левой позиции. Нельзя также пытаться пе-
	реместиться вверх из самой верхней  строки.

	Для  того, чтобы сдвинуть текст вверх, необходимо пере-
	меститься в левый нижний угол экрана и послать на  тер-
	минал  цепочку символов, заданную в характеристике ind.
	Для того, чтобы сдвинуть текст вниз,  необходимо  пере-
	меститься  в левый верхний угол экрана и послать цепоч-
	ку, заданную в характеристике ri. Если курсор не  нахо-
	дится  в указанных позициях, цепочки ind и ri применять
	нельзя. Существуют также параметризованные  характерис-
	тики  indn  и  rin, которые отличаются от характеристик
	ind и ri только тем, что у них есть один параметр,  за-
	дающий  число  строк, на которое необходимо сдвинуться.
	Параметризованные характеристики можно применять только
	в указанных позициях.

	Хотя наличие булевой характеристики am  свидетельствует
	о  том,  что терминал автоматически переводит курсор на
	следующую строку при достижении последней колонки,  это
	не  обязательно  верно для сдвига вправо (cuf1) из пос-
	ледней колонки. Единственное допустимое локальное пере-
	мещение, когда курсор находится на границе экрана - это
	cub1 на левой границе, если терминал обладает  характе-
	ристикой  bw,  при  этом  курсор перемещается на правую
	границу предыдущей строки, что  удобно,  например,  ис-
	пользовать для рисования рамки по границе экрана. Одна-
	ко,  если  терминал не обладает характеристикой bw, эф-
	фект перемещения влево с левой  границы  не  определен.
	Если на терминале есть переключатель, включающий и вык-
	лючающий автоматические границы, в базе данных terminfo
	предполагается,  что  он находится в положении "включе-
	но". Если у терминала есть команда, переводящая  курсор
	в  первую колонку следующей строки, она задается в сим-
	вольной характеристике nel.

	Упомянутых возможностей достаточно для описания как пе-
	чатающий устройств, так и дисплеев. Например,  телетайп
	(модель 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,

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

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

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

	%%              вывести символ %
	%[[:]флаги][ширина[.точность]][doxXs] 
			вывести  pop()  в  формате, аналогичном
			printf(3S),  в  качестве  флагов  можно
			указать [-+#] и пробел.
	%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)
	%l              push(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 - тела

	Если в команде %[doxXs] используются флаги - или +, не-
	обходимо  перед ними поставить :, чтобы было отличие от
	команд %- и %+, например %:-16.16s.

	Рассмотрим несколько примеров.

	На  терминале  Hewlett-Packard 2645 для того, чтобы по-
	местить курсор в 3-ю строку 12-ю колонку требуется  вы-
	вести  последовательность \E&a12c03Y с задержкой 6 мил-
	лисекунд. Обратите внимание, что порядок номеров строки
	и  колонки обратный, причем номер дополняется слева ну-
	лем до двух цифр. В этом случае описание характеристики
	cup будет иметь вид cup=\E&a%p2%2.2dc%p1%2.2dY$<6>.

	На терминале Micro-Term ACT-IV требуется, чтобы  номеру
	строки и колонки предшествовал символ ^T, номера строки
	и колонки задаются  в  двоичном  виде,  таким  образом,
	cup=^T%p1%c%p2%c.  Терминалы, в которых используется %c
	должны иметь возможности сдвинуть курсор на шаг влево и
	на шаг вверх (cub1 и cuu1), так как не всегда безопасно
	выводить на терминал коды \n, ^D и \r, система может их
	неправильно интерпретировать или  проигнорировать  (что
	касается табуляции \t, библиотечные подпрограммы, рабо-
	тающие  с terminfo, всегда устанавливают характеристики
	терминала так, что табуляции не заменяются на  пробелы,
	поэтому посылать на терминал табуляции можно без опасе-
	ний).

	Последний пример относится к терминалу  LSI  ADM-3a,  в
	котором к адресу строки и колонки прибавляется код про-
	бела,  то  есть  cup=\E=%p1%'\s'%+%c%p2%'\s'%+%c. После
	вывода двух символов \E= в стек помещается первый пара-
	метр, затем туда же кладется код  пробела  (32),  затем
	сумма  замещает  два верхних элемента стека, после чего
	она выводится в двоичном виде. После этого то же  самое
	повторяется со вторым параметром.

     Перемещения курсора 
	Если  терминал  может  быстро перемещать курсор в левый
	верхний угол экрана, эта возможность задается  характе-
	ристикой home. Аналогично, быстрый способ перемещения в
	левый  нижний  угол  задается характеристикой ll. Часто
	для этого используется перемещение на единицу вверх  из
	левого верхнего угла, однако, как это уже отмечалась, в
	программе  не следует делать предположения относительно
	эффектов локальных перемещений на границах экрана.  За-
	метим,  что перемещение в левый верхний угол экрана эк-
	вивалентно перемещению по адресу  (0,0)  без  изменения
	привязки  экрана  к  дисплейной памяти (если дисплейная
	память превышает по размерам экран). Например на терми-
	налах Hewlett-Packard в  качестве  характеристики  home
	нельзя использовать \EH.

	Если  у терминала есть возможности абсолютной установки
	строки или колонки, адреса задаются однопараметрически-
	ми характеристиками hpa (горизонтальное  позиционирова-
	ние)  и vpa (вертикальное позиционирование). Иногда это
	бывает короче универсального двухпараметрического пози-
	ционирования (например, для  терминала  Hewlett-Packard
	2645)  и используется вместо cup. Если имеются парамет-
	ризованные локальные  перемещения  (например,  перемес-
	титься  на n позиций вправо), они задаются однопарамет-
	рическими характеристиками cud, cub, cuf и cuu, что ис-
	пользуется на  терминалах,  не  имеющих  характеристики
	cup, например Tektronix 4025.

     Очистка областей 
	Если терминал может очистить конец текущей строки,  ос-
	тавив курсор на прежнем месте, это задается характерис-
	тикой  el.  Если терминал может очистить начало текущей
	строки до позиции курсора  включительно,  это  задается
	характеристикой el1. Если терминал может очистить стро-
	ки,  начиная  с текущей и до конца экрана, это задается
	характеристикой ed, которой можно пользоваться,  только
	если  курсор находится в первой колонке. Таким образом,
	очистка конца экрана может быть проэмулирована удалени-
	ем большого числа строк.

     Удаление/вставка строк 
	Если терминал может вставить пустую строку перед  теку-
	щей,  это  задается  характеристикой il1, которой можно
	пользоваться, только если курсор находится в первой ко-
	лонке. Курсор при этом должен оказаться на  только  что
	вставленной строке. Если терминал может удалить текущую
	строку, это задается характеристикой dl1, которой можно
	пользоваться, только если курсор находится в первой ко-
	лонке удаляемой строки. Версии характеристик il1 и dl1,
	принимающие  в  качестве  параметра число удаляемых или
	вставляемых строк, задаются, как  характеристики  il  и
	dl.

	Если терминал может устанавливать область  роллирования
	с  разрушением  (как,  например, терминал VT100), соот-
	ветствующая команда  описывается  характеристикой  csr,
	которая  имеет 2 параметра: верхняя и нижняя строки об-
	ласти роллирования. К сожалению, после выполнения  этой
	команды  позиция  курсора оказывается неопределенной. С
	помощью этой команды можно  добиться  эффекта  удаления
	или вставки строки, рекомендуется при этом пользоваться
	командами  sc и rc (запомнить позицию курсора и восста-
	новить ее). Вставка строк на  границах  экрана  удобнее
	выполнять командами ri и ind, в том числе и на тех тер-
	миналах, которые могут вставлять и удалять строки в лю-
	бом месте.

	Некоторые терминалы могут устанавливать область  ролли-
	рования без разрушения. Чтобы определить, к какому типу
	относится Ваш терминал, создайте область роллирования в
	середине  экрана,  поместите данные в нижнюю строку об-
	ласти роллирования и выполните команду ri,  за  которой
	dl1  или ind. Если данные из нижней строки, исчезнувшие
	после команды ri, восстановились на экране после коман-
	ды  dl1  или ind, значит Ваш терминал устанавливает об-
	ласть роллирования без разрушения. В этом случае указы-
	вать характеристику csr нельзя.

	Если терминал может определять окно, как часть дисплей-
	ной памяти, к которой относятся команды,  это  задается
	характеристикой  wind,  которая имеет четыре параметра:
	начальная и конечная строки памяти, начальная и  конеч-
	ная колонки памяти, в указанном порядке.

	Если терминал может использовать дисплейную память ниже
	экрана,  это  задается булевой характеристикой db, воз-
	можность использования дисплейной  памяти  выше  экрана
	задается  булевой характеристикой da. Это означает, что
	удаление строки или роллирование экрана может  привести
	к  появлению  непустой  строки внизу или роллирование с
	помощью ri может привести к появлению  непустой  строки
	вверху.

     Удаление/вставка символов 
	Существует два способа удаления/вставки символов, кото-
	рые могут быть описаны в terminfo. Чаще всего, удаление
	и  вставка символов приводит к сдвигу всего конца теку-
	щей строки. Однако есть терминалы, например Concept 100
	или Perkin Elmer Owl, которые различают  выведенные  на
	экран  пробелы  и  места,  куда  ничто не было выведено
	(пустоты). При этом при  вставке  и  удалении  символов
	сдвиг затрагивает только пустоты, которые либо удаляют-
	ся  с экрана, либо заменяются на два пустых символа. Вы
	можете определить к какому типу относится Ваш терминал,
	очистив экран и напечатав несколько символов вперемежку
	с перемещением курсора. Напечатайте abc def,  используя
	между  словами  не пробел, а перемещение курсора. Затем
	поместите курсор перед abc и переведите терминал в  ре-
	жим  вставки. Если последующий ввод символов приводит к
	сдвигу строки целиком, а символы, выходящие за край эк-
	рана пропадают, то Ваш терминал не различает пробелы  и
	пустоты.  Если abc вначале пододвигается к def, а затем
	они вместе движутся к краю экрана и переходят на следу-
	ющую строку, то Ваш терминал относится ко второму типу,
	и для него должна быть задана булева характеристика in.
	Хотя логически переход символов на следующую  строку  и
	специальная  обработка пустот представляют собой разные
	вещи, в terminfo используется одна характеристика, пос-
	кольку нам не встречался терминал, ведущий себя  иначе,
	чем описано выше.

	В terminfo можно описать  как терминалы, у которых име-
	ется режим вставки, так и терминалы,  требующие  специ-
	альной команды для освобождения пустого места перед вы-
	водом  символа.  В характеристике smir задается команда
	для перевода терминала в режим вставки. В характеристи-
	ке rmir задается команда для вывода терминала из режима
	вставки. В характеристике ich1 задается  последователь-
	ность, которую нужно послать перед выводом вставляемого
	символа. Большинство терминалов, имеющих режим вставки,
	не  имеют  команды  ich1.  (Если Ваш терминал имеет обе
	возможности, предпочтительнее использовать режим встав-
	ки. При этом не следует,  без  необходимости,  задавать
	характеристику  ich1.) Если при вставке символов требу-
	ется задержка, она задается в символьной характеристике
	ip.  В  характеристике ip можно также задать последова-
	тельность, которая должна быть послана на терминал пос-
	ле вставки одного символа. Если  Ваш  терминал  требует
	одновременного включения режима вставки и использования
	специального кода, освобождающего место для вставляемо-
	го  символа,  следует указать обе характеристики (smir/
	rmir и ich1), и обе они будут использованы. Характерис-
	тика ich с одним параметром n повторяет эффект  ich1  n
	раз.

	Если требуется задержка между выводом символов не в ре-
	жиме вставки, она задается в характеристике rmp.

	Иногда  при удалении символа в текущей строке возникает
	необходимость в  перемещении  курсора  (например,  если
	удаляется символ табуляции). Если Ваш терминал позволя-
	ет  перемещать  курсор в режиме вставки, укажите булеву
	характеристику mir. Если характеристика mir не указана,
	выполнение операции будет чуть медленнее. Для некоторых
	терминалов (например,  Datamedia)  из-за  специфических
	свойств режима вставки указывать mir нельзя.

	Для удаления символов указываются следующие характерис-
	тики:  dch1 для удаления одного символа, dch для удале-
	ния n символов, smdc и rmdc для входа и выхода из режи-
	ма удаления (состояния терминала, при котором правильно
	работает команда dch1).

	Команда для очистки n символов (эквивалентная выводу  n
	пробелов  без перемещения курсора) задается характерис-
	тикой ech, имеющей один параметр.

     Яркость, подчеркивание и другие визуальные эффекты 
	Если Ваш терминал имеет различные возможности  визуали-
	зации,  воспользоваться ими можно по-разному. Вы можете
	выбрать определенный режим, такой как  режим  сообщений
	[см.  curses(3X)], в котором символы изображаются ярко,
	контрастно, и использовать его для вывода сообщений  об
	ошибках и других сообщений, привлекающих внимание. (Ес-
	ли  у Вас есть выбор, хорошим вариантом является инвер-
	сия пониженной яркости или просто инверсия, хотя разные
	пользователи на разных терминалах имеют различные пред-
	почтения.) Последовательности для входа в режим сообще-
	ний и выхода из него задаются в характеристиках smso  и
	rmso соответственно. Если последовательность, переводя-
	щая  в режим сообщений или выводящая из него, оставляет
	на экране один или два пробела, как  это  происходит  с
	терминалами TVI 912 и Teleray 1061, в числовой характе-
	ристике xmc задается это число.

	Коды, необходимые для начала и  завершения  подчеркива-
	ния,  задаются в характеристиках smul и rmul соответст-
	венно. Если терминал может подчеркнуть текущий  символ,
	передвинув  при этом курсор на шаг вправо, как например
	терминал Micro-Term MIME, это задается  характеристикой
	uc.

	Другие визуальные эффекты включают в себя: blink  (мер-
	цающие  символы),  bold  (выделенные - жирные или более
	яркие символы), dim (символы пониженной яркости), invis
	(невидимые символы),  prot  (защищенные  символы),  rev
	(инвертированные  символы), sgr0 (выключить все атрибу-
	ты), smacs (перейти к альтернативному набору  символов)
	и  rmacs  (выйти  из  альтернативного набора символов).
	Включение одного из этих режимов может повлиять (а  мо-
	жет и не повлиять) на установку остальных режимов. Если
	перед  переходом к альтернативному набору символов тре-
	буется выполнить какие-то команды, они задаются  в  ха-
	рактеристике enacs.

	Если существует последовательность, устанавливающая на-
	бор  атрибутов, она задается характеристикой sgr, имею-
	щей девять параметров. Каждый параметр может быть нулем
	или не нулем, в зависимости от того, выключается  соот-
	ветствующий  атрибут  или включается. Девять параметров
	задаются в следующем порядке: режим сообщений,  подчер-
	кивание,  инверсия, мерцание, пониженная яркость, выде-
	ление, невидимые символы, защита, альтернативный  набор
	символов. В sgr не обязательно поддерживать все режимы,
	достаточно  тех, для которых существует соответствующая
	команда (см. пример в конце настоящего описания).

	Терминалы с характеристикой xmc при получении  последо-
	вательностей,  переключающих  режимы,  выдают  на экран
	всякий мусор. Некоторые терминалы,  например,  Hewlett 
	Packard 2621, автоматически выходят из режима сообщений
	при  переходе  на  новую  строку или адресации курсора.
	Программы, использующие режим сообщений,  должны  выйти
	из него прежде, чем адресовать курсор или переходить на
	новую  строку,  если  только  не  задана характеристика
	msgr, говорящая о том, что перемещаться в режиме  сооб-
	щений можно без опаски.

	Если терминал обладает способностью беззвучной сигнали-
	зации  об  ошибке, она задается в характеристике flash,
	при этом курсор перемещаться не  должен.  Хорошим  без-
	звучным сообщением является инвертирование всего  экра-
	на,  задержка 200 мс и восстановление нормального изоб-
	ражения на экране.

	Если существует возможность сделать курсор более замет-
	ным, чем обычно (например, блок или мерцающее подчерки-
	вание  вместо немерцающего подчеркивания), эта последо-
	вательность задается в характеристике cvvis,  при  этом
	необходимо  задать  булеву характеристику chts. Возмож-
	ность сделать курсор абсолютно невидимым  задается  ха-
	рактеристикой civis. Характеристика cnorm задает после-
	довательность, возвращающую курсор в обычное состояние.

	Если  требуется, чтобы для использования команд адреса-
	ции терминал находился в определенном  состоянии,  коды
	для перехода к этому состоянию и выхода из него задают-
	ся характеристиками smcup и rmcup. Это нужно, например,
	для  терминала Concept, который имеет несколько страниц
	памяти. Поскольку адресация курсора ведется относитель-
	но памяти, а не экрана, чтобы адресация работала, необ-
	ходимо правильно привязать экран к памяти. Эти характе-
	ристики  используются  также  для  терминала  Tektronix
	4025,  для  которого smcup устанавливает командный сим-
	вол. Если smcup после  rmcup  не  восстанавливает  пол-
	ностью  состояние  до  rmcup, необходимо указать булеву
	характеристику nrrmc.

	Если на Вашем терминале подчеркивание получается  путем
	вывода символа подчеркивания, даже если в других случа-
	ях  вывода  одного символа поверх другого надпечатки не
	происходит, то необходимо указать булеву характеристику
	ul. Для терминалов, на которых вывод одного символа по-
	верх другого производит надпечатку, задайте булеву  ха-
	рактеристику  os.  Если  при  надпечатке пробелом можно
	стереть символ, задайте характеристику eo.

	Пример задания визуальных эффектов: пусть рассматривае-
	мый терминал требует следующих последовательностей  для
	включения режимов:

	    Параметр   Атрибут        Последовательность

		       нет            \E[0m
	    p1         сообщение      \E[0;4;7m
	    p2         подчеркивание  \E[0;3m
	    p3         инверсия       \E[0;4m
	    p4         мерцание       \E[0;5m
	    p5         пониж.яркость  \E[0;7m
	    p6         выделение      \E[0;3;4m
	    p7         невидимость    \E[0;8m
	    p8         защита         отсутствует
	    p9         альтерн.набор  ^O (выкл) ^N (вкл)

	Обратите  внимание,  что  указанные  последовательности
	вначале выключают все режимы, а затем включают  нужный.
	Заметьте  также, что режим сообщений, как было рекомен-
	довано выше, включает инверсию пониженной яркости. Пос-
	кольку терминал не имеет выделенного режима,  выделение
	реализуется  подчеркиванием  и  инверсией. Наконец, для
	комбинации атрибутов, например, подчеркивание +  мерца-
	ние,    используется    следующая   последовательность:
	\E[0;3;5m. У терминала нет защищенного режима и его ни-
	как нельзя проэмулировать, поэтому p8 игнорируется. Ра-
	бота с альтернативным набором  переключается  символами
	^O  и ^N. Чтобы включить все режимы, необходимо послать
	следующую последовательность: \E[0;3;4;5;7;8m^N.

	Теперь  посмотрим,  как  выводятся различные последова-
	тельности. Например, ;3 выводится, если истинно p2  или
	p6,  то есть включается режим подчеркивания или выделе-
	ния. Выписывание последовательностей и их  зависимостей
	дает следующее:

	Последоват.  Когда выводить В виде terminfo

	    \E[0     всегда         \E[0
	    ;3       если p2 или p6 %?%p2%p6%|%t;3%;
	    ;4       если p1 или p3 или p6 %?%p1%p3%|%p6%|%t;4%;
	    ;5       если p4        %?%p4%t;5%;
	    ;7       если p1 или p5 %?%p1%p5%|%t;7%;
	    ;8       если p7        %?%p7%t;8%;
	    m        всегда         m
	    ^N или ^O  если p9 ^N иначе ^O %?%p9%t^N%e^O%;

	Записывая все это в одну последовательность, получаем:

        sgr=\E[0%?%p2%p6%|%t;3%;%?%p1%p3%|%p6%|%t;4%;%?%p4%t;5%;
            %?%p1%p5%|%t;7%;%?%p7%t;8%;m%?%p9%t^N%e^O%;

     Клавиатура 
	В terminfo можно записать информацию о  кодах,  которые
	посылает  в  компьютер клавиатура терминала при нажатии
	клавиш. Некоторые терминалы не посылают кодов в компью-
	тер, нажатие клавиш изображается только на экране, нап-
	ример, терминал Hewlett-Packard  2621.  Если  командами
	можно  заставить терминал посылать или не посылать коды
	при нажатии клавиш, эти команды указываются в  характе-
	ристиках smkx и rmkx. В противном случае считается, что
	клавиши  всегда  посылают  коды. С терминалами, которые
	никогда не посылают кодов, работать невозможно.

	Коды, которые посылаются стрелками влево, вправо, вверх
	и  вниз  и  клавишей  HOME,  задаются  характеристиками
	kcub1, kcuf1, kcuu1, kcud1 и khome соответственно. Если
	на клавиатуре имеются клавиши f0, f1, f2, ..., f63, по-
	сылаемые ими коды задаются характеристиками  kf0,  kf1,
	kf2,  ...,  kf63. Если надписи на первых 11 клавишах не
	f0, ..., f10, их  можно  задать  характеристиками  lf0,
	lf1, ..., lf10. Можно также задать коды, посылаемые не-
	которыми  другими клавишами: kll (в левый нижний угол),
	kbs (возврат на шаг), ktbc  (очистка  всех  табуляций),
	kctab (очистить точку останова табуляции), kclr (очист-
	ка экрана), kdch1 (удалить символ), kdl1 (удалить стро-
	ку), krmir (войти в режим вставки), kel (очистить конец
	строки),  ked  (очистить конец экрана), kich1 (вставить
	символ или войти в режим ставки), kil1 (вставить  стро-
	ку),  knp (следующая страница), kpp (предыдущая страни-
	ца), kind (роллирование вперед), kri (роллирование  на-
	зад), khts (установить точку останова табуляции). В до-
	полнение,  если  на клавиатуре есть область из 9 клавиш
	(3x3), включающая в себя стрелки, то остальные 5 клавиш
	могут быть заданы, как ka1, ka3, kb2, kc1  и  kc3.  Эти
	клавиши  обычно используется, когда необходимо отслежи-
	вать расположение нажимаемых клавиш на клавиатуре. Выше
	в списке характеристик перечислен  дополнительно  целый
	ряд клавиш, которые также могут быть заданы.

	Цепочки  символов  для  программирования функциональных
	клавиш задаются характеристиками pfkey,  pfloc  и  pfx.
	Цепочки  для программирования изображаемых надписей за-
	даются характеристикой pln. Каждая из этих  характерис-
	тик  имеет  два параметра: номер клавиши, которую нужно
	запрограммировать (от 0 до 10) и программирующую цепоч-
	ку. Если указанный номер клавиши больше  10,  результат
	не  определен,  для некоторых терминалов при этом может
	запрограммироваться какая-нибудь дополнительная  клави-
	ша. Характеристика pfkey приводит к тому, что эффект от
	нажатия  клавиши эквивалентен указанной цепочке, харак-
	теристика pfloc заставляет терминал при нажатии клавиши
	выполнять указанные операции в локальном режиме, харак-
	теристика pfx приводит к посылке  указанной  последова-
	тельности в компьютер. Характеристики nlab, lw и lh за-
	дают  число программируемых надписей, их ширину и высо-
	ту. Если имеются команды включения и  выключения  прог-
	раммируемых  надписей,  они  задаются  характеристиками
	smln и rmln. Обычно smln выводят после вывода  несколь-
	ких pln, чтобы быть уверенными, что надписи видны.

     Табуляции и инициализация 
	Если терминал поддерживает точки останова табуляции, то
	команда, которая перемещает курсор до  следующей  точки
	останова табуляции, задается характеристикой ht (обычно
	это  CTRL+I). Команда, перемещающая курсор к предыдущей
	точке останова табуляции, задается характеристикой cbt.
	Если характеристики линии установлены так, что  драйвер
	заменяет табуляции на соответствующее число пробелов, а
	не посылает их напрямую на терминал, программы не долж-
	ны  использовать  ht и cbt, даже если они присутствуют,
	поскольку у пользователя позиции табуляции  могут  быть
	установлены  не  так.  Если терминал поддерживает точки
	останова табуляции, которые при инициализации  устанав-
	ливаются в каждую n-ю позицию, параметр n задается чис-
	ловой  характеристикой  it.  Это  используется командой
	tput init [см. tput(1)] для определения того, нужно  ли
	устанавливать замену табуляций на пробелы и где устано-
	вить точки останова табуляции. Если терминал может сох-
	ранять установку позиций табуляции и при выключении пи-
	тания,  в описании terminfo считается, что они установ-
	лены правильно. Если имеются команды установки и очист-
	ки позиций табуляции, они задаются характеристиками tbc
	(очистить все позиции табуляции) и hts (установить  по-
	зицию табуляции в текущую колонку каждой строки).

	Кроме того, имеются следующие характеристики: is1,  is2
	и is3, инициализирующие цепочки символов для терминала,
	iprog,  имя программы, инициализирующей терминал, и if,
	имя файла, содержащего длинную цепочку для  инициализа-
	ции. Предполагается, что эти цепочки устанавливают тер-
	минал в состояние, соответствующее дальнейшему описанию
	в terminfo. Они должны посылаться на терминал в следую-
	щем  порядке:  запустить  программу iprog, вывести is1,
	вывести is2, установить границы с помощью mgc,  smgl  и
	smgr, установить табуляции с помощью tbc и hts, вывести
	файл if, и, наконец, вывести is3. Обычно именно это де-
	лается командой tput init [см. tput(1), profile(4)].

	Большинство инициализаций выполняется  с  помощью  is2.
	Специальные  режимы  терминалов  могут быть установлены
	без дублирования цепочек символов с помощью  общей  для
	всех  последовательности  is2  и специальных is1 и is3.
	Последовательности, которые переводят  терминал  в  на-
	чальное  состояние из абсолютно любого, задаются харак-
	теристиками rs1, rs2, rf и rs3 (аналогично is1, is2, if
	и is3). (Некоторые описания  используют  характеристики
	if и rf с файлами из /usr/lib/tabset/*, однако рекомен-
	дуется использовать цепочки инициализации.) Характерис-
	тики  rs1, rs2, rf и rs3 выводятся командой tput reset,
	которая используется для выведения терминала  из  непо-
	нятного  состояния. Команды помещаются в rs1, rs2, rf и
	rs3 только если они производят неприятный эффект на эк-
	ране и при нормальной работе  не  требуются.  Например,
	команду, переводящую терминал в режим 80 колонок, можно
	поместить  в is2, но на некоторых терминалах она приво-
	дит к неприятным эффектам на экране, и к тому же обычно
	не требуется, так как терминал и так находится в режиме
	80 колонок.

	Если для установки позиций табуляций требуются действия
	более сложные, чем просто использование tbc и hts,  не-
	обходимая последовательность помещается в is2 или if.

     Задержки 
	Некоторые характеристики управляют задержками в драйве-
	ре tty(7). Обычно это  требуется  для  печатающих  уст-
	ройств и используется командой tput init для правильной
	установки характеристик в драйвере. Задержки, указанные
	в  характеристиках  cr,  ind, cub1, ff и tab, могут ис-
	пользоваться для установки соответствующих бит задержки
	в драйвере tty. Если указана характеристика  pb  (мини-
	мальная  скорость для применения задержки), то при ско-
	ростях ниже указанной задержка не применяется.

     Служебные строки 
	В terminfo можно занести информацию о том, что у терми-
	нала  есть  дополнительная  служебная  строка,  которая
	обычно  не  используется  программами.  Если это нижняя
	строка экрана, которая обычным образом адресуется (нап-
	ример, 25-я строка  терминала  Heathkit  h19  или  24-я
	строка терминала vt100, в котором установлена 23-строч-
	ная  область  роллирования), необходимо задать характе-
	ристику hs. Специальные команды, перемещающие курсор  в
	заданную позицию служебной строки и возвращающие курсор
	обратно,  задаются  характеристиками  tsl  и  fsl. (fsl
	должна оставлять курсор в том же месте, в каком он  был
	до  tsl.  При необходимости следует воспользоваться ко-
	мандами sc и rc.) Характеристика tsl имеет  один  пара-
	метр  - номер колонки в служебной строке, в которую по-
	мещается курсор.

	То, что терминал может выполнять команды, например  та-
	буляцию, даже если курсор находится в служебной строке,
	задается  характеристикой eslok. Цепочка символов, уби-
	рающая с экрана или очищающая служебную строку, задает-
	ся характеристикой dsl. Если терминал может  запоминать
	и вспоминать позицию курсора, задайте характеристики sc
	и  rc. Считается, что служебная строка имеет ту же дли-
	ну, что и все остальные, то есть cols. Если длина  слу-
	жебной строки иная (например, терминал не позволяет за-
	полнить всю служебную строку), то она задается числовой
	характеристикой wsl.

     Псевдографика 
	Если  у  терминала  есть альтернативный набор символов,
	позволяющий выводить рамки и стрелки,  отображение  ри-
	сунка  на код символа задается символьной характеристи-
	кой acsc. Определение этой цепочки основано на  альтер-
	нативном  наборе  символов  терминала  vt100 фирмы DEC,
	несколько расширенного символами терминала 4410v1 фирмы
	AT&T.
	    Изображение             Символ vt100+

	    стрелка вправо          +
	    стрелка влево           ,
	    стрелка вниз            .
	    сплошной блок           0
	    фонарик                 i
	    стрелка вверх           -
	    алмаз                   `
	    клетка                  a
	    знак градуса            f
	    плюс/минус              g
	    квадраты                h
	    правый нижний угол      j
	    правый верхний угол     k
	    левый верхний угол      l
	    левый нижний угол       m
	    крест                   n
	    надчеркивание           o
	    горизонталь             q
	    подчеркивание           s
	    левый край              t
	    правый край             u
	    нижний край             v
	    верхний край            w
	    вертикаль               x
	    перечисление            ~

	Самый лучшим способ описания средств псевдографики дру-
	гого терминала заключается в  следующем.  Сначала  надо
	добавить к таблице, приведенной выше, новую колонку и в
	ней перечислить символы, которые в альтернативном набо-
	ре  нового  терминала выводят то же изображение. Напри-
	мер,

	    Изображение             Символ Новый       
				    vt100+ терминал    

	    левый верхний угол      l      R           
	    левый нижний угол       m      F           
	    правый верхний угол     k      T           
	    правый нижний угол      j      G           
	    горизонталь             q      ,           
	    вертикаль               x      .           

	После этого необходимо выписать символы слева  направо,
	то есть acsc=lRmFkTjGq\,x..

     Дополнительные возможности 
	Если терминалу требуется заполнитель, отличный от нуля,
	он  задается  характеристикой  pad. Используется только
	первый символ значения pad. Если у терминала нет запол-
	нителя, укажите характеристику npc.

	Возможности терминала перемещать  курсор  на  полстроки
	вверх  или вниз задаются характеристиками hu и hd соот-
	ветственно. Они обычно используются для верхних и  ниж-
	них индексов на печатающих устройствах. Возможность пе-
	чатающего  устройства  прогонять  бумагу  до  следующей
	страницы  задается  характеристикой  ff   (обычно   это
	CTRL+L).

	Если  имеется  команда, повторяющая заданный символ за-
	данное число раз (и  позволяющая  тем  самым  уменьшить
	время,  необходимое для передачи группы одинаковых сим-
	волов), она задается характеристикой rep. Первым  пара-
	метром  является  повторяемый  символ, а вторым - коли-
	чество        повторений.        Таким         образом,
	tparm(repeat_char,'x',10) выводит xxxxxxxxxx.

	Некоторые терминалы могут изменять символ, используемый
	в  качестве  командного,  как  например Tektronix 4025.
	Символ, который используется во всех командах, но в не-
	которых случаях может быть другим, задается характерис-
	тикой cmdch. В некоторых системах поддерживается следу-
	ющее соглашение: если определена  переменная  окружения
	CC  [см. environ(5)], то символ, заданный характеристи-
	кой cm, во всех командах заменяется на  значение  пере-
	менной окружения CC.

	Если к одной и той же линии могут подключатся различные
	терминалы  (например,  через  сеть), можно использовать
	характеристику gn, чтобы  программа  могла  определить,
	что  тип подключенного терминала неизвестен (это не от-
	носится к виртуальным  терминалам,  чьи  характеристики
	известны).  Если  терминал поддерживает протокол вирту-
	ального терминала системы UNIX, его номер задается чис-
	ловой характеристикой vt.  Последовательность,  которую
	нужно послать на терминал перед чтением с него, задает-
	ся характеристикой rfi.

	Если  терминал  поддерживает протокол xon/xoff, укажите
	характеристику xon. Можно оставить информацию о задерж-
	ках, полезную для оценки сложности операции, но  симво-
	лы-заполнители при этом передаваться не будут. Последо-
	вательности, включающие протокол xon/xoff и выключающие
	его, задаются характеристиками smxon и rmxon. Если сим-
	волы в протоколе xon/xoff не CTRL+Q и CTRL+S, они могут
	быть заданы характеристиками xonc и xoffc.

	Если  терминал  имеет  клавишу МЕТА, которая действует,
	как клавиша регистра, устанавливая восьмой бит  переда-
	ваемого  кода,  укажите  характеристику km. В противном
	случае программы считают, что восьмой бит является  би-
	том четности и очищают его. Если имеются команды, вклю-
	чающие и выключающие этот  "МЕТА-режим",  они  задаются
	характеристиками smm и rmm.

	Если в дисплейной памяти терминала строк больше, чем на
	экране, то число строк в памяти задается  характеристи-
	кой  lm. Значение lm#0 означает, что число строк памяти
	неизвестно, но оно все-таки больше, чем число строк  на
	экране.

	Команды, управляющие принтером, подключенным к термина-
	лу, задаются следующими характеристиками: mc0  (напеча-
	тать  содержимое экрана), mc4 (выключить принтер) и mc5
	(включить принтер). Если принтер включен,  весь  текст,
	посылаемый на терминал, посылается и на принтер. Харак-
	теристика mc5p, имеющая один параметр, включает принтер
	для  печати указанного числа символов, а затем его вык-
	лючает. Параметр при этом не должен  превосходить  255.
	Если  при  печати  на принтере текст не изображается на
	экране, укажите характеристику mc5i.  Если  выполняется
	команда,  заданная mc5p, то принтеру передаются все ко-
	ды, включая mc4.

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

	Для некоторых конкретных терминалов в terminfo  предус-
	мотрены специальные характеристики.

	Для терминалов, которые не  умеют  изображать  знак  ~,
	как, например, терминал Hazeltine, задается характерис-
	тика hz.

	Для терминалов, которые игнорируют перевод строки сразу
	после автоматического перехода на новую строку при дос-
	тижении правой границы, как терминал Concept 100, зада-
	ется характеристика xenl. Для  терминалов,  на  которых
	курсор  остается на правой границе до получения следую-
	щего символа, вместо того, чтобы перейти  на  следующую
	строку  сразу, как терминал vt100, тоже задается харак-
	теристика xenl.

	Если  текст, выданный в режиме сообщений, должен обяза-
	тельно очищаться командой el перед выводом  текста  по-
	верх него, то задается характеристика xhp.

	Для  терминалов  Teleray,  которые табуляциями затирают
	текст, через который  перемещается  курсор,  необходимо
	задать характеристику xt. Эта же характеристика означа-
	ет,  что  для выхода из режима сообщений необходимо ис-
	пользовать команды вставки и удаления строк.

	Для терминалов Beehive Superbee, которые не умеют посы-
	лать коды ESC и CTRL+C, нобходимо указать характеристи-
	ку xsb, означающую, что вместо ESC будет использоваться
	клавиша f1, а вместо CTRL+C - клавиша f2.

     Похожие терминалы 
	Если имеются два похожих терминала, то один может  быть
	определен указанием, что он почти такой же, как другой.
	В символьной характеристике (спецификаторе) use задает-
	ся имя похожего терминала. Характеристики, предшествую-
	щие  use, замещают характеристики указанного терминала.
	Характеристика может быть отменена, указанием xx@ ранее
	определения самой характеристики xx. Например, описание

	att4424-2|Teletype 4424 in display function group ii,
	   rev@, sqr@, smul@, use=att4424,

	означает, что терминал AT&T 4424-2  является  разновид-
	ностью  телетайпа AT&T 4424, но не обладает характерис-
	тиками rev, sgr и smul, и, следовательно, не может  вы-
	делять что-либо на экране.

	Спецификатор  use удобно использовать для различных ре-
	жимов терминалов или  для  отражения  различных  вкусов
	пользователей.  Можно задавать несколько спецификаторов
	use.

ФАЙЛЫ 
	/usr/lib/terminfo/?/*  Скомпилированная   база   данных
			       терминалов.
	/usr/lib/.COREterm/?/* Подмножество    скомпилированной
			       базы данных терминалов.
	/usr/lib/tabset/*      Коды, устанавливающие границы  и
			       позиции табуляции для конкретных
			       терминалов.

СМ.ТАКЖЕ 
	curses(3X), printf(3S), term(5).
	captoinfo(1M), infocmp(1M), tic(1M), tty(7) в  Справоч-
	нике администратора.
	tput(1) в Справочнике пользователя.

ПРЕДОСТЕРЕЖЕНИЯ 
	Как  указано в разделе Табуляции и инициализация, перед
	использованием пакета curses(3X) необходимо вывести  на
	терминал  цепочки символов is1, is2, is3 и файл if. Это
	можно сделать с помощью команды tput init [см.  tput(1)
	и profile(4)].

	Эксперименты  с  файлами  /usr/lib/terminfo/?/* и /usr/
	lib/.COREterm/?/*  (например,  удаление  или  изменение
	файла) может повлиять на выполнение программ, таких как
	vi,  которые считают, что в этом месте лежит правильный
	файл. В частности, удаление описания "ненужного" терми-
	нала может привести к непредсказуемым последствиям.

ЗАМЕЧАНИЯ 
	База данных termcap, которая  использовалась  в  ранних
	версиях  системы  UNIX, в будущих версиях может не под-
	держиваться.




 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк