專利名稱:多輸入焦點的軟鍵盤輸入裝置和方法
技術領域:
本發(fā)明涉及信息安全領域,特別涉及一種多輸入焦點的軟鍵盤輸入裝置和方法。
背景技術:
鍵盤監(jiān)視和窗口文本截取是常見的兩種竊取密碼的攻擊手段。
為了解決鍵盤監(jiān)視的問題,可以使用軟鍵盤進行輸入。軟鍵盤是以軟件方式模擬鍵盤行 為,通過鼠標點擊輸入字符的程序。軟鍵盤可以用于防止木馬記錄通過物理鍵盤輸入的密碼。 然而,用戶通過軟鍵盤輸入字符時,鼠標必然點擊在軟鍵盤上,會導致輸入控件失去焦點, 無法接受輸入的字符,因此,使用軟鍵盤必須預先確定焦點位置,這給使用帶來了不便。 WindowsXP中系統(tǒng)自帶的一個軟鍵盤不會導致控件失去焦點,但它使用的是鍵盤碼,和物理 鍵盤完全一致,不具備防木馬功能。
為了增加窗口文本截取的難度,使用以不具有輸入焦點的非輸入控件為基類的自繪控件 進行輸出顯示,與軟鍵盤一起完成人機交互。由于所述輸出控件自身沒有焦點,當存在多個 輸出時(如修改PIN碼的界面),需要一種方法來確定當前輸入對應的輸出控件。常規(guī)的做法 是根據鼠標點擊的落點所在的位置來判斷,但與軟鍵盤配合使用時,每當需要判斷當前輸出 位置時,鼠標的落點總是在軟鍵盤上,因此無法使用常規(guī)做法。
發(fā)明內容
為了提高軟鍵盤輸入的安全性,本發(fā)明實施例提供了一種多輸入焦點的軟鍵盤輸入裝置
和方法。所述技術方案如下
一種多輸入焦點的軟鍵盤輸入裝置,所述裝置包括主控模塊和軟鍵盤模塊; 所述主控模塊包括
標準輸入/輸出單元,用于接收鼠標點擊消息和用戶通過標準鍵盤輸入的字符; 模擬輸入/輸出單元,用于接收鼠標點擊消息和用戶通過軟鍵盤輸入的字符; 輸入焦點標志設置單元,用于當所述標準輸入/輸出單元被鼠標點擊時,將當前輸入焦點 標志設置為所述標準輸入/輸出單元的焦點標志,當所述模擬輸入/輸出單元被鼠標點擊時,將當前輸入焦點標志設置為所述模擬輸入/輸出單元的焦點標志;
軟鍵盤消息處理單元,用于收到所述軟鍵盤模塊發(fā)來的軟鍵盤消息后,根據當前輸入焦 點標志,通知對應的模擬輸入/輸出單元接收所述軟鍵盤模塊緩存的鍵盤字符;
存儲單元,用于存儲用戶通過標準鍵盤或軟鍵盤輸入的字符;
顯示單元,用于在標準鍵盤輸入模式下,顯示標準輸入/輸出單元,在軟鍵盤輸入模式下,
顯示軟鍵盤和模擬輸入/輸出單元;
所述軟鍵盤模塊包括 ' 映射單元,用于存儲坐標與字符之間的映射關系,模擬輸入/輸出單元與焦點標志的對應
關系,以及標準輸入/輸出單元與焦點標志的對應關系,并在有鼠標點擊消息時,根據鼠標點
擊的位置輸出相應的字符;
緩存單元,用于當所述映射單元輸出的為鍵盤字符時,緩存所述鍵盤字符; 軟鍵盤消息發(fā)送單元,用于當所述緩存單元緩存有鍵盤字符時,向所述主控模塊發(fā)送軟
鍵盤消息;
狀態(tài)處理單元,用于當所述映射單元輸出的為狀態(tài)字符時,對所述軟鍵盤進行相應的狀 態(tài)處理。
所述主控模塊還包括
切換單元,用于當所述模擬輸入/輸出單元接收的鼠標點擊消息為輸入模式切換消息時, 將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式;當所述標準輸入/輸出單元接收的鼠標點擊 消息為輸入模式切換消息時,將當前標準鍵盤輸入模式更改為軟鍵盤輸入模式。
所述主控模塊還包括
判斷單元,用于判斷當前輸入模式是否為軟鍵盤輸入模式;
第一通知單元,用于當所述判斷單元判斷出當前輸入模式為軟鍵盤輸入模式時,通知所 述顯示單元顯示所述軟鍵盤和模擬輸入/輸出單元;
第二通知單元,用于當所述判斷單元判斷出當前輸入模式為標準鍵盤輸入模式時,通知
所述顯示單元顯示所述標準輸入/輸出單元。
所述主控模塊還包括
第一標準鍵盤字符接收單元,用于在所述顯示單元根據所述第二通知單元發(fā)來的通知顯 示所述標準輸入/輸出單元后,接收用戶通過物理鍵盤輸入的字符,根據當前輸入焦點標志, 通知對應的標準輸入/輸出單元接收所述字符。
所述第二通知單元具體用于當所述判斷單元判斷出當前輸入模式為標準鍵盤輸入模式時,通知所述顯示單元顯示所述標準輸入/輸出單元,并顯示所述軟鍵盤; 所述軟鍵盤模塊還包括
軟鍵盤字符發(fā)送單元,用于在標準鍵盤輸入模式下,將所述映射單元輸出的鍵盤字符發(fā) 送給所述主控模塊;
所述主控模塊還包括
軟鍵盤字符接收單元,用于接收到所述軟鍵盤模塊發(fā)來的所述鍵盤字符后,根據當前輸 入焦點標志,將所述鍵盤字符發(fā)送給對應的標準輸入/輸出單元。 所述主控模塊還包括
第二標準鍵盤字符接收單元,用于在軟鍵盤輸入模式下,接收用戶通過物理鍵盤輸入的 字符,根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元接收所述字符。 所述主控模塊還包括
檢査單元,用于定期檢査當前的輸入焦點,并根據所述當前的輸入焦點所在的輸入/輸出 單元,將當前輸入焦點標志設置為所述輸入/輸出單元的焦點標志。 所述軟鍵盤模塊還包括
置亂單元,用于隨機修改所述映射單元存儲的坐標和字符的映射關系。 所述標準輸入/輸出單元為具有字符輸入功能的MFC控件。 所述模擬輸入/輸出單元還包括 光標計算子單元,用于計算光標的位置。
所述模擬輸入/輸出單元還包括
繪圖子單元,用于繪制所述模擬輸入/輸出單元的外觀。 一種多輸入焦點的軟鍵盤輸入方法,所述方法包括
在軟鍵盤輸入模式下,在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸出單元,并為每 個模擬輸入/輸出單元設置對應的焦點標志;
主控模塊接收到用戶點擊所述模擬輸入/輸出單元的鼠標點擊消息,將當前輸入焦點標志 設置為所述模擬輸入/輸出單元的焦點標志;
軟鍵盤模塊接收到用戶點擊所述軟鍵盤的鼠標點擊消息,根據鼠標點擊的位置確定對應 的字符,并判斷所述字符是鍵盤字符還是狀態(tài)字符;
如果所述字符為鍵盤字符,則所述軟鍵盤模塊緩存所述鍵盤字符,并向所述主控模塊發(fā) 送軟鍵盤消息,所述主控模塊收到所述軟鍵盤消息后,根據當前輸入焦點標志,通知對應的 模擬輸入/輸出單元從所述緩存接收所述鍵盤字符;如果所述字符為狀態(tài)字符,則所述軟鍵盤模塊對所述軟鍵盤進行相應的狀態(tài)處理。 所述方法還包括
當所述主控模塊接收到鼠標點擊消息,且所述鼠標點擊消息為輸入模式切換消息時,所 述主控模塊將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式。
所述在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸出單元之前,還包括-
主控模塊判斷當前輸入模式是否為軟鍵盤輸入模式;
如果是,則執(zhí)行在軟鍵盤輸入模式下,在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸 出單元的步驟;
否則,所述主控模塊顯示多個標準輸入/輸出單元并接收鼠標點擊消息,并判斷鼠標點擊 的是否為所述標準輸入/輸出單元,如果是,則所述主控模塊將當前輸入焦點標志設置為所述 標準輸入/輸出單元的焦點標志。
所述主控模塊將當前輸入焦點標志設置為所述標準輸入/輸出單元的焦點標志之后,還包
括
所述主控模塊接收用戶通過物理鍵盤輸入的字符,根據所述當前輸入焦點標志,通知對 應的標準輸入/輸出單元接收所述字符。
所述主控模塊將當前輸入焦點標志設置為所述標準輸入/輸出單元的焦點標志之后,還包
括
所述主控模塊顯示軟鍵盤,并且用戶通過鼠標點擊所述軟鍵盤;
所述軟鍵盤模塊根據鼠標點擊的位置確定對應的字符,并判斷所述字符是鍵盤字符還是 狀態(tài)字符;
如果所述字符為鍵盤字符,則所述軟鍵盤模塊將所述鍵盤字符發(fā)送給所述主控模塊,所 述主控模塊收到后,根據當前輸入焦點標志,將所述鍵盤字符發(fā)送給對應的標準輸入/輸出單
元;
如果所述字符為狀態(tài)字符,則所述軟鍵盤模塊對所述軟鍵盤進行相應的狀態(tài)處理。
所述判斷鼠標點擊的是否為標準輸入/輸出單元之后,還包括
如果所述鼠標點擊消息為輸入模式切換消息,則所述主控模塊將當前標準鍵盤輸入模式 更改為軟鍵盤輸入模式。
所述將當前輸入焦點標志設置為所述模擬輸入/輸出單元的焦點標志之后,還包括 所述主控模塊接收所述用戶通過物理鍵盤輸入的字符,根據所述當前輸入焦點標志,通 知對應的模擬輸入/輸出單元接收所述字符。所述方法還包括-
所述主控模塊定期檢査當前的輸入焦點,并根據所述當前的輸入焦點所在的輸入/輸出單 元,將當前輸入焦點標志設置為所述輸入/輸出單元的焦點標志。 所述方法還包括
所述軟鍵盤模塊隨機修改已有的鼠標點擊位置與字符的映射關系。
本發(fā)明實施例提供的技術方案的有益效果是解決了現有技術的不足,多個輸出控件共 用一個軟鍵盤,結構更簡單,運行更穩(wěn)定,從而更好地滿足實際需要,提供更完善而安全的 人機交互體驗。
圖1是本發(fā)明實施例1提供的多輸入焦點的軟鍵盤輸入方法流程圖; 圖2是本發(fā)明實施例2提供的多輸入焦點的軟鍵盤輸入裝置結構圖。
具體實施例方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進 一步地詳細描述。
本發(fā)明實施例提供了一種多輸入焦點的軟鍵盤輸入方法,包括
在軟鍵盤輸入模式下,在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸出單元,并為每 個模擬輸入/輸出單元設置對應的焦點標志;
主控模塊接收到用戶點擊模擬輸入/輸出單元的鼠標點擊消息,將當前輸入焦點標志設置 為模擬輸入/輸出單元的焦點標志;
軟鍵盤模塊接收到用戶點擊軟鍵盤的鼠標點擊消息,根據鼠標點擊的位置確定對應的字 符,并判斷字符是鍵盤字符還是狀態(tài)字符;
如果字符為鍵盤字符,則軟鍵盤模塊緩存鍵盤字符,并向主控模塊發(fā)送軟鍵盤消息,主 控模塊收到軟鍵盤消息后,根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元從緩存接 收鍵盤字符;
如果字符為狀態(tài)字符,則軟鍵盤模塊對軟鍵盤進行相應的狀態(tài)處理。 實施例1
參見圖1,本發(fā)明實施例提供了一種多輸入焦點的軟鍵盤輸入方法,
步驟101:主控模塊判斷當前輸入模式是否為軟鍵盤輸入模式,如果是,則執(zhí)行步驟102,否則,執(zhí)行步驟110;
步驟102:在指定的區(qū)域內,主控模塊顯示軟鍵盤和多個模擬輸入/輸出單元,并且軟鍵 盤模塊為每個模擬輸入/輸出單元設置對應的焦點標志;通常,軟鍵盤以子窗口的形式顯示在 指定的區(qū)域內,而且在軟鍵盤輸入模式下,還可以隱藏標準輸入/輸出單元,即不顯示標準輸 入/輸出單元給用戶; 、
其中,模擬輸入/輸出單元通常具有繪制功能,可以繪制模擬輸入/輸出單元的外觀,在用 戶向模擬輸入/輸出單元內輸入字符時,該模擬輸入/輸出單元還可以在顯示框內繪制符號,如 圓點或者*,來模擬字符輸入;另外,還可以在光標區(qū)指定的位置畫一條反色豎線,模擬輸入 光標;以固定的時間間隔在光標區(qū)指定的位置,輪流繪制反色豎線和同色豎線,模擬光標的 閃爍等等。
另外,模擬輸入/輸出單元還具有計算光標位置的功能,隨著輸入的字符移動,可以自動 計算光標的位置,如輸入字符增加時,計算出光標向右移動的位置,刪除輸入字符時,計算 出光標向左移動等等,當鼠標點擊到模擬輸入/輸出單元時,計算出光標移動到鼠標點擊的位 置等等。
步驟103:主控模塊接收鼠標點擊消息,并判斷鼠標點擊的是模擬輸入Z輸出單元、輸入 模式切換鍵還是操作結束鍵,如果鼠標點擊的是上述多個模擬輸入/輸出單元中的一個模擬輸 入/輸出單元,則執(zhí)行步驟104;如果鼠標點擊的是輸入模式切換鍵,則執(zhí)行步驟108;如果 鼠標點擊的是操作結束鍵,則執(zhí)行109;
歩驟104:主控模塊將當前輸入焦點標志設置為鼠標點擊的模擬輸入/輸出單元的焦點標
j志;
步驟105:軟鍵盤模塊接收鼠標點擊消息,并根據鼠標點擊的位置確定對應的字符,并
判斷字符是鍵盤字符還是狀態(tài)字符,如果為鍵盤字符,則執(zhí)行步驟106,如果為狀態(tài)字符,
則執(zhí)行步驟107;
其中,軟鍵盤模塊預先存儲有當前軟鍵盤的坐標和字符的映射關系,即鼠標點擊屏幕上 的不同坐標時,對應輸入不同的字符,該字符包括鍵盤字符和狀態(tài)字符。鍵盤字符包括字母
和數字,狀態(tài)字符是指除鍵盤字符以外的其它字符,如shift鍵、CapsLock鍵等等。
步驟106:軟鍵盤模塊緩存鍵盤字符,并向主控模塊發(fā)送軟鍵盤消息,主控模塊收到后,
根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元從緩存接收鍵盤字符,然后返回步驟
103;
步驟107:軟鍵盤模塊根據該狀態(tài)字符,對軟鍵盤進行相應的狀態(tài)處理,然后返回步驟103;
例如,狀態(tài)字符為CapsLock鍵,則軟鍵盤模塊重新繪制軟鍵盤,其中顯示的字母均為大 寫字母,通常新繪制的軟鍵盤的坐標和字符的映射關系,與原來的軟鍵盤的坐標和字符的映 射關系不同,繪制新的軟鍵盤后,后續(xù)的處理均根據該新軟鍵盤的坐標和字符的映射關系進 行處理。
步驟108:主控模塊將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式,然后返回步驟101。 步驟109:主控模塊和軟鍵盤模塊停止操作,流程結束。
步驟110:當前為標準鍵盤輸入模式,主控模塊顯示多個標準輸入/輸出單元,并接收鼠
標點擊消息,并判斷鼠標點擊的是標準輸入/輸出單元、輸入模式切換鍵還是操作結束鍵,如
果是標準輸入/輸出單元,則執(zhí)行步驟111;如果是輸入模式切換鍵,則執(zhí)行步驟113;如果
是操作結束鍵,則執(zhí)行步驟109;
通常,在標準鍵盤輸入模式下,也可以隱藏模擬輸入/輸出單元,即不顯示模擬輸入/輸出 單元給用戶。
本實施例中,標準輸入/輸出單元和模擬輸入/輸出單元均為多個,且數目相同, 一一對應, 而且每對具有對應關系的標準輸入/輸出單元和模擬輸入/輸出單元,都具有共用的存儲區(qū),該 共用的存儲區(qū)用米存儲標準輸入/輸出單元和模擬輸入/輸出單元接收的字符,無論是標準輸入 /輸出單元,還是模擬輸入/輸出單元接收到用戶輸入的字符,都會保存在該共用的存儲區(qū)中。
例如,用戶通過標準鍵盤輸入了字符AB,然后又通過軟鍵盤輸入了字符CD,則該共用的存 儲區(qū)中會保存有字符ABCD。
步驟111:主控模塊將當前輸入焦點標志設置為標準輸入/輸出單元的焦點標志;
步驟112:主控模塊接收用戶通過物理鍵盤輸入的字符,根據當前輸入焦點標志,通知 對應的標準輸入/輸出單元接收該字符,然后返回步驟110;
本實施例中,除了上述在標準輸入模式下,主控模塊通知標準輸入/輸出單元接收用戶通 過物理鍵盤輸入字符的方式外,還可以采用在標準輸入模式下,軟鍵盤模塊接收用戶通過軟 鍵盤輸入的字符并發(fā)送給標準輸入/輸出單元的方式,即步驟U2可以由以下步驟替換
主控模塊顯示軟鍵盤,用戶通過鼠標點擊該軟鍵盤,軟鍵盤模塊根據鼠標點擊的位置確 定對應的字符,并判斷對應的字符是鍵盤字符還是狀態(tài)字符;如果對應的字符為鍵盤字符, 則軟鍵盤模塊將鍵盤字符發(fā)送給主控模塊,主控模塊收到后,根據當前輸入焦點標志,將鍵 盤字符發(fā)送給對應的標準輸入/輸出單元;如果對應的字符為狀態(tài)字符,則軟鍵盤模塊對軟鍵 盤進行相應的狀態(tài)處理;然后返回步驟110。步驟113:主控模塊將當前標準鍵盤輸入模式更改為軟鍵盤輸入模式,然后返回步驟101。 進一步地,上述方法還包括
主控模塊定期檢査當前的輸入焦點,并根據當前的輸入焦點所在的輸入/輸出單元,將當 前輸入焦點標志設置為輸入/輸出單元的焦點標志。例如,以預設的時間間隔觸發(fā)MFC定時 消息(WMjriMER),主控模塊收到該消息后,檢查當前的輸入焦點,并根據當前的輸入焦 點所在的輸入/輸出單元,將當前輸入焦點標志設置為輸入/輸出單元的焦點標志。
另外,本實施例中,軟鍵盤模塊還可以隨時隨機修改已存儲的坐標與字符的映射關系, 從而可以進一步提高安全性。
本實施例中,主控模塊和軟鍵盤模塊可以分別由兩個MFC窗口類實現,輸入模式的切換 可以由主控模塊窗口中的CheckBox控件來實現,標準輸入/輸出單元可以為主控模塊窗口中 的Edit控件,模擬輸入/輸出單元可以是以不具有輸入功能的Button控件為基礎的自繪控件, 由于Button控件不具備輸入功能,因此模擬輸入/輸出單元不存在MFC所定義的輸入焦點。
另外,本實施例中,在軟鍵盤輸入模式下,除了上述軟鍵盤模塊接收用戶通過軟鍵盤輸 入字符的方式外,還可以采用在軟鍵盤輸入模式下,由主控模塊接收用戶通過物理鍵盤輸入 字符的方式,即步驟105 107還可以由以下步驟替換
主控模塊接收用戶通過物理鍵盤輸入的字符,根據當前輸入焦點標志,通知對應的模擬 輸入/輸出單元接收該字符。
本實施例中,主控模塊和軟鍵盤模塊可以處理的MFC消息有很多種,例如
OnMylnitDialog(); 〃對話框初始化,響應WM—INITDIALOG:
OnMyOK(); /點擊"確定",響應WM—COMMAND+IDOK
OnMyCancel(); 〃點擊"取消",響應WM—COMMAND+ IDCANCEL
OnMyCheck(); 〃切換輸入模式,響應WM—COMMAND+IDC—CHECK
OnMyChangeEdit(): 〃輸入密碼,響應WM_COMMAND+IDC—EDIT:+EN_CHANGE
OnMyDrawItem(wParam,lParam); 〃控件自繪,用于模擬輸入輸出單元的繪制
OnMyLButtonDo職(wParam,lParam); 〃鼠標點擊
OnMyShowWindow(); 〃界面刷新
OnMyPaint(); 〃界面繪制
OnMyDestroy 0; 〃界面銷毀,模塊停lh運行
OnMyPowerBroadcast(); 〃系統(tǒng)休眠/喚醒
實施例2參見圖2,本發(fā)明實施例還提供了一種多輸入焦點的軟鍵盤輸入裝置,包括主控模塊200 和軟鍵盤模塊300;
主控模塊200包括-
標準輸入/輸出單元201,用于接收鼠標點擊消息和用戶通過標準鍵盤輸入的字符; 模擬輸入/輸出單元202,用于接收鼠標點擊消息和用戶通過軟鍵盤輸入的字符; 輸入焦點標志設置單元203,用于當標準輸入/輸出單元201被鼠標點擊時,將當前輸入
焦點標志設置為標準輸入/輸出單元201的焦點標志,當模擬輸入/輸出單元202被鼠標點擊時,
將當前輸入焦點標志設置為模擬輸入/輸出單元202的焦點標志;
軟鍵盤消息處理單元204,用于收到軟鍵盤模塊發(fā)來的軟鍵盤消息后,根據當前輸入焦
點標志,通知對應的模擬輸入/輸出單元202接收軟鍵盤模塊緩存的鍵盤字符; 存儲單元205,用于存儲用戶通過標準鍵盤或軟鍵盤輸入的字符;
顯示單元206,用于在標準鍵盤輸入模式下,顯示標準輸入/輸出單元201,在軟鍵盤輸 入模式下,顯示軟鍵盤和模擬輸入/輸出單元202; 軟鍵盤模塊300包括
映射單元3(H,用于存儲坐標與字符之間的映射關系,模擬輸入/輸出單元202與焦點標 志的對應關系,以及標準輸入/輸出單元201與焦點標志的對應關系,并在有鼠標點擊消息時, 根據鼠標點擊的位置輸出相應的字符;
緩存單元302,用于當映射單元301輸出的為鍵盤字符時,緩存鍵盤字符; 軟鍵盤消息發(fā)送單元303,用于當緩存單元302緩存有鍵盤字符時,向主控模塊200發(fā) 送軟鍵盤消息;
狀態(tài)處理單元304,用于當映射單元301輸出的為狀態(tài)字符時,對軟鍵盤進行相應的狀 態(tài)處理。
其中,模擬輸入/輸出單元202通常具有繪制功能,在用戶向模擬輸入/輸出單元202內輸 入字符時,該模擬輸入/輸出單元202還可以在顯示框內繪制符號,如圓點或者*,來模擬字 符輸入;另外,還可以在光標區(qū)指定的位置畫一條反色豎線,模擬輸入光標;以固定的時間 間隔在光標區(qū)指定的位置,輪流繪制反色豎線和同色豎線,模擬光標的閃爍等等。
進一步地,主控模塊200還包括
切換單元,用于當模擬輸入/輸出單元202接收的鼠標點擊消息為輸入模式切換消息時, 將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式;當標準輸入/輸出單元201接收的鼠標點擊 消息為輸入模式切換消息時,將當前標準鍵盤輸入模式更改為軟鍵盤輸入模式。本實施例中,主控模塊200還包括
判斷單元,用于判斷當前輸入模式是否為軟鍵盤輸入模式;
第一通知單元,用于當判斷單元判斷出當前輸入模式為軟鍵盤輸入模式時,通知顯示單 元206顯示軟鍵盤和模擬輸入/輸出單元202;
第二通知單元,用于當判斷單元判斷出當前輸入模式為標準鍵盤輸入模式時,通知顯示 單元206顯示標準輸入/輸出單元201 。
本實施例中,當主控模塊200包括判斷單元、第一通知單元和第二通知單元時,主控模 塊200可以在標準鍵盤輸入模式下,接收用戶通過物理鍵盤輸入的字符,即主控模塊200還 可以包括
第一標準鍵盤字符接收單元,用于在顯示單元206根據第二通知單元發(fā)來的通知顯示標 準輸入/輸出單元201后,接收用戶通過物理鍵盤輸入的字符,根據當前輸入焦點標志,通知 對應的標準輸入/輸出單元201接收輸入的字符。
本實施例中的第二通知單元可以具體用于當判斷單元判斷出當前輸入模式為標準鍵盤輸 入模式時,通知顯示單元206顯示標準輸入/輸出單元201,并顯示軟鍵盤;相應地,軟鍵盤 模塊300還包括
軟鍵盤字符發(fā)送單元,用于在標準鍵盤輸入模式下,將映射單元301輸出的鍵盤字符發(fā)
送給主控模塊200;
并且,主控模塊200還包括
軟鍵盤字符接收單元,用于接收到軟鍵盤模塊300發(fā)來的所述鍵盤字符后,根據當前輸 入焦點標志,將該鍵盤字符發(fā)送給對應的標準輸入/輸出單元201 。
另外,本實施例中,在軟鍵盤輸入模式下,主控模塊200還可以接收用戶通過物理鍵盤 輸入的字符,即主控模塊200還包括-
第二標準鍵盤字符接收單元,用于在軟鍵盤輸入模式下,接收用戶通過物理鍵盤輸入的 字符,根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元202接收該字符。
本實施例中,主控模塊200還包括
檢查單元,用于定期檢査當前的輸入焦點,并根據當前的輸入焦點所在的輸入/輸出單元, 將當前輸入焦點標志設置為輸入/輸出單元的焦點標志。例如,以預設的時間間隔觸發(fā)MFC 定時消息(WMjriMER),檢査單元收到該消息后,檢查當前的輸入焦點,并根據當前的輸 入焦點所在的輸入/輸出單元,將當前輸入焦點標志設置為輸入/輸出單元的焦點標志。
進一步地,軟鍵盤模塊300還包括置亂單元,用于隨機修改映射單元301存儲的坐標和字符的映射關系。 本實施例中的標準輸入/輸出單元201可以為具有字符輸入功能的MFC控件。 進一步地,模擬輸入A俞出單元202還包括
光標計算子單元,用于計算光標的位置。如隨著輸入的字符移動,自動計算光標的位置, 輸入字符增加時,計算出光標向右移動的位置,刪除輸入字符時,'計算出光標向左移動的位 置等等,當鼠標點擊到模擬輸入/輸出單元202時,計算出光標移動到鼠標點擊的位置等等。
本實施例中,模擬輸入/輸出單元202還包括
繪圖子單元,用于繪制模擬輸入/輸出單元202的外觀。
本實施例中,主控模塊200和軟鍵盤模塊300可以分別由兩個MFC窗口類實現,切換單 元可以由主控模塊200窗口中的CheckBox控件來實現,標準輸入/輸出單元201可以為主控 模塊200窗口中的Edit控件,模擬輸入/輸出單元202可以是以不具有輸入功能的Button控 件為基礎的自繪控件,由于Button控件不具備輸入功能,因此模擬輸入/輸出單元202不存在 MFC所定義的輸入焦點。
本發(fā)明實施例解決了現有技術的不足,多個輸出控件共用一個軟鍵盤,結構更簡單,運 行更穩(wěn)定,從而更好地滿足實際需要,提供更完善而安全的人機交互體驗。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之 內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1. 一種多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述裝置包括主控模塊和軟鍵盤模塊;所述主控模塊包括標準輸入/輸出單元,用于接收鼠標點擊消息和用戶通過標準鍵盤輸入的字符;模擬輸入/輸出單元,用于接收鼠標點擊消息和用戶通過軟鍵盤輸入的字符;輸入焦點標志設置單元,用于當所述標準輸入/輸出單元被鼠標點擊時,將當前輸入焦點標志設置為所述標準輸入/輸出單元的焦點標志,當所述模擬輸入/輸出單元被鼠標點擊時,將當前輸入焦點標志設置為所述模擬輸入/輸出單元的焦點標志;軟鍵盤消息處理單元,用于收到所述軟鍵盤模塊發(fā)來的軟鍵盤消息后,根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元接收所述軟鍵盤模塊緩存的鍵盤字符;存儲單元,用于存儲用戶通過標準鍵盤或軟鍵盤輸入的字符;顯示單元,用于在標準鍵盤輸入模式下,顯示標準輸入/輸出單元,在軟鍵盤輸入模式下,顯示軟鍵盤和模擬輸入/輸出單元;所述軟鍵盤模塊包括映射單元,用于存儲坐標與字符之間的映射關系,模擬輸入/輸出單元與焦點標志的對應關系,以及標準輸入/輸出單元與焦點標志的對應關系,并在有鼠標點擊消息時,根據鼠標點擊的位置輸出相應的字符;緩存單元,用于當所述映射單元輸出的為鍵盤字符時,緩存所述鍵盤字符;軟鍵盤消息發(fā)送單元,用于當所述緩存單元緩存有鍵盤字符時,向所述主控模塊發(fā)送軟鍵盤消息;狀態(tài)處理單元,用于當所述映射單元輸出的為狀態(tài)字符時,對所述軟鍵盤進行相應的狀態(tài)處理。
2. 根據權利要求l所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述主控模塊還 包括切換單元,用于當所述模擬輸入/輸出單元接收的鼠標點擊消息為輸入模式切換消息時, 將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式;當所述標準輸入/輸出單元接收的鼠標點擊 消息為輸入模式切換消息時,將當前標準鍵盤輸入模式更改為軟鍵盤輸入模式。
3. 根據權利要求l所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述主控模塊還 包括判斷單元,用于判斷當前輸入模式是否為軟鍵盤輸入模式;第一通知單元,用于當所述判斷單元判斷出當前輸入模式為軟鍵盤輸入模式時,通知所 述顯示單元顯示所述軟鍵盤和模擬輸入/輸出單元;第二通知單元,用于當所述判斷單元判斷出當前輸入模式為標準鍵盤輸入模式時,通知 所述顯示單元顯示所述標準輸入/輸出單元。
4. 根據權利要求3所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述主控模塊還 包括第一標準鍵盤字符接收單元,用于在所述顯示單元根據所述第二通知單元發(fā)來的通知顯 示所述標準輸入/輸出單元后,接收用戶通過物理鍵盤輸入的字符,根據當前輸入焦點標志, 通知對應的標準輸入/輸出單元接收所述字符。
5. 根據權利要求3所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述第二通知單 元具體用于當所述判斷單元判斷出當前輸入模式為標準鍵盤輸入模式時,通知所述顯示單元 顯示所述標準輸入/輸出單元,并顯示所述軟鍵盤;所述軟鍵盤模塊還包括-軟鍵盤字符發(fā)送單元,用于在標準鍵盤輸入模式下,將所述映射單元輸出的鍵盤字符發(fā) 送給所述主控模塊;所述主控模塊還包括軟鍵盤字符接收單元,用于接收到所述軟鍵盤模塊發(fā)來的所述鍵盤字符后,根據當前輸 入焦點標志,將所述鍵盤字符發(fā)送給對應的標準輸入/輸出單元。
6. 根據權利要求l所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述主控模塊還 包括第二標準鍵盤字符接收單元,用于在軟鍵盤輸入模式下,接收用戶通過物理鍵盤輸入的 字符,根據當前輸入焦點標志,通知對應的模擬輸入/輸出單元接收所述字符。
7. 根據權利要求1所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述主控模塊還 包括檢查單元,用于定期檢查當前的輸入焦點,并根據所述當前的輸入焦點所在的輸入/輸出 單元,將當前輸入焦點標志設置為所述輸入/輸出單元的焦點標志。
8. 根據權利要求1所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述軟鍵盤模塊 還包括置亂單元,用于隨機修改所述映射單元存儲的坐標和字符的映射關系。
9. 根據權利要求1所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述標準輸入/ 輸出單元為具有字符輸入功能的MFC控件。
10. 根據權利要求1所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述模擬輸入/ 輸出單元還包括-光標計算子單元,用于計算光標的位置。
11. 根據權利要求1所述的多輸入焦點的軟鍵盤輸入裝置,其特征在于,所述模擬輸入/ 輸出單元還包括繪圖子單元,用于繪制所述模擬輸入/輸出單元的外觀。
12. —種多輸入焦點的軟鍵盤輸入方法,其特征在于,所述方法包括 在軟鍵盤輸入模式下,在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸出單元,并為每個模擬輸入/輸出單元設置對應的焦點標志;主控模塊接收到用戶點擊所述模擬輸入/輸出單元的鼠標點擊消息,將當前輸入焦點標志 設置為所述模擬輸入/輸出單元的焦點標志;軟鍵盤模塊接收到用戶點擊所述軟鍵盤的鼠標點擊消息,根據鼠標點擊的位置確定對應 的字符,并判斷所述字符是鍵盤字符還是狀態(tài)字符;如果所述字符為鍵盤字符,則所述軟鍵盤模塊緩存所述鍵盤字符,并向所述主控模塊發(fā) 送軟鍵盤消息,所述主控模塊收到所述軟鍵盤消息后,根據當前輸入焦點標志,通知對應的 模擬輸入/輸出單元從所述緩存接收所述鍵盤字符;如果所述字符為狀態(tài)字符,則所述軟鍵盤模塊對所述軟鍵盤進行相應的狀態(tài)處理。
13. 根據權利要求12所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述方法還包括當所述主控模塊接收到鼠標點擊消息,且所述鼠標點擊消息為輸入模式切換消息時,所 述主控模塊將當前軟鍵盤輸入模式更改為標準鍵盤輸入模式。
14. 根據權利要求12所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸出單元之前,還包括 主控模塊判斷當前輸入模式是否為軟鍵盤輸入模式 ,如果是,則執(zhí)行在軟鍵盤輸入模式下,在指定的區(qū)域內,顯示軟鍵盤和多個模擬輸入/輸 出單元的步驟;否則,所述主控模塊顯示多個標準輸入/輸出單元并接收鼠標點擊消息,并判斷鼠標點擊 的是否為所述標準輸入/輸出單元,如果是,則所述主控模塊將當前輸入焦點標志設置為所述 標準輸入/輸出單元的焦點標志。
15. 根據權利要求14所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述主控模塊將當前輸入焦點標志設置為所述標準輸入/輸出單元的焦點標志之后,還包括所述主控模塊接收用戶通過物理鍵盤輸入的字符,根據所述當前輸入焦點標志,通知對 應的標準輸入/輸出單元接收所述字符。
16. 根據權利要求14所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述主控模塊將當前輸入焦點標志設置為所述標準輸入/輸出單元的焦點標志之后,還包括 所述主控模塊顯示軟鍵盤,并且用戶通過鼠標點擊所述軟鍵盤;所述軟鍵盤模塊根據鼠標點擊的位置確定對應的字符,并判斷所述字符是鍵盤字符還是 狀態(tài)字符;如果所述字符為鍵盤字符,則所述軟鍵盤模塊將所述鍵盤字符發(fā)送給所述主控模塊,所 述主控模塊收到后,根據當前輸入焦點標志,將所述鍵盤字符發(fā)送給對應的標準輸入/輸出單 元;如果所述字符為狀態(tài)字符,則所述軟鍵盤模塊對所述軟鍵盤進行相應的狀態(tài)處理。
17. 根據權利要求14所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述判斷鼠標 點擊的是否為標準輸入/輸出單元之后,還包括 '如果所述鼠標點擊消息為輸入模式切換消息,則所述主控模塊將當前標準鍵盤輸入模式 更改為軟鍵盤輸入模式。
18. 根據權利要求12所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述將當前輸 入焦點標志設置為所述模擬輸入/輸出單元的焦點標志之后,還包括:所述主控模塊接收所述用戶通過物理鍵盤輸入的字符,根據所述當前輸入焦點標志,通 知對應的模擬輸入/輸出單元接收所述字符。
19. 根據權利要求12所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述方法還包括所述主控模塊定期檢査當前的輸入焦點,并根據所述當前的輸入焦點所在的輸入/輸出單 元,將當前輸入焦點標志設置為所述輸入/輸出單元的焦點標志。
20. 根據權利要求12所述的多輸入焦點的軟鍵盤輸入方法,其特征在于,所述方法還包括所述軟鍵盤模塊隨機修改已有的鼠標點擊位置與字符的映射關系。
全文摘要
本發(fā)明公開了一種多輸入焦點的軟鍵盤輸入裝置和方法,屬于信息安全領域。所述裝置包括主控模塊和軟鍵盤模塊。所述方法包括軟鍵盤輸入模式下,顯示軟鍵盤和多個模擬輸入/輸出單元,并設置對應的焦點標志;用戶點擊模擬輸入/輸出單元,主控模塊將當前輸入焦點標志設置為該單元的焦點標志;用戶點擊軟鍵盤,軟鍵盤模塊根據光標位置確定對應的字符,如果為鍵盤字符,則軟鍵盤模塊緩存該鍵盤字符,并向主控模塊發(fā)送軟鍵盤消息,主控模塊收到后通知當前輸入焦點標志對應的模擬輸入/輸出單元接收該鍵盤字符;如果為狀態(tài)字符,則軟鍵盤模塊對軟鍵盤進行相應的狀態(tài)處理。本發(fā)明提高了軟鍵盤輸入的安全性。
文檔編號G06F3/048GK101414242SQ20081022688
公開日2009年4月22日 申請日期2008年11月19日 優(yōu)先權日2008年11月19日
發(fā)明者于華章, 舟 陸 申請人:北京飛天誠信科技有限公司