Страница:
From: "Andrew S. Bogatyirev (Soft Eng)" (abs@opentech.olvit.ru)
- * ftp://ftp.relcom.ru/x11/cyrillic/xrus-1.3.4.tar.gz *
* *
* РАСПРОСТРАНЯЕТСЯ СВОБОДНО *
*****************************************************************************
Автор данной версии (abs@openwin.msk.su - Андрей Богатырёв)
выражает глубочайшую признательность А.Лукьянову за плодотворную идею.
Исходные тексты программы находятся в /usr/local/src/xCyrInput
Использование программы:
------------------------
Основная идея работы этой программы - перехват и отслеживание
нажатий ВСЕХ клавиш на клавиатуре. При этом используется та особенность
X Window System, что события от окна могут посылаться НЕСКОЛЬКИМ программам
одновременно, причем каждой программе - свои события (заказанные ею).
Вторая используемая особенность - то, что клиентская программа может
заказать получение событий от ЛЮБОГО окна на экране, не только от своего.
Таким образом мы можем отслеживать и нажатие клавиш над ЧУЖИМИ окнами.
Переключение РУС/ЛАТ изначально подключено к кнопке Mode_switch,
которая на Sun-овских машинах совпадает с AltGraph (в нижнем правом углу).
Переключение происходит также при нажатии мыши над графической кнопкой
РУССКИЙ/LATIN в верхнем правом углу экрана (правая кнопка).
Среднее меню позволяет "на лету" менять кодовую таблицу.
При нажатии Ctrl программа временно переключается в латинский режим,
чтобы правильно отрабатывлись Ctrl/C и Ctrl/U.
Нажатие ПРАВОЙ кнопки мыши над окном проявляет меню,
в котором содержится строчка "Properties...".
Выбор этой строчки приводит к проявке диалога, в котором вы можете
настроить очень много разнообразных возможностей, в том числе
раскладку клавиш на клавиатуре.
Смотрим на Properties:
DiskCheckPath -
программа следит за свободным местом в нескольких каталогах
и предупреждает вас о его исчерпании.
Список каталогов - в этом поле, через двоеточие.
В окошке в правом верхнем углу экрана отображается
количество свободного места, оставшееся в ПЕРВОМ в списке каталоге.
Application Codesets Pattern List -
программа позволяет ОДНОВРЕМЕННО держать на экране несколько
программ-клиентов, использующих РАЗНЫЕ кодовые таблицы.
При этом монитор автоматически переключает кодовые
таблицы в зависимости от имени программы, класса программы,
имени окна, argv[0].
Класс программы можно узнать командой
xlsclients -l
Список соответствия оформляется в виде
шаблон_имени1=имя_таблицы1:шаблон_имени2=имя_таблицы2:...
Шаблон имени пишется в силе регулярного выражения Шелл.
Пример:
шаблон: *866*=altdos
Запуск программы:
$ LANG=ru.altdos cxterm -T x866 -fn crcA-12 -e /bin/sh &
Теперь перемещение фокуса клавиатуры в это окно будет вызывать
переключение клавиатуры на 866 кодовую таблицу.
Save - сохраняет ресурсы в файл $HOME/.Xdefaults
Минусы подхода, использованного в данной программе:
---------------------------------------------------
Высокая реактивность на медленных машинах и при большом числе
клиентских программ, ибо
1) Каждое переключение - это загрузка 4х колоночной таблицы по 132 кнопки
(посылка такого пакета по сети)
2) После этого КАЖДЫЙ КЛИЕНТ делает по MappingNotify event вызов
XRefreshKeyboardMapping() и читает такой же пакет с сервера.
Необходима библиотека /usr/dt/lib/libDtSvc.so.1 из CDE,
без нее не работает.
Схема третья:
~~~~~~~~~~~~~
Одновременное использование обеих схем.
Можно одновременно использовать оба метода переключения РУС/ЛАТ.
Для этого надо:
- создать пустой файл $HOME/.UseXmodmap
- под CDE не убивать xCyrInput
- под Open Look либо запускать его вручную,
либо занести команду запуска в файл $HOME/.openwin-init
Запуск программы xCyrInput вручную:
1) переключить клавиатуру в ЛАТИНСКИЙ режим
и убедиться в этом, попробовав набрать пару-другую букв.