Некоторое отношение к последовательностям изображения символов имеют последовательности режимов. Существует два типа режимов: режимы ANSI и внутренние режимы DEC. Последовательность СSIh устанавливает режимы ANSI, описанные в табл. 21.8; последовательность CSIl сбрасывает их. В последовательность может входить более одного параметра. Последовательность CSI?h определяет внутренние режимы DEC, перечисленные в табл. 21.9; последовательность CSI?l сбрасывает их. Также может приниматься более одного параметра.
Таблица 21.8. Режимы ANSI
par Описание 3 Отображаются управляющие символы. 4 Режим вставки. 20 Режим CRLF (при получении символа новой строки выполняется возврат каретки).Таблица 21.9. Внутренние режимы DEC
par Описание 1 Клавиши управления курсором работают как клавиши приложения; в режиме приложения к ним добавляется префикс ^[O вместо обычного ^[[. 3 На данный момент не реализован; в будущем предназначен для переключения между режимами 80 и 132 колонки. 5 Весь экран переводится в режим негативного изображения. 6 Устанавливается режим начала отсчета DEC, при котором принимаются области прокрутки; перемещается в начало отсчета (текущей области прокрутки, если она задана). 7 Устанавливается режим автоматического перехода на новую строку (по умолчанию), при котором продолжается ввод текста с новой строки, когда курсор достигает конца текущей строки. Если данный режим выключен, то лишние символы печатаются поверх самого правого символа текущей строки. 8 Клавиатура переводится в режим повторения символов (включен по умолчанию). 9 Режим отчета мыши 1 (поддержка может предоставляться внешней программой). 25 Курсор становится видимым (включен по умолчанию). 1000 Режим отчета мыши 2 (поддержка может предоставляться внешней программой).Последовательности setterm представляют собой набор последовательностей CSI с управляющим символом ]. Они перечислены в табл. 21.10.
Таблица 21.10. Консольные последовательности setterm
Сообщение консоли того, что она должна отображать — далеко не все; вы также обязаны распознавать последовательности нажатия клавиш и знать, к каким клавишам они привязаны. Некоторые из этих последовательностей определены в базе данных terminfo, некоторые — нет. Кроме этого, клавиатура является модальной для увеличения разнообразия возможностей. В режиме приложения клавиши курсора порождают другие коды. Как показано в табл. 21.9, к ним добавляется префикс ^[О вместо ^[[. Это необходимо для поддержки унаследованных приложений, в которых предполагается, что они обращаются к терминалам DEC.
Последовательности нажатия клавиш описаны в табл. 21.11. Обратите внимание на то, что в нумерации функциональных клавиш имеются пропуски. Это спланировано для того, чтобы пользователи клавиатур, у которых нет клавиш <F11> и <F12>, не были ущемлены.
Таблица 21.11. Кодирование функциональных клавиш
Последовательности нажатия клавиш Клавиша (клавиши) ^[[[А <F1> ^[[[В <F2> ^[[[С <F3> ^[[[D <F4> ^[[[Е <F5> ^[[17~ <F6> ^[[18~ <F7> ^[[19~ <F8> ^[[20~ <F9> ^[[21~ <F10> ^[[23~ <F11>, <Shift+F1>, <Shift+F11> ^[[24~ <F12>, <Shift+F2>, <Shift+F11> ^[[25~ <Shift+F3> ^[[26~ <Shift+F4> ^[[28~ <Shift+F5> ^[[29~ <Shift+F6> ^[[31~ <Shift+F7> ^[[32~ <Shift+F8> ^[[33~ <Shift+F9> ^[[34~ <Shift+F10> ^[[А <Стрелка вверх> ^[[D <Стрелка влево> ^[[В <Стрелка вниз> ^[[С <Стрелка вправо> ^[[1~ <Home> ^[[2~ <Insert> ^[[3~ <Delete> ^[[4~ <End> ^[[5~ <Page Up> ^[[6~ <Page Down>21.4. Прямой вывод на экран