Linux для пользователя

       

Несколько практических рекомендаций по настройке модуля XKB


Самый простой способ — использовать программу для автоматической настройки X-Window. В XFree86 версии 3 такая программа называется XF86Setup. Она использует третий метод задания конфигурации XKB. При этом "по умолчанию" используются "правила" (XkbRules) — xfree86. Вам нужно будет только выбрать "модель" (XkbModel), "схему" (XkbLayout) и "способ переключения групп" (переключатель "РУС/ЛАТ").

Кроме того, при желании вы можете изменить "положение клавиши Ctrl". Естественно, в конфигурации это будет выглядеть как соответствующие строчки XkbOptions. Итак, запустите программу XF86Setup, выберите раздел Keyboard. В этом разделе выберите из меню Model (тип клавиатуры) и Layout (язык). Не забудьте отметить в отдельных списках (в правой части) подходящий "переключатель групп" и, если хотите — "расположение Ctrl". При выходе из программы она запишет соответствующие строчки в файл конфигурации Xfree86 в секции Keyboard.

А теперь рассмотрим то, как можно задать эти настройки путем прямого редактирования секции InputDevice (Keyboard) файла /etc/X11/XF86Config.

Прежде всего, надо сказать, что "ключевыми словами" в этих настройках будут:

xfree86 — название "архитектуры" X-Window;

  • pc101 (pc104, pc105 и т.п.) — тип клавиатуры (количество кнопок);

  • ru — название "раскладки клавиатуры" с русским алфавитом.

    Проще всего сразу задать конфигурацию клавиатуры с помощью keymap. В файлах конфигурации есть набор "полных keymap'ов" для архитектуры xfree86, отличающихся "языком". Все они лежат в файле xfree86, а название блока внутри файла отражает название "языка" (точнее — алфавита) — xfree86(us), xfree86(fr), xfree86(ru) и т. д. Полный список keymap-файлов можно посмотреть в файле /usr/X11R6//lib/X11/xkb/keymap.dir.

    Для "русифицированной" клавиатуры вполне подойдет

    Option "XkbKeymap" "xfree86(ru)"


    К сожалению, после исключения CapsLock как переключателя рус/лат из русской раскладки (см. замечание в конце предыдущего раздела) получилось так, что "полная keymap" для русского языка осталась вообще без какого-либо переключателя "по умолчанию". Но вы можете добавить его вручную. Для этого придется найти в файле /keymap/xfree86 блок "ru". И дописать в строчку xkb_symbols ссылку на описание соответствующего переключателя групп. Для CapsLock это будет — group(caps_toggle). То есть, строчка xkb_symbols будет выглядеть как

    xkb_symbols { include "en_US(pc105)+ru+group(caps_toggle)"};

    Полный список возможных переключателей групп (т. е. возможных переключателей "рус/лат") можно найти в файле /usr/X11R6//lib/X11/xkb/symbols/group (проведите в этом файле поиск по ключевому слову xkb_symbols).

    Теперь рассмотрим случай, когда для задания конфигурации клавиатуры используется третий способ — через "правила", "модель", "схему" и т. д. Как было сказано выше:


    название "правил" (rules) соответствует "архитектуре" (xfree86);


  • "модель" (model) соответствует типу клавиатуры (pc101, pc102 и т.п.);


  • "схема" (layout) отражает "язык" (ru).

    Поэтому, подходящая конфигурация будет выглядеть примерно так:

    Option "XkbRules" "xfree86"

    Option "XkbModel" "pc104"

    Option "XkbLayout" "ru"

    С помощью строки XkbOptions можно подобрать "поведение" управляющих клавиш. Возможные значения XkbOptions и их смысл можно подсмотреть в файле /rules/xfree86.lst в той части, которая начинается строкой "! option".

    Не забудьте, что, как и в предыдущем случае, надо явно выбрать переключатель групп. Для CapsLock это будет

    Option "XkbOptions" "grp:caps_toggle"

    И, наконец, рассмотрим первый способ — описание отдельных компонентов настройки (keycodes, compat, types, symbols, geometry).

    Если вы не знаете с чего начать, подсмотрите соответствующий набор в keymap. Или попробуйте "вычислить" его через rules/model/layout. Чаще всего подойдут следующие значения:


    для keycodes выбрать файл xfree86;


  • для types и compat подойдут файлы default ("по умолчанию") или complete ("полная");


  • geometry, скорее всего, "pc", а количество кнопок задается названием блока в файле pc — pc(pc101), pc(pc102), pc(pc104). Полный список "геометрий" имеется в файле /usr/X11R6/lib/X11/xkb/geometry.dir.



    А вот на symbols обратите особое внимание. Файл symbols/ru описывает только "буквенные" клавиши. Если вы укажете только его, то у вас не будут работать все остальные кнопки (включая Enter, Shift/Ctrl/Alt, F1-F12 и т. д.). Поэтому symbols должен состоять по крайней мере из двух файлов — en_US(pc101) (в скобках — тип клавиатуры) и, собственно, ru. Полный список symbols — в файле /usr/X11R6/lib/X11/xkb/symbols.dir.

    Сюда же надо добавить и описание подходящего "переключателя рус/лат" (как уже говорилось, их перечень — в файле symbols/group).

    Для первого метода список может выглядеть так

    Options "XkbKeycodes" "xfree86" Options "XkbTypes" "complete" Options "XkbCompat" "complete" Options "XkbSymbols" "en_US(pc101)+ru+group(alt_shift_toggle)" Options "XkbGeometry" "pc(pc101)"

    Если вам хочется задать дополнительные изменения "поведения" управляющих клавиш (то, что в третьем методе задается XkbOptions), то подсмотрите подходящую "добавку" в rules/xfree86.lst и "приплюсуйте" ее в строчку XkbSymbols. Например,

    XkbSymbols "en_US(pc101)+ru+group(shift_toggle)+ctrl(ctrl_ac)"

    На этом мы ограничим описание методов настройки клавиатуры, а точнее — настройки модуля XKB. Если вы хотите разобраться с этим детальнее, то обратитесь к исходному материалу И. Паскаля .

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