こんにちは、チケットは取れているのに延期していたライブの日取りがやっと決まってワクワクしている生焼けです。
今回はAutoHotkeyでウィンドウ名・ソフトごとにショートカットキーの動作を変える方法を解説します。
前回の記事&関連記事
よく使う修飾キーの表
キー指定の記号 | 意味 |
^ | Ctrl |
+ | Shift |
! | Alt |
# | Windowsキー |
書き方
例えば、あるソフトだけで動作するショートカットキーを作りたい時どうするかというと…
#IfWinActive ウィンドウの指定
と
#IfWinActive
で使いたいショートカットキーを囲むだけです。
具体的に書くと、
#IfWinActive ahk_exe Illustrator.exe
^+!a::
Send,b
return
^+!b::
Send,b
return
#IfWinActive
のような感じです。
ウィンドウの指定の仕方
基本的には
#IfWinActive 種類 名前
のように書きます。それぞれの間にはスペースを入れてください。
タイトルだけは”#IfWinActive”の種類を書かずにスペースを空けるだけでそのまま書けば大丈夫です。
種類 | 名前 | 例(Chromeの場合) |
(なし) | タイトル名 | 新しいタブ – Google Chrome |
ahk_class | クラス名 | Chrome_WidgetWin_1 |
ahk_exe | 実行ファイル名 | chrome.exe |
タイトル名やクラス名についての解説や取得の仕方は後ほど説明します。
タイトル名の書き方
#IfWinActive 新しいタブ - Google Chrome
注意点
上のようにタイトル名の中にスペースが入っていても問題なく認識します。
ただし、“,”と”%”だけは ` でエスケープしないとエラーがでてしまいます。
下はAmazonのTOPページのタイトル名です。”,”が入ってしまっているのでAはエラーになりますがBのように直前にこの記号を入れることで正常に動作します。
;A:ダメなやつ↓
Amazon | 本, ファッション, 家電から食品まで | アマゾン - Google Chrome
;B:OKなやつ↓
Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome
ややこしいですが、このエスケープ文字はShift+7(‘)の方ではなく、Shift+@(`)の方です。
クラス名(ahk_class)の書き方
#IfWinActive ahk_class Chrome_WidgetWin_1
実行ファイル名(ahk_exe)の書き方
#IfWinActive ahk_exe chrome.exe
ウィンドウのタイトルの取得の仕方
スクリプトを起動させていると、タスクトレイに緑色のHのアイコンが出ていると思います。
それを右クリックして出てくる中に「Window Spy」という怪しげな名前のものがあるので、それをクリックしてください。
すると下のようなウィンドウが出てきます。
強制的に最前面に表示されるので少し鬱陶しいですが、最小化や閉じるで消せるので安心してください。
これを最前面に出したまま、タイトルを取得したいウィンドウをアクティブにします(クリックすればOK)。
すると、“Window Title,Class and Process”の欄に現在のウィンドウの情報が現れます。
これらのいずれかを「ウィンドウの指定」の部分に記述します。
それぞれにメリットとデメリットがあるので解説していきます。
タイトル名
先程の画像でいうと”syortcutkey.ahk – メモ帳”がタイトル名です。大抵はウィンドウの左上に書いてある文字がタイトル名となります。
これを指定するメリットは同じソフトや実行ファイルでもタイトルが違えば、動作を変えられるというところです。
例えば、同じChromeでもサイトによって動作を変える…みたいな事ができます。
ただし、デフォルトでは条件が前方一致になっているので、その設定を変える必要がある場合もあります。(いつか解説します)
ahk_class クラス名
同じソフトでも複数ウィンドウがあるものだと、それぞれウィンドウごとにクラス名が違ったりします。
Photoshopなどでメイン画面のクラス名はPhotoshopですが、色調補正や別名保存などのウィンドウではまた違ったクラス名が割り当てられています。
同じソフトでも、クラス名によって違うショートカットキーを使いたいとき…とかに使えます。
また、タイトル名でも実行ファイル名で指定してもだめな時、クラス名で指定したらいけた!みたいなときもあります。
ちょっと前はPhotoshopでAutoHotkeyがうまく動かなかったのですが、クラス名で指定すればいけたことがありました。(今は大丈夫そう?)
ahk_exe 実行ファイル名
とりあえず、ソフトごとに使いわけたい!って時はこれを選べば大丈夫です。
たまーに、この指定の仕方でうまく行かない時があるので、そのときはクラス名を使ってみてください。
おまけ ahk_pid ウィンドウのハンドル
ソフトを起動するたびに数字が異なります。つまり、今回のウィンドウの指定の場合は使えません。
細かく使い分けたい場合
どのソフトでも使いたいショートカットキーがある場合
どんなときも作動するショートカットキーをつくりたい場合は、
#IfWinActive ahk_exe Illustrator.exe
^+!a::
Send,b
return
^+!b::
Send,b
return
#IfWinActive
^+!c::
Send,b
return
のように書くと、^+!aと^+!bはイラレだけで動き、^+!cはイラレでもほかのソフトでも何も起動してなくても動作します。
複数書きたい時
もちろんいくつでも指定できるので
;イラレ用
#IfWinActive ahk_exe Illustrator.exe
^+!a::
Send,b
return
#IfWinActive
;Photoshop用
#IfWinActive ahk_exe Photoshop.exe
^+!b::
Send,b
return
#IfWinActive
;全般用
^+!c::
Send,b
return
のように増やしていけば大丈夫です。
“IfWinActive”を最後に書くのを忘れないように!
優先順位は?
何も指定しない<“IfWinActive~”で指定
何も指定せずに書いたものより、”IfWinActive~”で指定した方が優先されます。
どちらも”IfWinActive~”で指定
重複する条件だった場合、上に書いてあるものが優先されます。
例えば、下のように「Chromeで動くショートカットキー」と「Chromeで表示したAmazonのTopページで動くショートカットキー」が存在する時は、上に書いてあるChromeの方が優先されます。
;Chrome用
#IfWinActive ahk_exe chrome.exe
^+a::
send,1
return
#IfWinActive
;AmazonTOPページ用
#IfWinActive Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome
^+a::
send,5
return
#IfWinActive
上の場合、AmazonのTOPページでもほかのサイトでもCtrl+Shift+Aを押せば1と表示される。
Amazonと他のページで動作を変えたい場合は、Amazonを上に書きます。
;AmazonTOPページ用
#IfWinActive Amazon | 本`, ファッション`, 家電から食品まで | アマゾン - Google Chrome
^+a::
send,5
return
#IfWinActive
;Chrome用
#IfWinActive ahk_exe chrome.exe
^+a::
send,1
return
#IfWinActive
これで、Ctrl+Shift+Aを押した場合、AmazonサイトのTOPでは5と入力され、ほかのサイトでは1と表示されるようになります。
まとめ
今回はウィンドウのタイトルやソフトによって動かすショートカットキーを変える方法をまとめました。
これで、AutoHotkeyの基本的な機能についての説明は終わりです。
また、色々なコマンドやほかの機能についても解説していくので気になった方はまた見てみて下さい。
日本語版Wiki