Глава 20 Программирование виртуальных консолей
Глава 20
Программирование виртуальных консолей
Интерфейс программирования виртуальных консолей Linux основан на интерфейсе, который предоставляют некоторые версии UNIX. Это не полная реализация (хотя ее достаточно для совместимости исходного кода почти со всеми программами), но в ней также предусмотрено несколько важных дополнений.
Система Linux может переключать несколько сеансов работы с терминалом на одном экране и одной клавиатуре. Специальные клавиатурные последовательности позволяют пользователю определять, какой сеанс отображается в данный момент. Каждый из этих сеансов входа в систему имеет собственные установки клавиатуры (подобные тем, которые работают при нажатии или отключении клавиши <Caps Lock>), установки терминала (размеры, графический режим экрана, шрифты и так далее), компоненты устройств (такие как /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] хорошо инкапсулированы установки шрифтов и клавиатуры, поэтому вы можете просто вызывать их из своих программ. Однако встречаются ситуации, в которых такие внешние программы бесполезны.