[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Помогите добиться безусловного переключения раскладки клавиатуры в X window.



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


Reply to: