基于Murphypinyin嵌入式键盘的移植与实现

时间:2022-07-04 01:56:58

摘 要:文中深入分析了Qt Embeded 的输入法的实现原理,详细的介绍了Murphpinyin输入法的移植过程,实现了该输入法在嵌入式linux下的移植。

关键词:嵌入式系统;Qt Embeded;中文输入法;Murphypinyin

中图分类号:TP334.3 文献标识码:B DoI: 10.3969/j.issn.1003-6970.2012.06.027

Porting and Implementation of Embedded Keyboard based on Murphypinyin

HUa wei

(School of Control and Computer Engineering, North China Electric Power University, Baoding 071003, China)

【Abstract】this paper,in-depth analysis of the input method of the Qt embeded principle, detailed introduces the Murphpinyin input method of transplant process, realize the input method in embedded Linux transplantation.

【Key words】Embeded system; Qt Embeded; Chinese input method; Murphypinyin

0 引 言

随着嵌入式系统的飞速发展,在嵌入式手持设备领域,是否有一个快速,友好,可靠的终端人机交换设备是衡量一个手持设备的关键因素。当初的一些简单的人机交互接口已经无法满足人们的要求,嵌入式系统越来越需要一个用户界面良好,并且支持中文图形系统。

在嵌入式软件方面,嵌入式Linux系统和Qt Embedded由于源码完全开源, 越来越被社会所接受, 正受到越来越广泛的关注,而Qt Embedded 作为Linux 上主流的GUI 开发技术之一,凭借其跨平台、便于移植、模块化等优点被嵌入式开发工程师所青睐。

目前国内在Qt Embedded平台下开发的中文输入法主要有2种方式: (1)移植现有的PC机系统下的基于Q t /X11的中文输入法,移植了基于X Window 下的XIM输入协议的中文输入法, 但其需要XWindow 下Xlib库的支持, 在嵌入式系统中的资源是很宝贵的,移植Xlib会占用大量系统内存和增加系统的调用时间。(2)使用Q t /E 插件的方法,使用.framebuffer来直接进行操作,不通过X窗口。本文实现的一种Qt Embedded的轻量级的中文输入法,可以方便的输入中文、英文、以及各种字符,对嵌入式项目的开发有很大的实用价值。

1 Qt Embedded简介

Qt是一个功能全面的、可开发高性能的、多平台客户端/服务器的,C++图形用户界面应用程序框架。由挪威TrollTech 公司于1995年底出品,并于2008年6月17日被NOKIA公司收购,以增强NOKIA公司在跨平台软件研发方面的实力,更名为Qt Software。Qt是一种高效的跨平台的应用程序解决方案,Qt支持微软系统,苹果系统以及Linux操作系统,并支持大部分商业的UNIX操作系统和嵌入式操作系统。Qt不但拥有了完善的C++图形库,而且近年来的版本逐渐集成了数据库[1]、OpenGL库、多媒体库、网络、脚本库、XML库、WebKit库等等,其核心库也加入了进程间通信、多线程等模块,极大的丰富了Qt开发大规模复杂跨平台应用程序的能力,真正意义上实现了其研发宗旨“Code Less; Create More; Deploy Anywhere.”。

Qt Embedded主要用于采用嵌入式Linux系统的PDA或移动电话,Qtopia提供了窗口操作系统、游戏和多媒体、工作辅助应用程序、同步框架、PIM应用程序、Internet应用程序、开发环境、输入法、Java集成、本地化支持、个性化选项以及无线支持等,用于缩短制造商的开发周期。

2 Qt Embedded架构

Qt Embedded不像Qt 构建在X Windows 之上,而是应用于开发嵌入式操作系统的框架(如图1所示),Qt Embedded构建在Linux的framebuffer 之上[2],这样就可以把需要显示的内容直接写入framebuffer中。

QSwtslibMouseHandler:PublicQwSCalibratedMouseHandler

QwStslibMouseHandlerPrivate

::get_sample(struct ts_sample *sample){

ts_read();

}

Murphypinyin 是目前为止基于Qt / Embedded 的一个比较好的开源中文输入法, 而且Murphypinyin 带有软键盘, 用户可以通过触摸屏输入中文、英文、数字和符号等[5]。

首先修改Qt4.6.4 源代码中的编译配置文件,使得其支持触摸屏功能。# ./configure -embedded x86 -qt-gfxqvfb -qt-kbd-qvfb -qt-mouse-qvfb。编译编译tslib对触摸屏支持 #./configure--prefix=/usr/local/tslib/--host=arm-linux ac_cv_func_malloc_0_nonnull=yes。运行ts_calibrate产生校正文件 pointercal,运行ts_test, 以调整 ts的etc/ts.conf,配置Tslib的环境变量。编译Qt时使用-qtmouse-tslib (指定带tslib驱动的鼠标)目标环境中必须包含tslib的库和头文件(ts_source)。

重新编译Qt4.6.4,同时编译Qt的configure脚本中必须指定:configure -L -I 正确地配置tslib的ts.conf设置Qt环境变量QWS_MOUSE_PROTO显示地指定鼠标事件设备。

将Murphytalk编译进QT库, 将生成的四个lib文件libMurphytalk.so、libMurphytalk.so.1、libMurphytalk.so.1.0、libMurphytalk.so.1.0.0放到Qt Embedded的lib文件夹里。在自己的应用程序中通过if (QApplication::GuiServer == type) QPin yinImpl::installInputMethod();来安装输入法,通过if(QApplication::GuiServer == type)QPinyinImpl::release InputMethod();来卸载输入法,使用的时候,你只要在主函数中,实现安装和卸载输入法的过程就好了。

邮电出版社,2009,4

[2] 宋宝华. Linux 设备驱动开发详解[M].北京:人民邮电出版社,2008,2.

[3] Jasmin Blanchette, Mark Summerfield . C++ GUI Qt4 编程(第二版)[M]. 闫锋欣,曾泉人,张志强,译. 北京:电子工业出版社,2008,8.

[4] Inside Qt Series ( 十三) : Qt/ e 体系结构概述[OL].2010-01- 21. http:/ // archives/ 98

[5] 张萍,徐晶. Qt/ Embedded 环境下嵌入式键盘驱动的实现[J].计算机工程, 2007, 33( 11) .

上一篇:丝巾不只是一块布 下一篇:基于UG工程图的用户化研究及应用