💡

AutoHotkeyを使ってワンストロークでSuperPuttyのターミナルをフォーカスする

1 min read

SuperPuttyでリモートの計算機にログインしつつ,エディタでリモートのファイルを編集するなどの作業をは比較的多いと思います.エディタからSuperPuttyへ戻る際,いつものようにAlt+TabでアクティブアプリをSuperPuttyへ切り替えても,ターミナル画面をクリックされるまではフォーカスされない点に不満を感じていた.今回AutoHotkeyで解決できることに気づいたので,その設定内容を紹介します.

私はAutoHotkeyの設定ファイルに以下のようなショートカットを登録することで,ワンストロークでのフォーカス切り替えを実現しました.

<^F12:: ;L-Ctrl+F12でSuperPuttyのウィンドウをアクティブにする
    Process, Exist, SuperPutty.exe
    If ErrorLevel = 0                      ;起動してなかったら起動する
    {
        Run "C:\[SuperPuttyがインストールされてるフォルダ]\SuperPutty.exe"
        WinWait, SuperPuTTY, , 2 ;Windowが出るまで最大2秒待機
        If ErrorLevel <> 0 ; 待機後にまだWindowsが出なかった場合
        {
          MsgBox, WinWait timed out.
          Return
        }
        Process, Exist, SuperPutty.exe ;プロセスIDを取得
    }
    ;SuperPuttyが起動していればErrorLevel変数にプロセスIDが格納されているはず
    If ErrorLevel <> 0                    
    {
        WinActivate,ahk_pid %ErrorLevel%    ;SuperPutyYのウィンドウをアクティブにする
        WinGetActiveStats, Title, Width, Height, X, Y ;ウィンドウのタイトルや位置情報取得
        WinMaximize, %Title% ;ウィンドウを最大化
        WinGetActiveStats, Title, Width, Height, X, Y ;最大化後の情報を再度取得
        MouseMove, 200, 200, 0 ;だいたいこの辺にターミナルのウィンドウがある.
        Click, ;直ちにキー入力できるようにターミナルをアクティブにする(ターミナル起動時のみ)
    }
    Return

AutoHotkeyで複数行のコマンドを書くのは初めてなので,冗長な部分もあると思います.より良い実現方法があればアドバイスいただけると幸いです.