^[Z Запрашивается идентификатор терминала. Ответом будет ^[[? 6с; это говорит о том, что консоль точно эмулирует DEC VT102 (она включает в себя расширенный набор возможностей DEC VT102).

Сохранение и восстановление позиции курсора (^[7 и ^[8) не осуществляется в стеке. Если вы делаете два сохранения в одной строке, то вторая сохраняемая позиция перезаписывает первую. Наоборот, один раз сохранив позицию курсора, вы можете восстанавливать ее столько раз, сколько нужно. Всякий раз курсор будет возвращаться в одно и то же расположение. При восстановлении положения курсора также восстанавливаются атрибуты изображения курсора, текущий набор символов, описания набора символов (все это будет описываться далее в данной главе).

Позиция курсора задается в показателях адреса знакоместа, парой чисел x,y, которая обозначает одну позицию на экране. Нумерация адресов знакомест на большинстве терминалов, включая консоль Linux, не начинается с нуля, как это принято в обычной компьютерной практике. Верхний левый символ на экране является началом отсчета и получает адрес как знакоместо 1,1.

Обратите внимание на то, что управляющие символы могут включаться внутри управляющей последовательности. Например, ^[^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. Командный символ прерывает последовательность и определяет способ интерпретации параметров, которые терминал только что обнаружил.

На параметры обычно ссылаются как на некоторые переменные от par1 до par16. Если вы не установили параметр явно, то его значение автоматически приравнивается к нулю или единице, в зависимости от смысла операции. Командные символы CSI перечислены в табл. 21.4.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату