21.3.2. Управляющие последовательности
21.3.2. Управляющие последовательности
Существуют несколько отдельных типов управляющих последовательностей. Самый простой тип представляет собой символ перехода (^[), за которым следует один командный символ. (Несмотря на то что символ перехода отображается в строках С как 33, в файлах и документации по termcap и terminfo принято обозначение ^[.) Пять из таких односимвольных команд предваряют более сложные управляющие последовательности, которые называются командными последовательностями. Остальные побуждают консоль предпринимать простые действия и немедленно покидать режим перехода. Простейшие управляющие последовательности описаны в табл. 21.2.
Таблица 21.2. Последовательности управления консолью
Управляющие последовательности Описание ^[М Курсор перемещается вверх на одну строку в текущей колонке; если необходимо, то экран прокручивается вниз (обратный перевод строки). ^[D Курсор перемещается вниз на одну строку в текущей колонке; если необходимо, то экран прокручивается вверх (перевод строки) ^[E Возврат каретки и перевод строки. ^[Н Точка табуляции устанавливается в текущей колонке. ^[7 Сохраняются позиция и атрибуты курсора. ^[8 Восстанавливаются позиция и атрибуты курсора. ^[> Переводит малую клавиатуру в числовой режим (стандартный). ^[= Переводит малую клавиатуру в режим приложения (она ведет себя как функциональные клавиши DEC VT102). ^[с Сбрасывает все терминальные установки, которые могут быть получены через управляющие символы и последовательности. ^[Z Запрашивается идентификатор терминала. Ответом будет ^[[?6с; это говорит о том, что консоль точно эмулирует DEC VT102 (она включает в себя расширенный набор возможностей DEC VT102).Сохранение и восстановление позиции курсора (^[7 и ^[8) не осуществляется в стеке. Если вы делаете два сохранения в одной строке, то вторая сохраняемая позиция перезаписывает первую. Наоборот, один раз сохранив позицию курсора, вы можете восстанавливать ее столько раз, сколько нужно. Всякий раз курсор будет возвращаться в одно и то же расположение. При восстановлении положения курсора также восстанавливаются атрибуты изображения курсора, текущий набор символов, описания набора символов (все это будет описываться далее в данной главе).
Позиция курсора задается в показателях адреса знакоместа, парой чисел x,y, которая обозначает одну позицию на экране. Нумерация адресов знакомест на большинстве терминалов, включая консоль Linux, не начинается с нуля, как это принято в обычной компьютерной практике. Верхний левый символ на экране является началом отсчета и получает адрес как знакоместо 1,1.
Обратите внимание на то, что управляющие символы могут включаться внутри управляющей последовательности. Например, ^[^G8 сначала выдает тональный сигнал, а затем восстанавливает позицию и атрибуты курсора. Последовательность ^[^X8 просто печатает число 8.