澳门足球投注

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 97|回复: 0

基于Qt/E的嵌入式Linux中文输入法的设计与实现

[复制链接]

172

主题

172

帖子

606

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
606
发表于 2017-12-19 15:21:06 | 显示全部楼层 |阅读模式
                   
  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实例来与之对应。
  当Server收到一个Event时,它需要判断应该发送给哪个窗口,这时候,它就会从QWSWindow列表中去找,然后根据这个窗口去找对应的Client应用程序,最后用QWSEvent对象来包装这个Event.
  通过Socket机制发送给具体的Client应用程序。
  基于以上原理,为了设计一个系统级中文输入法,需要把输入法的设计放在Server层上。具体来说,就是把输入法写为Server层的一部分,作为Server进程运行。
  如果当前系统Server层安装了一个输入法,那么每次键盘事件产生的时候,就会先送给输入法,让输入法来做判断,看输入法是否会处理这个键盘按键,如果输入法可以处理,就不再继续分发这个事件,否则就会按照原先的事件分发机制继续分发这个事件。输入法会在应用程序之前处理键盘事件并根据用户选择发送相应汉字到客户端应用程序。
  Qt/E拼音输入法的客户/服务器模型见图2.
图2 Qt/E拼音输入法的客户/服务器模型


            
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|澳门外围足球  

GMT+8, 2018-1-16 21:16 , Processed in 0.124800 second(s), 4 queries , File On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表