- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于QtE的嵌入式Linux中文输入法的设计与实现
基于Qt/E的嵌入式Linux中文输入法的设计与实现
作者: 陈晓雷 谢文 邓浩 郑州轻工业学院计算机与通信工程学院 上网日期: 2012年05月29日随着嵌人式系统在信息家电、移动通信、手持设备以及工业控制等众多领域的广泛应用,国内用户对支持中文输入法的轻量级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实例来与之对应。
当Server收到一个Event时,它需要判断应该发送给哪个窗口,这时候,它就会从QWSWindow列表中去找,然后根据这个窗口去找对应的Client应用程序,最后用QWSEvent对象来包装这个Event.
通过Socket机制发送给具体的Client应用程序。
基于以上原理,为了设计一个系统级中文输入法,需要把输入法的设计放在Server层上。具体来说,就是把输入法写为Server层的一部分,作为Server进程运行。
如果当前系统Server层安装了一个输入法,那么每次键盘事件产生的时候,就会先送给输入法,让输入法来做判断,看输入法是否会处理这个键盘按键,如果输入法可以处理,就不再继续分发这个事件,否则就会按照原先的事件分发机制继续分发这个事件。输入法会在应用程序之前处理键盘事件并根据用户选择发送相应汉字到客户端应用程序。
Qt/E拼音输入法的客户/服务器模型见图2.
图2 Qt/E拼音输入法的客户/服务器模型
2 中文输人法的设计与实现
Qt/E2.3版本提供了针对亚洲语系双字节输入法支持 。可通过继承QWSInputMethod类构造输入法实例,其接受的按键事件既可以来自于物理键盘,也可以从虚拟键盘产生,QWSInputMethod类提供键盘过滤器拦截按键消息,根据用户所选择的输入法,输出相应的字符到目标程序。
2.1 拼音输入法的功能
本输入法的界面见图3.当单击软键盘上面的输入法按键时,系统弹出软键盘面板,若选择中文输入法,则首先检测输入的按键组合是否是正确的拼音组合,如果是,将该拼音组合显示在拼音输入框中。接
原创力文档


文档评论(0)