基于基于Qt//E的嵌入式的嵌入式Linux中文输入法的设计与实现中文输入法的设计与实现
摘要:设计了一种小巧的、具有良好的移植性和扩展性的系统级拼音输入法,企业应用表明,能够满足产品中
文输入的要求。 0 引言 随着嵌人式系统在信息家电、移动通信、手持设备以及工业控制等众多领域的
广泛应用,国内用户对支持中文输入法的轻量级GUI的需求日益迫切。 Qt/E是Nokia公司发布的面向嵌人式
系统的Qt版本,正日益成为嵌入式GUI开发的主流,被越来越多的国内外厂商用于便携式电子设备的开发,然而
它并没有提供中文输入法。目前国内在Qt/E平台下开发的中文输入法主要有2种方式: 1)移植现有的PC机
系统下的基于Qt/X1 1的中文输人法,移植了基于X Window下的XIM
摘要:设计了一种小巧的、具有良好的移植性和扩展性的系统级拼音输入法,企业应用表明,能够满足产品中文输入的要
求。
0 引言引言
随着嵌人式系统在信息家电、移动通信、手持设备以及工业控制等众多领域的广泛应用,国内用户对支持中文输入法的轻
量级GUI的需求日益迫切。
Qt/E是Nokia公司发布的面向嵌人式系统的Qt版本,正日益成为嵌入式GUI开发的主流,被越来越多的国内外厂商用于便
携式电子设备的开发,然而它并没有提供中文输入法。目前国内在Qt/E平台下开发的中文输入法主要有2种方式:
1)移植现有的PC机系统下的基于Qt/X1 1的中文输人法,移植了基于X Window下的XIM输入协议的中文输入法,但其需
要X Window下Xlib库的支持,这将增大系统开销,减慢显示的速度。
2)使用Qt/E插件的方法,其需要一个桌面应用管理程序,一般移植Qt/E自带的qpe桌面管理程序来管理输入法,这将给
不需要桌面管理的设备带来额外的开销。
基于此,本文开发了一种Qt/E平台下的小巧的中文输入法,在不增加系统开销也不影响移植性和扩展性的前提下,使用户
可以方便地输人中文、英文及各种字符,并根据项目实际需要,设定输出汉字的字体和大小,可减小应用程序开发的难度和复
杂度。
1 Qt/E的体系结构与输入法设计原理的体系结构与输入法设计原理
Qt/E和Qt/Xl 1是Nokia公司开发的面向嵌入式系统和Pc机的不同Qt版本。Qt/E与Qt/X11的区别就在于它们所依赖的底层显
示基础的不同,这也就导致了它们在体系结构上的差异。对于Qt/Xl1来说,底层的显示技术构建在x WindowSystem之上,完
全依赖于X Window System。
Qt/E在这方面则完全不同,它并没有构建在xWindow System 之上,而是构建在Linux的FrameBuffer之上,把需要在界面
上显示的内容直接写入Frame Buffer。因为在嵌入式系统上把X System给省略了,可以节省许多的系统开销。而直接写
FrameBuffer,又会加快显示速度。Qt/E与Qt/Xl 1体系构架对比见图1。
图1 Qt/E和Qt/X11体系构架对比
这一改变,导致了在Qt/E多出了1个Server层,该层负责监听系统事件,尤其是键盘和鼠标事件、屏幕输出、管理注册、
管理顶层窗口等诸多功能。系统产生的键盘鼠标事件,首先就传给了这个Server层,然后Server层在根据具体的情况把这些事
件分发给相应的应用程序。
每一个Qt/E应用程序都需要一个这样Server层存在 ].所以,第1个运行起来的Qt/E应用程序就会启动这个Server层并让自
己成为这个Server进程,后续运行的程序就会连接到这个Server层来管理自己。在Server端,每一个连接到Server层的Client
都有一个QWSClient对象与之对应,这个对象主要记录了Client ID.在应用程序中每创建一个顶层窗口,那么在Server端就会有
创建一个QWSWindow实例来与之对应。