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


TERMINFO(4) - часть 15


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

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

нет\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. В противном случае считается, что клавиши всегда посылают коды. С терминалами, которые никогда не посылают кодов, работать невозможно.




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