基于Qtopia的嵌入式中文输入法设计

发布者:和谐共融最新更新时间:2013-03-05 来源: dzsc关键字:Qtopia  嵌入式  中文输入法 手机看文章 扫描二维码
随时随地手机看文章
  随着基于ARM内核芯片的大规模应用,手持嵌入式设备迎来了一个庞大的市场。与用户直接打交道的图形界面的友好程度决定了用户对该产品的感观认识。在这个方兴末艾的市场,嵌入式Linux由于其系统优异的健壮性,以及开源、免费等显著优势,成为嵌入式设备的主流操作系统。其中,Qtopia是Trolltech公司为采用嵌入式Linux操作系统的消费电子设备而开发的综合应用平台,因其友好的界面、完善的开发环境,已被国内移动电话制造商中兴通讯选作其移动电话ZTEU980基于Linux的应用开发框架,使Qtopia电话版成为中兴通讯支持中国3G标准TD-SCDMA的核心部件,Qtopia在嵌入式市场的竞争中拨得头筹。

  在Qtopia的应用中,有许多需要用户输入本地文字的场合,如短信、通讯录及记事本等,而Qtopia现有的输入方式,是基于虚拟的QWERTY全键盘的,在实际应用中,这种QWERTY全键盘不仅需要用户双手进行操作,而且由于按键排布紧密,从而导致误码率居高不下。

  本文提出一种基于Qtopia的采用传统九宫格方式的中文输入法设计。传统九宫格的虚拟键盘不仅符合大众的使用习惯,而且可以实现单手操作,可以为用户带来舒适的输入体验,提高产品的市场占有率。

  1 Qtopia中文编码及插件技术

  要实现汉字在Qtopia系统里正确处理并显示,必须满足两个前提条件:一是系统要有支持中文的编码;另一个是要有能显示这个中文编码的字符字体存在。本文的Linux开发环境代码编辑器的编码为GBK,目标机上的Qtopia平台使用Unicode编码,所以在程序里首先按如下的方式进行编码转换:


  接下来为Qtopia系统提供中文字体,Qtopia支持多种字体,包括ttf,bdf,qpf格式。其中qpf格式的字体使用最为方便,本文采用支持中文的Simsun_120_50.qpf字体文件,把该字体文件保存至MYMQTEDIR/lib/fonts目录下,修改字体链接fontdir文件,在菜单Appearance的Font选项里选中该字体,此时系统中文显示正常。

  在Qtopia中,输入法是以基于插件的方式实现的,Qtopia插件分为应用程序插件、服务器插件和系统插件3种。其中,应用程序插件是应用程序使用的插件,服务器插件是在启动时由Qtopia服务器进行装载的插件,系统插件是在应用程序启动时被装载的插件。本文所涉及的输入法属于服务器插件。

  Qtopia中通过类似COM的层来使用插件,建立一个插件的基本步骤为:创建插件的接口;写插件将提供的功能函数;为接口定义子类;创建一个插件实例;装载插件。

  在实现输入法插件的创建后,需将该插件编译成动态链接库的形式,并安装到插件对应的目录下,对于输入法插件而言。指定的存放目录为$QTEDIR/plugins/inputmethods。系统启动时,插件装载器会自动装载这个文件夹里的输入法插件。

  2  输入法在Qtopia中的实现

  2.1  输入法模块的实现

  中文拼音输入法的设计,要实现数字拼音键到汉字的转换。所谓数字拼音是指按照手机键盘上英文字母的布局来输入汉语拼音所得到的一串数字,对于九宫格形式的虚拟键盘来说。其键盘的布局特点导致不能直接输人汉语拼音而只能输入数字键盘扫描码,然后由扫描码的识别及纠错处理模块对其进行拼音组合、文字匹配检索后才能得到相应的汉字,处理流程见图1。


  首先用户输入的数字键盘扫描码要转换为相应的汉语拼音,本文采用查表检索法实现数字拼音到汉语拼音的转换,并对用户无效的拼音组合进行高亮提示。然后根据字典数据库检索相应的汉字,并对用户的输入进行机器学习,针对用户输入习惯不同,对用户输入常用词进行自适应排序。利用自带字库的基础语言模型与用户常用词模型相结合的检索技术对候选字进行自动排序,得到最终的候选字输出。如图2所示。[page]


  该输入法注重对用户输入的常用词、高频词的自适应,利用基础字库模型和用户习惯模型结合进行解码。主要思想是通过跟踪用户输入过程,记录用户输入习惯,然后根据用户的输入字词的不同概率动态调整相应的数据,并将结果存放于用户模型中。

  2.2  移植输入法到Qtopia中

  Qtopia 2.x系统中支持弹出式输入法的插件实现。弹出式输入法在没有键盘和其他文件输入设备时使用,它弹出窗口部件,用户可通过设备的触摸屏操作产生键事件,它们也被看做基于笔的输入方法。在本文中,采用ExtInputMethodInterface作为创建输入法插件的接口。

  (1)为弹出输入方法设备窗口部件。弹出输入法必须提供一个显示在屏幕上的QWidget窗口部件,并在一个键被按下时发出一个信号,Qtopia处理输入窗口部件的显示和隐藏。信号和插槽是Qt的核心机制,应用于对象之间的通信,信号和插槽是真正的信息封装,所有从QObject或其子类派生的类都能够包含信号,当对象改变状态时,信号就由该对象发射(emit)出去,对象并不需要知道另一端是谁在接收这个信号。本文的输入法设计,在用户点击选字按键时,一个包含所选字符的keyPress信号被发射出去。


  在这个keyPress信号中,ushort unicode为输入字符的unicode编码值,这样就可以把所选字符的编码传递给Qtopia系统,系统就会在当前光标处输入相应文字。

  (2)创建一个ExtInputMethodInterface插件。

  (3)编译该输入法插件。为了编译输入法插件,需要在.pro文件中设置如下:


  依次完成上述步骤,即可实现Qtopia输入法的创建及编译,本文所实现的中文拼音输入法如图3所示,当用户选择该输入法时,会弹出一个输入面板,该面板由候选字区、拼音组合选择区、拼音输人区及功能区组成。在开发板上运行该输入法如图3所示。



  候选字区  位于面板的最上方,由6个QPushButton组成,单击后相应的文字会输出至Qtopia系统当前光标处,并自动联想该字的常用词组合。

  拼音组合选择区  位于面板下方的左侧区域,由一个QListBox,供用户选择候选的拼音组合。

  3×3的输入区  位于面板下方的中间区域,与传统的手机键盘相对应,由a~z拼音字母及“*”键组成,“*”键为标点符号选择键,其余8个按键为拼音输入;

  “Del”按键  位于面板下方右侧区域,用来回退当前的拼音组合,如果当前拼音组合不为空,删除该组合最后一个拼音字母,并刷新拼音组合及候选字,若当前的拼音组合为空,则单击删除光标左侧的一个字符,长按该键则连续删除光标左侧字符;

  “Up”及“Down”按键  候选字区的上下翻页键。

  3  结  语

  基于Qtopia的插件技术,实现了传统九宫格方式的中文拼音输入法,该输入法在输入中文时支持词语联想功能及用户输入高频词自适应功能。该输入法在一个基于Linux 2.6.13内核的S3C2440嵌入式系统上运行成功,经过长时间的测试,该输入法运行稳定,响应速度流畅,可给用户带来舒适的输入体验。

关键字:Qtopia  嵌入式  中文输入法 引用地址:基于Qtopia的嵌入式中文输入法设计

上一篇:基于嵌入式Linux的步进电机驱动程序设计
下一篇:基于ATM9TDMI+Linux的SOHO 路由器设计方案

推荐阅读最新更新时间:2024-03-16 13:19

“飞思卡尔充电吧”分享低功耗、嵌入式应用开发技术
11月底“飞思卡尔充电吧”举行的LCD单片机在线研讨会上,飞思卡尔半导体全球产品经理谢晓东先生详细介绍了其全球领先的低功耗LCD单片机——MC9S08LL64,用实例讲解和分析如何利用飞思卡尔低功耗单片机实现领先同行的电子设计,并就飞思卡尔的低功耗LCD单片机的技术创新以及研发心得与工程师们进行了深入讨论。 面对竞争激烈的便携式设备市场,只有创新才能推动技术进步,为此全球半导体领导厂商飞思卡尔正在扩展8 位微控制器 (MCU) 系列,新推出的器件要求低功率操作和高级显示功能。其液晶显示器 (LCD) S08LL MCU系列的扩展性,让工程师能够快速开发可靠、灵活和低成本的医疗、工业及消费电子产品。 全球
[嵌入式]
“飞思卡尔充电吧”分享低功耗、<font color='red'>嵌入式</font>应用开发技术
简化嵌入式系统连结设计
USB连结是许多嵌入式应用的重要规格;高度整合的USB微控制器解决方案,不仅能以最简易的方式为嵌入式系统建立USB连结,还能提供高效能的CPU功能;其所附带的整合式类比周边更有助于降低元件数量和材料清单成本,进一步满足市场需求。 高整合度USB微控制器可以高成本效益,完成嵌入式连结功能设计。 加入更多功能/周边降低整体成本 USB在工业和消费应用中迅速获得采用,同时也为嵌入式解决方案的设计人员带来挑战,因为设计人员须把USB连结融入产品中,且还要维持或者降低整体成本。早期版本的USB微控制器是为增设USB介面所开发,但它没有能力支援其他的功能或周边设备。当USB刚推出时,这些元件在推动USB介面的全面普及上扮演重要的角色
[单片机]
简化<font color='red'>嵌入式</font>系统连结设计
驱动永磁无刷直流电机的嵌入式微控制器
    摘要: 本文介绍了一种适用于控制永磁无刷直流电机的廉价嵌入式微控制器,并结合实例给出了软件和硬件两种控制方法。     关键词: 永磁无刷直流电机  控制  嵌入式微控制器 一、 概述 永磁无刷直流电机(Permanent Magnet Brushless DC Motor以下简称PMBLDC)由于其固有的特点,在家用消费类产品(空调、冰箱、洗衣机)和IT周边产品(打印机、软驱、硬驱)中得到广泛的应用。它具有结构简单、高效、低噪声、高功率密度、启动扭矩大、寿命长等其它种类直流电机无法比拟的特性。我国是稀土大国,稀土永磁材料经过这几年的发展,已经有了一定的规模,质量和数据都有较大的提高,价格已不断
[传感技术]
嵌入式 MRAM的高性能应用
翻译自——Semiwiki 总结 一种新型自旋转移转矩磁阻存储器(STT-MRAM) IP为高性能嵌入式应用提供了一个有吸引力的选择。 介绍 如今,社会上广泛的应用程序都迫切需要嵌入式非易失性内存IP。 然而,嵌入式非易失性闪存IP的未来扩展在更高级的节点上是无效的。一些替代的存储器技术已经被作为“闪存的替代品”来追求,例如相变存储器(PCM)材料,电阻变化存储器(RRAM),自旋转移转矩磁阻存储器(STT-MRAM)。这些技术提供了密集的位单元(“1T1R”),并通过改变单元的静态电阻来操作,这种电阻是通过材料的“Write1”和“Write0”脉冲电流和大小引起。当单元被访问时,读操作感知电阻大小,
[嵌入式]
<font color='red'>嵌入式</font> MRAM的高性能应用
嵌入式市场:从公司竞争到生态链抗衡
编者语:    ●嵌入式行业的竞争将不再是公司个体竞赛,而是生态链之间的抗衡。    ●嵌入式系统产业“软化”和“服务化”的特征日趋明显,竞争重心正由“产品和技术”向“应用和服务”转变。    近年来,嵌入式系统产业经过分工细化和整合深化,资源开始向优势企业集中,以微软、英特尔等大公司为核心的产业链效应逐渐加大,在产业发展过程中的主导作用也日渐突出。与此同时,这些企业希望与合作伙伴或OEM厂商一起打造整个嵌入式生态系统,共同创造商业机会;希望自己开发出客户和消费者所需要的所有技术和产品,然后通过合作伙伴或OEM厂商将其“传递”到整个生态系统。    在不久前召开的IIC-China2010(国际集成电路研讨会暨展览会
[嵌入式]
ARM嵌入式系统的异常及裸机开发设计
1、ARM的异常 异常在嵌入式开发中是很常见的事件,它也是非常重要的事件。简单来说,异常就是一种会打断程序正常执行的事件。异常通常又称为“中断”。 异常的种类大致可分为如下几种: 1、中断 IRQ / FIQ 由外部硬件触发的中断。 2、软中断 soft interrupt 由系统调用的中断事件,由软件产生的中断事件。 3、复位 Reset 4、未定义指令 5、数据异常 例如数据越界等。 中断: ARM 有两级外部中断:1、FIQ;2、IRQ。 但大多数的嵌入式系统都有多于两个的外部中断源,为了能正常响应所有的外部中断事件,就需要一个“中断控制器”。 嵌入式系统的中断响应架构大致如下图所示: 当在短时间内产生大量中断事件时
[单片机]
ARM<font color='red'>嵌入式</font>系统的异常及裸机开发设计
嵌入式处理设计选择合适的开发工具
如果问使用嵌入式开发工具的用户,他们需要什么功能来满足其下一代终极处理设计的需要,他们必然会回答:“性能和先进的处理功能。” 为了满足嵌入式环境的要求,工程师必须设法从现有大多数成本经济的器件中一点点地挖掘出性能,并且,他们在设计和调试两个方面都需要方便使用的工具,因此,选择一个性能强大具有先进的处理功能的开发工具对工程师的设计工作至关重要。 Xilinx Platform Studio(XPS)是一款普遍使用的嵌入式开发套件(EDK),其升级版XPS 8.2版本新增加了独特的功能和性能,可进一步提高嵌入式系统设计的效率,通过这一新版本,工程师可以获得针对目前业界速度非常快的FPGA产品,如Virtex-5 LX器件
[单片机]
为<font color='red'>嵌入式</font>处理设计选择合适的开发工具
基于嵌入式Linux的智能手机系统设计
摘要:介绍以MotorolaMX1作为中央处理器、Wavecom公司的Q2403A作为无线收发模块、嵌入式Linux作为操作系统的智能手机系统的设计与实现。该设计可以实现GSM语音通信、GPRS上网及PDA相关应用软件等功能,具有结构清晰、易于开发等优点。 关键词:Linux 嵌入式系统 智能手机 随着手持通信设备市场的快速发展,手机的功能逐渐增多。现在手机已经不只是用于语音通信的手持设备,而成为集成了短信、彩信、上网以及移动办公等附加功能的嵌入式通信平台。集成了这些功能的手机被称为智能手机。近年,嵌入式处理器的运行速度和功能都有了很大的提高,使得许多以前只能在PC上实现的应用,现在都可以在手持设备上实现。目前,市面上的智能
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved