情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

AutoHotkey:文字をまとめて高速入力する関数InsertTextを作る

AutoHotkey (17) Windows (248)

AutoHotkeyで複数文字を高速で一括入力するために関数を用意したので、その中身をメモしておきます。

通常のキー入力では遅い

たとえば、「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 />")

これで、かなり高速に、そして無難に動作する文字列挿入関数の出来上がりです。

コメント(1)

  1. 42nNow4444
    2014年4月6日(日) 09:38

    「AutoHotKey」っと言うソフトのホットストリング機能を利用してTab & aキーを押して「AutoHotKey」の語を表示させていましたが、チョクチョク、キーを押した後で「うちさついつさきたら」と表示されてしまいイラッとしていましたが、サイトのコードをコピーさせてもらい使っています。良いコードを見つけました。

    今後もAutoHotKeyの書き込みがありまように。

新しいコメントを投稿