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

Система Linux может переключать несколько сеансов работы с терминалом на одном экране и одной клавиатуре. Специальные клавиатурные последовательности позволяют пользователю определять, какой сеанс отображается в данный момент. Каждый из этих сеансов входа в систему имеет собственные установки клавиатуры (подобные тем, которые работают при нажатии или отключении клавиши ), установки терминала (размеры, графический режим экрана, шрифты и так далее), компоненты устройств (такие как /dev/tty1, /dev/vcs1 и /dev/vcsa1).

Клавиатурные и терминальные установки вместе называются виртуальными консолями (virtual console — VC). Это название объясняется их схожестью с виртуальной памятью, в которой система использует дисковое пространство для предоставления большего объема доступной памяти, чем физически установлено в компьютере.

Если вы не собираетесь управлять или обрабатывать VC, то можете пропустить эту главу. Работу с VC могут выполнять вместо вас несколько программных библиотек. При этом вам, возможно, захочется узнать, что они делают "за кулисами", чтобы вы могли работать с ними, а не против них.

Например, svgalib (библиотека для использования графики на нескольких типах графических контроллеров) содержит функции, которые производят большинство основных операций над виртуальными консолями. При этом требуется, чтобы вы избегали передачи случайных битов в графический контроллер в то время, когда он находится в текстовом режиме. Это может привести к искажению экрана. Из-за того, что документация по svgalib в настоящее время отсутствует, еще более важным для вас становится понимание того, что происходит внутри[149].

Виртуальные консоли предлагают пользователям множество опций, однако многие пренебрегают ними и просто используют X Window System. Те пользователи, которые предпочитают применять VC, имеют перечисленные ниже возможности.

• Выбор отдельного шрифта для каждой VC.

• Выбор индивидуального размера терминала в каждой VC.

• Выбор соответствий ключа (подробнее об этом далее) для всех VC.

• Выбор различных клавиатурных кодировок для всех VC.

• Переключение виртуальных консолей при помощи особых нажатий клавиш, установленных пользователем.

Проект документации Linux (Linux Documentation Project — LDP) предлагает документацию, объясняющую, как использовать существующие программы, извлекая все преимущества описанных возможностей. Перед вами стоит другая цель — вы хотите программировать для VC, а не просто их использовать. В утилитах[150] хорошо инкапсулированы установки шрифтов и клавиатуры, поэтому вы можете просто вызывать их из своих программ. Однако встречаются ситуации, в которых такие внешние программы бесполезны.

<p>20.1. Начало работы</p>

Ниже приведен список тех действий, которые вы можете производить над VC. Некоторые из них относятся только к отдельной виртуальной консоли (как правило, к той, которая активна в данный момент); некоторые используются для всех работающих VC.

• Найти текущую VC.

• Инициировать переключение VC.

• Отклонить или принять переключение VC.

• Полностью запретить переключение VC.

• Найти неиспользуемую VC.

• Динамически назначить или освободить память VC в ядре.

• Генерировать простые звуки.

Во всех случаях необходима одна и та же подготовительная работа. Вы будете применять команды ioctl() на /dev/tty — поэтому нужно начать с включения заголовочных файлов, которые определяют аргументы ioctl().

#include

#include

#include

#include

#include

После этого нужно открыть /dev/tty.

if ((fd = open("/dev/tty", O_RDWR)) < 0) {

 perror("myapp: не удается открыть /dev/tty");

 exit(1);

}

Если вы обнаруживаете, что не можете открыть /dev/tty, то, возможно, у вас проблемы с полномочиями: устройство /dev/tty должно быть доступно для чтения и записи всем без исключения.

Обратите внимание на то, что в качестве дополнения к ioctl.h существуют два главных заголовочных файла, в которых определены вызовы ioctl(), обрабатывающие VC. В файле vt.h определяются вызовы, начинающиеся с букв VT, и реализуется управление виртуальным терминалом (экраном), как частью виртуальных консолей. В файле kd.h определены вызовы, которые начинаются с KD и обрабатывают клавиатуру и шрифты. Почти все содержимое kd.h можно проигнорировать, поскольку эти функциональные возможности прекрасно инкапсулируются в утилитах. Однако оно окажется весьма полезным при выдаче звуковых сигналов консолью на управляемых частотах.

Данные основные заголовочные файлы также определяют структуры, которые используются с ioctl().

Структура vt_mode применяется для поиска и изменения текущей VC:

struct vt_mode {

 char mode;

 char waitv;

 short relsig;

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

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

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

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

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

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

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

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

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