xkb, узелок на память

diesel

2008-03-12

В этом топике Линуксфорума можно найти интересную серию заметок о настройке "правильного" переключения раскладок клавиатуры. Суть примерно в том, что обычная "циклическая" схема переключения не так уж и удобна, ибо результат нажатия хоткея напрямую зависит от текущей раскладки, и в голове надо иметь не только желание: хочу английский, но и понимание того, что "сейчас у меня украинский, и мне надо два раза нажать Ctrl+Shift, чтобы получить русский". Вообще страшный вариант, поэтому мну украинской раскладки традиционно не имел, да и сейчас не имею - желание писать на украинском возникает чрезвычайно редко. Так вот. Гораздо проще оказывается, когда нажатие какого-то определенного сочетания клавиш, включает какой-то четко определенный язык, не зависимо от текущей раскладки. У меня, например, нажал Caps Lock - включился английский, нажал Shift+Caps Lock - включился русский. Схема достаточно удобна, привыкнуть к ней гораздо проще, чем кажется, правда, нужно чтобы такое было настроено на всех Десктопах, за которыми вы работаете. Настройка достаточно проста:
  1. берем файлик http://muaddeep.googlepages.com/mysym (или одноименный файлик у sash-kan'а - они одинаковые), и ложим в /usr/share/X11/xkb/symbols.
  2. открываем /usr/share/X11/xkb/rules/xorg , находим в нем секцию
     ! option        =       symbols 
    и дописываем в нее:
     mycaps                =       +mysym(caps_1) 
  3. открываем /etc/X11/xorg.conf и прописываем в XkbOptions, как-то так:
     Option          "XkbOptions"    "mycaps,grp_led:caps" 
    Этого достаточно, если вы пользуетесь каким-нить WM'ом, или KDE. Пользователи Gnome могут заметить, что эти настройки сбрасываются и не работают в Гноме. Чтобы заставить эти настройки работать, а так же добавить возможность выбора этой схемы через обычный Гномовский конфигуратор переключалки раскладок, я сделал следующее:
  4. В Debian(и скорее всего в Ubuntu) открываем файл: /etc/X11/xkb/base.xml , в OpenSuSE 10.3 он же у меня нашелся в /usr/share/X11/xkb/rules/base.xml . Находим в этом xml'е секцию: Layout switching, и добавляем туда еще одну опцию:
     <configitem> 
                           <name>mycaps </name>
                           <description>My CapsLock  switch </description>
                   </configitem>

После этого My Caps Lock switch появится в диалоге Keyboard Preferences в layout options/Layout switching - что нам и нужно было. Возможно, придётся поиграться layout options/Caps Lock key behaviour - в Debian у мну там стоит что-то кастомное, в SuSE работает с дефолтом.

Ну и напоследок, там на форуме в обсуждении заметок, разгорелся спор, по поводу того, нужна ли запоминалка раскладки для текущего окна, при не-циклическом переключении. Могу сказать: с запоминалкой удобнее, хотя без нее, при не-циклическом переключении не так смертельно опасно.