ToolActToolAct

ゲームパッドテスト

ブラウザでゲームパッドのボタン、スティック、トリガー、十字キー、振動をテスト

ゲームパッドが検出されていません
ゲームパッドを接続し、任意のボタンを押して有効化してください
LBRBYXBA

左スティック

X: 0.00Y: 0.00
中心

右スティック

X: 0.00Y: 0.00
中心

トリガー

LT
0.00
RT
0.00

振動テスト

このゲームパッドまたはブラウザは振動に対応していません。

イベント履歴

ゲームパッドのボタンを押してテストを開始...

ゲームパッドテストとは?

ゲームパッドテストは、W3C Gamepad API を通じてゲームパッドからブラウザに送られる信号を読み取り、リアルタイムに表示します: ボタン押下、アナログスティックの位置、トリガーの押し込み量、十字キーの方向、振動モーターのすべてを可視化します。プレイ前にゲームパッドが正常か確認したい、反応が悪いボタンを診断したい、古いパッドのスティックドリフトを発見したい、両方の振動モーターが動くか検証したい、といった用途に最短で対応できます。ページは Xbox 風レイアウトで各入力をハイライトし、スティックとトリガーの生の数値を表示し、短いイベントログを保持します。Gamepad API はユーザーがゲームパッドのボタンを押した後にのみゲームパッドを公開するため、ページは最初に任意のボタンを押すよう促します - これはブラウザのセキュリティルールであり、パッドの故障ではありません。すべての処理はブラウザ内で完結し、入力データがデバイスから外に出ることはありません。

使い方

使い方

  1. USB または Bluetooth でゲームパッドを接続
  2. ゲームパッドの任意のボタンを押して有効化
  3. ボタンを押したりスティックを動かすと画面のレイアウトが光るのを確認
  4. 振動ボタンで振動モーターをテスト
  5. イベント履歴で押下がすべて記録されたか確認

ヒント

  • 緑色のハイライトは入力がブラウザに正しく届いていることを示します
  • ゲームパッドは任意のボタンを押した後にのみ表示されます - これはブラウザのセキュリティルールです
  • 振動対応はブラウザとゲームパッドに依存します。Firefox が最も対応範囲が広いです
  • スティックが静止時に 0 以外の値を示す場合、ドリフトラベルがスティックドリフトを警告します
  • 複数のゲームパッドを接続している場合はスロットチップで切り替えられます

利用シーン

反応しないボタンや二重発火を診断各ボタン、ショルダー、十字キーを 1 回ずつ押し、画面のレイアウトが実際のボタン状態に合わせて光るのを確認します。イベント履歴はすべての押下と解放を記録するため、1 回の押下で 2 回発火するスイッチやまったく反応しないスイッチが、正常なボタンとの対比で即座に分かります。
アナログスティックのドリフトを検出両方のスティックを中央に置き、リアルタイムの X/Y 値を読み取ります。正常なスティックは静止時に 0.00 付近に留まります。静止時に 0.12 を超える値を報告するとドリフトラベルがオレンジに変わり、これはスティックモジュールの摩耗による典型的な症状で、キャラクターやカーソルが勝手に動いてしまう原因となります。
トリガーのリニアリティを検証LT と RT をゆっくり引き、トリガーバーで値が 0.00 から 1.00 まで上昇するのを確認します。値が飛ぶ、最大値に達するのが早すぎる、最大値まで届かないといった場合はポテンショメーターの摩耗が疑われます - レーシングゲームのスロットル感度のせいにする前に確認しておくと便利です。
振動モーターを個別にテスト弱、強、デュアル振動の各ボタンは GamepadHapticActuator API を通じて高周波モーターと低周波モーターを別々に駆動します。一方の強度だけ発火する場合は片方のモーターが死んでいる証拠です。まったく反応しない場合はパッドまたはブラウザが振動非対応で、ページはその旨を明示的に表示します。
複数のゲームパッドを識別して切り替えステータスパネルは各パッドのベンダー ID 文字列、マッピングタイプ(標準/非標準)、スロットインデックス、ボタン数と軸数を報告します。複数のパッドをペアリングしている場合、スロットチップで再接続せずにテスターを切り替えられます - ローカルマルチプレイの前にゲームパッド一式を確認するのに便利です。

仕組み

ブラウザは W3C Gamepad API を通じてゲームパッドを公開します。ゲームパッドは navigator.getGamepads() から取得する Gamepad オブジェクトで表され、この関数は最大 4 つのスロットを返します。各ゲームパッドは id 文字列(ベンダーと製品情報)、mapping フィールド(Xbox レイアウトのデバイスでは 'standard'、それ以外は空)、buttons 配列、axes 配列を持ちます。 標準マッピングでは、buttons は 17 要素です: 4 つのボタン(A/B/X/Y)、2 つのバンパー(LB/RB)、2 つのアナログトリガー(LT/RT)、Select/Start、2 つのスティック押し込み(L3/R3)、4 つの十字キー方向、Home/Guide ボタン。各ボタンは .pressed(真偽値)と .value(0 から 1、トリガーはアナログ、デジタルボタンは 0 または 1)を持ちます。axes 配列は -1 から 1 の範囲の 4 つの値を持ちます: 左スティック X/Y、続いて右スティック X/Y。 この API はイベント駆動ではなくポーリング方式であるため、ページは requestAnimationFrame ループを回し、毎フレーム新しいスナップショットを読み取ります。ゲームパッドが静止中の無駄な再レンダリングを避けるため、gamepad.timestamp が変化した時だけ状態を更新します - このタイムスタンプは新しい入力レポートが届くたびに進みます。接続と切断は window の gamepadconnected と gamepaddisconnected イベントとして届きます。 セキュリティ上、ゲームパッドオブジェクトはユーザーがそのパッドのボタンを押すまで null のままであり、ページは新しく挿したパッドを勝手に読み取れません。振動はオプション機能です: gamepad.vibrationActuator が存在する場合、playEffect('dual-rumble', { duration, weakMagnitude, strongMagnitude }) を呼ぶことで 2 つのモーターを駆動できます。Safari と一部の Chromium ビルドはこれを実装していないため、ページは機能検出を行い、対応していない場合はボタンを無効化します。

  • navigator.getGamepads() は最大 4 つのスロットを返します。パッドが非 null になるのはボタンを押した後のみです。
  • 標準マッピング: buttons[0-3] がボタン、[4-5] がバンパー、[6-7] がアナログトリガー、[8-9] が Select/Start、[10-11] が L3/R3、[12-15] が十字キー、[16] が Home。
  • axes[0-1] が左スティック(X、Y)、axes[2-3] が右スティック。いずれも -1 から 1 の範囲。
  • ポーリングモデル: requestAnimationFrame ループがスナップショットを読み取り、gamepad.timestamp でゲートすることで静止フレームは更新しません。
  • 振動は gamepad.vibrationActuator.playEffect('dual-rumble', ...) で駆動 - 機能検出が必要で、すべてのブラウザで対応しているわけではありません。
  • gamepadconnected / gamepaddisconnected イベントが接続と切断を通知します。パッドの .index がスロットを識別します。

使用例

ボタンを押す

A を押す -> buttons[0].pressed = true、value = 1.0

左スティックを倒す

左スティックを右上に倒す -> axes[0] = 0.71、axes[1] = -0.68

トリガーを引く

RT を半分まで引く -> buttons[7].value = 0.50、pressed = false(閾値未満)

よくある質問

ゲームパッドを接続しても認識されないのはなぜですか?

Gamepad API は、ページが接続済みデバイスを勝手にフィンガープリントするのを防ぐため、ユーザーがゲームパッドのボタンを押すまでゲームパッドを非表示のままにします。USB または Bluetooth でパッドを接続し、このタブにフォーカスを当ててから任意のボタンを押してください - ステータスパネルが「接続済み」に切り替わります。この有効化ステップはブラウザのセキュリティルールであり、故障ではありません。

対応しているゲームパッドは?

ブラウザが標準マッピングで公開するゲームパッド全般: Xbox One/Series ゲームパッド、DualShock 4 と DualSense(多くのシステムで標準にマッピングされる)、そして大半の汎用 USB ゲームパッドです。Bluetooth でも USB でも、ブラウザは同じ 17 ボタン・4 軸レイアウトに正規化します。非標準のパッドも動作しますが、ボタン順が画面のラベルと一致しない場合があります。

振動が動かないのはなぜですか?

振動対応は環境によって異なります。Firefox が最も対応範囲が広く、Chrome と Edge は最近のバージョンで対応、Safari は未実装です。パッド自身も gamepad.vibrationActuator を公開している必要があります。ページはこれを検出し、何も反応しないままではなく明示的に「対応していません」と表示するため、振動が出ないのはブラウザまたはハードウェアの制限であり、本ツールのバグではありません。

スティックに触れていないのに値が出るのは故障ですか?

0 に近い小さな値は正常なデッドゾーンノイズです。静止時にいずれかの軸で約 0.12 を超えると、ドリフトラベルがオレンジに変わります - これが典型的なスティックドリフトで、ポテンショメーターモジュールの摩耗が原因のハードウェア問題であり、通常は時間とともに悪化します。本ツールを使えば、ゲームのせいにする前に確認できます。

データはサーバーに送信されますか?

いいえ。Gamepad API はすべてブラウザ内で読み取られます。ボタン押下、スティック位置、振動コマンドはいずれもデバイスから外に出ません。記録も送信もされません。

DualSense のアダプティブトリガー、タッチパッド、ジャイロもテストできますか?

いいえ。標準の Gamepad API が公開するのはボタン、軸、基本振動のみです。DualSense のアダプティブトリガー、静電容量式タッチパッド、モーションセンサーは Web 標準の一部ではなく(一部はブラウザ対応が乏しい実験的拡張の奥にあります)、ブラウザからは信頼できるテストができません。