專利名稱:用于集成虛機(jī)和輸入方法編輯程序的方法
本申請(qǐng)是美國(guó)專利申請(qǐng)序號(hào)08/831,975的部分繼續(xù)申請(qǐng),后者于1997年4月2日遞交,發(fā)明人為David M.Silver和Yung-Shin Lin,名稱為“用于集成虛機(jī)和輸入方法編輯程序的方法”。
本發(fā)明一般地涉及擴(kuò)充型鍵盤(pán)編輯程序,尤其涉及平臺(tái)可移植的虛機(jī)和輸入方法編輯程序的集成,用于建立復(fù)合字符,例如包括日文、中文和朝鮮文的非拉丁語(yǔ)言的書(shū)面表意文字。
因特網(wǎng)帶來(lái)的全球性連接將增加對(duì)國(guó)際化軟件產(chǎn)品的需求并且對(duì)國(guó)際化應(yīng)用程序提出更多的需求。例如,在因特網(wǎng)上傳送并運(yùn)行的應(yīng)用程序需要在運(yùn)行時(shí)和用戶的語(yǔ)言相適應(yīng)。有的應(yīng)用程序要求是多語(yǔ)言的并且支持不同語(yǔ)言的組合。平臺(tái)可移植的編輯語(yǔ)言JAVA已設(shè)計(jì)成支持國(guó)際化。JAVA原始字符類(lèi)型以單一代碼(Unicode)為基,該單一代碼是用于編輯書(shū)寫(xiě)語(yǔ)言元素的國(guó)際標(biāo)準(zhǔn)。
雖然JAVA包括對(duì)單一代碼串的支持,許多文本編輯程序采用雙字節(jié)字符集(DBCS)編碼,而且許多文本文件包括DBCS串而不是單一代碼串。對(duì)于包含DBCS串的文本文件,在編譯時(shí)必須把源文件轉(zhuǎn)換成單一代碼。此外,在讀寫(xiě)操作期間必須把DBCS串轉(zhuǎn)換成單一代碼。微軟系統(tǒng)的用于JAVA的開(kāi)發(fā)工具增強(qiáng)了JAVA的支持DBCS編碼及微軟視窗資源國(guó)際化特性。
具體地,在把源代碼編譯成類(lèi)文件時(shí),微軟JAVA編譯程序(JVC)把源代碼文件中的DBCS文字串翻譯成單一代碼。當(dāng)帶有單一代碼使JAVA支持(例如微軟Internet Explorer 3.0版中的支持)的瀏覽器運(yùn)行這些類(lèi)文件時(shí),這些文字串會(huì)正確地出現(xiàn)。此外,微軟虛(擬)機(jī)允許系統(tǒng)開(kāi)發(fā)員編寫(xiě)基于JAVA的在DBCS和單一代碼之間轉(zhuǎn)換文本串的程序。
輸入方法編輯程序(IME)是一種程序,它允許計(jì)算機(jī)用戶利用標(biāo)準(zhǔn)鍵盤(pán)輸入復(fù)雜字符和符號(hào),例如日文漢字字符。微軟視窗的國(guó)際化版本為使用非拉丁字母表,例如日文、朝鮮文、繁體中文、簡(jiǎn)化中文,的語(yǔ)言的場(chǎng)所提供系統(tǒng)IME。也可為其它語(yǔ)言如俄語(yǔ)、阿拉伯語(yǔ)、希伯來(lái)語(yǔ)等開(kāi)發(fā)IME。
目前,IME源代碼不能由系統(tǒng)開(kāi)發(fā)員以需要為基礎(chǔ)修改。由于各種IME是在許多不同類(lèi)型的平臺(tái)上利用不同的操作系統(tǒng)實(shí)現(xiàn)的現(xiàn)實(shí),很難使IME源代碼變體普遍使用。期望更新每一種可能必須和IME交互的操作系統(tǒng)不是一種切實(shí)可行的解決辦法。
從而,需要一種平臺(tái)可移植的虛機(jī),它允許各個(gè)開(kāi)發(fā)員以其需要為基修改IME源代碼。實(shí)際上,需要一種為宿留基于JAVA的IME以及現(xiàn)有系統(tǒng)IME的JAVA應(yīng)用程序提供IME支持的系統(tǒng)。
本發(fā)明通過(guò)集成JAVA虛機(jī)和一個(gè)或多個(gè)IME,滿足一種允許各個(gè)開(kāi)發(fā)員按其需要為基修改輸入方法編輯程序(IME)的平臺(tái)可移值的虛機(jī)的需求??稍诓捎貌煌僮飨到y(tǒng)的大范圍平臺(tái)上有益地實(shí)施JAVA編輯環(huán)境。從而,系統(tǒng)開(kāi)發(fā)員可以利用JAVA虛機(jī)在采用不同操作系統(tǒng)的大范圍的各種平臺(tái)上修改IME源代碼。此外,在一種平臺(tái)上修改的IME可移植到采用其它操作系統(tǒng)的其它平臺(tái)上。從而,本發(fā)明提供一種允許各個(gè)開(kāi)發(fā)員按其需要為基礎(chǔ)修改IME源代碼的平臺(tái)可移植的虛機(jī)。
依據(jù)本發(fā)明的基于JAVA的虛機(jī)在下述三種范圍內(nèi)支持輸入方法編輯程序(IME)(1)利用帶有JAVA虛機(jī)的基于JAVA的IME;(2)編寫(xiě)基于JAVA的IME;以及(3)把JAVA虛機(jī)集成到各系統(tǒng)IME。虛機(jī)包括一個(gè)窗口管理程序、一個(gè)輸入方法管理程序、一個(gè)或多個(gè)IME和/或鍵盤(pán)驅(qū)動(dòng)程序(KBD)以及一個(gè)組件。虛機(jī)還可以包括一個(gè)用于集成虛機(jī)和系統(tǒng)IME的系統(tǒng)IME橋路以及一個(gè)用于集成虛機(jī)和系統(tǒng)KBD的系統(tǒng)KBD橋路。窗口管理程序充當(dāng)操作系統(tǒng)和虛機(jī)之間的網(wǎng)關(guān)。輸入方法管理程序(IMM)充當(dāng)窗口管理程序和多個(gè)IME、KBD之間的路由器。IME包括一個(gè)復(fù)合字符查開(kāi)表,這些字符由單一代碼鍵盤(pán)命令檢索。該組件典型地提供一個(gè)允許用戶操縱由IME回送的復(fù)合字符的用戶接口。
為容納用戶可定義的IME及組件,虛機(jī)實(shí)現(xiàn)一組預(yù)先規(guī)定的接口,這些接口允許上述各IME和各組件彼此通信并且和虛機(jī)的其它構(gòu)件(即窗口管理程序和IMM)通信。這些預(yù)先規(guī)定的接口允許系統(tǒng)開(kāi)發(fā)員修改各IME和各組件的功能以及把修改后的IME及組件與虛機(jī)集成。具體地,一個(gè)可兼容的IME實(shí)現(xiàn)一個(gè)稱為接口方法收聽(tīng)器接口的接口。IMM實(shí)現(xiàn)一個(gè)稱為輸入管理程序收聽(tīng)器接口的接口。窗口管理程序?qū)崿F(xiàn)一個(gè)稱為輸入方法回收接口的接口。而該組件實(shí)現(xiàn)一個(gè)稱為輸入方法消息收聽(tīng)器接口的接口。通過(guò)編寫(xiě)一個(gè)實(shí)現(xiàn)輸入方法收聽(tīng)器接口的IME建立一個(gè)可兼容的IME。即,建立一個(gè)實(shí)現(xiàn)輸入方法收聽(tīng)器接口的IME是必要的,并且對(duì)于建立一個(gè)可和依據(jù)本發(fā)明構(gòu)建的虛機(jī)兼容的IME是充分的。
概括地描述,本發(fā)明是一種平臺(tái)可移植的虛機(jī),其運(yùn)行在包括鍵盤(pán)、顯示器、處理單元及在該處理單元上運(yùn)行的操作系統(tǒng)的計(jì)算機(jī)系統(tǒng)上。也運(yùn)行在該處理單元上的該虛機(jī)包括一個(gè)窗口管理程序,后者從該操作系統(tǒng)接收鍵盤(pán)命令。該輸入方法管理程序接收來(lái)自窗口管理程序的鍵盤(pán)命令。輸入方法編輯程序接收來(lái)自輸入方法管理程序的鍵盤(pán)命令并且把鍵盤(pán)命令翻譯成復(fù)合字符,例如書(shū)面表意文字或書(shū)面表意文字的元素。該組件接收來(lái)自輸入方法編輯程序的復(fù)合字符并且為在顯示器上顯示提供復(fù)合字符。
更具體地,窗口管理程序接收來(lái)自鍵盤(pán)的鍵盤(pán)命令并且判定輸入方法管理程序是否現(xiàn)用。若輸入方法管理程序不是現(xiàn)用的,窗口管理程序把鍵盤(pán)命令傳送到組件上。若輸入方法管理程序是現(xiàn)用的,則窗口管理程序把鍵盤(pán)命令傳送到輸入方法管理程序并且從輸入方法管理程序接收回送消息。若輸入方法管理程序不能處理該鍵盤(pán)消息,它向窗口管理程序回送“假”回送消息。接著窗口管理程序把鍵盤(pán)命令傳送給組件。反之,輸入消息管理程序處理鍵盤(pán)命令并且向窗口管理程序回送“真”。
輸入方法管理程序接收來(lái)自窗口管理程序的鍵盤(pán)命令并且判定鍵盤(pán)命令是否指向輸入方法管理程序。若鍵盤(pán)命令是指向輸入方法管理程序響應(yīng)的,輸入方法管理程序響應(yīng)該鍵盤(pán)命令。例如,鍵盤(pán)命令可能造成輸入方法管理程序去激活當(dāng)前現(xiàn)用的輸入方法編輯程序并且激活一種替代的輸入方法編輯程序。若鍵盤(pán)命令不指向輸入方法管理程序,輸入方向管理程序把鍵盤(pán)命令傳送到當(dāng)前現(xiàn)用的輸入方法編輯程序。
輸入方法編輯程序接收來(lái)自輸入方法管理程序的鍵盤(pán)命令,并且可能把該鍵盤(pán)命令和以前接收的鍵盤(pán)命令組合起來(lái)以建立組合串。然后輸入方法編輯程序判定該組合串是否對(duì)應(yīng)某復(fù)合字符。若該組合串對(duì)應(yīng)于某復(fù)合字符,輸入方法編輯程序把組合串翻譯成復(fù)合字符并且把該復(fù)合字符傳送到窗口管理程序。窗口管理程序從輸入方法編輯程序接收復(fù)合字符,并且把復(fù)合字符傳送到組件。
組件接收來(lái)自窗口管理程序的復(fù)合字符,提供顯示設(shè)備上的用戶接口,并且和該用戶接口相結(jié)合在顯示設(shè)備上提供復(fù)合字符。接著組件通過(guò)用戶接口接收用戶命令,響應(yīng)用戶命令改變復(fù)合字符,并且和用戶接口相結(jié)合在顯示設(shè)備上提供改變后的復(fù)合字符。
計(jì)算機(jī)系統(tǒng)還可包括在處理單元上運(yùn)行的系統(tǒng)輸入方法編輯程序,并且虛機(jī)可包括一個(gè)用于把系統(tǒng)輸入方法編輯程序和窗口管理程序及輸入方法管理程序集成起來(lái)的輸入方法編輯程序橋路。
依據(jù)本發(fā)明的一個(gè)方面,輸入方法編輯程序定義一個(gè)包括第一接口方法的接口,該方法用于從輸入方法管理程序接收指示輸入方法編輯程序處理鍵盤(pán)命令的消息。該輸入方法編輯程序接口還可包括第二接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序以激活的消息。該輸入方法編輯程序接口還可包括第三接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序以去激活的消息。該輸入方法編輯程序接口還可包括第四接口方法,用于從窗口管理程序接收指示輸入方法編輯程序處理該接收的消息的消息。
該輸入方法編輯程序接口還可包括第五接口方法,用于從組件接收指示輸入方法編輯程序提供用于在顯示設(shè)備上顯示的用戶接口的消息。該輸入方法編輯程序接口還可包括第六接口方法,用于從組件接收定義由輸入方法提供的用戶接口的尺寸的消息,以便在顯示設(shè)備上顯示。該輸入方法編輯程序接口還可包括第七接口方法,用于從組件接收定義由輸入方法提供的用于在顯示設(shè)備上顯示的用戶接口的位置。
依據(jù)本發(fā)明的另一個(gè)方面,該輸入方法管理程序定義一個(gè)包括第一接口方法的接口,該方法用于從窗口管理程序接收指示輸入方法管理程序激活第一輸入方法編輯程序的消息。該輸入方法管理程序還可包括第二接口方法,用于從窗口管理程序接收指示輸入方法管理程序從輸入方法編輯程序的注冊(cè)表中去掉第二輸入方法編輯程序的消息。該輸入方法管理程序還可包括第三接口方法,用于從窗口管理程序接收指示輸入方法管理程序確定一個(gè)現(xiàn)用輸入方法編輯程序的消息。該輸入方法管理程序還可包括第四接口方法,用于從窗口管理程序接收指示輸入方法管理程序枚舉輸入方法編輯程序的注冊(cè)表的消息。該輸入方法管理程序還可包括第五接口方法,用于從窗口管理程序接收要求輸入方法管理程序處理鍵盤(pán)命令的消息。
依據(jù)本發(fā)明的又一個(gè)方面,窗口管理程序定義一個(gè)包括用于從輸入方法編輯程序接收消息的接口方法的接口。此外,組件定義一個(gè)包括用于從窗口管理程序接收消息的接口方法的接口。
從下面對(duì)示范實(shí)施例的詳細(xì)說(shuō)明,本發(fā)明對(duì)現(xiàn)有技術(shù)中的缺點(diǎn)的改進(jìn)以及對(duì)本發(fā)明的目的的實(shí)現(xiàn)將變?yōu)榍逦?br>
圖1是為本發(fā)明的示范實(shí)施例提供運(yùn)行環(huán)境的個(gè)人計(jì)算機(jī)的示意框圖。
圖2是一個(gè)示意框圖,說(shuō)明與平臺(tái)可移植的虛機(jī)配合的操作系統(tǒng)以便把該操作系統(tǒng)和多個(gè)輸入方法編輯程序及鍵盤(pán)驅(qū)動(dòng)器相集成。
圖3是一個(gè)邏輯流程圖,說(shuō)明用于操作圖2的虛機(jī)內(nèi)的窗口管理程序的第一例行程序。
圖4是一個(gè)邏輯流程圖,說(shuō)明用于操作圖2的虛機(jī)內(nèi)的窗口管理程序的第二例行程序。
圖5是一個(gè)邏輯流程圖,說(shuō)明用于操作圖2的虛機(jī)內(nèi)的輸入方法管理程序的一個(gè)例行程序。
圖6是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的輸入方法編輯程序的接口。
圖7是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的輸入方法管理程序的接口。
圖8是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的窗口管理程序的接口。
圖9是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的組件的接口。
圖10A是一個(gè)示意框圖,說(shuō)明用于處理鍵盤(pán)命令的現(xiàn)有技術(shù)方法。
圖10B是一個(gè)示意框圖,說(shuō)明用于實(shí)現(xiàn)輸入方法編輯程序的現(xiàn)有技術(shù)。
圖11是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的支持系統(tǒng)輸入方法編輯程序的虛機(jī)。
圖12是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的實(shí)現(xiàn)輸入方法編輯程序的虛機(jī)。
圖13是一個(gè)示意框圖,說(shuō)明依據(jù)本發(fā)明的一種實(shí)施例的宿留系統(tǒng)輸入方法編輯程序的虛機(jī)。
示范實(shí)施例的詳細(xì)說(shuō)明本發(fā)明可體現(xiàn)在下述三種范圍內(nèi)支持IME功能的虛機(jī)中(1)利用帶有JAVA虛機(jī)的基于JAVA的IME;(2)編寫(xiě)基于JAVA的IME;以及(3)把JAVA虛機(jī)集成到各系統(tǒng)IME。虛機(jī)包括一個(gè)窗口管理程序、一個(gè)IMM、一個(gè)或多個(gè)基于JAVA的IME、一個(gè)或多個(gè)基于JAVA的KBD及一個(gè)組件。虛機(jī)還可包括一個(gè)用于集成虛機(jī)和系統(tǒng)IME的系統(tǒng)IME橋路以及一個(gè)用于集成虛機(jī)和系統(tǒng)KBD的系統(tǒng)KBD橋路。
窗口管理程序充當(dāng)操作系統(tǒng)和虛機(jī)之間的網(wǎng)關(guān)。因此,窗口管理程序接收來(lái)自操作系統(tǒng)的鍵盤(pán)命令,其中包括諸如“CTRL+”、“ALT+”、“CTRL ALT+”的功能命令和復(fù)合鍵盤(pán)命令,這些命令增加了可由標(biāo)準(zhǔn)鍵盤(pán)唯一標(biāo)記的字符數(shù)量。窗口管理程序把鍵盤(pán)命令翻譯成標(biāo)準(zhǔn)單一代碼格式并且恰當(dāng)?shù)匕褑我淮a鍵盤(pán)命令傳送到組件上或IMM上。窗口管理程序還接收由IME回送的復(fù)合字符并且把復(fù)合字符傳送到組件上,以如組件的功能所規(guī)定供顯示并進(jìn)而由用戶操縱。窗口管理程序還可接收IME消息并把IME消息傳送到組件。
IMM充當(dāng)窗口管理程序和多個(gè)IME及多個(gè)KBD之間的路由器。IMM響應(yīng)某些IMM命令如觸發(fā)命令,以允許用戶激活特定的IME或KBD。IMM典型地通過(guò)去激活先前現(xiàn)用的IME或KBD并且激活指定的IME或KBD對(duì)IMM命令作出響應(yīng)。接著IMM把后繼的鍵盤(pán)命令路由到被激活的IME或KBD,直到接收另一個(gè)IMM命令為止。
IME包括一個(gè)復(fù)合字符查找表,這些復(fù)合字符是通過(guò)各種單一代碼鍵盤(pán)命令檢索的。IME接收稱為WM_IME_CHAR鍵盤(pán)命令的單一代碼消息,并且把它們翻譯成對(duì)應(yīng)的復(fù)合字符。為了進(jìn)一步增加可由標(biāo)準(zhǔn)鍵盤(pán)唯一標(biāo)記的字符數(shù)量,可把IME配置成根據(jù)多重鍵盤(pán)命令檢索復(fù)合字符。即,IME可組合一些WM_IME_CHAR鍵盤(pán)命令以構(gòu)建和某預(yù)先確定的復(fù)合字符對(duì)應(yīng)的某單一代碼組合串。采用多重鍵盤(pán)命令組合串可使IME檢索成千上萬(wàn)的獨(dú)立復(fù)合字符,這對(duì)于生成非拉丁語(yǔ),如日文、朝鮮文和中文,的書(shū)面表意文字是非常有用的。接著IME把復(fù)合字符傳送到窗口管理程序,后者把復(fù)合字符傳送到組件供用戶進(jìn)一步操作。
IME還把稱為IME消息的指令傳送到窗口管理程序。窗口管理程序典型地把IME消息傳送到組件。IME消息典型地包括組合消息,例如“開(kāi)始復(fù)合字符”以及“結(jié)束復(fù)合字符”,它們使IME和組件交互作用。系統(tǒng)開(kāi)發(fā)員可對(duì)組件和IME進(jìn)行配置,以便按其需要為基礎(chǔ)處理許多其它IME消息。JAVA虛機(jī)提供一種可使組件和IME通信的機(jī)制,但是JAVA虛機(jī)并不限定組件或IME的功能。而且JAVA虛機(jī)也不限定可在組件和IME之間通信的IME消息的類(lèi)型或結(jié)構(gòu)。從而,虛機(jī)不確定專用的IME消息,相反,這是留給各個(gè)系統(tǒng)開(kāi)發(fā)員以其需要為基礎(chǔ)定義的。虛機(jī)的作用是提供一種把用戶可定義的IME和用戶可定義的組件相集成的標(biāo)準(zhǔn)化載體。
盡管可把組件或IME配置成控制IME的繪圖空間,組件典型地提供一個(gè)用戶接口,其允許用戶改變IME回送的復(fù)合字符,例如書(shū)面表意文字或書(shū)面表意文字的元素。當(dāng)然,隨著平臺(tái)的不同以及用戶的不同,可由用戶定義的具體IME和組件的功能性可以是不同的。為了容納這些可由用戶定義的IME和組件,虛機(jī)實(shí)現(xiàn)一組預(yù)先確定的接口,這些接口使得IME和組件可彼此通信以及可和虛機(jī)的其它構(gòu)件(窗口管理程序和IMM)通信。這些預(yù)先規(guī)定的接口允許系統(tǒng)開(kāi)發(fā)員修改IME和組件的功能以及把IME及組件和虛機(jī)相集成。
從而,本發(fā)明的各示范實(shí)施例主要是定義一組允許虛機(jī)的各構(gòu)件彼此通信的協(xié)同操作的接口。一個(gè)可兼容的IME實(shí)現(xiàn)稱為接口方法收聽(tīng)器接口的一個(gè)接口。接口方法收聽(tīng)器接口最好包括八種接口方法“處理鍵”-指示IME試圖響應(yīng)某事件(例如鍵盤(pán)命令);“處理IME消息”-指示IME處理IME消息;“設(shè)定可見(jiàn)組件”-告訴IME哪個(gè)模塊控制IME的繪圖空間;“設(shè)定位置”-指示IME在特定位置上開(kāi)始繪圖;“設(shè)定尺寸”-設(shè)定IME要畫(huà)的圖形圖象的尺寸;“涂”-指示IME開(kāi)始繪制某字符;“激活”-指示IME響應(yīng)后繼消息;以及“去激活”-指示IME不響應(yīng)后繼消息(激活除外)。
IMM實(shí)現(xiàn)稱為輸入管理程序收聽(tīng)器接口的一個(gè)接口。輸入管理程序收聽(tīng)器最好包括五種接口方法“得到輸入方法”-指示IMM確定現(xiàn)用IME;“得到輸入方法數(shù)量”-指示IMM枚舉注冊(cè)的IME;“去掉輸入方法”-指示IMM從IME的注冊(cè)表中去掉某IMM;“設(shè)定輸入方法”一指示IMM激活某特定IME;以及“被處理的鍵”-使窗口管理程序把鍵盤(pán)命令傳送到IMM并且得到來(lái)自IMM表示IMM接受或拒絕該鍵盤(pán)命令的回送消息。
窗口管理程序?qū)崿F(xiàn)稱為輸入方法回叫接口的一個(gè)接口。輸入方法回叫接口最好包括二種接口方法“處理IME字符”-其由IME使用以向窗口管理程序回送復(fù)合字符,例如書(shū)面表意文字或者書(shū)面表意文字的元素;以及“處理IME消息”-用于由IME向窗口管理程序傳送IME消息。
組件實(shí)現(xiàn)稱為輸入方法消息收聽(tīng)器接口的一種接口。輸入方法消息收聽(tīng)器接口最好包括一種接口方法“處理IME消息”-用于由窗口管理程序把復(fù)合字符和IME消息傳送給組件。
通過(guò)編寫(xiě)一個(gè)實(shí)現(xiàn)輸入方法收聽(tīng)器接口的IME建立一個(gè)可兼容的IME。即,對(duì)于建立一個(gè)可和依據(jù)本發(fā)明構(gòu)建的虛機(jī)兼容的IME,建立一個(gè)實(shí)現(xiàn)輸入方法收聽(tīng)器接口的接口是必要的和充分的。虛機(jī)還可包括一個(gè)系統(tǒng)IME橋路,它集成虛機(jī)和系統(tǒng)IME。該系統(tǒng)IME橋路把標(biāo)志或其它命令名標(biāo)識(shí)符插入到IME消息中以防止從系統(tǒng)IME到操作系統(tǒng)的不希望反饋。類(lèi)似地,虛機(jī)還可包括一個(gè)系統(tǒng)KBD橋路,它集成虛機(jī)和系統(tǒng)KBD。
和系統(tǒng)IME相比,基于JAVA的IME提供更多的靈活性及控制。例如,基于JAVA的IME可和視窗操作系統(tǒng)的任何版本一起使用。從而,基于JAVA的混合平臺(tái)IME可運(yùn)行在任何安裝著虛機(jī)的系統(tǒng)上。從而,可用單個(gè)JAVA應(yīng)用程序并發(fā)地激活多個(gè)基于不同語(yǔ)言的以JAVA為基的IME。基于JAVA的IME可被封裝并且借助小應(yīng)用程序從因特網(wǎng)下載,或者用戶隨意下載。應(yīng)用程序可以控制IME接口元素,諸如成分、狀態(tài)和候選窗口。保密的基于JAVA的IME實(shí)現(xiàn)常規(guī)的JAVA安全準(zhǔn)則并且借助JAVA應(yīng)用程序運(yùn)行在“沙箱”中。
com.ms.util包包括輸入方法收聽(tīng)器接口類(lèi),該類(lèi)是用于基于JAVA的IME的基類(lèi)?;谠擃?lèi)的IME會(huì)由IMM識(shí)別。虛機(jī)還支持裝在COM包裝件中的現(xiàn)有系統(tǒng)IME,COM包裝件可和基于JAVA的IME互換。但是,和使用系統(tǒng)IME相關(guān)存在一些限制。只要JAVA虛機(jī)得到安裝,在任何系統(tǒng)上可使用基于JAVA的IME,而與系統(tǒng)定位在何種語(yǔ)言無(wú)關(guān)。另一方面,系統(tǒng)IME受限于主機(jī)系統(tǒng)上IMM所支持的IME。例如,朝鮮語(yǔ)的系統(tǒng)IME不能運(yùn)行在定位于希臘語(yǔ)的視窗95的有關(guān)版本上。
系統(tǒng)IME由com.ms.util包中的系統(tǒng)IME類(lèi)支持。通過(guò)嵌入一個(gè)直接和各系統(tǒng)IME通信的對(duì)象COM,系統(tǒng)IME類(lèi)實(shí)現(xiàn)輸入方法收聽(tīng)器接口。該COM對(duì)象從IME接收鍵盤(pán)命令消息并且把復(fù)合結(jié)果傳送到窗口管理程序并且繼續(xù)傳送到組件。
(***問(wèn)題在本申請(qǐng)之前知道com.ms.util包嗎?,或者,它對(duì)這種類(lèi)型的申請(qǐng)是標(biāo)準(zhǔn)嗎?我們注意到本申請(qǐng)未詳細(xì)說(shuō)明下述來(lái)自API的信息“關(guān)于com.ms.util輸入方法”、“類(lèi)IME復(fù)合消息”、“類(lèi)IME通知消息”及“類(lèi)輸入方法消息”。這些信息對(duì)于理解和實(shí)施本發(fā)明是必需的嗎?)現(xiàn)參照附圖在下面說(shuō)明本發(fā)明的示范實(shí)施例,在幾個(gè)附圖中相同的數(shù)字表示相同的構(gòu)件??傮w上,圖1表示本發(fā)明的公開(kāi)實(shí)施例的運(yùn)行環(huán)境。示范性運(yùn)行環(huán)境圖1和伴隨的說(shuō)明為實(shí)施本發(fā)明的適當(dāng)計(jì)算環(huán)境提供簡(jiǎn)單概括的說(shuō)明。盡管是在個(gè)人計(jì)算機(jī)中操作系統(tǒng)上運(yùn)行的應(yīng)用程序的總范圍內(nèi)說(shuō)明本發(fā)明的,業(yè)內(nèi)人士可意識(shí)到本發(fā)明也可在和其它程序模塊組合下得到實(shí)現(xiàn)。通常,程序模塊包括例行程序、程序、組件、數(shù)據(jù)結(jié)構(gòu)等,它們執(zhí)行特定任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類(lèi)型。此外,業(yè)內(nèi)人士可理解,可以用其它計(jì)算機(jī)系統(tǒng)配置實(shí)施本發(fā)明,包括手持部件、多處理機(jī)系統(tǒng)、基于微處理器的或可編輯的家用電器、小型計(jì)算機(jī)、大型計(jì)算機(jī)等。本發(fā)明也可實(shí)施于分布式計(jì)算環(huán)境,在該環(huán)境下通過(guò)經(jīng)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行各任務(wù)。在分布式計(jì)算環(huán)境下,程序模塊可位于本地和遠(yuǎn)程存儲(chǔ)設(shè)備中。
參照?qǐng)D1,實(shí)現(xiàn)本發(fā)明的一種示范性系統(tǒng)是常規(guī)個(gè)人計(jì)算機(jī)20,它包括處理單元21、系統(tǒng)存儲(chǔ)器22以及把系統(tǒng)存儲(chǔ)器連接到處理器21的系統(tǒng)總線23。系統(tǒng)存儲(chǔ)器22包括只讀存儲(chǔ)器(ROM)24和隨機(jī)存取存儲(chǔ)器(RAM)25。在ROM24中存儲(chǔ)基本輸入/輸出系統(tǒng)(BIOS)26,BIOS包括幫助在個(gè)人計(jì)算機(jī)20內(nèi)的構(gòu)件間傳送信息的基本例行程序,例如在啟動(dòng)期間。個(gè)人計(jì)算機(jī)20還包括硬盤(pán)驅(qū)動(dòng)器27、軟盤(pán)驅(qū)動(dòng)器28,例如對(duì)可移動(dòng)盤(pán)29進(jìn)行讀寫(xiě),以及包括光盤(pán)驅(qū)動(dòng)器30,例如對(duì)CD-ROM盤(pán)讀或者對(duì)其它光介質(zhì)讀寫(xiě)。分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口32、軟盤(pán)驅(qū)動(dòng)器接口33和光驅(qū)接口34把硬盤(pán)驅(qū)動(dòng)器27、軟盤(pán)驅(qū)動(dòng)器28和光驅(qū)連接到系統(tǒng)總線23上。這些驅(qū)動(dòng)器以及和它們關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)為個(gè)人計(jì)算機(jī)20提供非易失性存儲(chǔ)。雖然上面對(duì)計(jì)算機(jī)可讀介質(zhì)的說(shuō)明引用了硬盤(pán)、可移動(dòng)磁盤(pán)以及CD-ROM盤(pán),業(yè)內(nèi)人士會(huì)理解,在示范性運(yùn)行環(huán)境中也可采用其它計(jì)算機(jī)可讀的介質(zhì),例如盒式磁帶、閃速存儲(chǔ)器卡、數(shù)字視盤(pán)、貝努里盒帶等。
在各驅(qū)動(dòng)器和RAM25中可存儲(chǔ)一些程序模塊,包括操作系統(tǒng)35、一個(gè)或多個(gè)應(yīng)用程序36、其它程序模塊37以及數(shù)據(jù)程序38。尤其,其它程序模塊37中的一個(gè)是JAVA虛機(jī)100,虛機(jī)100包括下面參照?qǐng)D2-13詳細(xì)說(shuō)明的本發(fā)明的某些實(shí)施例。如業(yè)內(nèi)人士所周知,作為SUN微系統(tǒng)公司的一種注冊(cè)商標(biāo)的JAVA指的是一種多平臺(tái)編輯語(yǔ)言。JAVA虛機(jī)100的用戶可通過(guò)鍵盤(pán)40以及諸如鼠標(biāo)42的指點(diǎn)器向個(gè)人計(jì)算機(jī)20輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲臺(tái)、衛(wèi)星拋物面天線、掃描儀等。通常通過(guò)和系統(tǒng)總線連接的串行端口46把這些以及其它輸入設(shè)備和處理單元21相連接,但是亦可通過(guò)其它接口,例如游戲端口或通用串行總線(USB),連接。經(jīng)過(guò)某接口,例如視頻適配器48,監(jiān)視器47或其它類(lèi)型的顯示設(shè)備也和系統(tǒng)總線23連接。除監(jiān)視器外,個(gè)人計(jì)算機(jī)典型地包括其它外圍輸出設(shè)備(未示出),例如揚(yáng)聲器或打印機(jī)。
個(gè)人計(jì)算機(jī)20可利用與一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)如遠(yuǎn)程計(jì)算機(jī)49的邏輯連接在連網(wǎng)環(huán)境下運(yùn)行。遠(yuǎn)程計(jì)算機(jī)49可以是服務(wù)器、路由器、對(duì)等部件或其它公用網(wǎng)絡(luò)節(jié)點(diǎn),并且典型地包括多個(gè)或全部相對(duì)于個(gè)人計(jì)算機(jī)20說(shuō)明的構(gòu)件,雖然在圖1中僅示出存儲(chǔ)器部件50。圖1中描述的邏輯連接包括局域網(wǎng)(LAN)51和廣域網(wǎng)(WAN)52。在辦公室、公司計(jì)算機(jī)網(wǎng)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中,這種連網(wǎng)環(huán)境習(xí)以為見(jiàn)的。
當(dāng)在LAN連網(wǎng)環(huán)境下使用時(shí),個(gè)人計(jì)算機(jī)20通過(guò)網(wǎng)絡(luò)接口53和LAN 51連接。當(dāng)在WAN連網(wǎng)環(huán)境下使用時(shí),個(gè)人計(jì)算機(jī)20典型地包括用于建立WAN 52,例如因特網(wǎng),上的通信的調(diào)制解調(diào)器54??梢栽趦?nèi)部或外部的調(diào)制解調(diào)器54經(jīng)串行端口接口46和系統(tǒng)總線23連接。在連網(wǎng)環(huán)境下,相對(duì)于個(gè)人計(jì)算機(jī)20描述的程序模塊或模塊的一部分可存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器設(shè)備上。應(yīng)理解所示的網(wǎng)絡(luò)連接是示范性的,并且可采用其它建立計(jì)算機(jī)間通信鏈接的裝置。
公開(kāi)實(shí)施例的操作圖2是一個(gè)示意框圖,表示和JAVA虛機(jī)100協(xié)同操作的操作系統(tǒng)35,該JAVA虛機(jī)100包括多個(gè)用IME/J 112和114代表的基于JAVA的輸入方法編輯程序以及多個(gè)用KBD/J 118和120代表的基于JAVA的鍵盤(pán)驅(qū)動(dòng)程序。通過(guò)把預(yù)先規(guī)定的鍵盤(pán)命令輸入到鍵盤(pán)40或某些其它適當(dāng)類(lèi)型的輸入設(shè)備,以書(shū)面表意文字編寫(xiě)文檔的作者建立書(shū)面表意文字。操作系統(tǒng)35在鍵盤(pán)驅(qū)動(dòng)程序102上接收這些鍵盤(pán)命令,鍵盤(pán)驅(qū)動(dòng)程序102把鍵擊譯成鍵盤(pán)命令。每次鍵擊轉(zhuǎn)換成三種可獨(dú)立處理和翻譯的鍵盤(pán)命令WM KEYDOWN-表示按下某鍵,WM_CHAR-典型地是和按下的鍵相關(guān)的ASCII碼或數(shù)值,以及WM_KEYUP-表示釋放某鍵。這些鍵盤(pán)命令傳送到JAVA虛機(jī)100。
鍵盤(pán)命令最初由JAVA窗口管理程序108接收,JAVA窗口管理程序108把命令翻譯成可由JAVA虛機(jī)100的其它構(gòu)件理解的單一代碼鍵盤(pán)命令。窗口管理程序108典型地消耗掉WM_KEYDOWN和WM_KEYUP鍵盤(pán)命令,這些命令充當(dāng)包括多鍵復(fù)合鍵盤(pán)命令在內(nèi)的鍵盤(pán)命令的界定符。窗口管理程序108典型地把WM_CHAR鍵盤(pán)命令的單一代碼翻譯傳送給IMM 110,后者起窗口構(gòu)件108和多個(gè)IME及KBD之間的路由器的作用。
IME典型地用于建立非拉丁語(yǔ),例如中文、朝鮮文和日文,的復(fù)合字符。IME一般是相當(dāng)復(fù)雜的,并且經(jīng)常使用多個(gè)鍵盤(pán)命令以定義各個(gè)復(fù)合字符。IME一般還和一個(gè)組件一起運(yùn)行,該組件允許用戶進(jìn)一步操縱由IME產(chǎn)生的復(fù)合字符。KBD是相對(duì)簡(jiǎn)單的翻譯程序,用于建立拉丁語(yǔ),如法語(yǔ)、德語(yǔ)、西班牙語(yǔ),中的字符。和IME不同,KBD典型地使用單個(gè)鍵盤(pán)命令和復(fù)式鍵盤(pán)命令(即,同時(shí)按多個(gè)鍵)定義各個(gè)復(fù)合字符。KBD典型地不需要由組件用戶接口提供的功能。然而,可以利用通常和IME關(guān)聯(lián)的所有復(fù)雜化以及組件用戶接口功能開(kāi)發(fā)KBD。
IMM 110為維護(hù)IME及KBD注冊(cè)表并且為激活及去激活注冊(cè)表中的IME和KBD而工作。例如,標(biāo)志成IME/J 112的第一基于JAVA的IME可運(yùn)轉(zhuǎn)成用來(lái)生成中文下的書(shū)面表意文字。標(biāo)志成IME/J114的第二基于JAVA的IME可運(yùn)轉(zhuǎn)成用來(lái)生成日文下的書(shū)面表意文字。此外,標(biāo)志成KBD/J 118的第一基于JAVA的KBD可運(yùn)轉(zhuǎn)成在法文下書(shū)寫(xiě)。標(biāo)志成KBD/J 120的第二基于JAVA的KBD,可運(yùn)轉(zhuǎn)成在德文或西班牙文下書(shū)寫(xiě)。出于簡(jiǎn)明,后面的說(shuō)明只涉及IME。然而,應(yīng)理解,可對(duì)KBD實(shí)施類(lèi)似的操作。
IMM 110充當(dāng)窗口管理程序108和多個(gè)用IME112、114、116代表的IME之間的路由路。IME/J 112和114代表基于JAVA的IME,而IME/S116代表系統(tǒng)IME。為在這些IME 112、114、116之中作出選擇,IMM 110響應(yīng)某些允許用戶選擇某特定IME的預(yù)先規(guī)定的IMM命令(例如,觸發(fā)命令)。通過(guò)去激活先前現(xiàn)用的IME并且激活指定的IME,IMM 110響應(yīng)某IMM命令。然后,在接收到另一個(gè)IMM命令之前,IMM 110把后繼事件傳送到被激活的IME。對(duì)于非IMM命令,IMM 110把來(lái)自窗口管理程序108的命令傳送到現(xiàn)用IME。從IMM 108傳送到現(xiàn)用IME的命令典型地包括WM-CHAR鍵盤(pán)命令的單一代碼翻譯。從IMM 110傳送到現(xiàn)用IME的鍵盤(pán)命令還可包括用于控制IME的功能命令。
由基于JAVA的IME/J 112和114實(shí)現(xiàn)的輸入方法收聽(tīng)器接口對(duì)于使JAVA組件108適當(dāng)?shù)睾虸ME交互是必要和充分的。這樣,由JAVA開(kāi)發(fā)員根據(jù)JAVA虛機(jī)系統(tǒng)開(kāi)發(fā)成套軟件(SDK)的結(jié)構(gòu)建立的IME/J 112和114一般被編輯為通過(guò)虛機(jī)100和操作系統(tǒng)35通信。但是,在以前已建立的或不考慮虛機(jī)100下建立的基于操作系統(tǒng)IME/S 116可編輯為在某些情況下直接和操作系統(tǒng)35通信。進(jìn)而會(huì)對(duì)窗口管理程序108提供IME消息的,IME/S 116和操作系統(tǒng)35之間的這種反饋可產(chǎn)生輸入到操作系統(tǒng)35和JAVA虛機(jī)100之間的不斷循環(huán)的命令,或者產(chǎn)生其它不可預(yù)測(cè)的和不希望的結(jié)果。
為了防止這種類(lèi)型的反饋,JAVA虛機(jī)100典型地包括IME/S橋路124,后者把窗口管理程序108鏈接到系統(tǒng)IME/S 116。JAVA虛機(jī)還包括把窗口管理程序鏈接到系統(tǒng)KBD/S的系統(tǒng)KBD/S橋路126。系統(tǒng)IME/S橋路124和系統(tǒng)KBD/S橋路126分別把標(biāo)志或其它命令名標(biāo)識(shí)符插入到由IME/S 116和系統(tǒng)KBD/S生成的命令中,以防止不希望的反饋從IME/S116到達(dá)操作系統(tǒng)35。具體地,系統(tǒng)IME/S橋路124和KBD/S橋路126分別把WM_CHAR鍵盤(pán)命令改變成WM_IME_CHAR鍵盤(pán)命令以表示消息已由系統(tǒng)IME/S 116或系統(tǒng)KBD/S處理過(guò)。
由IME建立的復(fù)合字符回送到窗口管理程序108,后者把復(fù)合字符傳送到組件122。組件122把復(fù)合字符譯成操作系統(tǒng)35的屏幕驅(qū)動(dòng)程序104理解的操作系統(tǒng)命令。具體地,如業(yè)內(nèi)人士周知的那樣,JAVA組件122實(shí)現(xiàn)一系列包括“鍵事件”命令、“后事件”命令及“鍵按下”命令的命令以在監(jiān)視器上提供圖象。
組件122典型地提供一個(gè)用戶接口,其包括一個(gè)或多個(gè)其中包含著若干繪圖工具的工具欄。和由IME回送的復(fù)合字符相關(guān)聯(lián)在監(jiān)視器47上顯示用戶接口。該用戶接口允許組件122接收用戶命令以進(jìn)一步操縱復(fù)合字符。例如,組件122可使從IME接收的復(fù)合字符被顯示在該用戶接口內(nèi)。然后組件122可接收利用用戶接口的繪圖工具建立的用戶命令以改變或者增添復(fù)合字符。這樣組件122把IME和基于JAVA用戶接口相集成,以便操縱由IME回送的復(fù)合字符。備擇地,虛機(jī)100允許IME在由另一個(gè)程序模塊,例如字處理器或編輯程序,控制的繪圖空間內(nèi)畫(huà)出復(fù)合字符。
圖3是一個(gè)邏輯流程圖,說(shuō)明用于操作虛機(jī)100中的窗口管理程序108的第一例行程序300。在步驟302,窗口管理程序108等待事件。窗口管理程序108典型地接收二種類(lèi)型的事件來(lái)自操作系統(tǒng)35的鍵盤(pán)命令和來(lái)自IME的包括復(fù)合字符和其它系統(tǒng)IME消息的IME消息。在步驟304,窗口管理程序108接收一個(gè)事件,該情況下為來(lái)自操作系統(tǒng)的鍵盤(pán)命令。
在步驟306,窗口管理程序108判定虛機(jī)100是否包括一個(gè)用IMM110表示的現(xiàn)用IMM。若虛機(jī)100不包括現(xiàn)用IMM,隨“NO”分支到達(dá)步驟308,在其中窗口管理程序108把鍵盤(pán)命令的單一代碼翻譯傳送到組件122。若虛機(jī)100包括現(xiàn)用IMM,隨“YES”分支到達(dá)步驟310,在其中窗口管理程序108把鍵盤(pán)命令的單一代碼翻譯傳送到IMM 110。
取決于命令的類(lèi)型,IMM 110可接收該事件,或者IMM 110可拒絕該事件。在步驟311。窗口管理程序108檢查IMM是否接收該事件。窗口管理程序108最好通過(guò)從輸入消息收聽(tīng)器接口的處理鍵方法接收回送消息進(jìn)行該查詢,該處理鍵方法被調(diào)用以把鍵盤(pán)命令傳送到IMM 110。若IMM 100回送指示IMM接收事件的“真”,“YES”分支循環(huán)到步驟302,在步驟302窗口管理程序108等待另一個(gè)事件。若IMM 100回送指示IMM拒絕事件的“假”,“NO”分支循環(huán)到步驟308,在步驟308窗口管理程序108把事件傳送給組件122。
在步驟308之后,例行程序300循環(huán)到步驟302,在步驟302窗口管理程序108等待另一個(gè)事件。在步驟311的查詢?cè)试S在不必先經(jīng)過(guò)IMM110的傳送下把某些事件直接傳送到組件122。這樣,窗口管理程序108通過(guò)把事件傳送到IMM 110或者通過(guò)把事件傳送到用于進(jìn)一步進(jìn)行處理并最終提供到監(jiān)視器47的IMM 110處理每個(gè)事件。
圖4是一個(gè)邏輯流程圖,說(shuō)明用于操作虛機(jī)100內(nèi)的窗口管理程序的第二方法400。在步驟402,窗口管理程序108等待事件。在步驟404,窗口管理程序108接收一個(gè)事件,在該情況下為來(lái)自IME的復(fù)合字符或其它系統(tǒng)IME消息。IME最好通過(guò)調(diào)用輸入方法回叫接口的處理IME消息方法向窗口管理程序108傳送事件。
在步驟406,窗口管理程序108判定組件122是否實(shí)現(xiàn)輸入方法消息收聽(tīng)器接口。若組件122實(shí)現(xiàn)輸入方法消息收聽(tīng)器接口,隨“YES”分支到達(dá)步驟408,在步驟408窗口管理程序108把事件傳送給組件122。窗口管理程序108最好通過(guò)調(diào)用輸入方法消息收聽(tīng)器接口的處理IME消息方法把事件傳送到組件122。若組件122不實(shí)現(xiàn)輸入方法消息收聽(tīng)器接口,隨“NO”分支到達(dá)步驟412,在步驟412窗口管理程序108把事件直接發(fā)送到現(xiàn)用IME。
再參照步驟408,組件122可接受該事件,或者,組件122可拒絕該事件。若組件122接受事件,組件最好對(duì)處理IME消息命令回送“真”。若組件122拒絕事件,組件最好對(duì)處理IME消息命令回送“假”。在步驟410,窗口管理程序108判定組件122是否回送“真”。若組件122回送“真”,“YES”分支循環(huán)到步驟402,在步驟402窗口管理程序等待另一個(gè)事件。若組件122回送“假”,隨“NO”分支到達(dá)步驟412,在步驟412窗口管理程序108把事件傳送到現(xiàn)用IME。在步驟412之后,例行程序400循環(huán)到步驟402,在步驟402窗口管理程序等待另一個(gè)事件。
從而例行程序400把包含復(fù)合字符和其它系統(tǒng)IME命令的各IME消息傳送給組件122或者現(xiàn)用IME。允許窗口管理程序108把IME傳送給組件122或現(xiàn)用IME中的一個(gè)可使JAVA系統(tǒng)開(kāi)發(fā)員把組件122或現(xiàn)用IME中的一個(gè)配置成接收某特定的IME消息。該特性的目的是為JAVA系統(tǒng)開(kāi)發(fā)員在設(shè)計(jì)組件和IME時(shí)提供基于不同情況的靈活性。
圖5是一個(gè)邏輯流程圖,說(shuō)明用于操作虛機(jī)100內(nèi)的IMM的例行程序500。在步驟502,IMM 110等待事件,事件典型地是從窗口管理程序108接收的WM_CHAR鍵盤(pán)命令的單一代碼翻譯。在步驟504,IMM110接收來(lái)自窗口管理程序108的事件。在步驟506,IMM 110判定事件是否是IMM命令。若事件是IMM命令,從步驟506沿“YES”分支到達(dá)步驟508,在步驟508IMM 110例如通過(guò)去激活先前現(xiàn)用的IME并激活指定IME響應(yīng)IMM命令。IMM最好通過(guò)調(diào)用輸入方法收聽(tīng)器接口的去激活方法去激活先前現(xiàn)用的IME,并通過(guò)調(diào)用輸入方法收聽(tīng)器接口的激活方法激活指定的IME。步驟508之后是步驟510,在步驟510 IMM110向窗口管理程序108回送“真”,以表示該事件已由IMM接收。在步驟510后,例行程序500循環(huán)到步驟502,在步驟502 IMM 110等待另一個(gè)事件。
再次參照步驟506,若事件不是IMM命令,從步驟506沿“NO”分支到達(dá)步驟512,在步驟512中IMM 110判定虛機(jī)100是否包括現(xiàn)用IME。若虛機(jī)100包括現(xiàn)用IME,隨“YES”分支到達(dá)步驟514,在步驟514 IMM 110把事件傳送到現(xiàn)用IME。IMM 110最好通過(guò)調(diào)用輸入方法收聽(tīng)器接口的處理鍵方法把事件傳送到現(xiàn)用IMM。步驟514之后是步驟510,在步驟510 IMM 110向窗口管理程序108回送“真”,以表示事件已由IMM接收。在步驟510后,例行程序500循環(huán)到步驟502,在步驟502 IMM 110等待另一個(gè)事件。
再次參照步驟512,若虛機(jī)100不包括現(xiàn)用IME,IMM 110向窗口管理程序108回送“假”,以表示IMM拒絕該事件。在步驟516后,例行程序循環(huán)到步驟502,在步驟502 IMM 110等待另一個(gè)事件。從而,通過(guò)去激活先前現(xiàn)用的IME并激活指定的IME(并向窗口管理程序108回送“真”)、向現(xiàn)用IME傳送事件(并向窗口管理程序108回送“真”)或者向窗口管理程序108回送“假”以表示IMM拒絕事件,IMM 100處理每個(gè)事件。
圖6是一個(gè)示意框圖,說(shuō)明由IME實(shí)現(xiàn)的和虛機(jī)100兼容的輸入方法收聽(tīng)器接口600。諸如用IME/J 112表示的某IME或KBD必須實(shí)現(xiàn)可和虛機(jī)100兼容的輸入方法收聽(tīng)器接口。輸入方法收聽(tīng)器接口600最好包括第一接口方法“處理鍵”602?!疤幚礞I”接口方法由IMM 110調(diào)用以把鍵盤(pán)命令傳送到IME/J 112。例如,傳送到IME/J 112的鍵盤(pán)命令可以是窗口管理程序108傳送給IMM 110的WM_CHAR鍵盤(pán)命令的單一代碼翻譯。若IME接收鍵盤(pán)命令I(lǐng)ME/J 112回送“真”,若IME不接收該鍵盤(pán)命令則回送“假”。
“處理鍵”接口方法602最好包括五個(gè)操作數(shù)“imeCallback”-標(biāo)識(shí)實(shí)現(xiàn)輸入方法回叫接口的回叫對(duì)象(窗口管理程序108);“when”-調(diào)用“處理鍵”方法的時(shí)間;“鍵代碼”-鍵盤(pán)命令的ASCII鍵代碼;“鍵字符”-鍵盤(pán)命令的單-代碼鍵字符;以及“state”-調(diào)用“處理鍵”方法時(shí)虛機(jī)100的狀態(tài)。
輸入方法收聽(tīng)器接口600最好包括第二接口方法“激活”604?!凹せ睢苯涌诜椒?04由IMM 110調(diào)用以激活指定IME。“激活”接口方法604最好包括一個(gè)指明要激活的IME的操作數(shù)(“ime”)?!凹せ睢苯涌诜椒?04不涉及回送消息。
輸入方法收聽(tīng)器接口600最好包括第三接口方法“去激法”606?!叭ゼせ睢苯涌诜椒?06由IMM 110調(diào)用以去激活當(dāng)前現(xiàn)用IME。“去激活”接口方法606不需要操作數(shù)而且不涉及回送消息。
輸入方法收聽(tīng)器接口600最好包括第四接口方法“設(shè)定位置”608?!霸O(shè)定位置”接口方法608由組件122調(diào)用以設(shè)定監(jiān)視器47的顯示屏幕上的復(fù)合字符的位置?!霸O(shè)定位置”接口方法608包括表示監(jiān)視器47的顯示屏幕上的坐標(biāo)(“x,y”)?!霸O(shè)定位置”接口方法608不涉及回送消息。
輸入方法收聽(tīng)器接口600最好包括第五接口方法“設(shè)定尺寸”610?!霸O(shè)定尺寸”接口方法610由組件122調(diào)用以設(shè)定監(jiān)視器47的顯示屏幕上的復(fù)合字符的尺寸?!霸O(shè)定尺寸”接口方法610包括一個(gè)操作數(shù),其表示一個(gè)確定監(jiān)視器47的顯示屏幕上的復(fù)合字符的尺寸的圖形對(duì)象(“g”)。圖形對(duì)象(“g”)還確定出現(xiàn)在監(jiān)視器47的顯示屏幕上的復(fù)合字符的字形和顏色?!霸O(shè)定尺寸”接口方法610返回空值。
輸入方法收聽(tīng)器接口600最好包括第六接口方法“涂”612?!巴俊苯涌诜椒ㄓ山M件122調(diào)用以使IME在特定圖形對(duì)象上涂畫(huà)復(fù)合字符?!巴俊苯涌诜椒?12包括一個(gè)表示圖形對(duì)象(“g”)的操作數(shù)?!巴俊苯涌诜椒?12不涉及回送消息。
輸入方法收聽(tīng)器接口600最好包括第七接口方法“設(shè)定可視組件”614。“設(shè)定可視組件”接口方法614由組件122調(diào)用以把組件122設(shè)置成控制IME繪圖空間的對(duì)象?!霸O(shè)定可視組件”接口方法614包括一個(gè)操作數(shù),其表示控制IME的繪圖空間的組件(“c”)(在本例中是組件122)?!霸O(shè)定可視組件”接口方法614不涉及回送消息?!霸O(shè)定可視組件”接口方法614允許IME在由組件122控制的繪圖空間內(nèi)畫(huà)復(fù)合字符,其典型地是一個(gè)在監(jiān)視器47上顯示的用戶接口,該用戶接口包括一個(gè)或多個(gè)包含一些繪圖工具的工具欄。若不調(diào)用“設(shè)定可見(jiàn)組件”接口方法614,IME典型地在由IME控制的繪圖空間內(nèi)繪制復(fù)合字符。備擇地,IME可在由其它程序模塊,例如字處理器或編輯程序,控制的繪圖空間中繪制復(fù)合字符。
輸入方法收聽(tīng)器接口600最好包括第八接口方法“處理IME消息”616。“處理IME消息”接口方法616由窗口管理程序108調(diào)用以把特定IME消息傳送到IME。“處理IME消息”接口方法616包括充當(dāng)操作數(shù)的特定IME消息。“處理IME消息”接口方法616不涉及回送消息。典型地由IME生成某IME消息并且傳送給回叫對(duì)象即窗口管理程序108。若窗口管理程序不處理IME消息,窗口管理程序通過(guò)調(diào)用“處理IME消息”接口方法616把該IME消息回送給IME。這給窗口管理程序108處理IME消息的機(jī)會(huì)。若窗口管理程序不處理IME消息,IME典型地實(shí)施缺省條件。換言之,IME“聽(tīng)”窗口管理程序108響應(yīng)IME消息的行為,并當(dāng)窗口管理程序108不處理IME消息時(shí)IME實(shí)施缺省條件。
圖7是一個(gè)示意框圖,說(shuō)明用于虛機(jī)100的IMM 110的輸入管理程序收聽(tīng)器接口700。輸入管理程序收聽(tīng)器接口700典型地包括第一接口方法“得到輸入方法”702。“得到輸入方法”接口方法702由窗口管理程序108調(diào)用,用于詢問(wèn)IMM 110哪個(gè)IME是現(xiàn)用的?!暗玫捷斎敕椒ā?02涉及包括一個(gè)操作數(shù)(“idx”)的回送消息,該操作數(shù)規(guī)定和當(dāng)前現(xiàn)用IME相關(guān)的索引。
輸入管理程序收聽(tīng)器接口700最好包括第二接口方法“得到輸入方法數(shù)量”704?!暗玫捷斎敕椒〝?shù)量”接口方法704由窗口管理程序108調(diào)用,用于詢問(wèn)IMM 110與其注冊(cè)了多少I(mǎi)ME?!暗玫捷斎敕椒〝?shù)量”接口方法704涉及回送消息,其枚舉對(duì)該IMM注冊(cè)的IME。例如,IMM可回送一個(gè)消息,該消息包括一個(gè)規(guī)定對(duì)IMM注冊(cè)的IME的數(shù)量的操作數(shù)。替代地,IMM可回送對(duì)IMM注冊(cè)的IME的列表。
輸入管理程序收聽(tīng)器接口700最好包括第三接口方法“去掉輸入方法”706?!叭サ糨斎敕椒ā苯涌诜椒?06由窗口管理程序108調(diào)用,用于要求IMM 110從其保持的IME注冊(cè)表中去掉某特定IME?!叭サ糨斎敕椒ā苯涌诜椒?06包括一個(gè)操作數(shù)(“ime”),其指示要從注冊(cè)表中去掉的特定IME?!叭サ糨斎敕椒ā苯涌诜椒?06不涉及回送消息。
輸入管理程序收聽(tīng)器接口700最好包括第四接口方法“設(shè)定輸入方法”708?!霸O(shè)定輸入方法”接口方法708由窗口管理程序108調(diào)用,以要求IMM 110激活其保持的IME注冊(cè)表上的某特定IME。“設(shè)定輸入方法”接口方法708包括一個(gè)指示要激活的某特定IME的操作數(shù)(“ime”)?!霸O(shè)定輸入方法”接口方法708不涉及回送消息。
輸入管理程序收聽(tīng)器接口700最好包括第五接口方法“被處理鍵710?!氨惶幚礞I”接口方法710由窗口管理程序108調(diào)用以要求IMM 110處理鍵盤(pán)命令,典型地是WM CHAR鍵盤(pán)命令的單一代碼翻譯?!氨惶幚礞I”接口方法710包括一個(gè)指示要激活的特定IME的操作數(shù)。“被處理鍵”接口方法不涉及回送消息。
“被處理鍵”接口方法最好包括五個(gè)操作數(shù),“ime Callback”-標(biāo)識(shí)實(shí)現(xiàn)輸入方法回叫接口的回叫對(duì)象(窗口管理程序108);“when”-調(diào)用“被處理鍵”方法的時(shí)間;“key Code”-鍵盤(pán)命令的ASCII鍵代碼;“Key Char”-鍵盤(pán)命令的單-代碼鍵字符;以及“state”-調(diào)用“被處理鍵”方法時(shí)虛機(jī)的狀態(tài)。
圖8是一個(gè)示意框圖,表示用于虛機(jī)100的窗口管理程序108的輸入方法回叫接口800。輸入方法回叫接口800最好包括第一接口方法“處理IME字符”802?!疤幚鞩ME字符”接口方法802由某IME調(diào)用以向窗口管理程序108傳送某特定復(fù)合字符。窗口管理程序108把可能是根據(jù)某包括若干鍵盤(pán)命令的復(fù)合串的復(fù)合字符添加到內(nèi)部輸入隊(duì)列中,仿佛它是從鍵盤(pán)40接收的單個(gè)字符?!疤幚鞩ME字符”接口方法802包括三個(gè)操作數(shù)“when”-調(diào)用“處理IME字符”接口方法802的時(shí)間;“Key Char”-復(fù)合字符的單一代碼鍵字符;以及“state”-調(diào)用“處理IME字符”接口方法802時(shí)虛機(jī)100的狀態(tài)?!疤幚鞩ME字符”接口方法802不涉及回送消息。
輸入方法回叫接口800最好包括第二接口方法“處理IME消息”804。“處理IME消息”接口方法804由IME調(diào)用以向窗口管理程序108傳送特定的IME消息。“處理IME消息”接口方法804包含作為操作數(shù)的特定IME消息?!疤幚鞩ME消息”接口方法804不涉及回送消息。IME消息典型地由IME生成并傳送到回叫對(duì)象(窗口管理程序108)。若窗口管理程序不處理該IME消息,窗口管理程序通過(guò)調(diào)用輸入方法收聽(tīng)器接口的“處理IME消息”接口616把該IME消息傳回到IME。這為窗口管理程序108提供處理IME消息的機(jī)會(huì)。
圖9是一個(gè)示意框圖,表示用于虛機(jī)100的組件122的輸入方法消息收聽(tīng)器接口900。輸入方法消息收聽(tīng)器接口900最好包括接口方法“處理IME消息”902,其由窗口管理程序108調(diào)用。窗口管理程序108調(diào)用該方法以詢問(wèn)組件122是否要畫(huà)并控制一個(gè)用戶可用來(lái)操縱由IME回送的復(fù)合字符的用戶接口?!疤幚鞩ME消息”接口方法902可包括一個(gè)作為操作數(shù)的IME消息?!疤幚鞩ME消息”接口方法902涉及表示組件122是否會(huì)畫(huà)并控制一個(gè)用戶接口的回送消息。若組件會(huì)畫(huà)并控制用戶接口組件122回送“真”,但若組件不畫(huà)及不控制用戶接口組件122回送“假”。(***問(wèn)題為什么組件不包括用以允許從窗口管理程序向組件傳送復(fù)合字符的“處理鍵)或“處理WM字符”接口?窗口管理程序怎樣向部件傳送復(fù)合字符?)圖10A是一個(gè)示意框圖,表示用于處理鍵盤(pán)命令的現(xiàn)有技術(shù)的方法。用戶在鍵盤(pán)40上按下某鍵。該鍵盤(pán)命令由鍵盤(pán)驅(qū)動(dòng)程序102譯成各種鍵盤(pán)命令,鍵盤(pán)驅(qū)動(dòng)程序102典型地是操作系統(tǒng)35的一個(gè)模塊。鍵盤(pán)驅(qū)動(dòng)程序102把每個(gè)鍵擊翻譯成三種可獨(dú)立處理和解釋的三種鍵盤(pán)命令WM_KEYDOWN-表示按下某鍵,WM_CHAR-典型地是和按下的鍵關(guān)聯(lián)的ASCII碼或值,以及WM_KEYUP-表示某鍵被釋放。這些鍵盤(pán)命令被傳送到某應(yīng)用程序36,例如字處理程序,編輯程序等。應(yīng)用程序36根據(jù)其定義的功能性解釋鍵盤(pán)命令。接著該應(yīng)用程序向驅(qū)動(dòng)監(jiān)視器47的屏幕驅(qū)動(dòng)程序104發(fā)送屏幕更新。
圖10B是一個(gè)示意框圖,表示實(shí)現(xiàn)系統(tǒng)IME 116的現(xiàn)有技術(shù)。用戶在鍵盤(pán)40上按下某鍵。由鍵盤(pán)驅(qū)動(dòng)程序102把該鍵盤(pán)命令翻譯成各種鍵盤(pán)命令。鍵盤(pán)驅(qū)動(dòng)程序102把每次鍵擊譯成WM_KEYDOWN、WM_CHAR及WM_KEYUP鍵盤(pán)命令。這些鍵盤(pán)命令被發(fā)送到系統(tǒng)IME116,后者把鍵盤(pán)命令譯成復(fù)合字符。
系統(tǒng)IME/S 116典型地配置成累積幾個(gè)鍵盤(pán)命令以建立某復(fù)合字符的組合串。利用多鍵盤(pán)命令組合串可使系統(tǒng)IME/S 116索引成千上萬(wàn)的獨(dú)立復(fù)合字符,這對(duì)于生成包括日文、朝鮮文和中文的非拉丁語(yǔ)的書(shū)面表意文字是很有用的。接著系統(tǒng)IME/S 116把復(fù)合字符傳送到應(yīng)用程序36。應(yīng)用程序36根據(jù)其定義的功能性解釋各鍵盤(pán)命令。接著應(yīng)用程序向驅(qū)動(dòng)監(jiān)視器47的屏幕驅(qū)動(dòng)程序104傳送屏幕更新。
圖11是示意框圖,表示依據(jù)本發(fā)明的一種實(shí)施例的支持系統(tǒng)IME/S116的虛機(jī)100。用戶按下鍵盤(pán)40上的某鍵。鍵盤(pán)驅(qū)動(dòng)程序102把該鍵盤(pán)命令譯成各鍵盤(pán)命令。鍵盤(pán)驅(qū)動(dòng)程序102把每次鍵擊譯成WM_KEYDOWN、WM_CHAR及WM_KEYUP鍵盤(pán)命令。這些鍵盤(pán)命令被發(fā)送到系統(tǒng)IME 116,后者根據(jù)各鍵盤(pán)命令生成復(fù)合字符。
系統(tǒng)IME/S 116把復(fù)合字符傳送到窗口管理程序108,其包括一個(gè)單一代碼翻譯程序以把復(fù)合字符譯成單一代碼格式。窗口管理程序108把單一代碼格式下的復(fù)合字符傳送到組件122,組件122典型地提供一個(gè)允許用戶操縱復(fù)合字符的用戶接口。接著組件122向驅(qū)動(dòng)監(jiān)視器47的屏幕驅(qū)動(dòng)程序104傳送屏幕更新。
圖12是一個(gè)示意框圖,表示依據(jù)本發(fā)明的一種實(shí)施方式實(shí)現(xiàn)基于JAVA的IME/J 112的虛機(jī)100。用戶按下鍵盤(pán)40上的某鍵。鍵盤(pán)驅(qū)動(dòng)程序102把該鍵盤(pán)命令譯成各鍵盤(pán)命令。鍵盤(pán)驅(qū)動(dòng)程序102把每次鍵擊譯成WM_KEYDOWN、WM_CHAR及WM_KEYUP鍵盤(pán)命令。這些鍵盤(pán)命令被發(fā)送到虛機(jī)100的窗口管理程序108。
窗口管理程序108包括一個(gè)把鍵盤(pán)命令翻譯成單一代碼格式的單一代碼翻譯器。窗口管理程序108把單一代碼的鍵盤(pán)命令傳送給IMM 110。IMM 110把單一代碼鍵盤(pán)命令傳送到基于JAVA的IME/J 112,后者把單一代碼鍵盤(pán)命令譯成復(fù)合字符?;贘AVA的IME/J 112把復(fù)合字符傳回窗口管理程序108,窗口管理程序108把復(fù)合字符傳送到組件122。組件122典型地提供允許用戶操縱復(fù)合字符的一個(gè)用戶接口。然后組件122向驅(qū)動(dòng)監(jiān)視器47的屏幕驅(qū)動(dòng)程序104傳送屏幕更新。
圖13是一個(gè)示意框圖,表示依據(jù)本發(fā)明的一種實(shí)施例的宿留系統(tǒng)IME/S 116的虛機(jī)100。用戶按下鍵盤(pán)40上的某鍵。由鍵盤(pán)驅(qū)動(dòng)程序102把該鍵盤(pán)命令翻譯成各種鍵盤(pán)命令,鍵盤(pán)驅(qū)動(dòng)程序102典型地是操作系統(tǒng)35的一個(gè)模塊。鍵盤(pán)驅(qū)動(dòng)程序102把每次鍵擊譯成WM_KEYDOWN、WM_CHAR及WM_KEYUP鍵盤(pán)命令。這些鍵盤(pán)命令被發(fā)送到系統(tǒng)IME/S 116,后者可把多個(gè)鍵盤(pán)命令建立成包括多個(gè)WM_CHAR和WM_IME_CHAR鍵盤(pán)命令的組合串。
系統(tǒng)IME/S 116把組合串傳送到虛機(jī)100的窗口管理程序108。窗口程序108包括一個(gè)把組合串譯成單一代碼形式的單一代碼翻譯程序。窗口管理程序108把單一代碼組合串傳送到系統(tǒng)IME/S橋路124。系統(tǒng)IME/S橋路124把任何WM_CHAR鍵盤(pán)命令改變成WM_IME_CHAR鍵盤(pán)命令以表示系統(tǒng)IME/S 116已經(jīng)處理過(guò)該組合串。系統(tǒng)IME/S橋路124還可和系統(tǒng)IME/S 116交換查詢以及其它系統(tǒng)IME消息。接著系統(tǒng)IME/S橋路124把組合串送回到窗口管理程序108,窗口管理程序108把復(fù)合字符傳送到組件122。組件122典型地提供一個(gè)允許用戶操縱組合字符的用戶接口。然后組件122把屏幕更新傳送到驅(qū)動(dòng)監(jiān)視器47的屏幕驅(qū)動(dòng)程序104。
鑒于上述,可理解本發(fā)明提供一種JAVA虛機(jī),其可用于在按照需要的基礎(chǔ)上改變或擴(kuò)大用于IME的源代碼。本發(fā)明還定義一種用于建立JAVA兼容IME的控制接口。依據(jù)本發(fā)明的基于JAVA的虛機(jī)支持三種范圍內(nèi)的輸入方法編輯程序(IME)功能(1)和JAVA虛機(jī)一起使用基于JAVA的IME;(2)編寫(xiě)基于JAVA的IME;以及(3)把JAVA虛機(jī)和系統(tǒng)IME相集成。虛機(jī)包括一個(gè)窗口管理程序、一個(gè)輸入方法管理程序、一個(gè)或多個(gè)IME和/或KBD以及一個(gè)組件。組件典型地提供一個(gè)允許用戶操縱由IME回送的復(fù)合字符的用戶接口。虛機(jī)還可包括一個(gè)用于集成虛機(jī)和系統(tǒng)IME的IME橋路。窗口管理程序充當(dāng)操作系統(tǒng)和虛機(jī)之間的網(wǎng)關(guān)。輸入方法管理程序(IMM)充當(dāng)窗口管理程序和多個(gè)IME及KBD之間的路由器。IME包括一個(gè)通過(guò)單一代碼鍵盤(pán)命令檢索的復(fù)合字符查找表。
應(yīng)理解上述只是和本發(fā)明的一些具體實(shí)施例相關(guān)的,并且在不違背由下述權(quán)利要求書(shū)規(guī)定的本發(fā)明的精神和范圍下可對(duì)它們做出大量修改。
權(quán)利要求
1.在用于由處理單元、和處理單元連接的鍵盤(pán)及和處理單元連接的顯示設(shè)備的計(jì)算機(jī)系統(tǒng)中,其中在處理單元上運(yùn)行著操作系統(tǒng),一種在處理單元上運(yùn)行的平臺(tái)可移植的虛機(jī),包括一個(gè)窗口管理程序,運(yùn)行或用于從操作系統(tǒng)接收鍵盤(pán)命令;一個(gè)輸入方法管理程序,用于從窗口管理程序接收鍵盤(pán)命令;一個(gè)輸入方法編輯程序,運(yùn)行成用于從輸入方法管理程序接收鍵盤(pán)命令并把鍵盤(pán)命令譯成復(fù)合字符;以及一個(gè)組件,運(yùn)行成用于從輸入方法編輯程序接收復(fù)合字符和提供用于在顯示設(shè)備上顯示的復(fù)合字符。
2.權(quán)利要求1的虛機(jī),其中窗口管理程序運(yùn)行成用于從鍵盤(pán)接收鍵盤(pán)命令;判定輸入方法管理程序是否現(xiàn)用;若輸入方法管理程序不是現(xiàn)用的,把鍵盤(pán)命令傳送到組件;以及若輸入方法管理程序是現(xiàn)用的,把鍵盤(pán)命令傳送到輸入方法管理程序、從輸入方法管理程序接收回送消息,并且若回送消息是假,回送消息把鍵盤(pán)命令傳送到組件。
3.權(quán)利要求1的虛機(jī),其中輸入方法管理程序運(yùn)行成用于從窗口管理程序接收鍵盤(pán)命令;判定鍵盤(pán)命令是否指向輸入方法管理程序;若鍵盤(pán)命令指向輸入方法管理程序,響應(yīng)鍵盤(pán)命令;以及若鍵盤(pán)命令不指向輸入方法管理程序,把鍵盤(pán)命令傳送到輸入方法編輯程序。
4.權(quán)利要求1的虛機(jī),其中輸入方法編輯程序運(yùn)行成用于從輸入方法管理程序接收鍵盤(pán)命令;組合該鍵盤(pán)命令和先前接收的鍵盤(pán)命令以建立組合串;判定組合串是否和復(fù)合字符對(duì)應(yīng);以及若組合串和復(fù)合字符對(duì)應(yīng)。把組合串譯成復(fù)合字符,以及把復(fù)合字符傳送到窗口管理程序。
5.權(quán)利要求1的虛機(jī),其中窗口管理程序還運(yùn)行成用于從輸入方法編輯程序接收復(fù)合字符;以及把復(fù)合字符傳送到組件。
6.權(quán)利要求1的虛機(jī),其中組件運(yùn)行成用于從窗口管理程序接收復(fù)合字符;在顯示設(shè)備上提供用戶接口;以及和該用戶接口結(jié)合在顯示設(shè)備上提供復(fù)合字符。
7.權(quán)利要求1的虛機(jī),其中組件還運(yùn)行成用于在和該用戶接口結(jié)合在顯示設(shè)備上提供復(fù)合字符后,通過(guò)該用戶接口接收用戶命令、響應(yīng)用戶命令改變復(fù)合字符并且和該用戶接口結(jié)合在顯示設(shè)備上提供改變后的復(fù)合字符。
8.權(quán)利要求1的虛機(jī),其中響應(yīng)指向輸入方法管理程序的鍵盤(pán)命令的步驟包括步驟去激活該輸入方法編輯程序;以及激活其替代的輸入方法編輯程序。
9.權(quán)利要求1的虛機(jī),其中計(jì)算機(jī)系統(tǒng)還包括在處理單元上運(yùn)行的系統(tǒng)輸入方法編輯程序,虛機(jī)還包括一個(gè)輸入方法編輯程序橋路,其運(yùn)行成用于使系統(tǒng)輸入方法編輯程序和窗口管理程序及輸入方法管理程序相集成。
10.權(quán)利要求1的虛機(jī),其中輸入方法編輯程序定義一個(gè)接口,該接口包括第一接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序處理鍵盤(pán)命令的消息;第二接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序進(jìn)行激活的消息;第三接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序進(jìn)行去激活的消息;以及第四接口方法,用于從窗口管理程序接收消息以指示輸入方法編輯程序處理該消息。
11.權(quán)利要求10的虛機(jī),其中由輸入方法編輯程序定義的該接口還包括第五接口方法,用于從組件接收指示輸入方法編輯程序操縱由輸入方法編輯程序提供的并顯示在顯示設(shè)備上的一個(gè)用戶接口的消息。
12.權(quán)利要求10的虛機(jī),其中由輸入方法編輯程序定義的接口還包括第五接口方法,用于從組件接收指示輸入方法編輯程序提供一個(gè)用于在顯示設(shè)備上顯示的用戶接口的消息;第六接口方法,用于從組件接收定義輸入方法所提供的用于在顯示設(shè)備上顯示的該用戶接口的尺寸的消息;以及第七接口方法,用于從組件接收定義輸入方法所提供的用于在顯示設(shè)備上顯示的該用戶接口的位置的消息。
13.權(quán)利要求1的虛機(jī),其中輸入方法管理程序定義一個(gè)接口,該接口包括第一接口方法,用于從窗口管理程序接收指示輸入方法管理程序激活第一輸入方法編輯程序的消息;第二接口方法,用于從窗口管理程序接收指示輸入方法管理程序從輸入方法編輯程序注冊(cè)表中去掉第二輸入方法編輯程序的消息;第三接口方法,用于從窗口管理程序接收指示輸入方法管理程序確定現(xiàn)用輸入方法編輯程序的消息;第四接口方法,用于從窗口管理程序接收指示輸入方法管理程序枚舉輸入方法編輯程序注冊(cè)表的消息;以及第五接口方法,用于從窗口管理程序接收要求輸入方法管理程序處理鍵盤(pán)命令的消息。
14.權(quán)利要求1的虛機(jī),其中窗口管理程序定義一個(gè)接口,該接口包括一個(gè)用于從輸入方法編輯程序接收消息的接口方法。
15.權(quán)利要求1的虛機(jī),其中組件定義一個(gè)接口,該接口包括一個(gè)用于從窗口管理程序接收消息的接口方法。
16.一種存儲(chǔ)用于定義可在計(jì)算機(jī)系統(tǒng)上運(yùn)行的平臺(tái)可移植的虛機(jī)的指令的計(jì)算機(jī)存儲(chǔ)介質(zhì),其中該計(jì)算機(jī)系統(tǒng)包括一個(gè)處理單元、一個(gè)和該處理單元連接的鍵盤(pán)以及一個(gè)和該處理單元連接的顯示設(shè)備,并且一個(gè)操作系統(tǒng)在該處理單元上運(yùn)行,該介質(zhì)包括一個(gè)窗口管理程序,其運(yùn)行成用于,從鍵盤(pán)接收某鍵盤(pán)命令,判定是否某輸入方法管理程序是現(xiàn)用的,若該輸入方法管理程序不是現(xiàn)用的,把該鍵盤(pán)命令傳送到一個(gè)組件,以及若該輸入方法管理程序是現(xiàn)用的,把該鍵盤(pán)命令傳送到輸入方法管理程序、從輸入方法管理程序接收回送消息、以及當(dāng)若回送消息是假回送消息把該鍵盤(pán)命令傳送到組件;該輸入方法管理程序運(yùn)行成用于,從窗口管理程序接收該鍵盤(pán)命令,以及判定該鍵盤(pán)命令是否指向該輸入方法管理程序,若該鍵盤(pán)命令指向該輸入方法管理程序,響應(yīng)該鍵盤(pán)命令,以及若該鍵盤(pán)命令不指向該輸入方法管理程序,把該鍵盤(pán)命令傳送到某輸入方法編輯程序;該輸入方法編輯程序運(yùn)行成用于從該輸入方法管理程序接收該鍵盤(pán)命令,組合該鍵盤(pán)命令和先前接收的鍵盤(pán)命令,以建立一個(gè)組合串,判定該組合串是否對(duì)應(yīng)某復(fù)合字符,以及若該組合串對(duì)應(yīng)于復(fù)合字符,把該組合串譯成復(fù)合字符,以及把復(fù)合字符傳送到窗口管理程序;窗口管理程序還運(yùn)行成用于,從該輸入方法編輯程序接收該復(fù)合字符,以及把該復(fù)合字符傳送到該組件;該組件運(yùn)行成用于,從窗口管理程序接收該復(fù)合字符,在顯示設(shè)備上提供一個(gè)用戶接口,以及和該用戶接口結(jié)合在顯示設(shè)備上提供復(fù)合字符。
17.權(quán)利要求16的計(jì)算機(jī)可讀介質(zhì),其中響應(yīng)指向輸入方法管理程序的鍵盤(pán)命令的步驟包括下述步驟去激活該輸入方法編輯程序;以及激活替代的輸入方法編輯程序。
18.權(quán)利要求16的計(jì)算機(jī)可讀介質(zhì),還包括一個(gè)在處理單元上運(yùn)行的系統(tǒng)輸入方法編輯程序;以及一個(gè)輸入方法編輯程序橋路,其運(yùn)行成用于把系統(tǒng)輸入方法編輯程序和窗口管理程序及輸入方法管理程序相集成。
19.權(quán)利要求16的計(jì)算機(jī)可讀介質(zhì),其中輸入方法編輯程序定義一個(gè)接口,該接口包括第一接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序處理鍵盤(pán)命令的消息;第二接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序進(jìn)行激活的消息;第三接口方法,用于從輸入方法管理程序接收指示輸入方法編輯程序進(jìn)行去激活的消息;第四接口方法,用于從窗口管理程序接收消息以指示輸入方法編輯程序處理該消息;第五接口方法,用于從組件接收指示輸入方法編輯程序提供一個(gè)用于在顯示設(shè)備上顯示的用戶接口的消息;第六接口方法,用于從組件接收定義輸入方法所提供的用于在顯示設(shè)備上顯示的該用戶接口的尺寸的消息;以及第七接口方法,用于從組件接收定義輸入方法所提供的用于在顯示設(shè)備上顯示的該用戶接口的位置的消息。
20.權(quán)利要求16的計(jì)算機(jī)可讀介質(zhì),其中輸入方法管理程序定義一個(gè)接口,該接口包括第一接口方法,用于從窗口管理程序接收指示輸入方法管理程序激活的第一輸入方法編輯程序的消息;第二接口方法,用于從窗口管理程序接收指示輸入方法管理程序去激活第二輸入方法編輯程序的消息;第三接口方法,用于從窗口管理程序接收指示輸入方法管理程序確定現(xiàn)用輸入方法編輯程序的消息;第四接口方法,用于從窗口管理程序接收指示輸入方法管理程序處理鍵盤(pán)命令的消息。
21.權(quán)利要求20的計(jì)算機(jī)可讀介質(zhì),其中由輸入方法管理程序定義的接口還包括第五接口方法,用于從窗口管理程序接收指示輸入方法管理程序枚舉注冊(cè)到該輸入方法管理程序的輸入方法編輯程序表。
22.權(quán)利要求21的計(jì)算機(jī)可讀介質(zhì),其中窗口管理程序包括一個(gè)接口,該接口包括一個(gè)用于從輸入方法編輯程序接收消息的接口方法。
23.權(quán)利要求22的計(jì)算機(jī)可讀介質(zhì),其中組件定義一個(gè)接口,該接口包括一個(gè)用于從窗口管理程序接收消息的接口方法。
全文摘要
一種基于JAVA的虛機(jī),其在三種范圍內(nèi)支持輸入方法編輯程序(IME)的功能:(1)和JAVA虛機(jī)一起使用基于JAVA的IME;(2)編寫(xiě)基于JAVA的IME;以及(3)集成JAVA虛機(jī)和系統(tǒng)IME。虛機(jī)包括一個(gè)窗口管理程序、一個(gè)輸入方法管理程序、一個(gè)或多個(gè)IME和/或鍵盤(pán)驅(qū)動(dòng)程序(KBD)以及一個(gè)組件。虛機(jī)還可包括一個(gè)IME橋路,用于集成虛機(jī)和系統(tǒng)IME。窗口管理程序充當(dāng)操作系統(tǒng)和虛機(jī)之間的網(wǎng)關(guān)。輸入方法管理程序(IMM)充當(dāng)窗口管理程序和多個(gè)IME及鍵盤(pán)驅(qū)動(dòng)程序(KBD)之間的路由器。IME包括一個(gè)用單一代碼鍵盤(pán)命令檢索的復(fù)合字符查找表。組件典型地提供一個(gè)用戶接口,以允許用戶操縱IME回送的復(fù)合字符。IME和組件的功能性可隨平臺(tái)不同及用戶不同而不同。
文檔編號(hào)G06F9/44GK1255984SQ98805042
公開(kāi)日2000年6月7日 申請(qǐng)日期1998年4月1日 優(yōu)先權(quán)日1997年4月2日
發(fā)明者戴維·M·希弗, 林陽(yáng)森 申請(qǐng)人:微軟公司