【AutoHotkey】Alt+アルファベットキーでアプリを起動する
MacではおなじみのRaycast。Windowsには未対応・・・
突然ですが私は仕事ではMacを使っています。
Macで仕事を行う際、普段はRaycastというアプリを使ってAlt+アルファベットキーでアプリを起動しています。
プログラミングを行う際は設計や実装に関してわからないことをブラウザで調べることが多く、
エディタとブラウザを行き来しながら作業をする機会がよくあります😯
Raycastを使う前はマウスでアプリを切り替えることに特に不便さを感じることはなかったのですが、
慣れてきた今ではRaycastなしでプログラミングをするのに少し苦労を覚えそうです😅
そんなRaycastですが、対応しているOSは今日時点でMacのみ。
私がプライベートで使っているのはWindowsなので、Raycastを使うことができません😢
(将来的に対応する予定みたいではあるみたいですが)
うーん、WindowsでRaycastみたいな操作ができるようになるアプリないかなぁ・・・
と探しているとき、下記の記事を見つけました👀
どうやらAutoHotkeyというアプリでRaycastで行っていたような操作を実現できるとのことです😯
ただGUIでのホットキーの設定はサポートされていないため、AutoHotkey用のスクリプトを書く必要があります。
ちょっと面倒だなぁと最初は思っていましたが、実際に触ってみたら簡単にAlt+アルファベットキーでアプリを起動できるようになりました✨
そこで今回は私と同じようにAlt+アルファベットキーでアプリを起動したい方向けにAutoHotkeyの使い方を紹介します🤗
AutoHotkeyのインストール
まずはAutoHotkeyのインストールをしましょう✊
ダウンロードできるファイルはv2.0とv1.1があるみたいですが、
v1.1はdeprecated(廃止)と書いてあるのでv2.0を選ぶので良いと思います。
ダウンロードしたら手順に沿ってインストールを完了させましょう。
インストールが無事終わったらAutohotkey Dash
というアプリが起動するはずです🙂↕️
AutoHotkeyを有効にする方法
まずはAutoHotkeyをどういう手順で使っていくかイメージできるようにしておきたいですね。
ふむふむ、チュートリアルをさらっと触ってみた感じ、AutoHotkeyを使う一連の手順は下記になるみたいです。
1.任意のディレクトリにAutoHotkey用のスクリプトを書き込むファイル(拡張子は.ahk
)を作成する
2.1のファイルにスクリプトを書き込んで保存する
3.1のファイルを実行する
4.AutoHotkeyが有効になる
AutoHotkey起動中はツールバーにアイコンが表示されるので、今動いているかどうかの目安にできそうです😉
スクリプトの記述方法
では早速スクリプトの書き方を覚えていきましょう!✊
AutoHotkey用のスクリプトの記述方法は下記のようになります。
キーの名前::
{
やりたいことをここに書く
}
;例
h::
{
Msgbox "Hello world!"
}
変数や定数を宣言して式の中で使うこともできるみたいですが、
今回のようにシンプルに使用したい場合は特に必要はなさそうでした😊
ちなみにコメントは下記のように記述します。
//
でコメントを書くことはできないようなので注意しましょう🤫
;一行でコメントしたい場合は「;」を使う
/*
複数行をコメントにしたい場合は/**/で囲む
*/
Run:アプリケーションを起動する
さて、今回やりたいことの1つ目は「Alt+アルファベットキーを押した際にアプリケーションが起動すること」になります😏
※私の押しやすさの好みでAltにしているだけなので、他のキーの組み合わせでももちろん大丈夫です😌
アプリケーションの起動はRun
で行います。
Runの後には実行する対象
を記述します。
例えばGoogle Chromeなら"chrome",
VS Codeなら"Code"と記述します。
※末尾の.exe
は省略可能とのことでした
Run アプリケーション名
;例: Alt+CキーでGoogle Chromeを起動
!c::{
Run "chrome"
}
これをスクリプトに書き加えてファイルを保存→ファイルを実行すればGoogle Chromeが起動します👏
WinExist:アプリケーションが起動しているか確認する
やりたいことの1つ目を早速達成しましたね👏
ただ、Runは実行されるたびに新しいウィンドウを作成してしまうようです😯
毎回アプリを起動するたびに新しいウィンドウを作る必要はないので、
「アプリがすでに立ち上がっていたらそれにフォーカスを移して!」としたいところ🤔
なので「アプリがすでに立ち上がっていたら」の条件を加えてみましょう。
条件分岐の方法はAutoHotkeyには多数用意されています。
その中から今回は指定されたウィンドウが存在するかどうかを調べることができるWinExist
という関数が使えそうです🙌
WinExistを使用する際は引数に「どのアプリを対象とするか」を渡す必要があります。
今回はGoogle Chromeを対象としたいのでahk_exe chrome.exe
を引数に渡します。
/*
chrome
*/
!c::
{
if not WinExist("ahk_exe chrome.exe"){
Run "chrome"
} else {
//TODO: フォーカスを移す関数を書く
}
}
このように記述することで、
- chromeが起動していない場合は、chromeを実行する
- 起動している場合はフォーカスを移す関数を実行する
という動作を実現できます😍
WinActivate: 指定したウィンドウをアクティブにする
最後に「フォーカスを移す関数」を書いていきましょう!
これに関してはWinActivate
という関数で実現できるみたいです✨
WinActivateは事前にWinExistを使っていた場合、
WinExistで補足した対象をターゲットに、ウィンドウをアクティブにしてくれます。
そのため特に引数を指定してあげる必要はないみたいです😗
/*
chrおまけ
*/
!c::
{
if not WinExist("ahk_exe chrome.exe"){
Run "chrome"
} else {
WinActivate
}
}
/*
chrome
*/
!v::
{
if not WinExist("ahk_exe Code.exe"){
Run "Code"
} else {
WinActivate
}
}
これで必要な実装はすべて終えました🥹
最後に実際に意図したとおりに動作するか確認してみましょう😎
ちょっとわかりにくいかもしれませんが、無事Alt+アルファベットキーでアクティブなウィンドウを切り替えることができました😤
おまけ: ウィンドウの属性の情報を簡単に調べる方法
上記でahk_exe
やchrome.exe
などの情報を使う必要があることは理解していただけたと思いますが、
これっていちいち調べるの大変ですよね😅
私も最初はエクスプローラーからファイルを探していたのですが、
実はもっと簡単に調べられる方法がAutoHotkeyの機能として提供されていました😯
AutoHotkey Dash
のメニューの中にWindow Spy
を選択してみてください。
すると下記のようなウィンドウが表示されます。
このウィンドウが開いた状態で情報を取得したいウィンドウの上にカーソルを移動させるとahk_exe
をはじめとしたウィンドウに関する各種情報を表示してくれます🥰
この機能があれば気軽にスクリプトを書いていけそうですね👍
最後に
いかがでしたでしょうか。
普段Raycastでアプリの起動を行っている人には"刺さる"アプリだと個人的に思いました。
紹介したこと以外にももっと便利なことができるみたいなので、おすすめの使い方とかがあればぜひコメントで教えてください🤗
それではここまでお付き合いいただきありがとうございました!
また次回別の記事でお会いできたら嬉しいです🙂↕️
Discussion