ime.ahkの機能を強化した結果、タイトルどおりの機能を実装するに至った。以下のリンク先から改変後のime.ahkを入手できる。
使用しているIMEの情報を ime.ahk で表示できるようにした
IME_GetConverting(WinTitle="A",ConvCls="",CandCls="") { ;IME毎の 入力窓/候補窓Class一覧 ("|" 区切りで適当に足してけばOK) ConvCls .= (ConvCls ? "|" : "") ;--- 入力窓 --- . "ATOK\d+CompStr" ; ATOK系 . "|imejpstcnv\d+" ; MS-IME系 . "|WXGIMEConv" ; WXG . "|SKKIME\d+\.*\d+UCompStr" ; SKKIME Unicode . "|MSCTFIME Composition" ; Google日本語入力 CandCls .= (CandCls ? "|" : "") ;--- 候補窓 --- . "ATOK\d+Cand" ; ATOK系 . "|imejpstCandList\d+|imejpstcand\d+" ; MS-IME 2002(8.1)XP付属 . "|mscandui\d+\.candidate" ; MS Office IME-2007 . "|WXGIMECand" ; WXG . "|SKKIME\d+\.*\d+UCand" ; SKKIME Unicode - CandGCls := "GoogleJapaneseInputCandidateWindow" ;Google日本語入力 + CandGCls := "GoogleJapaneseInputCompositionWindow" ;Google日本語入力
自分の .ahk に設定を追加。僕の場合、
#Include IME.ahk #IfWinActive, ahk_class "Window Spy で調べたクラス名" { Ctrl & J:: mode := IME_GetConverting() if (mode == 2) { Send, {Esc} return } Send, {Esc} IME_SET(0) return }
入力中は IME_GetConverting() で 1 を返すようにしないといけないと思うけど、常に 2 が返るようになってしまってる。けど、僕は困ってない(今のところ)ので大丈夫じゃないかと。