ENGLISH | KOI | WIN | ALT | ISO
Мои программы

Основные возможности syscons

Итак, syscons с одной стороны работает непосредственно с "железом" (видео-контроллером и контроллером клавиатуры), а для ОС выглядит как некий аппарат, который и является терминалом.

Виртуальные терминалы.

Прежде всего надо отметить, что syscons изображает из себя несколько "виртуальных терминалов" или "виртуальных консолей". Естественно, пользователь может переключаться из одного такого терминала в другой, с помощью соответствующих клавиш (подробнее смотри "Переключатели виртуальных терминалов.") или выводя на терминал специальные esc-последовательности.
  Каждый такой виртуальный терминал является как бы независимым устройством. То есть, вывод на один из виртуальных терминалов никак не влияет на другие, некоторые атрибуты экрана (например цвета символов) могут быть установлены на одном конкретном терминале и не отражаться на других, "модификаторы клавиатуры" (CapsLock, NumLock и т.п.) могут находится в разных положениях на различных терминалах и т.п. Естественно, если пользователь переключится в другой виртуальный терминал, а потом вернется обратно, syscons восстановит и изображение на экране, и аттрибуты, и состояние модификаторов.
  Однако, надо сразу оговориться, что некоторые настройки syscons (шрифты, "раскладка клавиатуры" и некоторые другие) действуют сразу на все виртуальные терминалы, независимо от того, в каком из них вы находились в момент изменения этих настроек.

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

Обычно syscons поддерживает 16 виртуальных терминалов. Это число определяется при сборке ядра системы и может быть изменено при перегенерации ядра (option MAXCONS). Правда, для того, чтобы можно было их все задействовать, в директории /dev должно быть создано соответствующее количество "точек входа" ("устройства" ttyv0 - ttyv9, ttyva-ttyvf). Дело в том, что в "свеже-инсталлированной" системе таких устройств только 4 (ttyv0-ttyv3).
Для того, чтобы "доделать" остальные надо выполнить команду

/dev/MAKEDEV vty*

где * означает количество устройств, которое вам нужно (для чисел больше 9 используются буквы a-f, как для шестнадцатеричных цифр).

Кроме того, чтобы реально переключиться на какой-нибудь из виртуальных терминалов, он должен быть активным. То есть на нем должна быть запущена хоть какая-нибудь задача. Для того, чтобы при старте системы каждый терминал получил свою задачу, на каждом из них запускается программка getty, которая дает возможность открыть сессию на этом терминале. Это задание (запустить getty на каждом терминале) записывается в файле /etc/ttys. Опять же, в "свеже-поставленной" системе в этом файле "охвачены" только три терминала. Поэтому, если вы хотите пользоваться и остальными, то в этом файле придется добавить "задания" для всех виртуальных терминалов. Только, если вы собираетесь запускать систему X-Window, не забудьте оставить для нее хотя бы один свободный терминал.

Буфер экрана (history buffer).

Каждый виртуальный терминал имеет буфер экрана, больший, чем размер физического экрана. Обычно физический размер экрана 25 строчек, хотя, при желании, вы можете переключить syscons в режим при котором на экране отображаются 43, 50 или 60 строчек, если, конечно, видеокарта поддерживает такие режимы (подробнее об этом в "Режим отображения")
  Так вот, каждый виртуальный терминал помнит последние 100 строчек вывода из которых только последние отображаются на физическом экране.
  Эти 100 строчек хранятся в буфере экрана и вы можете их "пролистать", переключив syscons в специальный режим - "просмотра буфера" (подробнее в "Специальные клавиши: slock").
  Кроме того, надо отметить, что 100 строк - это размер "по умолчанию". При желании его можно увеличить иди уменьшить (подробнее в "Изменение размера буфера терминала"). Причем, каждый из виртуальных терминалов может иметь свой размер буфера.

Команды терминала syscons.

Драйвер syscons эмулирует "интеллектуальный" терминал, который кроме обычного вывода "символ за символом" понимает ряд команд в виде esc-последовательностей (цепочка из нескольких символов, начинающаяся с кода Esc - 27). С помощью таких последовательностей программа может менять положение курсора на экране, очищать часть текущей строки или часть экрана, менять атрибуты символов (яркость, цвет, подчеркивание, мерцание и т.п.).

Список этих команд можно посмотреть в "Приложение 1. Команды (esc-последовательности) syscons"(он в основном соответствует командам стандартного "ANSI-терминала").
  Но хочу напомнить, что программа, если она претендует на то, чтобы работать на разных типах терминалов, и не должна знать команды конкретного дисплея. Для обеспечения такой независимости от типа терминала, в любом Юниксе существуют стандартные механизмы - "базы данных свойств терминалов" (termcap и terminfo) и библиотеки ввода/вывода (ncurses, slang и т.п.), которые сами адаптируются к "системе команд" конкретного типа терминала.

Управление драйвером syscons.

Для изменения настроек syscons в системе существуют две утилиты - vidcontrol и kbdcontrol. Как понятно из их названий, первая меняет параметры, относящиеся к изображению на дисплее, а вторая - настройки клавиатуры.

Описание этих утилит можно найти в соответствующих man'уалах. Я только кратко опишу их основные возможности (в разделах "Программа vidcontrol" и "Программа kbdcontrol").

Надо заметить, что обычно основные настройки syscons (русификация, тип курсора, "скринсейвер" и т.п.) делаются во время загрузки системы в соответствующем "стартовом скрипте" (/etc/rc.i386), а параметры, которые им требуются, прописываются в /etc/rc.conf.

Поэтому, вы можете поэкспериментировать с настройками, запуская эти утилиты вручную, но "глобальные" изменения лучше делать редактированием соответствующих строчек в /etc/rc.conf.

Работа с "мышью".

К сожалению, на эту часть мне не хватило сил и времени. В свое оправдание скажу только, что

  • во-первых, это вопрос выходит за рамки собственно драйвера syscons (надо рассказать про драйвер "мыши", правильную настройку X-Window, взаимодействие с другими программами)
  • во-вторых, эта часть syscons появилась сравнительно недавно, все еще совершенствуется, и, поэтому, ее описание может существенно отличаться для разных версий FreeBSD.

Надеюсь, что со временем я восполню этот пробел. Пока могу лишь посоветовать почитать на эту тему man moused и man sysmouse.