AutoHotkey 入門/学習シリーズ (13) IMEの全角/半角入力問題を解決する

※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を作ってみたりしています.

imechange.gif

よって,このようにスクリプトを改良できます.

!(:: ;常に半角で()を入力,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件のフィードバック

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください