輸入法狀態(中、英、全半角)用一個數值表示,網上很多代碼都是直接判斷這個狀態值是否某個數值,這實際上是錯的。天下代碼一大抄,一個人錯了大家都跟著錯。
其實輸入法狀態需要按位判斷。
3 & key.ime.control(,1/*_IMC_GETCONVERSIONMODE*/)
判斷輸入法是否開啟中文標點,應當這樣寫:
0x400 & key.ime.control(,1/*_IMC_GETCONVERSIONMODE*/)
var openState,mode = key.ime.state();
上面第一個返回值表示輸入法是否打開,mode 為1 表示半角標點, mode 為 2 表示全角標點,mode 為 3 表示開啟中文標點。
這個方法支持所有操作系統,支持所有輸入法(這都不支持的輸入法如果你也敢用 —— 那就只能佩服了)。
下面我們寫一個輸入法提示工具,先看效果:
原理就是用一個 plus 控件跟著鼠標走,你可以用代碼畫得更酷一些,plus 控件可以直接顯示圖標、文字圖標、動畫這些 …… 當然這種事情輕快實用更重要,動畫太多就程序員看得高興,用戶不一定喜歡。
基於上面的原理,我開發了開源軟件 ImTip ,ImTip 通過在輸入光標處顯示 2 個簡單的圖標 —— 提前知道中英、中英標點、全半角、大小寫、多語言鍵盤佈局等所有狀態。
再也不怕按錯了!
最新評論