どーもヤマジです。
自分で好きなようにショートカットが作れたり、キーの割り当てを変更できたりする超便利なツール「AutoHotkey」。
使い方さえ分かれば、自分の作業環境に合わせていくらでもショートカットが作れちゃうので、極めればPC作業の効率が爆上がりします。ブログでは、そんな神ツールAutoHotkeyの基本的なところから、ちょっとした応用例などについての記事を書いてきましたので、全てこのページにまとめました。
基礎編
この記事では、インストール方法とAutoHotkeyの超基本的な使い方を解説しています。少し長めの記事ですが、内容自体は割とカンタンなので、書いてある通りに実際に手を動かしながら読み進めるとすぐに使いこなせるようになると思います。
基本的なコードの書き方は☟のようになっていてメッチャシンプルです。
入力するキー::Send, {出力するキー}
入力するキー1 & 入力するキー2::Send, {出力するキー}
修飾キーとは、[Ctrlキー][Shiftキー][Altキー][Winキー]の4つです。
修飾キー | AutoHotkeyでの記述 |
---|---|
[Ctrlキー] | ^ |
[Shiftキー] | + |
[Altキー] | ! |
[Winキー] | # |
通常、AutoHotkeyでは入力キーとして2つのキーまでしか同時に使えません。
しかし修飾キーは通常のキーとしてはカウントされないため、修飾キー+通常キーx2の合計3つのキー同時押し入力なども可能になります。
ただ修飾キーは、その名の通り「通常のキーを修飾するキー」なので、それ単体で使用することはできません。
修飾キーはひらがなやカタカナで濁音のために使う「”」みたいなものです。あの「”」という記号も他の文字がなければ使えませんよね。
つまり修飾キーの後には必ずアルファベットや数字などの通常キーが記述されなければなりませんので、ご注意ください。
既にあるショートカットキーも、この修飾キーを足せば別のショートカットキーとして使うこともできるので、やりようによっては非常に便利な機能です。
この記事では、修飾キーを用いた使用例も載せています。
AutoHotkeyではキーの記述法としていくつか種類があるのですが、個人的にはスキャンコードを使った方が動作が安定している場合があったので、スキャンコードの一覧表を作ってみました。
自作ショートカットを作成する際にぜひご活用ください。
応用編 (使用例)
Windows10では、[Windowsキー]+[Shift]+[S]を同時押しすることで、スクリーンショット機能を使用できます。
メチャ便利な機能ですが、デフォルトのショートカットキーではキーを3つ同時押ししなければならず、しかもこの3つが絶妙に押しづらい感じになってます。
そんなスクリーンショットのショートカットキーをAutoHotkeyで使いやすくしたろやないかい!っていう記事です。
ドイツ語や他の言語には英語にはない特殊文字などがあります。
これらの文字を入力する場合は、ネットで見つけてきてコピペするか、入力言語を日本語から切り替えて打ち込む必要があり、いずれにせよ使用頻度が高い場合はゲロ吐きそうなくらいメンドイです。
AutoHotkeyで一度ショートカットを作ってしまえば、あとはコピペも入力言語切り替えもいらず、日本語入力のままでこうした特殊文字を打てるようになります。
この記事では、ドイツ語のウムラウトやエスツェットの入力法を紹介していますが、応用すれば他の特殊文字や顔文字なんかもカンタンに一発で呼び出せるようになります。
デュアル/マルチモニター間でウィンドウを移動させるときのショートカットShift+Win+←/→って正直使いづらいですよね。
指3本使う上に、矢印キーのせいで、いちいちマウスから手を離さなければならないのは、ショートカットキーとして破綻している気がします。
できれば片手でサクッと済ませたいところです。
ウィンドウ移動のショートカットキーのスクリプトは以下の通りです。前半の黄色い部分を自分の好きなキーコードに書き換えてお使いください。
入力するキー1 & 入力するキー2::Send, {RWin Down}{Shift Down}{right}{Shift Up}{RWin Up}
入力するキー1 & 入力するキー2::Send, {RWin Down}{Shift Down}{left}{Shift Up}{RWin Up}
この記事ではそんな、使いづらいウィンドウ移動のショートカットキーのカスタマイズ方法を詳しく解説しています。
ここまで紹介したものは全て、キーが同時に出力されるスクリプトでした。
出力キーを同時ではなく時間差で認識させるためには、以下のように記述します:
入力するキー1 & 入力するキー2::
Send, {出力するキー}
Sleep, 100
Send, {出力するキー}
return
出力するキーの数によってSend, {出力するキー}やSleepの数を増やしてください。
ちなみにSleepの100の部分は次のキーが出力されるまでの待機時間です。単位はミリ秒です。
より詳しい解説はこちらの記事を参照ください。
オリジナルのショートカットキーを作ったはいいけど、自分が使っているアプリで既に同じ組み合わせのショートカットが存在していたりすると挙動がおかしくなってたりしますよね。
そんな時は、以下のコードを使うことで特定のアプリを開いている時だけ動作するショートカットキーが作れます。
#IfWinActive,ahk_exe アプリ名.exe
入力するキー1 & 入力するキー2::
Send, {出力するキー}
return
#IfWinActive
このコードを使うことで同じショートカットキーをアプリ毎に別の挙動で使いまわすことも可能です。
[ahk_exe アプリ名.exe]の部分の調べ方など詳細は以下の記事をご参照ください。
こんにちは!お久しぶりです。
少しお聞きしたいことがあり、コメントさせていただきました。
本当は、問い合わせフォームなどで送るのが正しいんでしょうが、それらしき場所が見当たらなかったので、この記事に書かせていただきます。場違いでしたら、削除してください。
AHKで、TweetDeck(Twitter の上位互換バージョンのアプリ)を起動している間だけ、マウスのサイドボタン(進む)+マウスホイール回転で水平(横)スクロールを可能にしたいと思って、以下のコードを作成しました。
;—–【TweetDeck】サイドボタン進む+マウスホイールで水平スクロール—–
#IfWinActive TweetDeck ;TweetDeckが起動している間だけ発動
~XButton2 & WheelUp:: ;マウスのサイドボタン(進む)+マウスホイール下回転で右に動かす
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 0, 0, %fcontrol%, ahk_id %id%
Return
~XButton2 & WheelDown:: ;マウスのサイドボタン(進む)+マウスホイール上回転で左に動かす
MouseGetPos,,,id, fcontrol,1
SendMessage, 0x114, 1, 0, %fcontrol%, ahk_id %id%
Return
#IfWinActive
;—–コード終わり—–
それで、確認したところうまく動作しました!!が、少し気になったことがあります。このコードの記述は綺麗でしょうか?ちゃんと動作するので問題はないんですが、何か汚いような気もして…。
例えば、「Returnは2つもいらない」とか「#IfWinActive」は2つ必要だとか…。
よろしければ正しい記述を教えていただきたいと思いご連絡させていただきました。かなり図々しくて申し訳ないです。
それともう1つ…。
「#IfWinActive」でウィンドウタイトルを指定する時に、特定の文字列が入っていたら対象にする…といったようにしたい時はどのように記述すればよろしいでしょうか?
例えば、タブ名に「TweetDeck」と入っているサイトだけで発動するようにするといった感じです。
色々調べてみたのですが、どうにもうまく発動せず…。
「#IfWinActive TweetDeck」だと、タブ名やウィンドウ名が「TweetDeck」じゃないと発動しませんでした。「テスト – TweetDeck」などといった場合は発動しませんでした。僕の記述が間違っている可能性もおおいにありますが…。
調べると、どのサイトもウィンドウクラスやプロセス名(ahk_exe Notepad.exeみたいなのです)の記述方法しか書かれておらず…。特定のアプリで、なおかつ特定のファイル名(タブ名)の時だけ発動する…といったことはできないのでしょうか?
久しぶりにも関わらず、図々しく質問ばかりで大変申し訳ないです。お忙しいと思うので、もしよければでいいので返信くださればなと思います…。
長文失礼しました。
失礼します。