Читаем Разработка приложений в среде Linux. Второе издание полностью

Консоль Linux, как и большинство терминалов, является модальной: ее взаимодействие с данными зависит от того, в каком режиме она находится. По умолчанию она выводит на экран передаваемые символы, пока не получает управляющий символ или символ перехода. Управляющий символ просто вызывает некоторое регулирующее действие, а следующий символ уже читается обычным образом. Изменений в режиме обработки не происходит. Символ перехода сигнализирует о начале управляющей последовательности и изменяет режим обработки на режим управления.

Например, рассмотрим следующую строку С:

"this is a line\na \033[1mbold\033[0m word\n"

Консоль обрабатывает эту строку в описанной ниже последовательности.

1. Начиная с текущей позиции курсора, консоль печатает слова this is a line.

2. Обнаруживается символ новой строки (\n), поэтому (так как Linux и Unix обычно работают в режиме, когда новая строка сигнализирует также о возврате каретки) консоль перемещает курсор в начало следующей строки. При этом если курсор уже был на самой нижней строке, весь экран прокручивается вверх на одну строку.

3. В начале данной линии отображается строка а.

4. Консоль сталкивается с символом перехода \033 и переводится в управляющий режим.

5. Считывается символ [, консоль переходит в режим ввода командной последовательности (Command Sequence Introduction — CSI).

6. В режиме CSI считывается последовательность десятичных чисел, закодированных в ASCII и разделенных знаками ;, которые называются параметрами. Это продолжается до тех пор, пока не встретится первая буква. Буква определяет действие, которое нужно предпринять, с учетом данных в параметрах. В данном случае имеется один параметр 1, а буква m означает, что параметр используется для определения изображения символа. Например, параметр 1 устанавливает атрибут полужирного шрифта.

7. Распечатывается строка bold в полужирном представлении.

8. Далее идет другая последовательность изображения символов, которая восстанавливает все стандартные атрибуты, поэтому строка word выводится в обычном изображении.

9. В завершение встречается и обрабатывается еще один символ новой строки.

Таким образом, считая, что курсор находился в начале строки, выходные данные полностью будут выглядеть примерно так:

this is a line

a bold word

<p>21.3.1. Управляющие символы</p>

Консоль считывает управляющие символы незамедлительно, действует в соответствии с ними и затем продолжает считывать символы в нормальном режиме.

В файлах и документации termcap и terminfo управляющие символы изображаются символом ^c. Мы будем часто в данной книге использовать это условное обозначение, поскольку оно более универсально и удобно для вас, чем восьмеричные управляющие последовательности С. Для отыскания числового значения управляющего символа в некоторых системах предусмотрен макрос CTRL() в , но он не является стандартным для всех систем.

В качестве замены мы предлагаем нашу собственную версию CTRLCHAR().

#define CTRLCHAR(ch) ((ch)&0x1F)

Она используется так:

if (с == CTRLCHAR('С')) {

 /* был нажат символ Control-C */

}

Управляющие символы, воспринимаемые консолью Linux, описаны в табл. 21.1. Символ ^? фактически представляет собой '?'+0100, а не '?'-0100, поэтому это не настоящий управляющий знак вопроса, но в любом случае стандартное обозначение для него ^?. Его значение есть 0177 (восьмеричное), 127 (десятичное), 7F (шестнадцатеричное). Вы не сможете использовать макрос CTRL, описанный только что, для проверки. Вместо этого придется применять числовое значение 127.

Таблица 21.1. Символы управления консолью

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных