netch: (bird)
Перестроил управление клавиатурой на всех своих системах:
* Caps - переключение между Eng и Rus (в настройках всяких гномов ставится так на старте)
* Win+F2 - shortcut для "setxkbmap us,ru"
* Win+F3 - shortcut для "setxkbmap us,ua"
* Win+F6 - shortcut для "setxkbmap us,ru(ruu)"
Получилось удобнее и переносимее старой схемы, где
* Caps переключал Eng->Rus, Rus->Eng, Ukr->Eng
* Ctrl+Caps переключал Eng->Ukr, Rus->Ukr, Ukr->Rus
и надо было хитро пилить XKB'шные файлы.

Гномовские (+MATE +Cinnamon) отображалки, как оказалось, умеют узнавать у XKB текущий режим и сразу его отображать. Xxkb, однако, не умеет, а перезапускать его на каждый такой чих - облом.

Надо бы ещё виндовый свитчер подпилить. Но там надо аккуратно на ходу менять комплект активных раскладок, это пока ХЗ как делать.

По подсказке Ilya Guy us,ru -> us,ru(ruu) для варианта, если ё удобнее по AltGr+е, а не по ` (мне лично не нравится, но другие вкусняшки от AltGr могут быть кому-то полезны); поставил на Win+F6. (Вначале было Win+Shift+F2, не понравилось.)
netch: (Default)
Caps - лат<->рус, Ctrl+Caps - укр->рус<->укр.
Не по Паскалю.


# cat types/nx_types 
partial default xkb_types "nx_types" {
  include "complete"
  type "CAPS" {
    modifiers = Shift+Control;
    map[Shift] = Level2;
    map[Control] = Level3;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Control";
  };
};



# cat symbols/nx_group 
partial modifier_keys
xkb_symbols "nx_caps_toggle" {
  key   <CAPS> {
    type = "CAPS",
    actions[Group1] = [ LockGroup(group=2), LockMods(mods=Lock), LockGroup(group=3) ],
    actions[Group2] = [ LockGroup(group=1), LockMods(mods=Lock), LockGroup(group=3) ],
    actions[Group3] = [ LockGroup(group=1), LockMods(mods=Lock), LockGroup(group=2) ]
  };
};


В конфиге иксов писать:


  XkbKeycodes "xfree86+aliases(qwerty)"
  XkbTypes "nx_types"
  XkbCompat "complete+leds(scroll)"
## для xorg 6.9.0 надо писать: complete+ledscroll(group_lock). -- 2006-07-12
  XkbSymbols "pc/pc(pc105)+pc/us+pc/ru:2+pc/ua:3+nx_group(nx_caps_toggle)"
## для xorg 7.2 надо писать: pc+us+ru:2+ua:3+nx_group(nx_caps_toggle). -- 2007-08-10
  XkbGeometry "pc(pc105)"


Или подключать на ходу:
/usr/local/bin/xkbcomp ~/lib/xkbmap1 "$DISPLAY"

$ less lib/xkbmap1
xkb_keymap {
        xkb_keycodes  { include "xfree86+aliases(qwerty)"       };
        xkb_types     { include "nx_types"      };
        xkb_compat    { include "complete+ledscroll(group_lock)" };
        xkb_symbols   { include "pc+us+ru:2+ua:3+nx_group(nx_caps_toggle)" };
        xkb_geometry  { include "pc(pc105)"     };
};


У xxkb не забыть выключить two_state.

P.S. А всё-таки путаница этот ваш XKB.

P.P.S. До досовского драйвера не дотянул - там запоминалось, какая из местных групп была выбрана перед латинской, и восстанавливалась она же; у меня всегда переходит на русскую. Но сначала мне было облом думать это, а потом я чуть переделал схему и решил, что мне это не нужно.

UPD: P.S.[3]: странно себя ведут приложения если на эту раскладку переключено на ходу: SIGSEGV, однако.

UPD[2006-07-12]: см. выше про 6.9.0

UPD[2007-08-10]: для Xorg 7.2 на фряхе путь - /usr/local/share/X11/xkb

UPD[2012-09-13]: OpenSuSE: /var/lib/xkb/compiled удалять - залипает скомпилированная версия

Profile

netch: (Default)
netch

May 2017

S M T W T F S
 123456
78 910111213
1415161718 1920
21222324252627
28293031   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 27th, 2017 05:22 am
Powered by Dreamwidth Studios