※IME入力状態を取得する方法を発掘しました.こちら.
AutoHotkeyは日本語のOS環境でも充分使っていけるものです.しかし,ときにLittle bit of tweaksが必要になります.特に,それが日本語入力関係のものなら必須です.
例えば,( )を挿入する際はあらかじめIMEをOffにしておかなければ,( )が全角で挿入されてしまったりします.そして残念ながら,設定をIMEの方で行う必要があります.
今回はIMEとAutoHotkeyの関係をうまく構築するために,IME側の設定をいじろうと思います.
今日のCan-do ·IMEの設定をいじることで,AutoHotkeyでの日本語入力をより快適にする.
さて,これは根本的な解決策ではなく,対処療法(いわゆるworkaround)ですので,ごめんなさいね!
まず,もし( )を挿入したければ,普通の人はこうするでしょう.
!(:: Send, {(}{)} return
しかし,これでは入力モードにしたがって挿入されてしまいます.つまり,IMEオンであれば全角で,IMEオフであれば半角で,というように.
現行AHKにはIMEのオンオフを区別する機能が備わっていません.
そこで,IMEに,IMEのONとOFFのためだけのショートカットキーを追加します.
IMEトレイアイコンを右クリック → プロパティ → 詳細設定 → 変更
→ キー追加 → Ctrl-0 → 変更 → IMEオフ
※以下の図ではすでに
IMEオフ → Ctrl+0
IMEオン → Ctrl+9
に設定されているためCtrl+8を作ってみたりしています.
よって,このようにスクリプトを改良できます.
!(:: ;常に半角で()を入力,IMEの要変更 Send, ^0 Sleep, 200 Send, {(}{)} Sleep, 200 Send, ^9 return
次に,これからたくさん使うことが予定されているので,繰り返しになる複雑なものはLabelによってサブルーチン化しておきます.
!(:: ;常に半角で()を入力,IMEの要変更 Gosub, hankaku Send, {(}{)} Gosub, zenkaku return ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; hankaku: send, ^0 sleep, 200 return zenkaku: sleep, 20 send, ^9 return
これで,Gosub,hankaku/zenkakuでON,OFFのコントロールができるようになり,スクリプトにも組み込むことができます.ただし,他の人に配布する際には,個々のユーザーが自分でIMEの再設定が必要になるのでネックといえばネックです.
ところで,こうした日本語特有の問題について,AutoHotkey_L(現行のAhk)を開発しているLexikosさんは,忘れてはいないようです.
Names for Japanese special keys – AutoHotkey Community : https://autohotkey.com/boards/viewtopic.php?f=13&t=40513&p=184827&hilit=Japanese#p184827
Lexikosさんは,残念ながらIMEが思った以上に複雑なシステムで,しばらくはユーザーにvkコードを使用するように求める方針だ,と言っています.IMEって意外に複雑なんですね.
“AutoHotkey 入門/学習シリーズ (13) IMEの全角/半角入力問題を解決する” への1件のフィードバック