On Sat, Apr 28, 2012 at 08:43:02AM +0400, Artem Chuprina wrote: > Oleksandr Gavenko -> debian-russian@lists.debian.org @ Sat, 28 Apr 2012 00:21:43 +0300: > > OG> Еще меня смущает что для переключения раскладки приходиться создавать > OG> отдельный процесс... Хотя подобные решения встречал на многих домашних > OG> страницах и в блог-записях. Это правильно с точки зрения "правильности"? > > Неправильно. > > OG> К примеру:: > > OG> $ setxkbmap -option grp:rwin_toggle us,ru > > OG> не требует порождения процеса... > > Правильно - это таки почитать документацию и те самые конфиги, в которых > описано то, что setxkbmap видит как grp:rwin_toggle. Потом создать себе > такой конфиг (на крайняк похачить системный), добавить в него нужные > сочетания клавиш, и радоваться жизни. Я так себе делал переключение по > Caps/Shift+Caps, пока оно не попало в апстрим. > > У меня был файлик примерно следующего содержания: > > xkb_keymap "ran_104" { > xkb_keycodes { > include "xfree86" > }; > xkb_types { include "complete" }; > xkb_compatibility { include "complete" }; > xkb_symbols { > include "pc/pc(pc104)" > include "pc/us" > include "pc/ru(winkeys):2" > include "group-rich(switch)" > include "group-rich(caps_select)" > include "compose(rctrl)" > }; > xkb_geometry { include "pc(pc104)" }; > }; > > (на самом деле там несколько вариантов, но я не буду грузить > подробностями), который грузился командой xkbcomp. group-rich - это мой > собственный вариант системного group, с добавленными кнопками, и > хранящийся в ~/etc/xkb/symbols. > > setxkbmap - это "высокоуровневая" утилита, которая через три слоя > системных конфигов позволяет воспользоваться аналогичной системной > конструкцией. дополню сказанное тем, что желаемое тс-ом поведение несколько совсем нестандартно: клавиши rwin и lwin хоть и транслируются в виртуальный модификатор super (что и позволяет использовать их в левой части выражения типа "super+клавиша"), но вот только ни в одном из предописанных типов (их можно найти в /usr/share/X11/xkb/types/) этот виртуальный модификатор не используется· соответственно, сначала нужно создать свой тип, в котором будет этот модификатор, а затем переопределить клавиши с кейкодами AE01 ("1") и AE02 ("2") — сказать, что они имеют тот самый созданный нами тип, и расписать действия при активном модификаторе super· для двух раскладок достаточно даже и не действие совершать, а просто вывести один из двух символов: ISO_First_Group/ISO_Last_Group чуть больше подробностей можно почерпнуть у Ивана Паскаля: http://pascal.tsu.ru/other/xkb/ и в моих небольших заметках: http://unixforum.org/index.php?showtopic=49203 -- wbr, alexander barakin aka sash-kan. -- i will be very thankful to you if you will use natural for the human order: first question, then the answer.
Attachment:
signature.asc
Description: Digital signature