^[Z | Запрашивается идентификатор терминала. Ответом будет ^[[? 6с ; это говорит о том, что консоль точно эмулирует DEC VT102 (она включает в себя расширенный набор возможностей DEC VT102). |
Сохранение и восстановление позиции курсора (^[7
и ^[8
) не осуществляется в стеке. Если вы делаете два сохранения в одной строке, то вторая сохраняемая позиция перезаписывает первую. Наоборот, один раз сохранив позицию курсора, вы можете восстанавливать ее столько раз, сколько нужно. Всякий раз курсор будет возвращаться в одно и то же расположение. При восстановлении положения курсора также восстанавливаются атрибуты изображения курсора, текущий набор символов, описания набора символов (все это будет описываться далее в данной главе).
Позиция курсора задается в показателях
Обратите внимание на то, что управляющие символы могут включаться внутри управляющей последовательности. Например, ^[^G8
сначала выдает тональный сигнал, а затем восстанавливает позицию и атрибуты курсора. Последовательность ^[^X8
просто печатает число 8.
21.3.3. Тестирование последовательностей
Для проверки большинства последовательностей вам нужно просто войти в виртуальную консоль и запустить cat
. Введите последовательности, которые вы хотите протестировать, и увидите результаты. Для ^[
нажмите клавишу <Esc>.
Терминалы отвечают на команды вроде идентификации терминала ^[Z
или команды CSIn
, рассматриваемые позже, управляющим последовательностями, которые на терминалах не отображаются. В тех случаях, когда вы хотите увидеть подобное взаимодействие, просто запустите
cat > /tmp/somefile
Затем введите команды, после которых укажите возврат каретки и ^D
. Используйте less
, vi
, Emacs или какую-то другую программу, которая может обрабатывать произвольные символы для того, чтобы прочитать /tmp/somefile
, где непосредственно после напечатанных вами последовательностей вы найдете ответы на них.
21.3.4. Составные управляющие последовательности
Пять двухсимвольных управляющих последовательностей (которые показаны в табл. 21.3) фактически являются префиксами более длинных и сложных последовательностей. Рассмотрим каждую из них по очереди.
Таблица 21.3. Составные последовательность управления консолью
Управляющие последовательности | Описание |
---|---|
^[[ | Начинается последовательность CSI (ALT-^[ является синонимом). |
^[] | Начинается последовательность управления палитрой. |
^[% | Начинается последовательность UTF (UTF-8 wide-character Unicode). |
^[( | Выбирается шрифт, соответствующий набору символов G0 . |
^[) | Выбирается шрифт, соответствующий набору символов G1 . |
^[#8 | Внутренняя тестовая последовательность DEC; заполняет экран символами Е. |
Последовательности CSI имеют три или четыре части.
1. ^[[
запускает последовательность CSI, переводя терминал в режим CSI.
2. Только для последовательностей h
и l
вы можете добавлять символ ?
, что позволит устанавливать или очищать собственные режимы DEC (см. табл. 21.9).
3. Предусматривается не более чем 16 параметров. Параметры — это десятичные числа, разделенные символами ;
. Например, 1;23;45
представляет собой список из трех параметров: 1, 23 и 45. (Если после прочтения 16 параметров обнаруживается разделитель ;
, то последовательность CSI немедленно прерывает работу и терминал переходит в нормальный режим, распечатывая оставшуюся часть последовательности).
4.
На параметры обычно ссылаются как на некоторые переменные от