[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: question to xmodmap wizards
> Hi,
>
> В связи с этим вопрос: можно ли при использовании xmodmap сделать так,
> чтобы клавиша caps lock работала по назначению (т.е. лочила заглавные
> буквы, как латиницу, так и кириллицу, и одно нажатие делало бы
> переключение), а клавиша переключения языка работала самам по себе
> (тоже лочила либо латиницу, либо кириллицу, и одно нажатие делало бы
> переключение)?
Можно.
Caps_Lock надо оставить просто CapsLock'ом
keycode ** = Caps_Lock
add lock = Caps_Lock
а Mode_switch (переключалка рус/лат) повесить на другую клавишу
keycode ** = Mode_switch
add mod3 = Mode_switch
(mod* можно взять и другой незанятый Num_Lock, Alt и т.п.)
Единственная проблема - как сделать их обе "залипающими".
Нигде в документации я не нашел, но подсмотрел в xmodmap от ache, что
если добавить к описанию клавиши KeySym XF86ModeLock то ... работает.
(Не знаю - для чего она нужна, только ли для этого или есть еще "побочный
эффект", но - работает).
Итак
keycode ** = Caps_Lock XF86ModeLock
keycode ** = Mode_switch XF86ModeLock
При этом все "лочится" и переключается.
Однако на русских буквах не работает Caps_Lock (только Shift) и не работает
Control.
Дело в том, что Shift просто выбирает колонку из xmodmap, а Caps_Lock
в "иксах" никакого отношения к колонкам не имеет и обрабатывется отдельно
в Xlib. Ну и эта обработка ("капитализация" буквы) нормально сделана только
для ascii, и не работает с кодами >127.
Эту проблему можно решить, если заменить в описании Caps_Lock на Shift_Lock
(есть такая keysym, но ее почему-то никто не использует).
Тогда клавиша Caps_Lock (на которую назначаена на самом деле Shift_Lock :-)
нормально перебирает колонки как для ascii, так и для второй группы.
Остается только проблема с Control, но она решается только правкой
исходников (ну или настройкой XKB :-).
И еще - в "иксах" Shift не отменяет действие Caps_Lock (ну и Shift_Lock -
тоже). С этим даже в XKB плохо.
Теоретически сделать можно (с XKB), но -
- надо исправить один баг в Xlib (он исправлен но очень недавно)
- задать пару "хитрых" переменных среды
- подправить файлы настройки XKB (types)
> Также в чисто образовательных целях вопрос: достижим ли такой же
> эффект при использовании XKB (опять же без внешних переключалок)?
Запросто.
Даже практически без исправлений в файлах настройки. Надо только
выбрать подходящую конфигурацию.
--
Ivan U. Pascal | e-mail: pascal@tsu.ru
Administrator of | Tomsk State University
University Network | Tomsk, Russia