BASH Programming - Введение


Немного теории


При старте X-сервера, модуль XKB зачитывает все необходимые данные из текстовых файлов, которые образуют "базу данных" настроек XKB.

Строго говоря, большинство из этих файлов сам модуль XKB не читает. Он вызывает программу xkbcomp, которая переводит содержимое этих файлов в двоичный формат, понятный непосредственно модулю XKB.

Но для настройки это не так уж важно, поскольку вызов xkbcomp происходит автоматически, незаметно для пользователя.

База данных, необходимых XKB, состоит из 5 компонентов:

  • keycodes

    таблицы, которые просто задают символические имена для скан-кодов.

    Например:

    <TLDE>= 49; <AE01> = 10;

  • types

    описывает типы клавиш. Тип клавиши определяет -- как должно меняться значение, выдаваемое клавишей в зависимости от модификаторов (Control, Shift и т.п.). Так, например, "буквенные"  клавиши относятся к типу ALPHABETIC, что означает, что они имеют разное значение в зависимости от состояния Shift и CapsLock. А клавиша [Enter] имеет тип -- ONE_LEVEL, что означает, что ее значение всегда одно и то же, независимо от состояния модификаторов.

  • compat (сокращенное от compability)

    описывает "поведение"  модификаторов. В XKB имеется несколько внутренних переменных, которые, в конечном счете, и определяют -- какой символ будет генерироваться при нажатии клавиши в конкретной ситуации. Так вот, в compat как раз описывается -- как должны меняться эти переменные при нажатии различных клавиш-модификаторов. В этом же разделе обычно описывается и поведение "лампочек-индикаторов"  на клавиатуре.

  • symbols

    таблицы, в которых для каждого скан-кода (имени скан-кода, определенного в keycodes) перечисляются все значения (symbols), которые должна выдавать клавиша. Естественно, количество различных значений зависит от типа клавиши (которые описываются в types), а какое именно значение будет выдано в конкретной ситуации, определяется состоянием модификаторов и их "поведением"  (которое описывается в compat).

  • geometry

    описывает "геометрию"  клавиатуры -- то есть расположение клавиш на клавиатуре. Эти описания нужны не столько самому X-серверу, сколько прикладным программам, которые рисуют изображение клавиатуры.

  • Все эти компоненты разложены по одноименным директориям в директории {XROOT}/lib/X11/xkb (в дальнейшем, я буду обозначать ее {XKBROOT}).

    Весь набор компонентов, необходимых для настройки XKB, описывается в файле конфигурации X-сервера в секции Keyboard.



    Содержание раздела