Второй способ задания конфигурации клавиатуры заключается в том, что вы можете указать одной инструкцией сразу полный набор настроек. Такие наборы называются keymaps и, также как и обычные компоненты конфигурации XKB, располагаются в отдельных файлах (которые, тоже содержат в себе несколько именованных блоков) в подкаталоге keymap.
Обычно, в каждом блоке в файлах из keymap просто указывается из каких файлов XKB должен извлечь соответствующие компоненты (хотя, в принципе, там может быть и полное описание всех компонентов), например
xkb_keymap 'ru' {
xkb_keycodes { include 'xfree86' };
xkb_types { include 'default' };
xkb_compatibility { include 'default' };
xkb_symbols { include 'en_US(pc105)+ru' };
xkb_geometry { include 'pc(pc102)' };
};
Обратите внимание, что в одной инструкции include может быть указано несколько файлов (блоков) через знак ‘+’. Понятно, что это означает, что должны быть вставлены последовательно все указанные файлы.
Таким образом, в файле конфигурации X-сервера можно вместо пяти компонентов указать сразу один из готовых наборов keymap, например
Option 'XkbKeymap' 'xfree86(ru)'
Кроме того, эти два способа можно комбинировать. Например, если вы выбрали один из подходящих наборов keymap, но вас не устраивает один из компонентов, например geometry, то в файле конфигурации можно указать
Option 'XkbKeymap' 'xfree86(ru)'
Option 'XkbGeometry' 'pc(pc104)'
При этом, в соответствии с первой инструкцией, все компоненты будут взяты из keymap ‘xfree86(ru)’, а вторая инструкция ‘перепишет’ geometry, не затрагивая остальные компоненты.
Третий способ несколько отличается от предыдущих. Набор настроек можно указывать не перечислением компонентов, а с помощью задания ‘правил’ (Rules), ‘модели’ (Model), ‘схемы’ (Layout), ‘варианта’ (Variant) и ‘опций’ (Option).
В этом наборе только Rules представляют собой некий файл (эти файлы тоже находятся в отдельном подкаталоге rules каталога /usr/X11R6//lib/X11/xkb), в котором находится таблица правил – ‘как выбрать все пять компонентов настроек XKB в зависимости от значений Model, Layout и т. д.’. Все остальные параметры представляют собой просто ‘ключевые слова’:
• Model обычно определяет тип ‘железа’ – клавиатуры;
• Layout – язык или, точнее, алфавит, который ‘навешивается’ на кнопки клавиатуры;
• Variant – различные варианты размещения знаков алфавита (заданных Layout’ом);
• Options – обычно меняет ‘поведение’ или ‘расположение’ модификаторов Control и Group (переключатель групп – это переключатель ‘языка’, например, русский/латинский).
По этим словам модуль XKB при старте ищет в таблицах ‘правил’ подходящие файлы настроек (keycodes, types, compat, symbols и geometry). Другими словами, Rules определяет некоторую функцию, аргументами которой являются Model, Layout, Variant и Options, а значение, которое возвращает эта функция, представляет собой полный набор из компонентов настроек XKB – keycodes, types, compat, symbols и geometry (или полная keymap).
Итак, если вы используете третий способ указания конфигурации XKB, то в файле конфигурации X-