この記事の内容
AutoHotkeyを使って、時間差で複数のキーを連続入力するスクリプトの書き方
この方法を用いれば以下のことが可能になります:
- ショートカット一発で「↑↑↓↓←→←→BA」的な順番に押されるコマンドが自動で入力できる
- ショートカット一発で、まるでタイピングしているかのように自動入力できる
書き方
ここでは、例として
[Windowsキー]と[V]を同時押ししたら、「時間差入力」というテキストが出力される
というスクリプトを用いて解説していきます。

AutoHotkeyを開いて以下の通りに記述します。
#v::
Send, {時}
Sleep, 100
Send, {間}
Sleep, 100
Send, {差}
Sleep, 100
Send, {入}
Sleep, 100
Send, {力}
return
順番に解説しますと、
#v
#は修飾キーとしての[Windowsキー]を表していますので、#vは「WindowsキーとVを同時押ししたら」というトリガーとなる条件部分を示しています。
Send, {時}
「時」という文字を出力
Sleep, 100
次の命令が実行されるまでどのくらい待機するかを表しています。単位はミリ秒です。つまりこのスクリプトでは「時」出力後に100ミリ秒(0.1秒)待機する、という感じになっています。
10ミリ秒 | 0.01秒 |
100ミリ秒 | 0.1秒 |
100ミリ秒 | 1秒 |
return
今回のスクリプトのように、複数の命令があるショートカットを作成した際は、終わりにこの「return」を記述します。
今回紹介したスクリプトは簡略化すると以下のような構成になっています。
時間差で連続入力(入力するキー1が通常キーの場合)
[ トリガーとなるキー1 & トリガーとなるキー2 ]、 [出力するキー]、[100]の部分を自分の好きな値に変更してお使いください。
入力するキー1 & 入力するキー2::
Send, {出力するキー}
Sleep, 100
Send, {出力するキー}
return
時間差で連続入力(入力するキー1が修飾キーの場合)
入力するキー1入力するキー2::
Send, {出力するキー}
Sleep, 100
Send, {出力するキー}
return
また、使用する際はAutoHotkeyをリロードすることをお忘れなく。これをしないと新しく記述したスクリプトが反映されませんので。
質問などがある際はコメント欄にご記入ください。分かる範囲でお答えします。
それでは、最後まで読んで頂きありがとうございました。
こんにちは~。前回コメントさせていただいたナポリタン寿司です。
この記事では、何かのキー → 連続入力ですが、その逆の同じキーを2度押し → 別のキー入力ができないか試したらできたので、報告しときます。このコメントを見て、参考になる方がいらっしゃれば幸いです。
【やりたいこと】
Ctrl2回押しでWindows+Vを押したことにする
【なぜ、やりたいのか?】
Clibor(クリップボード履歴ソフト)の呼び出しをWindows+Vにしたのはいいものの、たまにWindows標準のクリップボード履歴を使いたい時があるため。
【実際に書き込んだコード】
;—-Ctrl2回でWindows+V呼び出し—–
Ctrl::
Keywait, Ctrl, U ;1回目のキーが押し上げられるのを待つ
Keywait, Ctrl, D T0.2 ;0.2秒待機。Ctrlが再び押されると成功(0)、押されないと失敗(1)
If (ErrorLevel=1) ;失敗した場合の動作
{
Send,{Ctrl} ;普通にCtrl1回押す
}
else ;成功した場合の動作(Ctrl2回押し)
{
Send, #v ;Windows+Vを押す
}
return
これで、Cliborのクリップボード呼び出し(Ctrl2回)とWindows標準のクリップボード呼び出し(Windows+V)を綺麗に入れ替えることができます。
それでは失礼します。
ナポリタン寿司さん、こんにちは!
if文についてはいずれ記事を書こうと思っていましたが、キー複数回押しで発動するホットキーは考えたことがなかったので、大変勉強になりました!
とても面白くて有益な情報なので、役に立つ人も多いかと思います!!このブログのパソコン版で表示されるサイドバーにナポリタン寿司さんのコメント冒頭部分が表示されるようにしておきました。多くの人の役に立ちますように!
わざわざ、ありがとうございます!!
こんばんは~。
わぁお!わざわざありがとうございます!感謝です。
丁寧な解説と美しいレイアウトの記事に感心しました。
ところで今回の解説のキーの時間差ですが、ご存知かも知れませんが同じ時間差であれば以下のような記述方法が便利です。
SetKeyDelay, 100
#v::
Send, {時}
Send, {間}
Send, {差}
Send, {入}
Send, {力}
return
最初に
SetKeyDelay, 100
で、キー出力の時間間隔を設定するという方法です。
自動操作のときにキー出力が速くて問題があるときにはよく使います。
ご参考まで。
パディさん、コメントありがとうございます!
いえ、ご紹介してくださった記述法は知りませんでした!この記事に追記しておきます。
大変、勉強になりましたm(_ _)m