テスト前のクイック回答
なぜGamepad APIではなく生のHIDなのか?
Gamepad APIはブラウザ自身のデッドゾーンとマッピングを経た−1〜1の処理済みの値を返します。HIDレポートはコントローラーが送る正確な8ビットのバイトを示すため、128ではなく131という中心を、ソフトウェアが丸めてしまう前に確認できます。
これでコントローラーは再キャリブレーションされますか?
いいえ。インスペクターは入力レポートを読むだけです。再キャリブレーションツールはコントローラーに書き込み、状態を悪化させることもあります。このラボは判断前の状態を記録します。
ブラウザレベルのスティックドリフトテスト →どのコントローラーが対応していますか?
デスクトップのChrome、Edge、OperaでUSBまたはBluetooth接続のSony DualSense、DualSense Edge、DualShock 4。XboxコントローラーはXInputを使うためWebHIDには公開されません。それらにはゲームパッドテストを使ってください。
この結果が実際に測定するもの
インスペクターはWebHID経由でコントローラーを開き、各入力レポートを解析します:生のスティックバイトとトリガー、ボタン、符号付き16ビット値としてのジャイロスコープと加速度計、タッチパッドの接触、バッテリー残量と充電状態。静止サンプルは3秒間の生のスティック中心を平均してドリフト率にし、ジャイロのバイアスとノイズを導きます。レポートレートはブラウザに届く1秒あたりの入力レポート数を数え、スイープは軸ごとの異なる生の値を数えます。
測定の範囲: レイアウトは公開されているLinuxドライバーの資料に従います。未知のSonyプロダクトIDではフィールドがずれる可能性があります。レポートレートはコントローラーと同じくらいホスト側のスタックを反映します。インスペクターはデバイスに書き込まず、ファームウェアのキャリブレーションテーブルも見られません。
結果の読み方
生の中心
8ビットのスティックでは128が完全な中心です。1ステップは可動範囲の約0.8%で、静止時の中心が124や132ならデッドゾーン適用前で約3%のドリフトです。
レポートレート
USB接続のDualSenseは通常1秒に250レポートを送ります。Bluetoothはホストにより100〜1000 Hzで変動します。USBで期待値を大きく下回る場合、たいていはコントローラーではなくハブやホストの問題です。
ジャイロバイアス
静止中のジャイロの平均値。ノイズが小さくバイアスが大きければキャリブレーションのオフセット、ノイズが大きければ置いた面の振動かセンサーの不良が疑われます。
予期しない結果の確認
ダイアログにコントローラーが表示されない
WindowsではSteam InputとDS4Windowsが排他的にアクセスするため閉じてください。Linuxではudevルールでユーザーがhidrawデバイスを開けるようにする必要があります。Bluetoothのパッドはペアリング済みでスリープしていない必要があります。
値がずれて見える
BluetoothとUSBのレポートはオフセットが異なり、インスペクターはレポートIDで切り替えます。SonyのプロダクトIDが既知のリストにない場合はフィールドがずれることがあり、ラベルにその旨が表示されます。
レポートレートが60 Hz以下と表示される
タブは前面に置く必要があります。バックグラウンドでは制限によりブラウザがHIDイベントを配信する頻度が下がります。
よくある質問
WebHIDは安全ですか?
ブラウザはデバイスごとに許可を求め、選択したコントローラーだけがページを開いている間のみ公開されます。このページは入力レポートを読み取るだけで、出力レポートやフィーチャーレポートは決して送りません。
HIDドリフトがスティックドリフトテストと異なるのはなぜ?
Gamepad APIはブラウザの処理を適用し、ゲームは独自のデッドゾーンを適用します。生のHIDはウェブページが得られる最も早い段階の値で、その差がソフトウェアがどれだけ隠しているかを示します。
チャットボットは私のコントローラーの生の中心を読めますか?
いいえ。そのバイトはあなたのコントローラーと、インスペクター実行中のブラウザセッションにしか存在しません。