AutoHotKeyでOBS未起動時は起動、起動時は手前に移動

Stream DeckやLoupeDeckなどのマクロキーパッドでOBS Studio(でもなんでも)の起動ボタンを作る時、単純に.exeを指定して起動しようとすると、既に起動しているインスタンスがあった時に多重起動警告が出てしまいます。起動オプションをざっと眺めても、警告を出なくすることはできるものの、多重起動にはなってしまうぽい。

そこで、AutoHotKeyを使って

  • 未起動時は起動する
  • 既に起動していたらそちらのウインドウに切り替える

という動作を実現してみました。このスクリプトを適当な空いてるキー(下のコード例ではCtrl+Shift+Alt+F1)にアサインし、それをStream Deckで呼び出す感じです。

他のアプリやゲームに応用したい時は、

  • SetWorkingDir(作業フォルダの指定)の行に実行したいファイルを含むフォルダのパス(アプリによっては不要かも)
  • Run(実行ファイルの指定)の行に起動したい.exeファイルのフルパス
  • WinExist(起動中かの判定条件)のところは”ahk_exe (.exeファイル名)”

ぶnにそれぞれ置き換えればよいはずです。この例ではWinExistで実行中プロセスから該当.exe名を探して判定しますが、AutoHotKeyでは他にもウインドウタイトルとかでもマッチして判定できるので、例えば「ブラウザで特定のタイトル文字列を含むタブが存在したら」みたいな判定もできると思います。

AutoHotKeyのインストールと初期設定が必要なのでややまわりくどいですが、Stream Deck以外からでも、なんなら直接キーボードショートカットとしても使えるので参考まで。

AYANEO AIRのボタンをAutoHotKeyでカスタムする

AYANEO AIRのコントローラーボタンを動画プレーヤーなどゲーム以外のアプリケーションでも活用するため、AutoHotKeyでイベントを取得できるか調べてみました。

2022.12.26追記: AutoHotKeyのスクリプト記法は2.0でリニューアルされました。以下のスクリプトは1.x時代のもので最新版では動かない可能性があります。

まず、Steamアプリの設定画面で確認したところ、Xbox 360コントローラーとして認識されていることがわかりました。

「検出されたコントローラ」に「Xbox 360コントローラ」と表示されている

それを元にAutoHotKeyのマニュアルを調べると、ボタンはJoy1,2,3…で取得できることが判明。アナログスティックやL/Rボタン(アナログボタン)も使えそうですが当面必要を感じないのでここでは割愛します。

右側のA/B/X/YボタンとLB/RBボタン、そして左下にあるViewボタンとMenuボタン(Xbox 360コントローラーでの名称)は下記のようなJoy1〜8で認識できました。

AutoHotKeyの設定ファイルの書き方はググっていただければと思いますが、とりあえずこんな感じで書けば、{}で指定したアルファベットが入力されるはずです(;以降はコメント)。ただし、AYANEOのユーテリティ側でAボタンは左クリック、Xボタンは右クリックにアサインされていて、左アナログスティックと組み合わせてマウスとして使うようになっているので、これを書き換えてしまうのは実用的ではないかも知れません。

左の十字ボタンについては直接はキーイベントを拾えず、まずはSteam設定の「コントローラ」→「デスクトップ設定」で「十字キー」か「ボタンパッド」にして、なにかしらのキーを割り当ててやる必要がありました。

なぜか解像度認識がおかしく一部が欠けて表示され使いづらいことこの上なし…

右下の2ボタンはAYANEO独自ボタンで触れなさそう。

■まとめ

とりあえずアナログ系以外はAutoHotKeyで使えることが判明し一安心です。AutoHotKeyならば特定のアプリケーション毎にアサインを変更することもできるので、ゲームタイトル毎に設定を切り替えることもできます。ウインドウタイトルで識別すれば、同じブラウザ上でも、電子書籍サイトや動画サイトごとへの対応も可能。これから設定を煮詰めていこうと思います。