XKB & три языка
Mar. 20th, 2006 12:28 amCaps - лат<->рус, Ctrl+Caps - укр->рус<->укр.
Не по Паскалю.
В конфиге иксов писать:
Или подключать на ходу:
/usr/local/bin/xkbcomp ~/lib/xkbmap1 "$DISPLAY"
У 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 удалять - залипает скомпилированная версия
Не по Паскалю.
# 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 удалять - залипает скомпилированная версия