[amirus] amirus

  • From: Vovka <jvovka@xxxxxxxxx>
  • To: amirus@xxxxxxxxxxxxx
  • Date: Sat, 08 Feb 2003 09:55:25 +0300

Hello,

Специально для Levitator\tpa (ну и кнешна всех остальных :-))

Проект Amirus (рабочее название).
Вот то, что удалось насобирать за 2 месяца нашей работы:

*1.* Переключение раскладок (по горячим клавишам).
*1.1. задача:* переключение системной раскладки.
*реализация:* системная функция SetKeyMapDefault().
*примечание:* раскладка должна быть предворительно загружена и оставаться в 
списке ресурса (keymap.resource) до холодного ребута.
*1.2. задача:* переключения раскладки для потока I/O каждого shell окна.
*реализация:* посылка запроса с командой CD_SETKEYMAP.
*примечание:* необходимо иметь структуру IORequst, которая была создана и 
инициализирована для устройства console.device данного шелла. чтобы получить 
эту структуру нам придется запачкать системную функцию OpenDevice() и 
формировать список структур IORequest для каждого открытого console.device. 
необходимо также перегрузить функцию CloseDevice() для того , чтобы удалить из 
нашего списка уже не нужную структуру IORequest. 
*1.3. задача:* обеспечение механизма hotkey.
*реализация:* добавляем в систему еще один обработчик событий ввода 
(inputhandler). он просматривает весь список событий ввода и сигнализирует 
(пробуждая) основную программу.
*примечание:* обработчик имеет высокий приоритет оптимальное время исполнения. 
рассчитан на отслеживание от 1-й до 3-х клавиш.
*2. *Структура программы.
программа состоит из двух частей: основная(amirus) и установки(amirusprefs).
*2.1.* основная программа. 
*задача:* переключение раскладки по горячим клавишам.
*GUI: *программа не обладает интерфейсом. 
*2.1.1.* инициализация.
*2.1.1.1.* чтение установок из иконки (ToolTypes) при запуске из WorkBench. 
CX_POPUP - для вызова установок.
CX_POPKEY - для вызова установок.
CX_PRIORITY - приоритет объекта broker(commodity).
AMIRUS_PREFS - файл установок (перегружает установки из tooltypes)
AMIRUS_KEYMAP - альтернативная раскладка по умолчанию (полный путь)
AMIRUS_VISUAL - режим визуализации.
AMIRUS_HOTKEY - комбинация горячих клавиш на переключение раскладки.
AMIRUS_CONSOLE - вкл/откл режима переключения раскладки в shell-окне.
*2.1.1.2.*чтение аргументов при запуске из CLI.
(чтение установок из иконки, если это возможно. далее все установки аргументов 
пере гружает установки из tooltypes.)
prefs - файл установок (перегружает все установки tooltypes)
keymap - альтернативная раскладка по умолчанию (полный путь)
visual - режим визуализации.
hotkey - комбинация горячих клавиш на переключение раскладки.
console - вкл/откл режима переключения раскладки в shell-окне.
установки аргументов перегружают установки из файла.
т.е. ToolTypes<-PrefsFile<-Arguments
*2.1.1.3.* инициализация агента переключения раскладок (KeyMapSpy)
происходит замена системных функций OpenDevice() и CloseDevice(). патч 
отслеживает открытие устройства console.device и формирует список структур 
IORequest.
далее - инициализация inputhandler для отслеживания горячих клавишь.
далее - инициализация объекта commodity.
события commodity: 
CXCMD_DISABLE - приостановка работы inputhandler.
CXCMD_ENABLE - возобнавление работы inputhandler.
CXCMD_KILL - выход.
CXCMD_APPEAR - запуск установок.
CXCMD_DISAPPEAR - выход из установок (отмена).
CXM_IEVENT - "newprefs" -═обновление системных установок.
CXM_IEVENT - EVT_PREFS - обновление установок программы.
*2.1.2.* основной цикл 
ожидания события от inputhandler и broker.
*2.1.3. *завершение работы. 
диактивация inputhandler
возвращение системной раскладки (также во всех shell)
уничтожение агента KeyMapSpy (возвращение системных функций OpenDevice() и 
CloseDevice())
*2.2.* программа установок.
вызывается основной программой по событию CXCMD_APPEAR либо повторным запуском 
основной программы, либо непосредственным запуском.
место нахождения - SYSTEM:Prefs/
*задача:* обеспечить удобное управление параметрами работы основной программы.
*GUI:* MUI или GadTools (выбор по tooltype AMIRUS_GUI)
*2.2.1.* список доступных раскладок (путь "DEVS:KeyMaps/" )
*2.2.2.* тикущая альтернативная раскладка. вводится из активной записи списка 
либо непосредственно asl-запросом (полный путь).
*2.2.3.* кнопки SAVE, USE, CANCEL
USE-оповещение основной программы и передача установок непосредственно.
SAVE-запись установок в файл и USE.
CANCEL-безусловный выход.

вот пожалуй и все.
осталось сказать, что KeyMapSpy - модуль обеспечивающий управление (загрузка и 
переключение) раскладками.═он готов. также в его обязаности входит патч 
системных функций и формирование списка IORequest.

2Levitator\tpa: ты, как руководитель проекта сделай себе такой файл. где мы 
будем собирать подобную документацию. сам отредактируй (только не меняй, а 
дописывай)
2all: кто хочет что-то добавить, добавляйте! если есть необходимость, обговорим 
пункты отдельно.

<sb>
Bye! 
Waiting to reply, Vovka.


Other related posts: