Разработка приложений в среде Linux. Второе издание
Шрифт:
21.3.1. Управляющие символы
Консоль считывает управляющие символы незамедлительно, действует в соответствии с ними и затем продолжает считывать символы в нормальном режиме.
В файлах и документации
В качестве замены мы предлагаем нашу собственную версию
Она используется так:
Управляющие символы, воспринимаемые консолью Linux, описаны в табл. 21.1. Символ
Таблица 21.1. Символы управления консолью
Управляющий символ | Имя ASCII | Описание |
---|---|---|
^G | BEL | Выдает тональный сигнал. |
^Н | BS | Курсор перемещается к предыдущему символу, не перезаписывая его (если только курсор не находится в первой колонке). |
^I | НТ | Горизонтальная табуляция; курсор перемещается к следующей точке табуляции. |
^J | LF | Новая строка; курсор перемещается на следующую строку; если курсор уже находился в самой нижней точке области прокручивания, то она продвигается вверх. |
^K | VT | Вертикальная табуляция; интерпретируется так же, как новая строка. |
^L | FF | Подача страницы; интерпретируется так же, как новая строка. |
^М | CR | Возврат каретки; курсор перемещается в начало текущей строки. |
^N | SO | Сдвиг; используется альтернативный ( G1 ) символ, установленный для отображения глифов; изображаются глифы для управляющих символов. |
^O | SI | Сдвиг; используется стандартный ( G0 ) символ, установленный для отображения глифов; не изображаются глифы для управляющих символов. |
^X | CAN | Отменяется любая действующая управляющая последовательность. |
^Z | SUB | Отменяется любая действующая управляющая последовательность. |
^[ | ESC | ESCape; начало управляющей последовательности. |
^? | DEL | Игнорируется. |
ALT-^[ | – | Вводится последовательность команд, которая будет описана далее. |
Обратите внимание на то, что результат некоторых из данных кодов зависит от настроек tty. Хотя сама консоль описана здесь абсолютно точно, настройки tty могут изменять передаваемые символы. Например, передача
Символ
Для получения более подробной информации о символах ASCII обратитесь к man-странице ascii(7). Кроме того, на man-странице iso_8859_1(7) рассматривается набор восьмибитовых знаков ISO Latin 1 (точнее говоря, ISO 8859 Latin Alphabet number 1); этот более новый стандарт стал фактической заменой ASCII и сейчас официально называется ISO 646-IRV.
21.3.2. Управляющие последовательности
Существуют несколько отдельных типов управляющих последовательностей. Самый простой тип представляет собой символ перехода (
Таблица 21.2. Последовательности управления консолью
Управляющие последовательности | Описание |
---|---|
^[М | Курсор перемещается вверх на одну строку в текущей колонке; если необходимо, то экран прокручивается вниз (обратный перевод строки). |
^[D | Курсор перемещается вниз на одну строку в текущей колонке; если необходимо, то экран прокручивается вверх (перевод строки) |
^[E | Возврат каретки и перевод строки. |
^[Н | Точка табуляции устанавливается в текущей колонке. |
^[7 | Сохраняются позиция и атрибуты курсора. |
^[8 | Восстанавливаются позиция и атрибуты курсора. |
^[> | Переводит малую клавиатуру в числовой режим (стандартный). |
^[= | Переводит малую клавиатуру в режим приложения (она ведет себя как функциональные клавиши DEC VT102). |
^[с | Сбрасывает все терминальные установки, которые могут быть получены через управляющие символы и последовательности. |
^[Z | Запрашивается идентификатор терминала. Ответом будет ^[[?6с ; это говорит о том, что консоль точно эмулирует DEC VT102 (она включает в себя расширенный набор возможностей DEC VT102). |
Сохранение и восстановление позиции курсора (
Позиция курсора задается в показателях адреса знакоместа, парой чисел x,y, которая обозначает одну позицию на экране. Нумерация адресов знакомест на большинстве терминалов, включая консоль Linux, не начинается с нуля, как это принято в обычной компьютерной практике. Верхний левый символ на экране является началом отсчета и получает адрес как знакоместо 1,1.
Обратите внимание на то, что управляющие символы могут включаться внутри управляющей последовательности. Например,
21.3.3. Тестирование последовательностей
Для проверки большинства последовательностей вам нужно просто войти в виртуальную консоль и запустить
Терминалы отвечают на команды вроде идентификации терминала
Затем введите команды, после которых укажите возврат каретки и
21.3.4. Составные управляющие последовательности