《漢字輸入技術(shù)》PPT課件.ppt

上傳人:w****2 文檔編號(hào):16568209 上傳時(shí)間:2020-10-13 格式:PPT 頁(yè)數(shù):108 大?。?.37MB
收藏 版權(quán)申訴 舉報(bào) 下載
《漢字輸入技術(shù)》PPT課件.ppt_第1頁(yè)
第1頁(yè) / 共108頁(yè)
《漢字輸入技術(shù)》PPT課件.ppt_第2頁(yè)
第2頁(yè) / 共108頁(yè)
《漢字輸入技術(shù)》PPT課件.ppt_第3頁(yè)
第3頁(yè) / 共108頁(yè)

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《漢字輸入技術(shù)》PPT課件.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《漢字輸入技術(shù)》PPT課件.ppt(108頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第五章 漢字輸入技術(shù) 延邊大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系 內(nèi)容 漢字輸入技術(shù)概述 漢字鍵盤(pán)輸入技術(shù) 漢字鍵盤(pán)輸入系統(tǒng) Windows漢字輸入技術(shù) Linux下的漢字輸入系統(tǒng) 一、漢字輸入技術(shù)概述 漢字輸入發(fā)展史 漢字輸入分類 漢字輸入技術(shù)發(fā)展和應(yīng)用 1、問(wèn)題提出 早期,計(jì)算機(jī)主要通過(guò)鍵盤(pán)輸入文字信息 在計(jì)算機(jī)出現(xiàn)以前,西文打字機(jī)的鍵盤(pán)早 已定型,計(jì)算機(jī)很自然地利用了打字機(jī)鍵 盤(pán)這一錄入工具。 在鍵盤(pán)上沒(méi)有漢字,那么如何才能將漢字 輸入到計(jì)算機(jī)中? 2、大鍵盤(pán)方案 設(shè)計(jì)一個(gè)漢字大鍵盤(pán)。這個(gè)漢字大鍵盤(pán)上 有幾千個(gè)按鍵,每個(gè)按鍵對(duì)應(yīng)一個(gè)漢字, 漢字按照偏旁部首在鍵盤(pán)上分區(qū)排列,以 便于快速檢字。 大鍵盤(pán)的思

2、想經(jīng)過(guò)實(shí)踐證明是失敗的,它 存在的問(wèn)題主要是在鍵盤(pán)上找字困難,不 能輸入鍵盤(pán)上沒(méi)有的漢字,設(shè)備本身價(jià)格 太高等。 3、基于西文鍵盤(pán)的漢字編碼輸入 這是到目前為止最成功的計(jì)算機(jī)漢字輸入方法。 漢字編碼輸入是最早的漢字輸入方法,已知最早的計(jì)算機(jī)漢 字編碼輸入始于 20世紀(jì) 50年代的俄漢機(jī)器翻譯研究,但只能 用電報(bào)碼或四角號(hào)碼做漢字編碼。 在大陸, 1978年 5月上海電工儀器研究所部工程師支秉彝創(chuàng) 造了一種“見(jiàn)字識(shí)碼”法,并被上海市內(nèi)電話局采用,從而 率先使計(jì)算機(jī)的漢字輸入進(jìn)入了實(shí)用階段。 在港臺(tái)及海外,以“王安三角”為發(fā)端,陸續(xù)涌現(xiàn)出“倉(cāng) 頡”、“嘸蝦米”、“行列”、“唯物”等一大批繁體漢字

3、輸入法 。 進(jìn)入 80年代后,在聯(lián)想漢字、四通中文電腦打字機(jī)之后中國(guó) 的漢字編碼出現(xiàn)了“萬(wàn)馬奔騰”的局面。在大陸涌現(xiàn)出了五 筆、自然碼、鄭碼、拼音、智能 ABC、智能狂拼、縱橫等上 千種的輸入法。 4、語(yǔ)音輸入 用了多年的鍵盤(pán)輸入方式,在 1997年左右 突然受到猛烈的沖擊,各大廠商包括 IBM、 微軟、摩托羅拉、中自、紫光等公司紛紛 推出自己的非特定人語(yǔ)音輸入系統(tǒng)或者連 筆字手寫(xiě)輸入系統(tǒng)。 美國(guó)微軟公司于 1997年 9月在北京推出中文 非特定人連續(xù)語(yǔ)音識(shí)別系統(tǒng) ViaVoice。 ViaVoice是目前在市場(chǎng)上占據(jù)統(tǒng)治地位的語(yǔ) 音輸入系統(tǒng)。 5、手寫(xiě)體漢字識(shí)別輸入 通過(guò)書(shū)寫(xiě)漢字記錄信息已經(jīng)

4、有幾千年的歷 史,這也是使用漢字的中國(guó)人的普遍習(xí)慣, 所以手寫(xiě)識(shí)別輸入是符合中國(guó)人記錄信息 習(xí)慣的。 在 1997年以后就已經(jīng)有基本實(shí)用的手寫(xiě)漢 字識(shí)別輸入系統(tǒng),其中佼佼者為中自公司 的“漢王 99”、摩托羅拉公司的“慧筆”和 清華紫光公司的“紫光筆”等。 6、印刷體漢字識(shí)別輸入 我國(guó)對(duì)印刷體漢字識(shí)別 (簡(jiǎn)稱 OCR, Optical Character Recognition)的研究始于 70年代末 80年 代初,經(jīng)過(guò)科研人員幾十多年的辛勤努力,印刷 體漢字識(shí)別技術(shù)的發(fā)展和應(yīng)用,已經(jīng)有了長(zhǎng)足進(jìn) 步。 清華大學(xué)電子工程系、中國(guó)科學(xué)院計(jì)算所智能中 心、北京信息工程學(xué)院、沈陽(yáng)自動(dòng)化研究所等單 位分

5、別研制開(kāi)發(fā)出實(shí)用化的印刷體漢字識(shí)別系統(tǒng)。 清華大學(xué)電子工程系研制的清華 TH-OCR產(chǎn)品, 占據(jù)著最大的市場(chǎng)份額,代表著中文 OCR技術(shù)發(fā) 展的潮流。 內(nèi)容 漢字輸入發(fā)展史 漢字輸入分類 漢字輸入技術(shù)發(fā)展和應(yīng)用 1、分類 漢字的輸入兩大類: 編碼輸入 自然輸入 語(yǔ)音識(shí)別輸入 字形識(shí)別輸入 手寫(xiě)體識(shí)別輸入 印刷體識(shí)別輸入 2、 鍵盤(pán)編碼輸入 鍵盤(pán)編碼輸入首先把需要輸入計(jì)算機(jī)的所 有漢字用鍵盤(pán)上的若干個(gè)按鍵編碼,這些 按鍵組成的序列稱為對(duì)應(yīng)漢字的輸入碼。 通過(guò)在鍵盤(pán)上輸入某個(gè)按鍵序列,并由計(jì) 算機(jī)中的輸入系統(tǒng)把這個(gè)序列轉(zhuǎn)換為對(duì)應(yīng) 的漢字,從而達(dá)到輸入漢字的目的。 優(yōu)點(diǎn):輸入快速、無(wú)需添加額外設(shè)備

6、缺陷:輸入方式和人們使用語(yǔ)言文字的習(xí) 慣不符、用戶需要化額外的時(shí)間學(xué)習(xí)等。 3、 語(yǔ)音識(shí)別輸入 漢字語(yǔ)音識(shí)別輸入利用產(chǎn)生聲音的物理模 型,通過(guò)語(yǔ)音分析手段,預(yù)先將一些語(yǔ)音 的特征提取出來(lái),并存儲(chǔ)在處理系統(tǒng)中。 當(dāng)語(yǔ)音信號(hào)輸入時(shí),處理系統(tǒng)根據(jù)對(duì)該信 號(hào)所提取的特征參數(shù)和所存儲(chǔ)的參考特征 進(jìn)行比較,通過(guò)邏輯判斷方法和“距離” 測(cè)量法對(duì)語(yǔ)音進(jìn)行識(shí)別。 3、 語(yǔ)音識(shí)別輸入(續(xù)) 自然界的聲音和人講話的語(yǔ)音,都是模擬信號(hào), 不能直接輸入計(jì)算機(jī),因此在語(yǔ)音輸入的過(guò)程中, 我們必須通過(guò)語(yǔ)音卡(聲卡)等設(shè)備,把模擬的 語(yǔ)音信號(hào)轉(zhuǎn)換為數(shù)字語(yǔ)音信號(hào)輸入計(jì)算機(jī)。然后 計(jì)算機(jī)利用程序?qū)斎氲臄?shù)字語(yǔ)音信號(hào)進(jìn)行統(tǒng)計(jì)、 判

7、斷和識(shí)別,并最終把它翻譯成計(jì)算機(jī)能夠理解 的漢字的內(nèi)碼信息。 語(yǔ)音識(shí)別輸入技術(shù)有著廣闊的應(yīng)用前景 缺點(diǎn):由于不同人的口音差別較大,語(yǔ)音的準(zhǔn)確 識(shí)別比較困難 4、 漢字識(shí)別輸入 漢字識(shí)別輸入根據(jù)模式識(shí)別原理,通過(guò)漢字的字 形信息識(shí)別,產(chǎn)生漢字的內(nèi)碼,實(shí)現(xiàn)漢字的識(shí)別 輸入。漢字識(shí)別輸入的原理是通過(guò)抽取代表未知 漢字模式本質(zhì)的表達(dá)形式與預(yù)先存儲(chǔ)在計(jì)算機(jī)中 的標(biāo)準(zhǔn)漢字的模式表達(dá)形式的集合逐一進(jìn)行匹配, 用一定的準(zhǔn)則進(jìn)行判別,找出最接近輸入漢字的 那個(gè)標(biāo)準(zhǔn)漢字。 漢字識(shí)別輸入技術(shù)可分為印刷體漢字識(shí)別輸入和 手寫(xiě)體漢字識(shí)別輸入兩大類 。 5、手寫(xiě)體漢字識(shí)別輸入 手寫(xiě)體識(shí)別輸入方法把手寫(xiě)字的位置信息 首先轉(zhuǎn)

8、換成二進(jìn)制的數(shù)字編碼信息,并對(duì) 手寫(xiě)字進(jìn)行智能化的識(shí)別,并產(chǎn)生與之匹 配的數(shù)字編碼的中文或英文字符,同時(shí)所 產(chǎn)生的字符也送給顯示屏顯示,最后經(jīng)過(guò) 輸入者確認(rèn)后才作為正確的輸入結(jié)果。 可分為聯(lián)機(jī)手寫(xiě)漢字識(shí)別輸入和脫機(jī)手寫(xiě) 漢字識(shí)別輸入 5、手寫(xiě)體漢字識(shí)別輸入(續(xù)) 手寫(xiě)體識(shí)別輸入難于印刷體識(shí)別輸入 脫機(jī)手寫(xiě)體識(shí)別輸入又難于聯(lián)機(jī)手寫(xiě)體識(shí)別輸入 聯(lián)機(jī)手寫(xiě)體識(shí)別輸入 是一種人工實(shí)時(shí)地把漢字輸 入計(jì)算機(jī)的方法,它利用書(shū)寫(xiě)板把筆畫(huà)變?yōu)殡娦?號(hào),輸入計(jì)算機(jī)的是以坐標(biāo)點(diǎn)序列表示的筆尖移 動(dòng)軌跡,因而被處理的是一維的線條(筆畫(huà))串, 這些線條串含有筆畫(huà)數(shù)目、筆畫(huà)走向、筆順和書(shū) 寫(xiě)速度等信息。 脫機(jī)手寫(xiě)漢字識(shí)別

9、處理的僅是二維的漢字點(diǎn)陣圖 象,是漢字識(shí)別領(lǐng)域中最后一個(gè)十分困難的問(wèn)題, 目前仍然處于實(shí)驗(yàn)室研究階段。 5、手寫(xiě)體漢字識(shí)別輸入(續(xù)) 6、印刷體識(shí)別輸入 印刷體識(shí)別輸入是利用掃描器對(duì)已有的文書(shū)資料 進(jìn)行掃描,將掃描結(jié)果送入計(jì)算機(jī)中,計(jì)算機(jī)對(duì) 所得圖像進(jìn)行去污點(diǎn)和干擾、行字切分、二值化、 細(xì)化、抽取輪廓、平滑和規(guī)范化等處理,然后再 由計(jì)算機(jī)根據(jù)所得圖像的輪廓與計(jì)算機(jī)字庫(kù)中的 漢字點(diǎn)陣進(jìn)行匹配,從而轉(zhuǎn)換成相應(yīng)的漢字的技 術(shù)。 應(yīng)用范圍:圖像處理、桌面排版、印刷出版、字 符識(shí)別、圖文數(shù)據(jù)庫(kù)、廣告美術(shù)設(shè)計(jì)、多媒體圖 文通訊和辦公自動(dòng)化等。 6、印刷體識(shí)別輸入 (續(xù) ) TH-OCR 2000 6、印刷

10、體識(shí)別輸入 (續(xù) ) 內(nèi)容 漢字輸入發(fā)展史 漢字輸入分類 漢字輸入技術(shù)發(fā)展和應(yīng)用 1、 漢字輸入計(jì)算機(jī)的主流技術(shù)漢字鍵 盤(pán)輸入技術(shù) 鍵盤(pán)輸入使用的是人的十個(gè)手指,靈活方 便,符合人體工程學(xué)原理,絕大多數(shù)人愿 意接受這一輸入方式。 鍵盤(pán)輸入具有輸入快速、省力、方便等其 它輸入方式無(wú)法比擬的優(yōu)點(diǎn)。 隨著計(jì)算機(jī)技術(shù)的發(fā)展,軟件技術(shù)彌補(bǔ)了 漢字編碼的很多不足。句子輸入、詞組輸 入、智能輸入等技術(shù)使鍵盤(pán)漢字輸入系統(tǒng) 更加好用,輸入更加快速方便。 2、 廣泛的應(yīng)用途徑語(yǔ)音識(shí)別輸入技術(shù) 語(yǔ)音識(shí)別技術(shù)的滲透性很強(qiáng),在未來(lái)它將 無(wú)處不在 語(yǔ)音撥號(hào) 語(yǔ)音查詢 工業(yè)控制 傷殘人設(shè)備 家電 計(jì)算機(jī)輔助教育 3、 數(shù)字

11、化時(shí)代的新寵漢字識(shí)別輸入技 術(shù) 隨著手機(jī)的普及應(yīng)用,“拇指經(jīng)濟(jì)”迅速升溫, 人們?cè)絹?lái)越尋求短信輸入的快捷和方便,手寫(xiě)又 成為一種時(shí)尚,受到人們的青睞。 隨著各種掌上型信息終端及各種智能化、數(shù)字化 產(chǎn)品的普及,在人們生活的許多地方,如掌上電 腦、新型智能固定電話、各類平板電腦,甚至是 街頭的 POS機(jī)及銀行、車(chē)站等的觸摸屏等,都已 大規(guī)模地應(yīng)用了手寫(xiě)輸入技術(shù)。 二、漢字鍵盤(pán)輸入技術(shù) 鍵盤(pán) 漢字鍵盤(pán)輸入原理 鍵盤(pán)漢字輸入的總體流程 輸入碼對(duì)照表的設(shè)計(jì) 1、鍵盤(pán) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

12、27 43 58 30 31 32 33 34 35 36 37 38 39 40 29 42 44 45 46 47 48 49 50 51 52 53 54 57 69 53 55 74 71 72 73 78 75 76 77 79 80 81 29 82 83 2、掃描碼( Scan Code) 外部設(shè)備必須通過(guò)控制器和主機(jī)連接,所以鍵盤(pán) 本身有一個(gè)控制器。 鍵盤(pán)控制器完成的主要工作是:加電或系統(tǒng)需要 時(shí)對(duì)鍵盤(pán)進(jìn)行檢測(cè),掃描鍵盤(pán)、消除重鍵和自動(dòng) 重發(fā),保存掃描代碼,與主機(jī)進(jìn)行雙向通信,以 及向主機(jī)傳送按鍵的掃描碼( Scan Code)等。 所謂掃描碼是指根據(jù)按鍵在鍵盤(pán)上的位置按照從

13、左到右,從上到下的原則從 1開(kāi)始給按鍵編的代碼。 3、鍵盤(pán)工作原理 當(dāng)用戶在鍵盤(pán)上按下一個(gè)按鍵后,控制器就能通 過(guò)掃描矩陣得到按鍵的位置,從而把這個(gè)位置信 息轉(zhuǎn)換為該按鍵的掃描碼,并存儲(chǔ)在控制器的緩 沖區(qū)中。然后控制器產(chǎn)生一個(gè)鍵盤(pán)的硬件中斷, 由這個(gè)硬件中斷通過(guò)端口從鍵盤(pán)控制器的緩沖區(qū) 中取得這個(gè)按鍵的掃描碼,并把它轉(zhuǎn)換為對(duì)應(yīng)的 ASCII碼,最后把 2個(gè)字節(jié)的掃描碼和 ASCII碼存 儲(chǔ)到計(jì)算機(jī)內(nèi)存的鍵盤(pán)緩沖區(qū)中,供系統(tǒng)使用。 4、部分掃描碼和 ASCII碼表 表 6.1按鍵掃描碼和 ASCII碼對(duì)照表(十六進(jìn)制) 按鍵 掃描 碼 ASCII 按鍵 掃描 碼 ASCII 按鍵 掃描 碼 AS

14、CII A 1E 41 9 0A 39 1A 5B B 30 42 29 60 INSERT E0,52 C 2E 43 - 0C 2D HOME E0,47 D 20 44 = 0D 3D PG UP E0,49 E 12 45 2B 5C DELETE E0,53 F 21 46 BKSP 0E 08 END E0,4F G 22 47 SPACE 39 20 PG DN E0,51 H 23 48 TAB 0F 09 U ARROW E0, 48 I 17 49 CAPS 3A L ARROW E0,4B J 24 4A L SHFT 2A D ARROW E0,50 內(nèi)容 鍵盤(pán) 漢字鍵

15、盤(pán)輸入原理 鍵盤(pán)漢字輸入的總體流程 輸入碼對(duì)照表的設(shè)計(jì) 1、西文字符的輸入 使用的鍵盤(pán)是西文鍵盤(pán),英文或歐洲語(yǔ)系等拼音 文字,由于文字總數(shù)一般為幾十個(gè),所以鍵盤(pán)上 的按鍵就足以對(duì)映到每一個(gè)文字。 用西文打字時(shí),敲入的按鍵就可以直接根據(jù)當(dāng)前 的代碼頁(yè)( Code Page)轉(zhuǎn)換為西文字符的內(nèi)碼 從而顯示在當(dāng)前應(yīng)用程序的窗口中。 如當(dāng)前是英文鍵盤(pán),那么在鍵盤(pán)上按下按鍵“ A” 后,計(jì)算機(jī)就可以根據(jù)英文鍵盤(pán)的布局把這個(gè)按 鍵轉(zhuǎn)換為字符“ A”的 ASCII碼,并送給應(yīng)用程序, 從而在界面上顯示這個(gè)字符“ A”。 2、漢字的編碼輸入舉例 3、漢字編碼輸入的前提 要實(shí)現(xiàn)把輸入碼轉(zhuǎn)換成機(jī)內(nèi)碼這個(gè)功能必須具

16、備 一個(gè)前提條件,那就是輸入系統(tǒng)必須先于應(yīng)用程 序得到用戶按鍵的掃描碼或 ASCII碼,否則如果應(yīng) 用程序先得到的話,那它就會(huì)對(duì)按鍵進(jìn)行處理, 那樣輸入系統(tǒng)就沒(méi)有辦法進(jìn)行工作了。 從鍵盤(pán)接收的按鍵消息是操作系統(tǒng)的 I/O模塊處理 的,它肯定先于應(yīng)用程序得到按鍵的掃描碼,然 后由它負(fù)責(zé)把這些掃描碼轉(zhuǎn)換為 ASCII碼,存放在 鍵盤(pán)緩沖區(qū)中,那么只要保證輸入系統(tǒng)先于應(yīng)用 程序拿到鍵盤(pán)緩沖區(qū)中的內(nèi)容就可以了。 4、鍵盤(pán) HOOK 一般而言,應(yīng)用程序從鍵盤(pán)緩沖區(qū)讀字符,總會(huì)調(diào)用系統(tǒng) 的讀字符功能來(lái)實(shí)現(xiàn)的。 通過(guò)系統(tǒng)提供的 HOOK(鉤子)機(jī)制來(lái)實(shí)現(xiàn)輸入系統(tǒng)先于 應(yīng)用程序得到鍵盤(pán)按鍵。 鍵盤(pán) hook實(shí)

17、現(xiàn)原理: 假設(shè)原來(lái)的讀字符功能調(diào)用是 GetChar() 設(shè)計(jì)了一個(gè)輸入系統(tǒng),里面由一個(gè)函數(shù) NewGetChar() 把 NewGetChar作為一個(gè)鉤子鉤到 GetChar上,那么以后應(yīng)用程序 調(diào)用函數(shù) GetChar實(shí)際調(diào)用的是 NewGetChar 在 NewGetChar中,它實(shí)現(xiàn)調(diào)用原來(lái)的 GetChar函數(shù)從緩沖區(qū)讀到 字符,然后把這些字符傳遞給輸入系統(tǒng),讓輸入系統(tǒng)處理,輸入 系統(tǒng)處理完后,把結(jié)果給 NewGetChar,由它把結(jié)果返回給應(yīng)用 程序。 需要注意的是 NewGetChar和 GetChar的參數(shù)和返回值應(yīng)該一致。 5、鍵盤(pán) HOOK原理圖 6、 Windows下的

18、HOOK HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId); 其中, idHook指定鉤子的類型,常用的有 WH_MOUSE、 WH_KEYBOARD、 WH_GETMESSAGE等,鍵盤(pán)操作應(yīng)該設(shè)定為 WH_KEYBOARD lpfn標(biāo)識(shí)鉤子函數(shù)的入口地址,當(dāng)鉤子鉤到任何消息后便調(diào)用這個(gè)函 數(shù),即當(dāng)不管系統(tǒng)的哪個(gè)窗口有鍵盤(pán)輸入馬上會(huì)引起 lpfn指向的函數(shù) 的動(dòng)作; hMod 是鉤子函數(shù)所在模塊的句柄,我們可以很簡(jiǎn)單的設(shè)定其為本應(yīng) 用程序的實(shí)例句柄 dwThreadId是鉤子

19、相關(guān)函數(shù)的 ID用以指定想讓鉤子去鉤哪個(gè)線程,為 0時(shí)則攔截整個(gè)系統(tǒng)的消息。 內(nèi)容 鍵盤(pán) 漢字鍵盤(pán)輸入原理 鍵盤(pán)漢字輸入的總體流程 輸入碼對(duì)照表的設(shè)計(jì) 1、總體流程圖 2、工作流程 用戶在鍵盤(pán)上輸入漢字的輸入碼; 鍵盤(pán)控制器在檢測(cè)到按鍵后,根據(jù)按鍵的位置產(chǎn)生它們 的掃描碼,然后存入鍵盤(pán)內(nèi)的緩沖區(qū)中,并觸發(fā)一個(gè)鍵 盤(pán)的硬件中斷; 鍵盤(pán)中斷處理程序從鍵盤(pán)內(nèi)的緩沖區(qū)中取出掃描碼; 鍵盤(pán)中斷處理程序把掃描碼轉(zhuǎn)換為 ASCII碼,和掃描碼 一起存儲(chǔ)在內(nèi)存的鍵盤(pán)緩沖區(qū)中; 應(yīng)用程序調(diào)用取字符模塊取字符,實(shí)際調(diào)用的是漢字輸 入處理模塊,漢字輸入處理模塊從內(nèi)存的鍵盤(pán)緩沖區(qū)取 得掃描碼和 ASCII碼。在西文系

20、統(tǒng)中,應(yīng)用程序可以直 接通過(guò)取字符模塊從鍵盤(pán)緩沖區(qū)獲得西文字符(), 從而結(jié)束輸入過(guò)程; 2、工作流程(續(xù)) 漢字輸入處理模塊判斷讀到的字符,是輸入系統(tǒng) 需要處理的嗎?是則把輸入碼傳送給代碼轉(zhuǎn)換模 塊;不是則直接返回給應(yīng)用程序()(如 F1、 Insert等按鍵,輸入系統(tǒng)不需要處理),結(jié)束; 代碼轉(zhuǎn)換模塊根據(jù)輸入碼查輸入碼對(duì)照表; 代碼轉(zhuǎn)換模塊從輸入碼對(duì)照表獲得對(duì)應(yīng)的漢字機(jī) 內(nèi)碼; 代碼轉(zhuǎn)換模塊把漢字機(jī)內(nèi)碼交漢字處理模塊; 漢字處理模塊通過(guò)用戶干預(yù)后,把漢字機(jī)內(nèi)碼交 應(yīng)用程序,結(jié)束。 內(nèi)容 鍵盤(pán) 漢字鍵盤(pán)輸入原理 鍵盤(pán)漢字輸入的總體流程 輸入碼對(duì)照表的設(shè)計(jì) 1、輸入碼對(duì)照表 輸入碼對(duì)照表是漢字

21、鍵盤(pán)輸入中的一個(gè)重要數(shù)據(jù)結(jié)構(gòu),是 漢字輸入碼到機(jī)內(nèi)碼轉(zhuǎn)換的核心,它反映了漢字輸入碼和 機(jī)內(nèi)碼之間的映射關(guān)系。 一般來(lái)說(shuō),系統(tǒng)有一種輸入法,就需要為它配備一張對(duì)照 表,但內(nèi)碼輸入法是一個(gè)特例,它可以根據(jù)輸入碼計(jì)算出 機(jī)內(nèi)碼,所以不需要對(duì)照表。 對(duì)照表是以文件的形式存儲(chǔ)在計(jì)算機(jī)中的,一般一張對(duì)照 表就是一個(gè)文件,當(dāng)然也有是由一系列的文件組成的。 對(duì)照表一般有兩種類型:字對(duì)照表和詞對(duì)照表。在字對(duì)照 表中,表示的是一個(gè)一個(gè)漢字和輸入碼的映射關(guān)系,而詞 對(duì)照表則表示詞(組)和輸入碼的映射關(guān)系。 2、 輸入碼對(duì)照表 結(jié)構(gòu)的分類 定長(zhǎng)結(jié)構(gòu) 變長(zhǎng)結(jié)構(gòu) 計(jì)算結(jié)構(gòu) 索引結(jié)構(gòu) 其它 4、定長(zhǎng)結(jié)構(gòu) 定長(zhǎng)結(jié)構(gòu)的每個(gè)表項(xiàng)

22、的長(zhǎng)度固定。 每個(gè)表項(xiàng)一般由有兩個(gè)域組成:一個(gè)域存放漢字 或詞(組)的機(jī)內(nèi)碼,另一個(gè)表項(xiàng)存放此漢字或 詞(組)的輸入碼。 每個(gè)域的長(zhǎng)度是固定的。如一個(gè)表項(xiàng)固定長(zhǎng)度為 6 個(gè)字節(jié),其中輸入碼占 4個(gè)字節(jié),漢字占 2個(gè)字節(jié)。 由于一個(gè)漢字的機(jī)內(nèi)碼一般由 2個(gè)字節(jié)構(gòu)成,所以 字對(duì)照表可以采用定長(zhǎng)結(jié)構(gòu)。 詞對(duì)照表一般不會(huì)采用這種結(jié)構(gòu),是因?yàn)樵~組長(zhǎng) 度不一,容易造成存儲(chǔ)空間的浪費(fèi)。 4、定長(zhǎng)結(jié)構(gòu)(續(xù))結(jié)構(gòu) 4、定長(zhǎng)結(jié)構(gòu)(續(xù)) 檢索方法 掃描法 二分法 假設(shè)需要檢索的輸入碼為 S,對(duì)照表的表項(xiàng) 數(shù)為 N,分別用 ICi, HZi表示第 i表項(xiàng)的輸 入碼和漢字。 4、定長(zhǎng)結(jié)構(gòu)(續(xù)) 掃描法: 首先,為了方便

23、檢索,需要把對(duì)照表按照輸入 碼的大小從小到大排序。掃描法是指每次查找 都從頭開(kāi)始,一直找到和 S相同的輸入碼項(xiàng) i; 然后繼續(xù)往后查找,找到和 S不同的輸入碼項(xiàng) j; 那么,第 i項(xiàng)到第 j-1項(xiàng),共 j-i項(xiàng)對(duì)應(yīng)的漢字就是 輸入碼 S對(duì)應(yīng)的重碼集。 最大的比較次數(shù)為 N,最小的比較次數(shù)為 1,平 均為( N+1) /2。 4、定長(zhǎng)結(jié)構(gòu)(續(xù))掃描法 4、定長(zhǎng)結(jié)構(gòu)(續(xù)) 二分法: 二分算法描述如下: 設(shè)置一個(gè)值 B=0, E=N; 如果 BE,算法失敗結(jié)束;否則 M=(B+E)/2; 然后把 ICM和 S比較; 如果相等,則說(shuō)明找到了一項(xiàng),由于輸入碼相等的 漢字是相鄰存放的,所以只要進(jìn)行前后的掃

24、描,可以 得到所有的輸入碼為 S的漢字,結(jié)束; 如果 ICM小于 S,則 B=M+1,轉(zhuǎn); 如果 ICM大于 S,則 E=M-1,轉(zhuǎn)。 4、定長(zhǎng)結(jié)構(gòu)(續(xù))檢索算法 4、定長(zhǎng)結(jié)構(gòu)(續(xù)) 二分法的最大的比較次數(shù)為 log2N,最小的比較 次數(shù)為 1,平均約為 log2N-1。 假設(shè) N=20902,則掃描法的平均比較次數(shù)為 (20902+1)/2=10452,而二分法的比較次數(shù)為 ( log220902-1 14,明顯比掃描法好。 定長(zhǎng)結(jié)構(gòu)的對(duì)照表具有表結(jié)構(gòu)簡(jiǎn)單,容易構(gòu)建, 檢索算法簡(jiǎn)單等優(yōu)點(diǎn),但在存儲(chǔ)空間上存在缺陷。 5、 計(jì)算結(jié)構(gòu) 計(jì)算結(jié)構(gòu)常用于設(shè)計(jì)字對(duì)照表。每個(gè)表項(xiàng)對(duì)應(yīng)一 個(gè)漢字,表項(xiàng)等長(zhǎng),

25、內(nèi)容為該漢字對(duì)應(yīng)的輸入碼。 這種結(jié)構(gòu)的對(duì)照表的表項(xiàng)必須按照漢字的特定序 列進(jìn)行排列,不能無(wú)序。 一般情況,都是按照漢字內(nèi)碼進(jìn)行排序,從而方 便確定每個(gè)表項(xiàng)對(duì)應(yīng)的漢字機(jī)內(nèi)碼。 5、 計(jì)算結(jié)構(gòu)(續(xù)) 輸入碼 0 1 2 3 n 5、 計(jì)算結(jié)構(gòu)(續(xù)) 計(jì)算結(jié)構(gòu)舉例 縱橫碼的碼元集合為: 1234567890 碼長(zhǎng)為 1 4,是不等長(zhǎng)碼。字符集采用 Unicode/ISO 10646-1993。 Unicode內(nèi)碼從 4E00H到 9FA5H共 20902個(gè)漢字。 每個(gè)表項(xiàng)的內(nèi)容是輸入碼,為 1 4個(gè)數(shù)字,每個(gè) 數(shù)字可以用 BCD碼來(lái)表示,需要 3位( bits), 4 個(gè)數(shù)字則需要 3 4 12位,

26、用 2個(gè)字節(jié)表示。如 果數(shù)字不足 4位,用全“ 1”位填充 。 5、 計(jì)算結(jié)構(gòu)(續(xù)) 1 5 1 4 1 3 1 2 11 1 0 9 8 7 6 5 4 3 2 1 0 第一位碼 元 第二位碼 元 第三位碼 元 第四位碼 元 保留 表項(xiàng)結(jié)構(gòu) 每個(gè)表項(xiàng)的大小為 2個(gè)字節(jié)。整張對(duì)照表總共需要 2 20902=41804個(gè)字節(jié), 按照機(jī)內(nèi)碼的大小從小到大排列。 表 項(xiàng) 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 2 個(gè) 字 節(jié) 輸 入 碼 序 號(hào)

27、0 1 25 5 25 6 20 90 0 20 90 1 內(nèi) 碼 4E 00 4E 01 4E FF 4F 00 9E FF 9F 00 9F A4 9F A5 5、 計(jì)算結(jié)構(gòu)(續(xù)) 假設(shè)漢字的內(nèi)碼 hz可以表示為: hz= hzhhzl| hzh R1, hzl R2 R1=R|4EHRFFH R2=R|00HRFFH 從上表我們可以得到序號(hào) i和內(nèi)碼 hz的關(guān)系: i=( hzh-4EH)*0FFH+ hzl 則 hzh i/0FFH+4EH /表示取整 hzl =i mod 0FFH 那么,對(duì)照表的檢索過(guò)程就是遍歷表的過(guò)程,也就是當(dāng)發(fā)現(xiàn) 第 i項(xiàng)表項(xiàng)和當(dāng)前輸入碼的 BCD碼一致時(shí),可以

28、通過(guò)上面 的計(jì)算得到該漢字的機(jī)內(nèi)碼,從而實(shí)現(xiàn)轉(zhuǎn)換過(guò)程。 5、 計(jì)算結(jié)構(gòu)(續(xù)) 優(yōu)點(diǎn)是節(jié)省空間 上例中的對(duì)照表比采用等長(zhǎng)結(jié)構(gòu)可以節(jié)省一半的 空間(省了 20902個(gè)漢字的空間),但存在需要 遍歷整張對(duì)照表的問(wèn)題 ,比較次數(shù)為 N。 當(dāng)一個(gè)漢字有多個(gè)編碼時(shí),就存在問(wèn)題了,需要 設(shè)置附加表。 6、 變長(zhǎng)結(jié)構(gòu) 每個(gè)表項(xiàng)對(duì)應(yīng)一個(gè)輸入碼。每個(gè)表項(xiàng)有兩 個(gè)域:一個(gè)域存放輸入碼,另一個(gè)域存放 和該輸入碼對(duì)應(yīng)的所有重碼字或詞組集合。 由于第二個(gè)表項(xiàng)的內(nèi)容不定,所以長(zhǎng)度無(wú) 法確定,造成表項(xiàng)不等長(zhǎng)。 這種結(jié)構(gòu)的輸入碼對(duì)照表減少了表項(xiàng)的數(shù) 目,不需要為每個(gè)漢字存放輸入碼,所以 存儲(chǔ)空間相當(dāng)?shù)乳L(zhǎng)結(jié)構(gòu)有明顯的減少。 6、

29、 變長(zhǎng)結(jié)構(gòu)(續(xù)) 以 20902個(gè)漢字的縱橫碼對(duì)照表為例,定長(zhǎng)結(jié)構(gòu) 需要( 2 2) 20902 83608(字節(jié))( 2個(gè)字 節(jié)的 BCD輸入碼, 2個(gè)字節(jié)的漢字機(jī)內(nèi)碼),而 變長(zhǎng)結(jié)構(gòu)只需要 20902 2 6123 2 54050 (字節(jié))( 20902個(gè)漢字和 6123個(gè) BCD輸入碼), 比定長(zhǎng)結(jié)構(gòu)少了近 30K,超過(guò)三分之一。 這種結(jié)構(gòu)存在的問(wèn)題是檢索時(shí)間相對(duì)也較長(zhǎng),一 般采用掃描法,需要遍歷整張對(duì)照表 。 6、 變長(zhǎng)結(jié)構(gòu)(續(xù)) 6、 變長(zhǎng)結(jié)構(gòu)(續(xù)) 縱橫碼的不等長(zhǎng)對(duì)照表結(jié)構(gòu)描述: := := := := := 假設(shè)需要檢索的輸入碼為 S,對(duì)照表的表項(xiàng)數(shù)為 K, 分別用 ICi, L

30、ENi, HZi表示第 i表項(xiàng)的輸入碼、漢 字集長(zhǎng)度和漢字重碼集合。 6、 變長(zhǎng)結(jié)構(gòu)(續(xù)) 6、 變長(zhǎng)結(jié)構(gòu)(續(xù)) 假設(shè)輸入碼的個(gè)數(shù)為 K,那么最大的比較次 數(shù)為 K,最小的比較次數(shù)為 1,所以比較次 數(shù)依舊平均為( K+1) /2。 由于 K比 N小,所以比較次數(shù)比等長(zhǎng)結(jié)構(gòu)少。 如縱橫碼的例子,變長(zhǎng)結(jié)構(gòu)的平均比較次 數(shù)是 (6123+1)/2=3062次,而等長(zhǎng)結(jié)構(gòu)如采 用掃描法則需要( 20902 1) /2=10452, 是變長(zhǎng)結(jié)構(gòu)的 3倍! 7、 索引結(jié)構(gòu) 索引是一種最常用的對(duì)照表結(jié)構(gòu),也是一 種高效率的檢索結(jié)構(gòu)。 一般索引結(jié)構(gòu)的對(duì)照表分成兩部分:索引 表和碼表。 索引表的表項(xiàng)由兩部分組

31、成:輸入碼和指 針(指向碼表中輸入碼對(duì)應(yīng)的漢字和詞組 的首址)。 碼表的結(jié)構(gòu)基本和變長(zhǎng)結(jié)構(gòu)類似。 7、 索引結(jié)構(gòu)(續(xù)) 7、 索引結(jié)構(gòu)(續(xù)) 每個(gè)索引表項(xiàng)對(duì)應(yīng)一個(gè)碼表項(xiàng),而且是一對(duì)一的 關(guān)系,有多少個(gè)索引項(xiàng)就有多少個(gè)碼表項(xiàng)。 一般而言,索引表中的每一個(gè)表項(xiàng)是等長(zhǎng)的,而 碼表中的每一個(gè)表項(xiàng)長(zhǎng)度是不相等的。 索引結(jié)構(gòu)結(jié)合了等長(zhǎng)和變長(zhǎng)的優(yōu)點(diǎn),通過(guò)把輸入 碼和漢字串分開(kāi)的方法,使得索引表組織類似等 長(zhǎng)結(jié)構(gòu)(輸入碼域和指針域的長(zhǎng)度一般固定), 而碼表組織類似于變長(zhǎng)結(jié)構(gòu),從而提高了檢索效 率,也節(jié)省了空間。 7、 索引結(jié)構(gòu)(續(xù))二分法 7、 索引結(jié)構(gòu)(續(xù)) -舉例 拼音輸入碼為例: 比較等長(zhǎng)、變長(zhǎng)和索引結(jié)

32、構(gòu)的對(duì)照表的對(duì)照表大 小和檢索效率。 由于拼音由 21個(gè)聲母和 35個(gè)韻母組成,不考慮聲 調(diào)。所以可以采用壓縮方法來(lái)存放輸入碼,用 1 21表示 21個(gè)聲母,可以用 5位來(lái)表示,用 1 35表 示 35個(gè)韻母,可以用 6位來(lái)表示,一共 11位,為 了方便起見(jiàn),共用兩個(gè)字節(jié)存放(如果無(wú)聲母或 韻母,用 0表示)。 7、 索引結(jié)構(gòu)(續(xù)) -舉例 聲母 b(1) p(2) m(3) f(4) d(5) t(6) n(7) l(8) g(9) k(10) h(11) j(12) q(13) x(14) zh(15) ch(16) sh(17) r(18) z(19) c(20) s(21) 韻母 a(

33、1) o(2) e(3) ai(4) ei(5) ao(6) ou(7) an(8) en(9) ang(10) eng(11) ong(12) i(13) ia(14) ie(15) iao(16) iou(17) ian(18) in(19) iang(20) ing(21) iong(22) u(23) ua(24) uo(25) uai(26) uei(27) uan(28) uen(29) uang(30) ueng(31) v(32) ve(33) van(34) vn(35) 無(wú)聲母( 0) 7、 索引結(jié)構(gòu)(續(xù)) -舉例 等長(zhǎng)結(jié)構(gòu): := := := := 變長(zhǎng)結(jié)構(gòu): := :=

34、 := := := 7、 索引結(jié)構(gòu)(續(xù)) -舉例 索引結(jié)構(gòu): := := := := := := := 7、 索引結(jié)構(gòu)(續(xù)) -舉例 三種結(jié)構(gòu)比較表 對(duì)照表結(jié)構(gòu) 碼本大小 平均檢索次數(shù) 等長(zhǎng)結(jié)構(gòu) 20902 4 83608 log220902-1 14(二分法 ) 變長(zhǎng)結(jié)構(gòu) 20902 2 417 ( 2 1) 43055 ( 417 1) /2 209 索引結(jié)構(gòu) 20902 2 417 ( 2 2) 43472 log2417-1=8 7、 索引結(jié)構(gòu)(續(xù))稀疏索引 7、 索引結(jié)構(gòu)(續(xù))稀疏索引 省略了索引表中的輸入碼部分 索引表的表項(xiàng)是對(duì)應(yīng)于整個(gè)編碼空間的,也就是 即使這個(gè)輸入碼沒(méi)有對(duì)應(yīng)的漢

35、字,仍作為一個(gè)表 項(xiàng)存在于索引表中 如某個(gè)輸入法的碼元集合為 26個(gè)字母,碼長(zhǎng)為 4,則應(yīng) 該有 26 26 26 26 456976個(gè)表項(xiàng) 表項(xiàng)的排列是按照輸入碼由小到大的次序來(lái)排列,也 就是從“ aaaa”到“ zzzz”, 假如某個(gè)輸入碼是 S1S2S3S4,我們可以計(jì)算得到此輸 入碼對(duì)應(yīng)的索引表表項(xiàng)的序號(hào) i: i= (S1-a ) 263 (S2-a) 262 (S3-a) 26 S4-a 把序號(hào)乘以每個(gè)表項(xiàng)的大小就得到了此輸入碼指 向碼表的指針在碼表中的首址 7、 索引結(jié)構(gòu)(續(xù))稀疏索引 問(wèn)題 :可能索引表過(guò)大 如上面舉的例子,如果每個(gè)表項(xiàng)長(zhǎng)度為 6個(gè) 字節(jié),那么索引表長(zhǎng)度為 45

36、6976 6字節(jié), 約 2.6M字節(jié)的空間。 為了節(jié)省空間,我們一般采用部分索引的 技術(shù) 取一個(gè)輸入碼中的部分編碼進(jìn)行索引 7、 索引結(jié)構(gòu)(續(xù))稀疏索引 假設(shè)碼元集合中的碼元數(shù)為 m,輸入碼的長(zhǎng)度為 n,則每 個(gè)索引項(xiàng)的長(zhǎng)度 2(假設(shè)指針大小為 2個(gè)字節(jié)),如果對(duì) i ( i=n)個(gè)字節(jié)輸入碼作索引,那么索引表的長(zhǎng)度 TL為: TL=mi*2 即 TL=mi*2 則 i=logmTL/2 一般 TL的大小在 10k左右 當(dāng)采用數(shù)字編碼時(shí) m=10,則 i=3 當(dāng)采用字母編碼時(shí) m=26,則 i=2 三、漢字鍵盤(pán)輸入系統(tǒng) 漢字輸入系統(tǒng)的分類 漢字輸入系統(tǒng)的功能 漢字鍵盤(pán)輸入系統(tǒng)的工作流程 1、按

37、系統(tǒng)在計(jì)算機(jī)中實(shí)現(xiàn)的層次 可以分為: 系統(tǒng)層的輸入系統(tǒng) 應(yīng)用層的輸入系統(tǒng) 2、按操作系統(tǒng)平臺(tái) 主要有: DOS下的輸入系統(tǒng) Windows下的輸入系統(tǒng) Linux下的輸入系統(tǒng) Unix下的輸入系統(tǒng) Mac System下的輸入系統(tǒng) 嵌入系統(tǒng)種的的輸入系統(tǒng) 3、按漢字內(nèi)碼的簡(jiǎn)繁 可以分為: 簡(jiǎn)體輸入系統(tǒng) 繁體輸入系統(tǒng) 4、按漢字的字符集 分為: GB2312的輸入系統(tǒng) GBK的輸入系統(tǒng) GB18030的輸入系統(tǒng) BIG-5的輸入系統(tǒng) ISO10646的輸入系統(tǒng) 5、按輸入碼類別 分為: 音碼輸入系統(tǒng) 形碼輸入系統(tǒng) 音形碼輸入系統(tǒng) 流水碼輸入系統(tǒng) 內(nèi)容 漢字輸入系統(tǒng)的分類 漢字輸入系統(tǒng)的功能 漢字

38、鍵盤(pán)輸入系統(tǒng)的工作流程 1、漢字 /詞組輸入 單字輸入 我 你 的 詞組輸入 我們 計(jì)算機(jī) 短語(yǔ)、短句輸入 我的 非常多 不明白 科技是第一生產(chǎn)力 句子輸入 我到飯店去吃飯。 2、候選字 /詞提示和選擇 重碼不可避免 輸入系統(tǒng)必須具備候選字 /詞提示的功能 應(yīng)該常用用字、詞在前 提高容錯(cuò)的功能 3、中英文狀態(tài)切換 存在中文和英文兩種狀態(tài) 在中文狀態(tài),可以通過(guò)輸入漢字輸入碼輸 出漢字 在英文文狀態(tài)下,整個(gè)鍵盤(pán)都是西文符號(hào) 4、翻頁(yè) 當(dāng)輸入的漢字輸入碼對(duì)應(yīng)的候選字 /詞比較 多時(shí),輸入系統(tǒng)無(wú)法在候選框中顯示所有 的候選字 /詞,只能通過(guò)分頁(yè)方式顯示。 可使用到翻頁(yè)鍵顯示上 /下一頁(yè)的候選字 /詞。

39、 常用的翻頁(yè)鍵分為前翻頁(yè)鍵和后翻頁(yè)鍵, 一般輸入系統(tǒng)的前 /后翻頁(yè)鍵為“ -”和“ +”、 “ ,”和“ .”、“ ”和“ ”、“ PageUp”和 “ PageDown”等。 5、輸入碼清除、刪除、結(jié)束鍵 當(dāng)輸入的輸入碼有誤時(shí),可以通過(guò)輸入碼 刪除鍵刪除剛輸入的這個(gè)輸入碼符,也可 以通過(guò)輸入碼清除鍵刪除所有輸入的輸入 碼。實(shí)際上這兩個(gè)鍵的作用是提供一種輸 入碼的簡(jiǎn)單編輯功能。 絕大多數(shù)的輸入系統(tǒng)不需要輸入碼結(jié)束符, 只有輸入碼鍵和選擇鍵沖突時(shí)才需要輸入 碼結(jié)束符來(lái)區(qū)分兩種狀態(tài)。 6、聯(lián)想 當(dāng)用戶輸入了一個(gè)漢字后,系統(tǒng)提示以這 個(gè)漢字為首字的詞組供用戶選擇(不包括 首字),這種技術(shù)稱為聯(lián)想技術(shù)

40、。 如用戶輸入了“計(jì)”,則系統(tǒng)提示以“計(jì)” 作為首字的詞組剩余部分,如“算機(jī)”、 “劃”和“策”等 8、全角和半角 鍵盤(pán)上的西文字符在輸入計(jì)算機(jī)時(shí)有全角和半角 兩種方式。 在早期 DOS系統(tǒng)下, ASCII字符是中文字符的一 半大小,所以稱 ASCII字符為半角字符 采用雙字節(jié)內(nèi)碼、和中文等寬的西文字符為全角 字符。 如半角字符“ 0”的 ASCII碼是 30H,而全角字符 “”的 Unicode內(nèi)碼是 0FF10H。 在 Windows等系統(tǒng)中,由于是圖形界面,所有的 字符不是等寬字符,所以一個(gè) ASCII字符不再是一 個(gè)中文內(nèi)碼字符的一半。 9、符號(hào)輸入 符號(hào) 按鍵 符號(hào) 按鍵 符號(hào) 按鍵

41、 。 . ? ? “” “” , , : : 、 ; ; ! ! % 內(nèi)容 漢字輸入系統(tǒng)的分類 漢字輸入系統(tǒng)的功能 漢字鍵盤(pán)輸入系統(tǒng)的工作流程 1、流程圖 2、中文輸入和西文輸入的差異 從以上的流程我們可以發(fā)現(xiàn),在西文環(huán)境下,用 戶每按下一個(gè)按鍵應(yīng)用程序都會(huì)接收到。而在中 文環(huán)境下,用戶按下一個(gè)按鍵后,應(yīng)用程序可能 接收不到任何的東西,因?yàn)檩斎胂到y(tǒng)還沒(méi)有機(jī)內(nèi) 碼返回,需要更多的按鍵后才能有機(jī)內(nèi)碼返回。 如圖 6.7所示,用戶輸入“ w”和“ o”后,輸入系統(tǒng) 沒(méi)有輸出漢字“我”,必須等到用戶再輸入“ 1” 后,才有漢字輸出。這也是漢字輸入和西文輸入 的最大差異。 Windows漢字輸入技術(shù) W

42、indows漢字輸入技術(shù)概述 Windows下漢字輸入原理 在 SDK和 DDK環(huán)境下開(kāi)發(fā)輸入系統(tǒng) 1、界面 2、概念 輸入法 Windows中的漢字輸入法稱為 IME(Input Method Editor),它的本質(zhì)是一個(gè)轉(zhuǎn)換引擎,通過(guò)查字典方式, 把鍵盤(pán)輸入的按鍵消息轉(zhuǎn)換為各種語(yǔ)言的文字信息。 另外,它還提供和用戶、操作系統(tǒng)的接口。 輸入法管理器 輸入法管理器簡(jiǎn)稱為 IMM( Input Method Manager), 它是一個(gè)管理各種 IME,并在 IME和應(yīng)用程序間進(jìn)行通 信的系統(tǒng)部件。它不僅為程序員提供了開(kāi)發(fā)輸入法的 接口,還為用戶提供了管理輸入法的界面。 2、 概念(續(xù)) 2、

43、 概念(續(xù)) 多文種環(huán)境( Multi-lingual Environment) 所謂多文種環(huán)境是指系統(tǒng)可以為使用各種不同語(yǔ)言文字體系的用 戶提供了支撐他們母語(yǔ)的操作環(huán)境。 Windows的輸入體系支持多 文種環(huán)境,包括中文、日文、韓文、法語(yǔ)和德語(yǔ)等上百種不同的 語(yǔ)言體系。也就是說(shuō),在 Windows下,不僅可以輸入漢字,也可 以輸入其它語(yǔ)言文字。漢語(yǔ)言文字僅是其中的一個(gè)環(huán)境而言。 鍵盤(pán)布局( Keyboard Layout) 鍵盤(pán)布局規(guī)定了鍵盤(pán)上每個(gè)按鍵的物理位置以及每個(gè)按鍵對(duì)應(yīng)的 字符。每個(gè)鍵盤(pán)布局對(duì)應(yīng)于一種語(yǔ)言,從而根據(jù)這種語(yǔ)言的定義 和當(dāng)前的輸入法把按鍵轉(zhuǎn)換為該語(yǔ)言的文字信息。 在 W

44、indows中,提供了多種不同的鍵盤(pán)布局,其中就包括各種中 文的鍵盤(pán)布局。每個(gè)漢字輸入法就是一個(gè)鍵盤(pán)布局,如輸入法 “智能 ABC”的鍵盤(pán)布局是“ E004804”,通過(guò)注冊(cè)表編輯器可以查 看各種輸入法的鍵盤(pán)布局 2、 概念(續(xù)) 3、特點(diǎn) 每個(gè)輸入法只是整個(gè)多文種環(huán)境的一個(gè)部件而已, 一個(gè)多文種環(huán)境包含多個(gè)輸入法,如在 Windows XP中,多文種環(huán)境可以包含中文(中國(guó)大陸)、 中文(中國(guó)香港)、中文(中國(guó)臺(tái)灣)、日文、 韓文等環(huán)境,每個(gè)環(huán)境可以有自己的輸入法; 每個(gè)應(yīng)用程序都擁有自己的一個(gè)活動(dòng)輸入法,也 就是說(shuō),輸入法不再為所有的應(yīng)用程序所共有, 同樣的一個(gè)輸入法,可能運(yùn)行多個(gè)實(shí)例; 應(yīng)

45、用程序和輸入法之間可以進(jìn)行消息的傳遞,應(yīng) 用程序可以控制輸入法的工作; 支持從漢字詞組到編碼的反向轉(zhuǎn)換。 內(nèi)容 Windows漢字輸入技術(shù)概述 Windows下漢字輸入原理 在 SDK和 DDK環(huán)境下開(kāi)發(fā)輸入系統(tǒng) 1、 Windows漢字輸入模型 2、 Windows漢字輸入系統(tǒng)基本結(jié)構(gòu) 3、 Windows漢字輸入原理 當(dāng)用戶在鍵盤(pán)上按下一個(gè)鍵后,在應(yīng)用程序調(diào)用 GetMessage/PeekMessage前,系統(tǒng)首先調(diào)用輸入法的接口函數(shù) ImeProcessKey,通過(guò)這個(gè)函數(shù)判別輸入法是否需要處理這個(gè)鍵, 把這個(gè)鍵吃掉; 如果返回 TRUE,表示輸入法需要處理這個(gè)鍵,那么系統(tǒng)設(shè)置虛鍵 的

46、值為 VK_PROCESSKEY,然后應(yīng)用程序接收到消息 WM_KEYDOWN,其中的值為 VK_PROCESSKEY;如果返回 FALSE,則表示輸入法不需要處理這個(gè)鍵,直接返回此鍵給應(yīng)用程 序,結(jié)束; 當(dāng)應(yīng)用程序接收到消息 WM_KEYDOWN后,在調(diào)用函數(shù) TranslateMessage時(shí),系統(tǒng)把用戶按下鍵的掃描碼和虛鍵傳遞給輸 入法的接口函數(shù) ImeToAsciiEx。 輸入法在處理了按鍵后,根據(jù)處理方法的不同把各種消息存放在消 息緩沖區(qū)中,這個(gè)緩沖區(qū)是作為函數(shù) ImeToAsciiEx的一個(gè)參數(shù)傳遞 過(guò)來(lái)的。 應(yīng)用程序在消息隊(duì)列中得到由輸入法產(chǎn)生的消息,進(jìn)行相應(yīng)的處理。 如果應(yīng)用程

47、序不處理這些消息,則把它傳遞給默認(rèn)窗口( Default Window),然后由系統(tǒng)就把消息傳遞給默認(rèn)的 IME窗口,由它來(lái) 處理這些消息。 內(nèi)容 Windows漢字輸入技術(shù)概述 Windows下漢字輸入原理 在 SDK和 DDK環(huán)境下開(kāi)發(fā)輸入系統(tǒng) 在 SDK和 DDK環(huán)境下開(kāi)發(fā)輸入系統(tǒng) 為了方便編程人員開(kāi)發(fā)基于 Windows的各種驅(qū)動(dòng) 程序, Microsoft提供了一套用于開(kāi)發(fā)的 DDK工具 包,利用這套工具包就可以開(kāi)發(fā)輸入法。在 DDK 中,不僅提供了輸入法的開(kāi)發(fā)環(huán)境,還提供了相 關(guān)文檔以及一個(gè)區(qū)位輸入法的實(shí)例代碼。這個(gè)區(qū) 位輸入法經(jīng)編譯后,可以安裝在 Windows中。 在 DDK中的區(qū)位輸入法的代碼,為我們?cè)O(shè)計(jì)其它 的輸入法提供了基礎(chǔ),我們?cè)O(shè)計(jì)新的輸入法主要 就是在這個(gè)區(qū)位輸入法的代碼基礎(chǔ)上進(jìn)行修改, 這樣可以大大節(jié)省開(kāi)發(fā)時(shí)間。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!