[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [locale] Re: [locale] Отключить XKB в одной отдельно взятой программе.
> On Thu, 18 Jan 2001, Vlad Harchev wrote:
>
> > From: Vlad Harchev <hvv@hippo.ru>
> > Subject: Re: [locale] Отключить XKB в одной отдельно взятой программе.
> >
> > On Thu, 18 Jan 2001, Victor Wagner wrote:
> >
> > Hi,
> >
> > Может $LANG=C поможет ей, или $LC_TYPE=C?
> >
> > Еще - глядя на сырцы, можно сказать что $XKB_DISABLE запрещает XKB совсем.
>
> Не спасает. Т.е. спасает от переключения раскладки, когда это окно
> текущее, но если вдруг переключился это окно когда включен русский,
> то клавиатурный ввод пропадает совсем, и обратно уже не переключишь.
Действительно, XKB_DISABLE само по себе ничего не изменит.
Для клиентов, которые не понимают XKB (а с XKB_DISABLE это и получается)
он эмулирует переключение групп "традиционным" способом - "машет"
модификатором, который связан с Mode_switch.
(Кстати, если эта прога "работает на уровне KeyCodes", то ей должно быть
пофигу какие либо переключения. Но похоже, что она все-таки "на уровне KeySym".)
Ну, то есть, происходит вот что - если текущая группа не основная, то
соответствующий ( KeySym'у Mode_Switch) модификатор все-равно взведен
и хотя клиент получается и не XKB-aware, но он выбирает KeySym из второй
(русской) группы в соответствии с core protocol.
Можно попробовать "отучить XKB" эмулировать Mode_Switch модификатор.
Проблемы могут возникнуть только у приложений статически слинкованых
с без-XKB libX11. Всем другим эта "фишка" не нужна.
Для этого надо выкинуть (закомментарить) в X11R6/lib/X11/xkb/compat/basic
строчки типа
group 2 = AltGr;
group 3 = AltGr;
и т.п.
(Естественно, надо перезагрузить раскладку. Например - setxkbmap.
Ну и XKB_DISABLE для данного приложеня все-равно нужен.)
--
Ivan U. Pascal | e-mail: pascal@tsu.ru
Administrator of | Tomsk State University
University Network | Tomsk, Russia