スポンサーリンク
AutoHotkeyで複数文字を高速で一括入力するために関数を用意したので、その中身をメモしておきます。
※2023年11月21日、AUtoHotkey v2.0 用のコードを掲載しました。v2.0では、クリップボード周りの利用方法・記法にも若干の変化がありました。
スポンサーリンク
通常のキー入力では遅い
たとえば、「F21+m」で「<br />」を入力するホットキーを作るとします。
このとき、簡単に作るのであれば、次のようにするでしょう。
F21 & m::Send, <br />
しかしこの方法は、キー入力をすべて再現するため、IMEの状態やフォーカスによって事故りやすい方法です。
また、長さやアプリケーションによっては低速に動作することになり、これまた事故の原因になります。
そのため、クリップボードに文字を一度格納し、入力したいところにペーストすることで文字を挿入するのがおすすめです。
文字入力の方法:クリップボード経由で挿入する
クリップボード経由で挿入する場合、キー入力は貼り付けのショートカットキーである「Ctrl+V」のみです。事前に現在のクリップボードをバックアップしておき、最後に復元する動作を組み込めば、この一連の動作を表す関数は次のように記述できます。
InsertText(Content) { cb_bk = %ClipboardAll% Clipboard = %Content% Send, ^v Sleep, 200 Clipboard = %cb_bk% }
ここにSleepが入っているのは、クリップボードの復元のほうがCtrl+Vより先に実行されてしまう場合があるからです。200msは長めなので、もっと短くもできると思います。
利用例
これを利用して先ほどのホットキーを実装するとこうなります。
F21 & m::InsertText("<br />")
これで、かなり高速に、そして無難に動作する文字列挿入関数の出来上がりです。
AutoHotkey v2 用(2023年11月21日追記)
AutoHotkey v2 では、基本的な記法や、クリップボードの扱い方が変更されており、それに合わせてコードを書き換えると、v2用のコードは、次のようになります:
InsertText(Content) { cb_bk := ClipboardAll() A_Clipboard := Content Send "^v" Sleep 200 A_Clipboard := cb_bk }
スポンサーリンク
2014年4月6日(日) 09:38
「AutoHotKey」っと言うソフトのホットストリング機能を利用してTab & aキーを押して「AutoHotKey」の語を表示させていましたが、チョクチョク、キーを押した後で「うちさついつさきたら」と表示されてしまいイラッとしていましたが、サイトのコードをコピーさせてもらい使っています。良いコードを見つけました。
今後もAutoHotKeyの書き込みがありまように。
2017年6月12日(月) 13:50
これはとても便利ですね!
今までIMEをオフにする関数を事前にいれて実現していましたが、この方がスマートですね!ありがとうございます。
でも、一つ問題がありまして、文字列の最後に半角スペースをいれたいのですが、反映されません。
どうしたら改善できるか、よければ教えてもらえないでしょうか?Send,{space}を追加する方法もありますが、これだと結局IMEをオフにする処理を加えないといけないので…