LINUX.ORG.RU

Настройка переключения раскладок...


0

0

Как сделать, чтобы левый Вин переключал Англ-Рус, а правый -- Англ-Укр? То есть я хочу, чтобы на каждой клавише держалось только 2 раскладки. Два раза клацать одной не предлагать... В ххкб есть похожая возможность, но она, к сож-ю, работает только мышью(возм-ь)... А пользоваться оной неудобно...

anonymous

Re: Настройка переключения раскладок...

FAQ

anonymous ()
Ответ на: Re: Настройка переключения раскладок... от Demetrio

Re: Настройка переключения раскладок...

вобщето в факе нет ни слова по поводу "чтобы левый Вин переключал Англ-Рус, а правый -- Англ-Укр"
У меня есть одно решение, но пока не дошли руки, чтоб его опробовать.
Ниже выдержка из одной рассылки.


точно - можно таки приучить xkb не перебирать раскладки в цикле (украинцы меня поймут :), а привязать каждую
 раскладку на уникальное сочетание клавиш.
в приведенном примере задействованы три - us+ru+ua, но, при желании, можно и четвертую (максимально 
возможную) прикрутить.
основой взят многострадальный CapsLock:
нажатие CapsLock - раскладка us
Shift+CapsLock - ru
Ctrl+CapsLock - ua
Shift+Ctrl+CapsLock - "классика" - переключение режима CapsLock (для тех, кто много пишет ПРОПИСЬЮ :)
проверено на версии 
xkb-1.10-6
XFree86-4.3.0-42

итак, по пунктам:

1. файл .xsession:
...
(cd ~/etc/xkb && xkbcomp three_groups.keymap $DISPLAY)
...

2. файл ~/etc/xkb/three_groups.keymap:
xkb_keymap "THREE_LANG_MAP" {
  xkb_keycodes { include "xfree86" };
  xkb_geometry { include "pc(pc104)" };
  xkb_types    { include "complete+three_groups.types" };
  xkb_compat   { include "complete+leds(scroll)+three_groups.compat" };
  // leds(scroll) можно и выкинуть - раскладки контролируются ручками :))
  xkb_symbols
  {
    include "pc/pc(pc104)+pc/us+pc/ru(winkeys):2+pc/ua(winkeys):3"
    replace key <CAPS> // можно и с другими поэкспериментировать
    {
      type = "THREE_LANG", // собственный "тип" клавиши. описан в
                           // three_groups.types
      [
        ISO_First_Group, // "чистая" клавиша переключает на us
        ISO_Last_Group,  // +Shift - ru
        Mae_Koho,        // это не украинское ругательство. это буква
                         // такая :)
                         // просто взял от фонаря из keysymdef.h то,
                         // что заведомо не используется в кириллице
        Caps_Lock        // +Shift+Ctrl - "родная" функция клавиши
      ]
    };
  };
};

3. файл ~/etc/xkb/types/three_groups.types:
partial xkb_types "shift" {
  type "THREE_LANG" {
    modifiers = Shift+Control+Alt;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Control] = Level3;
    map[Control+Shift] = Level4;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Ctrl";
    level_name[Level4] = "Ctrl Shift";
  };
};

4. файл ~/etc/xkb/compat/three_groups.compat:
default partial xkb_compatibility "default"  {
    interpret Mae_Koho {
        action= LockGroup(group=3); // за работоспособность такой
                                    // конструкции
                                    // во всех версиях xkb, видимо,
                                    // никто не поручится :(
    };
};

Valerius ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.