IMEの状態がローマ字入力モードだと思って打ち込み始めたら、半角英数モードで、もう一度入力し直しをするような場面がちょくちょくありました。
まあ、1〜2文字で気がつけばいいのですが、勢いで入力してしまうと5〜6文字くらい行っちゃうときもあって、結構イライラします。
なんとかならないものか…?
と調べていたら、ImeTray64 っていうソフトがありました。
ImeTray64
ただ、メモリ貧乏な私としてはあまり常駐ソフトを増やしたくない…
■AutoHotKey で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.ahk というスクリプトが必要です。
AutoHotKeyを流行らせるアップローダ跡地
で、089.zip というファイルをダウンロードしてきてください。
※有用なツールを公開いただいてありがとうございます。
089.zip の中から、ime.ahk というスクリプトを適当なフォルダに展開し、
ご自分の ahk スクリプトに
#include (展開したパス)ime.ahk
を追加してください。
次に、読み込むスクリプトの先頭にこのコード部分をコピペしてください。
これで、動くようになるはず。
■機能の説明
このスクリプトは、ウインドウの切り替えが発生するたびに、RegisterCallback という関数が呼ばれるようになります。
その中で、現在の IME の状態を調べて、マウスカーソル位置に
IME が ON なら "あいう"
IME が OFF なら "ABC"
と 0.5 秒間表示します。
ただ、これだとマウスカーソルが目立たない位置にあったり、マウス以外で切り替えたときには目立ちませんので、IME を ON/OFF します。
GoogleIME ではこれでキャレット位置に現在の変換モードを表示します。
他の IME は確認してないのでわかりませんが、何らかの表示があるんじゃないかと……(いい加減ですみません)。
これで、ウインドウを切り替えるたびに、現在の IME の状態が着目している位置(マウスカーソル位置かキャレット位置)に表示され、見落とす確率がちょっと下がりました。
絶対確実な方法ではありませんが、多少でも改善すれば精神衛生にはちょっといいかも。