AutoHotkeyでZWIFT起動と画面設定をスマート化する

目次

ZWIFT起動と画面設定がめんどくさい

・ZWIFT起動

私は普段ZWIFTする際、PC電源を入れてZWIFTを起動させている間に着替えをしています。

ZWIFTのプログラム開始は自動化※していますが、最初に表示される「始めましょう」(Let’s Go)の画面はクリックかenterキー押しをしないと次の機器接続画面まで進めません

特に4本ローラー時のGrowtacのGT-eBOX(無線ハブ)は接続に時間が掛かるのでできるだけ早く接続画面に進んでおきたいのです。

※ZWIFTのプログラム開始の自動化は下記のとおりです

1.[Windowsキー] + [R]を押して「ファイル名を指定して実行」を開く。
2.「shell:startup」と入力し、OKをクリックしてフォルダを開く。
3.自動起動させたいアプリ(ZWIFT)のショートカットを、開いたフォルダにコピー&ペーストする。

・画面設定

私のZWIFT用PCの画面設定は画像のとおり2画面(画面拡張)設定です。

プロジェクターを下、小さいモバイル液晶を上になるように設定しています。

ZWIFTはフルスクリーンモードで起動すると常に最前面表示になり、画面を占有するため、途中で映画などが見れません

フルスクリーンモード・ウインドウモードの切り替えはZWIFTを再起動しないと有効にならないため、途中で切り替えることは不可能です。

よって、ZWIFTはウインドウモードで起動しています。

ウインドウモードだとサイズ変更・場所移動・最小化・最大化が自由に行えます。

ですがウインドウモードの上枠が邪魔になります

LEDがZWIFT画面の拡張効果を生み出すようにしたので余計に気になるようになりました。

画面とLED光の間に枠のバーがあることで連続性が少し失われてしまいます。

これを回避するため、ZWIFTウインドウの上枠のみを上画面(モバイル液晶)に逃がしました

上画面には上枠部分のみ出ている状態です。

これでフルスクリーンと同じ表示の疑似フルスクリーンになります

ですが、この画面配置がめんどくさい・・

ZWIFTウインドウを上枠分だけ大きくして、ちょうどいいところにマウスで持っていく必要があります。

やってられんわ!

AutoHotkeyで画面設定・「始めましょう」通過

AutoHotkey

チャッピーに教えてもらいました。

便利なソフトがあるんですね、しかも無料です。

キーボードの入力を別の入力に変換したり、簡単なプログラムを実行させたり(時間差も可)できます

ほかにも色々できるとは思いますが、私は詳しくないのでZWIFT関係の操作のみ使用します。

・スクリーン座標取得

先に、上枠を上画面に逃がした画面設定の座標を取得するためのスクリプト(プログラム)を作ります。

作っておくと闇雲に座標を入れて修正を繰り返すよりはるかに楽です。

インストールしたAutoHotKeyを開いてNew scriptで新しいAHKスクリプトを任意の場所に作ります。(スクリプト名はスクリーン座標取得など)

下記のスクリプトをコピペ(カーソルオンでボタンが出ます)、F5は任意で変えてOKです。

AHKスクリプトはメモ帳で開いて簡単に修正できます。

F5::
WinGetPos, X, Y, W, H, A
MsgBox, X=%X%`nY=%Y%`nW=%W%`nH=%H%
return

上書き保存してできたAHKスクリプトをダブルクリックしたあと、ZWIFTウインドウを表示したい大きさ・場所に設定します。

F5を押すと下画像のように現在の画面の設定情報が表示されるのでスクショするか紙に控えておきます。

XYはウインドウ左上の位置、WHはそこからの幅と高さです。

このスクリプトは小窓位置設定の時も使えます。

・起動後の位置調整と「はじめましょう」通過

新規でAHKスクリプトを作って(スクリプト名はzwift_screen_sizeなど)下記スクリプトをコピペ、先ほど控えたX、Y、W、Hをtarget:=に入力します。

このスクリプトは上下画面とも1920×1080ピクセルのFHD用ですが、ディスプレイ解像度によって座標が変わります。

ChatGPTに「このスクリプトを(自分のディスプレイ解像度)用に書き換えて」と言えば出力してくれると思います。

#Persistent
SetTitleMatchMode, 2
DetectHiddenWindows, Off

targetX := -9
targetY := 1035
targetW := 1951
targetH := 1136

winTitle := "Zwift"

moved1 := false
sentEnter := false
movedAfterEnter := false

Loop
{
    if WinExist(winTitle)
    {
        ; ① 起動直後:位置調整
        if (!moved1)
        {
            Sleep, 1500
            WinActivate, %winTitle%
            WinWaitActive, %winTitle%,, 3

            WinMove, %winTitle%,, %targetX%, %targetY%, %targetW%, %targetH%
            Sleep, 800
            WinMove, %winTitle%,, %targetX%, %targetY%, %targetW%, %targetH%

            moved1 := true
        }

        ; ② LET'S GO 通過
        if (!sentEnter)
        {
            Sleep, 7000
            WinActivate, %winTitle%
            WinWaitActive, %winTitle%,, 3

            CoordMode, Mouse, Window
            Click, 100, 100
            Sleep, 200
            Send, {Enter}

            sentEnter := true
        }

        ; ③ Enter後の再配置(2回だけ)
        if (sentEnter && !movedAfterEnter)
        {
            Sleep, 10000

            Loop, 2
            {
                WinActivate, %winTitle%
                WinMove, %winTitle%,, %targetX%, %targetY%, %targetW%, %targetH%
                Sleep, 1000
            }

            movedAfterEnter := true
        }
    }
    else
    {
        moved1 := false
        sentEnter := false
        movedAfterEnter := false
    }

    Sleep, 500
}

指示内容は

1.まずZwiftタイトルのウインドウを探して位置と大きさ調整(2.の誤クリック防止対策)

2.Zwiftウインドウをクリックしてアクティブにした後Enterで「始めましょう」通過

3.全画面になるまで待ってから再度位置・大きさ調整

という感じだと思います。

フルスクリーンと小窓を一瞬で切り替える

映画を観ながらペーサーと走りたい、イベントをクリアしたいということがあります。

こういうときのためにショートカットキーを作ります。

F6→左上に小窓

F7→右上に小窓

F8→小窓最前面解除

F9→ZWIFTフルスクリーンに戻す

です。

※F6~F8のキーが使えなくなって困る人は記事下のZWIFTショートカットキー一覧を参考に別キーを割り当ててください。

小窓は最前面に配置される設定です。(さらにウインドウ上枠も上画面に逃がす配置)

最前面(アクティブ)なのでアイテム使用やRideOn!も可能です。

F8の小窓最前面解除はPrimeVideoやNetflixで観たい映画を選ぶ際やネットサーフィンするときに小窓が邪魔になるための解除の際に使います。

F9を押せば、誤ってZWIFTウインドウを動かしてしまった場合もボタン一発で元に戻せます

; ================================
; F6 = Zwiftを左上に小窓表示(映画用)
; ================================
F6::
win := "ahk_exe ZwiftApp.exe"
if WinExist(win)
{
    WinActivate, %win%
    WinSet, AlwaysOnTop, On, %win%

    newW := 560
    newH := 315

    baseX := -9
    baseY := 1035

    newX := baseX + 1
    newY := baseY + 1

    WinMove, %win%,, %newX%, %newY%, %newW%, %newH%
}
return

; ================================
; F7 = Zwiftを右上に小窓表示(映画用)
; ================================
F7::
win := "ahk_exe ZwiftApp.exe"

if WinExist(win)
{
    WinActivate, %win%
    WinSet, AlwaysOnTop, On, %win%

    newW := 560
    newH := 315

    baseX := -9
    baseY := 1035
    baseW := 1951

    ; 右端から計算(常に同じ位置)
    newX := baseX + baseW - newW - 1
    newY := baseY + 1

    WinMove, %win%,, %newX%, %newY%, %newW%, %newH%
}
return

; ================================
; F8 = 小窓最前面解除
; ================================

F8::
win := "ahk_exe ZwiftApp.exe"
if WinExist(win)
{
    ; 最前面フラグを確実に落とす
    WinSet, AlwaysOnTop, Off, %win%
    Sleep, 80
    WinSet, AlwaysOnTop, Off, %win%

    ; フォーカスを他に移して、Zwiftの再取得を防ぐ
    WinActivate, ahk_class Shell_TrayWnd
}
return

; ================================
; F9 = 元サイズ+最前面解除
; ================================

F9::
win := "ahk_exe ZwiftApp.exe"

if WinExist(win)
{
    WinSet, AlwaysOnTop, Off, %win%
    WinMove, %win%,, -9, 1035, 1951, 1136
}
return

このスクリプトは上の起動後の位置調整と「はじめましょう」通過で入力したスクリプトの下に付け加えればOKです。

小窓の大きさはNewWとNewHで変更できます。

さらに上のZWIFTのプログラム開始の自動化と同様AHKスクリプトのショートカットを入れれば自動化の完成です。

「Zwift」という文字に反応するのでZwiftpowerやZwiftinsiderを開いた際も反応しますが問題ないでしょう。

解除したい場合は右下の常駐タスクからExitを押せばOKです。

8BitDoMicroでさらに便利に

8BitDoMicroゲームパッドでほぼ使っていないキーをショートカットに割り当てました。(赤字部分)

8BitDoMicroゲームパッドの記事はこちら

ものすごく便利です!

小窓ではZWIFTの状況がわかりずらいときには一瞬だけフルスクリーンにしてすぐ戻すという動作がらくらく可能です。

1画面の人も「始めましょう」スキップ小窓設定は便利なので試してみてはいかがでしょうか?

おしまい

ZWIFT ショートカットキー 一覧

【基本操作】
・Tab:ワークアウト中、現在のブロックをスキップ
・Esc:「ライド終了」画面を表示
・スペースキー:パワーアップアイテムを使用

【画面表示】
・A:「デバイス接続」画面を表示
・E:「ワークアウトを選択」画面を表示
・G:パワー/勾配グラフを表示
・M:グループメッセージ送信欄を表示
・P:プロモコード入力欄を表示
・T:「Garage」画面を表示

【ワークアウト/負荷操作】
・Page Up / Page Down:ワークアウトの負荷を上下
・+ / −:スマートトレーナーの負荷を上下

【方向操作】
・↑:ツールバーを表示
・↓:Uターン(長押し)
・→ / ←:分岐で進行方向を選択

【ジェスチャー/サウンド(F1~F8)】
・F1:右肘を2回前に出す
・F2:右手を上げる
・F3:「Ride On」サウンド
・F4:「Hammer Time」
・F5:「Nice!」
・F6:「Bring It!」
・F7:「I’m Toast」
・F8:ベル音

【撮影】
・F10:スクリーンショット撮影

【視点変更】
・1~9:カメラ視点切り替え

主な視点:
・1:後方斜め上(標準)
・2:後方斜め上(近め)
・3:一人称視点
・4:右側から
・5:後方斜め下
・6:前方斜め上から
・7:定点カメラ
・8:ヘリコプター視点
・9:真上やや後ろから
・0:視点固定(自在)

※PC版(Windows/Mac)共通
※ワークアウト中とフリーライド中で動作が一部変わるキーがあります

  • URLをコピーしました!

コメント

コメントする

目次