Привет всем Если вы не используете 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