AutoHotkey で作る簡単なキーマクロ

初回投稿日:

最終更新日:

初めてこのページに来た方へ

このWebサイトは TextRunRun というフリーソフトに関する事を書いているものです。

続きを見る

このソフトの説明は以下のホームページで説明しています。

上記のホームページのブログ形式のものがこのWebサイトです。

  • ホームページの方では「使い方」についてはあまり書けていない事
  • 更新した情報をなるべく早く書ける様にしておくため

これらの理由からこのブログ形式のものを立ち上げています。

このページの目次

前書き

このブログサイトは、TextRunRun というソフトについて書いていくサイトではありますが、この TextRunRun でも同じ事ができるという事もあって、今回は AutoHotkey の事について書くことにします。

AutoHotkey ではキーマクロを作る事が簡単に出来ます。

AutoHotkey を使って出来る事は多岐にわたってあるのでしょうが、「 とりあえず簡単に作れる 」という理由から、このキーマクロについて書いていきます。

私ブランボンが伝える AutoHotkey を使ってキーマクロを作る方法は以下の単純なものです。

  • Send
  • Sleep
  • SetKeyDelay

この3つの AutoHotkeyのコマンド を使ってキーマクロを作る方法をこのページで紹介します。

これらを使うだけで十分なキーマクロを作っていく事ができます。

実際、私ブランボンが TextRunRun を使って何かをする場合、80% がこの3つの AHKコマンド を使っただけのキーマクロを使って動作させる事だったりします。

この3つの使い方を知ればよいだけなので、 AutoHotkey についてよく知らないユーザーでもキーマクロを作れるのではないかと思います。

ここで言うキーマクロとは

ここではキーマクロという言葉は、キーを順番に送信するもの、という意味でこの言葉をつかっています。

続きを見る

本来の意味は違うものだと思う方もいるかもしれません。

ですが、ここでは余り難しい意味でとらえないでほしいと思います。

SendAutoHotkeyのコマンド を使う事で指定のキーを送信します。

以下の例は、 ABC を押した事と同じ事になるものです。

Send , a
Send , b
Send , c

さて、以上の様に、 Send を続けざまに使っても別にいいのですが、 実際使ってみると Send を 2回以上使う場合キーの送信が早すぎるため、以下の様に Sleep を挟んでおくことを薦めます。

Send , a
Sleep , 200
Send , b
Sleep , 200
Send , c

SleepAutoHotkeyのコマンド は、指定時間なにもせず待機させる効果があるものです。

実際には Sleep を何度も使う事になるので、 SetKeyDelay の方を使う事を薦めます。

以下のものは、さっきのものと同じ動作になるものです。

SetKeyDelay , 200
Send , a
Send , b
Send , c

この様に、 SetKeyDelay を使えば、キーとキーの間に Sleep を一つ一つ書く手間を省くことができます。

さて、実は伝えたい事はこれで以上です。

これらさえ知っておけば AutoHotkey でキーマクロを作れると思います。

前書きの時点で、教える事を基本的に伝え終えたといっていいです。

AutoHotkey を使って手っ取り早く何かをする処理を作る時、基本的にはこの SendSleepSetKeyDelay の3つを基本的に使ったものである事がほとんどです。

私ブランボンの場合は、 TextRunRun で作って使う訳ですが。

これ以降もこのページは続きますが、ほとんど補足といっていいような内容です。

AutoHotkey についてよく知らない方や、 これから知りたいと思う方はこの後に書いている事も読んでいって欲しいです。

Send

Send の使い方ついて説明します。

以下は Send の書式です。

Send , Keys

Send の後の Keys の箇所にキーを表す文字を指定します。

早速ですが、 Send の事を説明する前に、 AutoHotkey のルールとして知っておいてもらいたい事があります。

AutoHotkeyのコマンド は、コマンドオプションを指定します。

今回の Send の例で言えば、 Keys の箇所の事です。

AutoHotkeyのコマンド と コマンドオプション は、 「 , 」 ( カンマ )の文字で区切ります。

コマンドオプションが複数ある場合、コマンドオプションごとに 「 , 」 で区切ります。

それと、ショートカットキーで使われる文字の事を説明します。

AutoHotkey では、 CtrlAltShift のキーを以下の文字で表します。

Ctrl

→

^

Alt

→

!

Shift

→

+

Windowsキー

→

#

AutoHotkey でショートカットキーの文字を表す場合はこれらの記号を使います。

ですので、 Ctrl + A のキーを送信する処理の場合は以下の記述をします。

Send  ,  ^a

ここからは Send の説明を再開します。

2文字以上のキーは { } の中に記入する

Send を使う場合、一文字で表せないキーは { } を使って、その中に記入して表します。

Send  ,  {End}
Send  ,  {Space}

F1 などのキーも { } を使います。

Send  ,  {F1}

ショートカットキーを組み合わせて使う場合は以下の様にします。

Send  ,  +^{Right}

Shift + Ctrl + → を送信する例です。

変換キー などのキーは、キーコードというものを使って表します。

Send  ,  {vk1C}

どの文字がどのキーを表すかは、 AutoHotkey Wiki のキーリストのページなどを参考にしてください。

外様のサイト

AutoHotkey Wiki は、この TextRunRun のブログと全く関係のない別のWebサイトです。

AutoHotkey を説明している代表的なWebサイトなので参考例として挙げています。

移る AutoHotkey Wiki

このWebサイトの中の以下のページを参考例として載せておきます。

移る キーリスト – AutoHotkey Wiki

Sleep

SleepAutoHotkeyのコマンド は指定した時間の間、待機させる効果があるものです。

Sleep , Delay

コマンドオプションの Delay の部分にミリ秒単位の数字を指定します。

1000 を指定すると 1秒 を指定した事になります。
よって 200 の指定は、 0.2秒 待機させる事になります。

キーマクロの様に、キーを連続で送信する場合は先程の例の様に少し間隔を開ける様にした方がよいと思います。

この少しの間隔を開ける様にしない場合、キーとキーの間隔が早すぎるため、不便に感じてしまう事が多いと思います。

クイズ

タスクトレイの中にあるアイコンの、どれかのアイコンの右クリックメニューを表示するキーマクロを作ってみてください。

続きを見る

ヒント というかぼぼ答え

  • Windowsキー と B でタスクトレイにフォーカスします。
    ( #b の指定でそれが出来ます。 )
  • その後、 {Enter} でタスクトレイの中身を表示します。
  • {Up} でタスクトレイの最後のアイコンにフォーカスします。
  • {Left} で一つ前のアイコンにフォーカスします。
  • {AppsKey} で右クリックメニューを表示する事と同じ事ができます。

答え

こんな感じのものになります。

Send , #b
Sleep , 200
Send , {Enter}
Sleep , 200
Send , {Up}
Sleep , 200
Send , {AppsKey}

SetKeyDelay

SetKeyDelayAutoHotkeyのコマンド は、 Send などを使用した際のキーの間隔を設定するものです。

SetKeyDelay [ , Delay , PressDuration , Play ]

先ほど説明した様に、 Sleep を一回一回記入する手間を省く事に使えます。

コマンドオプションが3つあります。

Delay は Sleep の Delay の部分と同じです。キーとキーの間隔を空ける時間を指定します。

ミリ秒単位の数字を指定します。

PressDuration はキーを押してから離すまでの間隔を指定する箇所です。

こちらもミリ秒単位の数字を指定します。

Play のオプションもありますが、コアなユーザーだけが使う様なオプションのためここでは説明しません。

コマンドオプションが [ ] の文字で括られています。

これは、その箇所は記入しない使い方もある事を意味しています。

SetKeyDelay の場合、 PressDuration の箇所を記入せずに省略する使い方をしてもよいわけです。

その逆で、 Delay を省略して( カラの文字にして )、 PressDuration の箇所だけを記入する使い方もできます。

先程も例をだしましたが、 SetKeyDelay を使うと、 Sleep を一回一回記入せずに使えます。

以下の2つは同じ様なものです。

Send , {Home}
Sleep , 200
Send , +{End}
Sleep , 200
Send , ^c
SetKeyDelay , 200
Send , {Home}
Send , +{End}
Send , ^c

一行をコピーする処理です。

設定をするわけなので、 Send を使う前に指定しておきます。

この SetKeyDelay の設定の効果は、実行している処理が終わるまでです。その処理が終わると、設定する前の初期値に戻ります。

実行している処理が終わるまでというか、実行に使ったサブルーチンが終わるまでが設定の効果範囲です。

それと、 SetKeyDelay の初期値は A_KeyDelay の組み込み変数から分かります。

SetKeyDelay の効果がある中で Sleep を使う事で、余分に間隔をあける事になります。

SetKeyDelay , 200
Send , {Home}
Send , +{End}
Send , ^c
Sleep , 300
Send , {Delete}

一行をコピーして削除する処理です。

上記の例では、 Sleep の個所は、 500 ミリ秒の間隔をあける事になります。

クイズ

エディターのカーソルがある一行の文字を一つ下の行に移動するキーマクロを作ってください。

続きを見る

ヒント

  • さっきの例の続きを使うとよいです。
  • Delete 、 Down 、 Enter 、 Up を使うとよいと思います。
  • Ctrl + V は ^v の指定です。

答え

大体こんな感じで出来ます。

SetKeyDelay , 200
Send , {Home}
Send , +{End}
Send , ^c
Sleep , 300
Send , {Delete}
Send , {Delete}
Sleep , 300
Send , {Down}
Sleep , 300
Send , {Enter}
Sleep , 300
Send , {Up}
Sleep , 300
Send , ^v

動作した時の挙動が分かりやすい様に、 Sleep を使って間隔をあけています。

PressDuration について

SetKeyDelay の2つめのコマンドオプションの PressDuration についての事です。

先程書きましたが、キーを押してから離すまでの時間を指定できます。

Send を使った場合、キーを押してから離すまでの時間が早すぎるため、 ソフトによっては、キーが認識できない事があります。

この PressDuration を設定してから使う事で、 Send でキーが認識できないソフトに、キーを送る事が可能になったりする事があります。

私ブランボンの勝手な経験談で語りますが、パソコン上で動作するゲームなどは、 Send が効かない事が多いです。

理由は、キーを押してから離すまでの時間が早すぎる事が原因のようで、 PressDuration を指定した SetKeyDelay を使う事で認識できるようです。

SetKeyDelay , 30 , 50

などを指定

個人的に多くの場合は効果があると思います。

特定のソフトなどで Send を使っても効かない場合は、 PressDuration の指定を試してみると良いと思います。

後書き

このページでは、 AutoHotkey を使った簡単なキーマクロの作り方について書きました。

さすがに SendSleepSetKeyDelay の3つだけでは今後に長く使っていけるキーマクロを作れるケースはほとんど無いかもしれません。

ですが、単発的に「その都度使う」といったものを作る場合はこれらだけで作って使う場合がほとんどだったりします。

手っ取り早く作って、その時の目的を叶えるための「使っては捨てる」ショートカットキーなどはこれで十分だったりします。

ですので、これを知っていれば便利なキーマクロを使いながらパソコンを使って行けるのではないかと思います。

初回投稿日:

最終更新日:

カテゴリー:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です