Кроме опций в общем файле конфигурации X-сервера (XF86Config) XKB может иметь свой отдельный файл конфигурации. Правда он в XFree86 не применяется и (увы) не описан. В то же время, с помощью этого файла можно
Собственный файл конфигурации XKB (назовем его так) должен находится в
директории {XRoot}/lib/X11/xkb и называться
X<цифра>-config.keyboard
где <цифра> - номер дисплея (обычно - X0-config.keyboard)
Прежде всего надо заметить, что все инструкции в этом файле выглядят как операторы присваивания языка C.
параметр_XKB = выражение ;
Если оператор один в строке, то знак ';' в конце не обязателен. В любом месте строки могут находится комментарии, которые должны начинаться с '#' или '//'.
"Выражение" представляет собой
Кроме того, в файле могут встретиться некоторые разновидности "присваивания". Если инструкция определяет, например, начальные значения для "набора управляющих флагов", в котором некоторые флаги и так уже установлены по умолчанию, то возможны следующие операции
rules = "..." model = "..." layout = "..." variant = "..." options = "..." keymap = "..." keycodes = "..." geometry = "..." types = "..." compat = "..." symbols = "..." (или symbolstouse = "...")
Описывают те же параметры, что и в главном конфигурационном файле X сервера (XF86Config).
Напомню, что собственный файл конфигурации XKB может быть составлен для каждого дисплея по отдельности. Поэтому, если компоненты конфигурации уже описаны в XF86Config, то здесь имеет смысл указывать только те компоненты (или rules/model/layout/etc.), которые для данного дисплея отличаются от общих. Естественно, все эти параметры, указанные в "дополнительном файле конфигурации" имеют больший приоритет и переписывают соответствующие значения из файла конфигурации X сервера.
modifiers [ = | -= | += ] модификатор1 + модификатор2 + ..."Модификатор" - название одного из "реальных" модификаторов - shift, lock, control (или ctrl), mod1, mod2, mod3, mod4, mod5.
Как я уже говорил, здесь вместо присваивания могут использоваться операции
'-=' - убрать модификатор(ы), '+=' - добавить модификатор(ы), '='
- заменить набор модификаторов на указанные в этой инструкции.
(Надо заметить, что по умолчанию при старте X сервера этот набор модификаторов
пустой. Поэтому, имеют смысл только операции '+=' и '='. Причем разницы
между ними нет.)
controls [ = | -= | += ] флаг1 + флаг2 + ...Как и в предыдущей инструкции, операция может быть убрать/добавить/заменить ('-='/'+='/'=').
ignorelockmods [ -= | += | = ] модификатор1 + модификатор2 + ... (или ignorelockmodifiers ...)
internalmods [ -= | += | = ] модификатор1 + модификатор2 + ... (или internalmodifiers ...)
Это модификаторы, которые используются только внутри X сервера (для выбора "действия" клавиши, если таковое есть) и не сообщаются в клавиатурных event'ах, посылаемых приложениям.
groups = [ wrap | clamp | число ] (или outofrangegroups ...)
Задает "метод выравнивания групп". Напомню, что метод может быть wrap, clamp
или redirect. В последнем случае нужен дополнительный параметр - куда
"редирект", если номер группы выходит за границы диапазона.
Так вот, метод redirect задается в виде
groups = номер_группы
bell = число (или bellvolume = число ) bellpitch = число bellduration = число click = число (или clickvolume = число )
Все эти инструкции устанавливают параметры "пищалки" (bell) и "клика" клавиатуры (обычно это более короткий сигнал, чем bell).
Инструкции bell и click могут также иметь вид
bell = [ on | off ] click = [ on | off ]что (как нетрудно догадаться) просто означают включить/выключить эти сигналы. Если сигнал просто включен и не указано его "volume", то оно считается - 100.
accessxtimeoutctrlson [ -= | += | = ] событие1 + событие2 + ... (или axtctrlson ...) accessxtimeoutctrlsoff [ -= | += | = ] событие1 + событие2 + ... (или axtctrlsoff ...)
где "событие" - slowkeyspress, slowkeysaccept, feature, slowwarn, indicator, stickykeys, slowkeysrelease, slowkeysreject, bouncekeysreject, dumbbell.
Подробнее об этих событиях можно прочитать в документации (XKBlib), поставляемой в "исходниках" XFree86.
Иван Паскаль [email protected]