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) переключить клавиатуру в ЛАТИНСКИЙ режим
    и убедиться в этом, попробовав набрать пару-другую букв.