2018年02月20日

AutoHotKeyでIME制御2:IMEの状態をアプリごとに固定する方法


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年後の仕事図鑑

■同じテーマの記事

ロバート・フェルドマンのビジネスマンに読んでほしい本2

著名エコノミストのロバート・フェルドマン氏が薦める本のご紹介。簡単にフェルドマン氏について。アメリカ合衆国テネシー州オーク・リッジ出身。東欧ユダヤ系。1970年にAFSの交換留学生として初来日。愛知県名古屋市の南山高等学校にて学ぶ。イェール大学(経済学・日本研究学士)を経て、マサチューセッツ工科大学において経済学博士を取得。野村総合研究所、日本銀行で研究業務、その後国際通貨基..

ロバート・フェルドマンのビジネスマンに読んでほしい本1

著名エコノミストのロバート・フェルドマン氏が薦める本のご紹介。簡単にフェルドマン氏について。アメリカ合衆国テネシー州オーク・リッジ出身。東欧ユダヤ系。1970年にAFSの交換留学生として初来日。愛知県名古屋市の南山高等学校にて学ぶ。イェール大学(経済学・日本研究学士)を経て、マサチューセッツ工科大学において経済学博士を取得。野村総合研究所、日本銀行で研究業務、その後国際通貨基..

3分の1マージン

ハードディスクの余裕以前、中国のネットワークサーバの管理をしていた頃に、ルールとして決めたものがあります。3分の1マージンというのがそれ。今も確認すると、それが色々なところに拡大されて、自分が担当してなくてもそれが部門のルールとして残っているようです。何かというと、・ハードディスクの空き容量が3分の1を切ったらファイルの整理をする・メモリの余裕が3分の1未満になったら、不要なアプリを探して停止させるかメモリの増設をする・SQLサーバのフリーエリアが3分の1..

セルフイメージを高める本当の方法

私も含め、どうもストイックな人が多いような気がします。これじゃあダメだもっと頑張らないともちろん、自分の課題を発見し解決していくことは良いことだと思います。ただ、それはマイナスをゼロにする方法でしかありません。ダメなところを改善してもプラスにはならないんです。一方で、良いところをより活用しようとしたり、より伸ばそうとするとプラスがさらに大きなプラスになります。アファメーション「アファメーション」という言葉の発祥..

新規テキストファイルをバッチで作成する

Windows で新しいファイルを作成する方法って、マウスでエクスプローラのなにもないところを右クリックして新規作成を選んでファイルのタイプを選択する以外に方法がないみたいです。おそらく Word / Excel なんかのアプリに新規作成を実行させるためにそうなっているんでしょうけど、ちょっとしたメモを作りたいだけのような場合には結構不便です。たとえば、多くのファイルがあるようなフォルダだと、まず何もないところの面積が少ない。そのために、表示を広げた..

書類・資料は最後のページから読む

最近は紙書類をもらうことは少なくなりましたが、多いのが PowerPoint 資料。数ページの資料から百ページを超える大作まで、いろいろなのですが、この資料を確認しないといけないときに、私が最初にやるのは、「スライド一覧表示」。まず PowerPoint を開いたら、ALT, W, I と押すとこの表示になります。スライド一覧で全体の流れとポイントになるスライドを探す効率が悪い方法というのが、いきなり、プレゼンテー..

posted by 管理人 at 05:01| Comment(0) | PCアプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: