星期一 2005年05月30日 To improve the usability, I'd like to propose a big enhancement with gimlet which based on significant redesign of gimlet, instead of bug fix.
We can make Gimlet act as an iiim desktop service agent, and have the following features:
1. Support PreFilter modules to do some preprocess for the keyevent before send to iiim server, such as:
a). Hotkey filter, different engines/different users/defferent locales may have different hotkeys.
b). keymapping filter.
2. Support common GUI modules, such as:
a). common status/preedit/candidates window
b). common configuration window
c). virtual keyboard.
d). should be scalable to support different window system, such as gtk/qt/Windows.
e). should be scalable to support iiimcf/user defined GUI(status/preedit/candidates) modules.
3. Provide interface to support local input modules, such as:
a). handwriting
b). voice recognization.
c). character lookup table.
d). user defined input engine.
e). user defined characters for specific input engine.
f). user defined keymapping.
4. Provide interface to support PostFilter modules to do some conversion for the commit result from iiim server, such as:
a). encoding converters, such as UTF-8 <-> big5
b). phrase converters, such as Simpified Chinese phrase <-> Traditional Chinese phrase.
c). others, such as, hagual<->hanja ...
d). user defined postfilters.
Each filtering should be registered whether or not they are needed so that the process can be ommitted.
5. Provide overall configuration panel to support:
a). input methods disable/enable
b). input method properties setting.
c). GUI styles switching.
d). Hotkey definition.
e). local input engine definition.
6. Support systray as Windows.
Event flow:
Two scenarios:
A). Fontend mode
gimlet can implement as a desktop service agent for iiim clients and server.
1. iiim client register gimlet for iiim desktop services. if not register, the iiim client events will be sent to iiim server directly.
2. iiim client sent events to gimlet first.
3. gimlet do prefilter process for the events.
4. gimlet sent prefilter result to iiim server.
5. iiim server send status/preedit/candidate/commit info back to gimlet.
6. if status/preedit/candidate info, gimlet use common GUI modules to show them.
7. if commit info, gimlet call postfilter modules and commit the result.
B). Backend mode
gimlet can implement an additional capability as a mini-cascaded server so that a possible optimization is possible, so that this significant modification proposal is a part of bigger picture.
gimlet is still on the desktop, however event is first sent to the server, then forwarded to gimlet, then gimlet perform pre-filter, then send back to the server and LE, then send to gimlet for post filtering.
发表于 James Su 在 2005年05月31日, 11:25 下午 CST #
发表于 James Su 在 2005年05月31日, 11:30 下午 CST #
发表于 Ping-Wu Zhang 在 2005年06月05日, 03:04 上午 CST #