netch: (Default)
netch ([personal profile] netch) wrote2006-03-20 12:28 am
Entry tags:

XKB & три языка

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 удалять - залипает скомпилированная версия

а стандартным циклом на Ctrl-shift не проще?

[identity profile] erra.livejournal.com 2006-03-19 10:40 pm (UTC)(link)
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "us,ru,uk"
Option "XkbOptions" "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection

Левый CS крутит цикл в одну сторону, правый - в другую

[identity profile] ysae.livejournal.com 2006-03-19 11:03 pm (UTC)(link)
А как с набором слов в верхнем регистре?
"Десятипальцыевый" набор используется?

[identity profile] neveripe.livejournal.com 2006-03-19 11:05 pm (UTC)(link)
Вообще-то набор слов в верхнем регистре - Shift+CapsLock.

[identity profile] ysae.livejournal.com 2006-03-19 11:32 pm (UTC)(link)
это просто термин мне на язык случайно прилип.
печать "слепым методом". все пальцы задействованы.
назначение каждому пальцу строго определенного набора клавиш.

да почти все тренажеры клавиатурные на это положение пальцев упор делают: solo, babytype, gtypist... .

всмысле, используете этот метод, или печатаете как привыкли сами по себе?

Re: а стандартным циклом на Ctrl-shift не проще?

[identity profile] andy-shev.livejournal.com 2006-03-22 04:27 pm (UTC)(link)
У нас недавно на конторе благодаря вопросам пользователей октрыли для себя lwin & rwin. Левую задействуем под крутилку языков с залипанием, а правую - под временную. При этом в KDE нормально работают сочетания с Ctrl + Shift.

[identity profile] neveripe.livejournal.com 2006-03-19 10:58 pm (UTC)(link)
А без xxkb?

[identity profile] neveripe.livejournal.com 2006-03-19 11:04 pm (UTC)(link)
Дык, xkb сам по себе делает раздельные состояния.
Насчёт индикатора - по лампочкам всегда видно.

[identity profile] neveripe.livejournal.com 2006-03-19 11:07 pm (UTC)(link)
Caps - русский - Scroll - украинский. Немного только переделать твоё.

[identity profile] http://users.livejournal.com/_slw/ 2006-03-20 06:35 am (UTC)(link)
А где строки соответствующего конфига?

[identity profile] ysae.livejournal.com 2006-03-19 11:16 pm (UTC)(link)
да, без раздельного состояния от xxkb давно не представляю себе, как работать.
только почему-то mplayer имеет свойство менять свое состояние в зависимости от состояния последнего окна, на котором побывал "фокус". хотя, не сильно-то и анноит.

[identity profile] neveripe.livejournal.com 2006-03-19 11:29 pm (UTC)(link)
xkb раздельно сам по себе для каждого окна делает.

[identity profile] neveripe.livejournal.com 2006-03-19 11:32 pm (UTC)(link)
АХЗ, я как-то не заметил :)
Возможно с собственно x.org, хотя не уверен.

[identity profile] geovit.livejournal.com 2006-03-20 07:24 am (UTC)(link)
А когда в WindowMaker'е появилась доб. кнопка в заголовке окна, отображающая состояние XKB? По-моему, в версии 0.61, так что, вполне возможно, XKB умел это с самого рождения.

поскольку я в тех краях пилил напильником...

[identity profile] http://users.livejournal.com/_adept_/ 2006-03-20 08:08 am (UTC)(link)
... я это помню очень хорошо.

Появилась она там в районе 0.20, именно из-за того, что xkb этого не умел.

[identity profile] dottedmag.livejournal.com 2006-03-20 02:05 am (UTC)(link)
>там запоминалось, какая из местных групп была выбрана перед латинской

Я сделал, но у меня xkb-конфиг переписан полностью. Можно попробовать отодрать.

А слать нужно не Паскалю а в xkb-devel

[identity profile] dottedmag.livejournal.com 2006-03-20 07:36 am (UTC)(link)
1) не будет. extension нужно будет редизайнить, а это вам не хрен собачий, ибо compatibility, кля.
2) не понял
3) Ну почему же изврат? Переключалка как переключалка.

[identity profile] helge9210.livejournal.com 2006-03-20 08:54 pm (UTC)(link)
Я думал, связки страшнее XKB+XXkb+XEmacs не бывает.

[identity profile] ark-devil.livejournal.com 2006-03-30 02:22 am (UTC)(link)
Все равно приходится помнить/узнавать состояние. Stateless переключатели мне милее

[identity profile] netch80.livejournal.com 2009-06-26 03:30 pm (UTC)(link)
Alt 5.0 с иксами 7.4:

xkb_keymap {
xkb_keycodes { include "evdev+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(pc104)" };
};