[gnome-cyr] gswitchit needs your advice



Привет всем

Если вы не используете gswitchit и он вам не интересен - можете дальше
не читать, извиняюсь за беспокойство.

Итак, есть в gswitchit 2.0.1 (и раньше) такая фишка - switchcuts.
Пользователь имеет возможность задать собственную клавишу переключения
раскладок. В обход (дополнительно к) вариантам, указанным в
/usr/X11R6/lib/xkb/symbols/group. Реализована эта фишка, прямо скажем,
криво (с точки зрения xkb). Делается захват клавиатуры и дальше по
оповещению происходит переключение группы. При этом блокируется любое
другое переключение (на тот случай, если пользователь в конфигурации xkb
указал другие клавиши переключения - они отключаются).

Подумав некоторое время, я решил выкинуть этот кривой кусок кода. Теперь
возможны такие способы переключения:
1. Объявленные в файле /usr/X11R/lib/xkb/symbols/groups (точнее, в
xfree86.xml). Это как и раньше
2. Используется механизм изменения конфигурации клавиатуры (XkbDescPtr)
прямо перед инсталляцией ее в X server. Никакого захвата клавиш. Таким
образом, если я хочу сделать правый Ctrl клавишей переключения, я не
перехватываю его нажатие (как было раньше), а прямо в описании
клавиатуры меняю символ XK_Control_R на XK_ISO_Next_Group. Это
единственный честный способ, который должен использоваться "хорошей" xkb
программой.

Что, мои маленькие слушатели, устали от технических подробностей?
Потерпите немного, осталось чуть-чуть. Теперь, соббсно, проблема. Раньше
пользователь мог выбирать не-XKB клавиши переключения из списка (включая
двух-клавишные комбинации, типа RCtrl-LCtrl) или задавать свою
собственную комбинацию (просто нажать желаемые клавиши). Теперь эти
возможности (двух-клавишные комбинации и user-defined combination)
исчезает. Теоретически, они могут появиться. Когда-нибудь. Но - не
скоро. Потому как все это перевести в конфигурацию клавиатуры xkb -
очень нетривиально (в общем случае). Философский вопрос: настолько ли
нужна народу эти возможности? Что остается:
1. Все, что перечисленно в /usr/X11R6/lib/X11/xkb/symbols/group
2. Любые одноклавишные комбинации типа RCtrl, LCtrl, LShift, RShift,
LAlt, RAlt (могу добавить что угодно).
Возможно, впоследствие список будет расширен двухклавишными комбинациями
- но не обещаю.

Такое "обеднение" фич приводит к более понятному, надежному и просто
правильному коду в апплете gswitchit. Поэтому я очень сильно хочу
сделать это изменение (точнее, в cvs оно уже сделано, но откатить-то
всегда можно...).

Вот такой сложный вопрос получился. Надеюсь, хоть кто нибудь дочитает до
сюда, подумает и ответит.

Всего,

-- 
Sergey

Attachment: signature.asc
Description: This is a digitally signed message part



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