[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