基于Qtopia的嵌入式中文輸入法設計

發(fā)布時(shí)間:2010-8-21 15:49    發(fā)布者:lavida
關(guān)鍵詞: Qtopia , 嵌入式 , 中文輸入法
隨著(zhù)基于ARM內核芯片的大規模應用,手持嵌入式設備迎來(lái)了一個(gè)龐大的市場(chǎng)。與用戶(hù)直接打交道的圖形界面的友好程度決定了用戶(hù)對該產(chǎn)品的感觀(guān)認識。在這個(gè)方興末艾的市場(chǎng),嵌入式Linux由于其系統優(yōu)異的健壯性,以及開(kāi)源、免費等顯著(zhù)優(yōu)勢,成為嵌入式設備的主流操作系統。其中,Qtopia是Trolltech公司為采用嵌入式Linux操作系統的消費電子設備而開(kāi)發(fā)的綜合應用平臺,因其友好的界面、完善的開(kāi)發(fā)環(huán)境,已被國內移動(dòng)電話(huà)制造商中興通訊選作其移動(dòng)電話(huà)ZTEU980基于Linux的應用開(kāi)發(fā)框架,使Qtopia電話(huà)版成為中興通訊支持中國3G標準TD-SCDMA的核心部件,Qtopia在嵌入式市場(chǎng)的競爭中撥得頭籌。  

在Qtopia的應用中,有許多需要用戶(hù)輸入本地文字的場(chǎng)合,如短信、通訊錄及記事本等,而Qtopia現有的輸入方式,是基于虛擬的QWERTY全鍵盤(pán)的,在實(shí)際應用中,這種QWERTY全鍵盤(pán)不僅需要用戶(hù)雙手進(jìn)行操作,而且由于按鍵排布緊密,從而導致誤碼率居高不下。  

本文提出一種基于Qtopia的采用傳統九宮格方式的中文輸入法設計。傳統九宮格的虛擬鍵盤(pán)不僅符合大眾的使用習慣,而且可以實(shí)現單手操作,可以為用戶(hù)帶來(lái)舒適的輸入體驗,提高產(chǎn)品的市場(chǎng)占有率。  

1 Qtopia中文編碼及插件技術(shù)  

要實(shí)現漢字在Qtopia系統里正確處理并顯示,必須滿(mǎn)足兩個(gè)前提條件:一是系統要有支持中文的編碼;另一個(gè)是要有能顯示這個(gè)中文編碼的字符字體存在。本文的Linux開(kāi)發(fā)環(huán)境代碼編輯器的編碼為GBK,目標機上的Qtopia平臺使用Unicode編碼,所以在程序里首先按如下的方式進(jìn)行編碼轉換:  


  
接下來(lái)為Qtopia系統提供中文字體,Qtopia支持多種字體,包括ttf,bdf,qpf格式。其中qpf格式的字體使用最為方便,本文采用支持中文的Simsun_120_50.qpf字體文件,把該字體文件保存至MYMQTEDIR/lib/fonts目錄下,修改字體鏈接fontdir文件,在菜單Appearance的Font選項里選中該字體,此時(shí)系統中文顯示正常。  

在Qtopia中,輸入法是以基于插件的方式實(shí)現的,Qtopia插件分為應用程序插件、服務(wù)器插件和系統插件3種。其中,應用程序插件是應用程序使用的插件,服務(wù)器插件是在啟動(dòng)時(shí)由Qtopia服務(wù)器進(jìn)行裝載的插件,系統插件是在應用程序啟動(dòng)時(shí)被裝載的插件。本文所涉及的輸入法屬于服務(wù)器插件。  

Qtopia中通過(guò)類(lèi)似COM的層來(lái)使用插件,建立一個(gè)插件的基本步驟為:創(chuàng )建插件的接口;寫(xiě)插件將提供的功能函數;為接口定義子類(lèi);創(chuàng )建一個(gè)插件實(shí)例;裝載插件。  

在實(shí)現輸入法插件的創(chuàng )建后,需將該插件編譯成動(dòng)態(tài)鏈接庫的形式,并安裝到插件對應的目錄下,對于輸入法插件而言。指定的存放目錄為$QTEDIR/plugins/inputmethods。系統啟動(dòng)時(shí),插件裝載器會(huì )自動(dòng)裝載這個(gè)文件夾里的輸入法插件。  

2 輸入法在Qtopia中的實(shí)現  

2.1 輸入法模塊的實(shí)現  

中文拼音輸入法的設計,要實(shí)現數字拼音鍵到漢字的轉換。所謂數字拼音是指按照手機鍵盤(pán)上英文字母的布局來(lái)輸入漢語(yǔ)拼音所得到的一串數字,對于九宮格形式的虛擬鍵盤(pán)來(lái)說(shuō)。其鍵盤(pán)的布局特點(diǎn)導致不能直接輸人漢語(yǔ)拼音而只能輸入數字鍵盤(pán)掃描碼,然后由掃描碼的識別及糾錯處理模塊對其進(jìn)行拼音組合、文字匹配檢索后才能得到相應的漢字,處理流程見(jiàn)圖1。  


  
首先用戶(hù)輸入的數字鍵盤(pán)掃描碼要轉換為相應的漢語(yǔ)拼音,本文采用查表檢索法實(shí)現數字拼音到漢語(yǔ)拼音的轉換,并對用戶(hù)無(wú)效的拼音組合進(jìn)行高亮提示。然后根據字典數據庫檢索相應的漢字,并對用戶(hù)的輸入進(jìn)行機器學(xué)習,針對用戶(hù)輸入習慣不同,對用戶(hù)輸入常用詞進(jìn)行自適應排序。利用自帶字庫的基礎語(yǔ)言模型與用戶(hù)常用詞模型相結合的檢索技術(shù)對候選字進(jìn)行自動(dòng)排序,得到最終的候選字輸出。如圖2所示。  


  
該輸入法注重對用戶(hù)輸入的常用詞、高頻詞的自適應,利用基礎字庫模型和用戶(hù)習慣模型結合進(jìn)行解碼。主要思想是通過(guò)跟蹤用戶(hù)輸入過(guò)程,記錄用戶(hù)輸入習慣,然后根據用戶(hù)的輸入字詞的不同概率動(dòng)態(tài)調整相應的數據,并將結果存放于用戶(hù)模型中。  

2.2 移植輸入法到Qtopia中  

Qtopia 2.x系統中支持彈出式輸入法的插件實(shí)現。彈出式輸入法在沒(méi)有鍵盤(pán)和其他文件輸入設備時(shí)使用,它彈出窗口部件,用戶(hù)可通過(guò)設備的觸摸屏操作產(chǎn)生鍵事件,它們也被看做基于筆的輸入方法。在本文中,采用ExtInputMethodInterface作為創(chuàng )建輸入法插件的接口。  

(1)為彈出輸入方法設備窗口部件。彈出輸入法必須提供一個(gè)顯示在屏幕上的QWidget窗口部件,并在一個(gè)鍵被按下時(shí)發(fā)出一個(gè)信號,Qtopia處理輸入窗口部件的顯示和隱藏。信號和插槽是Qt的核心機制,應用于對象之間的通信,信號和插槽是真正的信息封裝,所有從QObject或其子類(lèi)派生的類(lèi)都能夠包含信號,當對象改變狀態(tài)時(shí),信號就由該對象發(fā)射(emit)出去,對象并不需要知道另一端是誰(shuí)在接收這個(gè)信號。本文的輸入法設計,在用戶(hù)點(diǎn)擊選字按鍵時(shí),一個(gè)包含所選字符的keyPress信號被發(fā)射出去。  


  
在這個(gè)keyPress信號中,ushort unicode為輸入字符的unicode編碼值,這樣就可以把所選字符的編碼傳遞給Qtopia系統,系統就會(huì )在當前光標處輸入相應文字。  

(2)創(chuàng )建一個(gè)ExtInputMethodInterface插件。  

(3)編譯該輸入法插件。為了編譯輸入法插件,需要在.pro文件中設置如下:  


  
依次完成上述步驟,即可實(shí)現Qtopia輸入法的創(chuàng )建及編譯,本文所實(shí)現的中文拼音輸入法如圖3所示,當用戶(hù)選擇該輸入法時(shí),會(huì )彈出一個(gè)輸入面板,該面板由候選字區、拼音組合選擇區、拼音輸人區及功能區組成。在開(kāi)發(fā)板上運行該輸入法如圖3所示。  


  
候選字區 位于面板的最上方,由6個(gè)QPushButton組成,單擊后相應的文字會(huì )輸出至Qtopia系統當前光標處,并自動(dòng)聯(lián)想該字的常用詞組合。  

拼音組合選擇區 位于面板下方的左側區域,由一個(gè)QListBox,供用戶(hù)選擇候選的拼音組合。  

3×3的輸入區 位于面板下方的中間區域,與傳統的手機鍵盤(pán)相對應,由a~z拼音字母及“*”鍵組成,“*”鍵為標點(diǎn)符號選擇鍵,其余8個(gè)按鍵為拼音輸入;  

“Del”按鍵 位于面板下方右側區域,用來(lái)回退當前的拼音組合,如果當前拼音組合不為空,刪除該組合最后一個(gè)拼音字母,并刷新拼音組合及候選字,若當前的拼音組合為空,則單擊刪除光標左側的一個(gè)字符,長(cháng)按該鍵則連續刪除光標左側字符;  

“Up”及“Down”按鍵 候選字區的上下翻頁(yè)鍵。  

3 結 語(yǔ)  

基于Qtopia的插件技術(shù),實(shí)現了傳統九宮格方式的中文拼音輸入法,該輸入法在輸入中文時(shí)支持詞語(yǔ)聯(lián)想功能及用戶(hù)輸入高頻詞自適應功能。該輸入法在一個(gè)基于Linux 2.6.13內核的S3C2440嵌入式系統上運行成功,經(jīng)過(guò)長(cháng)時(shí)間的測試,該輸入法運行穩定,響應速度流暢,可給用戶(hù)帶來(lái)舒適的輸入體驗。
本文地址:http://selenalain.com/thread-23205-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页