はじめに
PS5のDualSenseコントローラーをWindowsにBluetooth接続して使っていると、コントローラーの電源を切るのが面倒です。コントローラー側にはPCとの接続を切断するボタンがなく、放置してバッテリーが切れるのを待つか、Windowsの設定画面からBluetoothをOFF/ONするしかありません。
この記事では、F13キー(または任意のキー)一発でDualSenseの電源を切る方法を紹介します。
仕組み
WindowsのBluetooth無線をOFF→ONすることで、DualSenseとの接続を切断します。DualSenseはBluetooth接続が切れると自動的に電源OFFになります。他のBluetoothデバイス(マウス、キーボードなど)は500ms後に自動で再接続されます。
必要なもの
- Windows 11
- AutoHotkey v2
- F13キーを送信できるデバイス(Elgato Stream Deck、プログラマブルキーボードなど)
※ F13以外のキーでも可
F13キーを送信できるデバイスの例:FiiO KB1
私は FiiO KB1 というUSBマルチメディアコントローラーを使っています。3つのボタンとダイヤルがあり、専用ソフトウェアでキーを自由に割り当てられます。
右のボタンに「Keyboard F13」を割り当て、DualSense切断専用ボタンとして使っています。左2つのボタンはPrev/Play/Pause、ダイヤルは音量調整に設定しています。
ボタンをクリックすると設定ダイアログが開きます。modeを「鍵盤」に設定し、General keyで「F13」を選択します。
FiiO KB1以外にも、以下のようなデバイスでF13キーを送信できます:
- Elgato Stream Deck
- プログラマブルキーボード(QMK対応など)
- 左手デバイス(Tourbox、Loupedeck等)
セットアップ
1. PowerShellスクリプトの作成
C:\Tools\disconnect-dualsense.ps1 として保存:
# Windows Bluetooth Toggle OFF/ON (WinRT API)
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | Where-Object { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
Function Await($WinRtTask, $ResultType) {
$asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
$netTask = $asTask.Invoke($null, @($WinRtTask))
$netTask.Wait(-1) | Out-Null
$netTask.Result
}
[Windows.Devices.Radios.Radio,Windows.System.Devices,ContentType=WindowsRuntime] | Out-Null
$radios = Await ([Windows.Devices.Radios.Radio]::GetRadiosAsync()) ([System.Collections.Generic.IReadOnlyList[Windows.Devices.Radios.Radio]])
$bluetooth = $radios | Where-Object { $_.Kind -eq 'Bluetooth' }
if ($bluetooth) {
Await ($bluetooth.SetStateAsync('Off')) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null
Start-Sleep -Milliseconds 500
Await ($bluetooth.SetStateAsync('On')) ([Windows.Devices.Radios.RadioAccessStatus]) | Out-Null
}
2. AutoHotkeyスクリプトの作成
任意の場所に DualSense-Disconnect.ahk として保存:
#Requires AutoHotkey v2.0
F13::RunWait("powershell.exe -ExecutionPolicy Bypass -File C:\Tools\disconnect-dualsense.ps1",, "Hide")
3. 動作確認
-
DualSense-Disconnect.ahkを右クリック → 管理者として実行 - F13キーを押す
- DualSenseの電源が切れれば成功
自動起動の設定(タスクスケジューラ)
毎回手動で起動するのは面倒なので、ログイン時に自動起動するよう設定します。
PowerShellを管理者として実行し、以下を実行:
$action = New-ScheduledTaskAction -Execute "C:\Users\YOUR_USERNAME\Desktop\DualSense-Disconnect.ahk"
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit 0
Register-ScheduledTask -TaskName "DualSense-Disconnect" -Action $action -Trigger $trigger -Principal $principal -Settings $settings
※ YOUR_USERNAME は自分のユーザー名に置き換えてください。
別のキーを使いたい場合
F13以外のキーを使いたい場合は、AHKスクリプトのキー指定を変更します:
; 例: Ctrl + Shift + D
^+d::RunWait("powershell.exe -ExecutionPolicy Bypass -File C:\Tools\disconnect-dualsense.ps1",, "Hide")
; 例: F12
F12::RunWait("powershell.exe -ExecutionPolicy Bypass -File C:\Tools\disconnect-dualsense.ps1",, "Hide")
他の方法:Steam Input
Steamをインストールしている場合、PSボタン + △ボタンでDualSenseの電源を切ることができます。
ただし、本記事の方法には以下のメリットがあります:
- Steamが不要:非Steamゲームのみで遊んでいる方や、Steamをインストールしていない環境でも使える
- ワンタッチで完結:コントローラーを持ち上げて2つのボタンを同時押しする必要がなく、デスク上のボタン1つで電源OFF
注意点
- 管理者権限が必要:Bluetooth無線の制御には管理者権限が必要です
- 他のBluetoothデバイスも一時切断される:マウスやキーボードも一瞬切断されますが、500ms後に自動で再接続されます
- DualSenseだけを切断したい場合:この方法では他のデバイスも影響を受けます。DualSenseのみを切断する方法もありますが、WinRT APIによるBluetooth OFF/ONの方が確実に電源が切れます
まとめ
これでワンボタンでDualSenseの電源を切れるようになりました。Stream Deckなどと組み合わせると、ゲーム終了時にサッと電源を切れて便利です。

