コントローラーとキーボード
DualSense、DualSense Edge、DualShock 4 は USB と Bluetooth の HID で読み取ります。Xbox 互換のパッドは XInput を使います。キーボードはランチャーのプロファイルでスティックに割り当てます。
2026年10月10日 までのリポジトリノート
HID のレポート
XInput は Xbox 互換のデバイスを列挙します。PC に接続した DualSense は、変換レイヤーが仮想の Xbox パッドを作らない限り、XInput からは見えません。PS5PCEM は Sony のパッドを HID で開き、レポートをデコードします。フィールドは USB と Bluetooth で同じです。Bluetooth はペイロードの前に接頭部を付け、DualSense はトリガーをボタンのバイトより前に置くため、オフセットは変わります。
方向キーは 4 つの独立したビットではなく、8 方位のいずれかとして届きます。読み取りはオーバーラップ I/O で、決してブロックしません。ポーリングはドライバーのキューを空にして最新のレポートを残します。最も古いレポートで答えると、フレームが遅れた分だけスティックの反応も遅れてしまいます。
出力、モーター、ライトバー
出力レポートは両方のモーターとライトバーを運びます。Bluetooth ではレポートがずれ、パッドが動作前に確認するチェックサムで終わるため、ケーブル用に作ったレポートは無線では無視されます。ランチャーの入力ページは見つけたパッドの名前を表示し、両方のモーターを回してライトバーの色を一巡させる 1 秒のテストを実行できます。デバイスは共有で開き、ホストが許す場合は書き込み用にも開きます。
パッドは XInput より優先されます。XInput は、Xbox 互換のコントローラーと、そのように振る舞うすべてのデバイスの経路として残ります。ランチャーは選択、コントローラーの番号、キーボードの割り当てを保存し、それらを環境変数として game-run に渡します。
キーボードとスクリプトの入力
WASD が左スティック、Alt と矢印キーが右スティックです。プロファイルはコントローラー、キーボード、またはその両方にできます。PS5_INPUT_MODE=scripted は、起動時のボタンのパルスを保ちつつ物理デバイスを無視するため、別のウィンドウでのキー入力で計測中の場面が変わることはありません。
HLE の中では、プライマリーのパッドを scePadOpen で開くか、scePadGetHandle で取得できます。後者の経路は、ログイン中のユーザーのコントローラーをポーリングする前に開かないタイトルで重要です。ここで説明しているのは、そのハンドルのホスト側です。
実装済みのこと
- USB と Bluetooth の HID での DualSense、DualSense Edge、DualShock 4。
- 最新レポートのポーリング、モーター、ライトバー、Bluetooth のチェックサム。
- Xbox 互換のパッド向けの XInput と、割り当てを変更できるキーボードのプロファイル。
- 計測中に物理デバイスを無視するスクリプトの入力モード。
まだ足りないこと
- タッチパッド、アダプティブトリガー、モーションセンサーは、DualSense の機能を完全には備えていません。
- ムービーのトラックのハプティクスはモーターに送りません。
- HID の経路は、ランチャーと game-run が使う Windows のホスト側の経路です。
関連するしくみ
これらのページについて