From: duxiaoming <du....@if...> - 2002-03-15 12:56:35
|
Hi, 看了上月许多关于 zhcon 下步设计的想法, 很有启发. Ervin Yan 关于输入法模块化的阐述, 我想有必要讨论的更具体点, 抛砖引玉, 请大家指教: 1/ src/ 下的 inputmethod 是否就是指的输入法 Server 部分呢? 2/ inputserver 工作流程: 接受Client请求(例如TCP/IP) ______________________________________________________________________________ ifrance.com, l'email gratuit le plus complet de l'Internet ! vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP... http://www.ifrance.com/_reloc/email.emailif |
From: Hu Y. <ccp...@et...> - 2002-03-15 15:50:43
|
----- Original Message ----- From: "duxiaoming" <du....@if...> To: <zhc...@li...> Sent: Thursday, March 14, 2002 9:34 AM Subject: [Zhcon-devel] Some ideas about architecture zhcon > Hi, > > 看了上月许多关于 zhcon 下步设计的想法, 很有启发. > > Ervin Yan 关于输入法模块化的阐述, 我想有必要讨论的更具体点, 抛砖引玉, 请大 家指教: > > 1/ src/ 下的 inputmethod 是否就是指的输入法 Server 部分呢? 应该是inputmanage吧。它包括所有的输入处理,具体有: Keyboard IMClient, input method client. IMServer, input method server. Mouse, finished soon input相关的对象,系统键盘、输入法的管理、即将加入的mouse,几乎全集中在 inputmanage上,看起来模块化的特点不明显。以下是我对其中的关系整理后,提出的 新的分类方法,共大家讨论。 class InputBase { // 处理输入需要处理的共享资源 public: static Create(); static Destory(); static Console* mpCon; static int mClientFd; }; // 这是C++中处理全局变量的通用方法 class Keyboard mKey : public InputBase { // keymap的设置与恢复,系 统键盘的处理 }; class IMClient mIMClient : public InputBase { // 输入法相关 }; class Mouse mMouse : public InputBase { // 鼠标事件 }; class Input { public: // 最好是私有 class Keyboard mKey; // keymap的设置与恢复,系统键盘的处理 class IMClient mIMClient; // 输入法相关 class Mouse mMouse; // 鼠标事件 public: void Process(); // 用select监测所有的输入, // 包括键盘、鼠标 // 甚至zhcon.cpp中read mTtyFd的内容 } class IMClient { public: class IMFrontEnd* pFrontEnd; class IMConnect Conn; } class IMConnect { public: class IMServer *pServer; // 可以为空,如果使用TCP/IP } class IMSUnicon : public IMServer { } class IMSNative : public IMNative { } class FENativeBar : public IMFrontEnd { } class FEOverspot : public IMFrontEnd { } IMServer的关系是个麻烦,如何解决? > 2/ inputserver 工作流程: > 接受Client请求(例如TCP/IP) 目前还没有,正在讨论。 |
From: Hu Y. <ccp...@et...> - 2002-03-17 03:53:14
|
inputserver develop: 1. function Config, socket, data file path include dir and name etc. client info and manage. client register, unregister. client receive and respond. according client info, load and unload resource dynamicly to reduce memory used. IM wraper, include unicon, WIN mb etc. 2. protocol exist standard protocol like XIM or IIIMF, may modify them if nessary. 3. Evalution develop demo inputserver is more like xfs and dictd. the first version is the most important one in GPL project. |
From: ejoy <ej...@pe...> - 2002-03-18 14:04:48
|
On Friday 15 March 2002 15:48, you wrote: > class Input { > public: // 最好是私有 > class Keyboard mKey; // keymap的设置与恢复,系统键盘的处理 1 切换VT时要处理Keymap,是否也放在这里? > class Mouse mMouse; // 鼠标事件 2 Keyboard&Mouse只是一个int 之类的东西还是一个类?如果是类的话,按说keyboard&mouse只能有一个 实例,为何不用point or refrence?还是设计上有其它想法? > class IMClient mIMClient; // 输入法相关 IMClient的功能?是否包括屏显操作? > public: > void Process(); // 用select监测所有的输入, 3 如果输入来自console,总控程序似应放到main()中.是否维护一个vector<Input*> ? > // 包括键盘、鼠标 > // 甚至zhcon.cpp中read mTtyFd的内容 > } -- Sincerely yours, ejoy |
From: ejoy <ej...@pe...> - 2002-03-20 12:21:16
|
On Tuesday 19 March 2002 04:07, you wrote: > ----- Original Message ----- > From: "ejoy" <ej...@pe...> > To: "zhcon-devel" <zhc...@li...> > Sent: Tuesday, March 19, 2002 5:49 AM > Subject: Re: [Zhcon-devel] Some ideas about architecture zhcon > > > On Friday 15 March 2002 15:48, you wrote: > 这一点我考虑得还不是太清楚。好像应该包括连接和前台显示两个部分,IMClient用 > connect处理与server的关系,用FrontEnd显示。切换输入法等,由Input调用IMClient > 的函数(如Switch)来实现,如果需要同时切换内码,Switch会返回InputEvt给 > Input,由Input再返回给zhcon处理。 > IMConnect/IMServer放在IMClient中还是Input,需要再斟酌。在IMServer外面包上 > IMConnect主要是考虑将来的输入法服务器的需要,再阅读现在的程序,看看 > Input/IMClient/IMConnect之间有什么关系。如果Input与IMConnect之间的关系很少, > 应该考虑用IMClient包含IMConnect。 输入法的事可以慢慢考虑,就我现在的感受,接口的统一和实现的灵活性是鱼和熊掌, 难以得兼。最好能画个类图讨论。 > 这不是绝对的,如Keyboard/Console。Console是zhcon的子类。实际上总是存在一些基 > 础类,use it everywhere。zhcon的处理是把它们作为全局变量,这不太好,它说明了 > 这个变量随时要用,但事实上很少有一个变量被所有的对象使用,所以如果具体指出被 > 哪些对象使用,会好很多,如果还能分出读写权限,就更好。 > > 把Console的point作为InputBase的成员是比较好的c++处理方法,类似的方法在turbo > vision中用得很多。这样做实际上是一个警告,如果修改zhcon,就通知了程序员, > “要注意,Input用了Console的public函数”。而修改Input的时候,程序员会知道, > “我在修改前要了解Console的用法”。 > 如果是调用全局指针gpConsole,就不能预先得到警告,可能费好大力,修改了zhcon和 > console,编译时却发现,Input有问题,沮丧,放弃修改?问题出在哪儿? > 关键词,类的声明没有完全表示类之间的关系。 同意,应当尽量少用global var. -- Sincerely yours, ejoy |