IMEの状態がいまどうなっているかを確実にしる方法は、IME のウインドウ(あの右角にあるあ般……が表示されているやつ。「IMEツールバー」とか「言語バー」って言うらしい)を見るか、何かキーボードで入力してみて反応を見るしかありません。
私はキーボードの入力速度がそこそこ早くて(秒間3〜5キー)、ウインドウの切り替えもキーボードでやるものだから、ウインドウの切り替え後すぐに入力を始めると、IME の状態が希望状態じゃあ無くて、無駄打ちすることが結構あります。
…イラッとするんだよね〜
ということで、前回の記事でウインドウを切り替えた瞬間に着目している位置に IME の状態を表示するツール(AutoHotKeyスクリプト)をご紹介しました。
今回は引き続き、それを利用して、IMEを使わないアプリでの IME の固定方法をご紹介します。
■AutoHotKey でIMEの状態表示をする
早速ですが、前回ご紹介した AutoHotKey のスクリプトは以下です。
◇――――――――――――――――――――――――――
#Persistent
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND
, "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND
, "UInt", 0 ; hModule : self
, "UInt", myFunc ; hWinEventProc :
, "UInt", 0 ; idProcess : All process
, "UInt", 0 ; idThread : All threads
, "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")
; アプリが切り替わったときに呼び出される関数
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
if IME_GET() == 1 {
Tooltip, あいう ; マウスカーソル位置
IME_SET(0) ; IME を一瞬反転させる
IME_SET(1)
} else {
Tooltip, ABC ; マウスカーソル位置
IME_SET(1) ; IME を一瞬反転させる
IME_SET(0)
}
sleep, 500
Tooltip,
}
――――――――――――――――――――――――――◇
セットアップ方法については前回記事をご参照ください。
■IMEが固定のアプリ
たとえば、Word や PowerPoint ではほとんど日本語の入力が主体です。
逆に、ファイラーなどの場合は、英語モードのほうが便利です。
そこで、あるアプリに切り替えたら、最初は必ず日本語入力を固定するようにしておくと、入力ミスがかなり減ります。
これには前回紹介した、ウインドウが切り替わったことを検出する機能(RegisterCallback)にちょっと手を加えてやると簡単に実装できます。
●変更箇所
変更箇所は1箇所だけ。
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
の直下に
if WinActive("NexusFile") IME_SET(0)
って行を追加してください。
これは、表題が "NexusFile" だったら、IMEをOFFします。
相手が PowerPoint で、常に IME が ON からスタートしたいときは
if WinActive(" - Microsoft PowerPoint") IME_SET(1)
です。単に "PowerPoint" ではなく " - Microsoft PowerPoint" にしてやると、親になるウインドウだけに特定できます。
最終的に出来上がるスクリプトは、
◇――――――――――――――――――――――――――
#Persistent
myFunc := RegisterCallback("WinActivateHandler")
myHook := DllCall("SetWinEventHook"
, "UInt", 0x00000003 ; eventMin : EVENT_SYSTEM_FOREGROUND
, "UInt", 0x00000003 ; eventMax : EVENT_SYSTEM_FOREGROUND
, "UInt", 0 ; hModule : self
, "UInt", myFunc ; hWinEventProc :
, "UInt", 0 ; idProcess : All process
, "UInt", 0 ; idThread : All threads
, "UInt", 0x0003 ; dwFlags : WINEVENT_SKIPOWNTHREAD | WINEVENT_SKIPOWNPROCESS
, "UInt")
; アプリが切り替わったときに呼び出される関数
WinActivateHandler(hWinEventHook, event, hwnd, idObject, idChild, thread, time) {
if WinActive("NexusFile") IME_SET(0) ; NexusFile は OFF 固定
if IME_GET() == 1 {
Tooltip, あいう ; マウスカーソル位置
IME_SET(0) ; IME を一瞬反転させる
IME_SET(1)
} else {
Tooltip, ABC ; マウスカーソル位置
IME_SET(1) ; IME を一瞬反転させる
IME_SET(0)
}
sleep, 500
Tooltip,
}
――――――――――――――――――――――――――◇
こんな感じ。アプリはご自分の環境に合わせて登録してください。
こうしてやれば、アプリを切り替えた瞬間にそのアプリに最も期待する IME の状態にしてくれます。
IME の状態が固定なら、ミスも少なくなります。完全になくすのはムリですが…
◆このテーマのおすすめ図書
自分の仕事をつくる
できるビジネスパーソンのためのExcelデータ分析の仕事術
「テープ&音声起こし」即戦力ドリル
カナヘイの小動物ゆるっとエクセル
仕事力を高めるデジタル文章術
10年後の仕事図鑑