ボタンを1つ押すと、コントローラーの図と2つのスティックの円がすぐに動きます
コントローラーをUSBケーブルまたはBluetoothでつなぎ、このページを開いたままボタンを1回押してください。その瞬間から、中央の図では押したボタンが塗りつぶされ、左右の円には左右のスティックの現在位置と通ってきた軌跡が描かれます。下のチップにはボタンごとの押下回数がたまっていき、17個すべてを押すと確認したボタン 17 / 17になります。トリガーは押し込み量が0から1の値で届き、最後まで押し込まれていないとチップにオレンジ色の印が残ります。
キャラクターが勝手に歩き出す場合は、手を離したままドリフト5秒観測の観測を開始を押してください。5秒間にスティックが送った値を拡大した散布図に打ち、平均位置と中心から最も離れた距離を、UnityとMicrosoft XInputが公開している既定のデッドゾーンと並べて表示します。スティックを端まで倒したままゆっくり回すと、方向ごとに届いた距離が輪郭として残り、どの方向が倒しきれていないかも分かります。入力の記録はこのブラウザー内だけで処理し、保存も送信もしません。
ゲームパッドを点検する場面: 勝手に動くキャラクター、反応しないボタン、押し込みきれないトリガー
コントローラーの不調は、ゲームの設定が原因なのか本体が原因なのか切り分けにくいものです。ゲームを終了し、ブラウザーで同じ操作を試せば、信号の段階でおかしいのか、ゲーム側の設定の問題なのか、範囲を絞り込めます。
- 手を離したのに視点がゆっくり回る、キャラクターが歩く: スティックドリフトが疑われる状況です。ドリフト5秒観測を2、3回繰り返し、毎回同じ方向に寄るか、その大きさがデッドゾーンの基準線の外まで出るかを見ます。
- ボタンが時々効かない: そのボタンだけをゆっくり何度も押し、チップの押下回数が押すたびに1ずつ増えるかを確認します。図の該当位置が塗りつぶされるかも合わせて見てください。
- アクセルやエイムのトリガーが奥まで入らない気がする: 左右のトリガーを奥まで押し込み、最大値が1.00に届くか比べます。
- 中古のコントローラーを売買するとき: ボタン17個、2本のスティックの到達の輪郭、ドリフト、振動を順に確認し、記録をコピーして残しておけば、取引後の確認資料になります。
- スティックモジュールの交換や清掃をしたあと: 作業前にコピーしておいた記録と、真円度やドリフトの数値を比べれば、改善したかどうかを数字で確かめられます。
使い方
- 接続して認識させる: コントローラーをつなぎ、このタブを前面にしたままボタンを1つ押します。上のバーの名前がサンプルのコントローラーからお使いのコントローラー名に変われば準備完了です。
- ボタンを確認する: 右クラスターの4つ、十字キーの4つ、バンパーとトリガー、中央のボタン、2本のスティックの押し込みを1つずつ押して、チップがすべて実線に変わるかを見ます。チップにマウスを載せると、図の該当位置が強調されます。
- 表記を選ぶ: コントローラー名からメーカーが分かる場合は、ボタンの表記が自動で切り替わります。違って見えるときは、図の下で Xbox・PlayStation・Nintendo のいずれかを選んでください。
- スティックの輪郭を描く: スティックを端まで倒したまま、ゆっくり2周させます。36方向すべてに届くと、円の下に平均誤差と最短の方向が表示されます。
- ドリフト5秒観測: コントローラーを机に置いて手を離し、観測を開始を押します。進行バーが最後まで進むと結果が出ます。Esc キーを押すか別のウィンドウに移ると、キャンセルされます。
- 振動テスト: 振動に対応したブラウザーなら、両モーター、強モーター、弱モーターの順に押して、手に伝わる振動を比べます。トリガーの振動は、対応するコントローラーでのみ有効になります。
- 記録を残す: 記録をコピーを押すと、名前、ボタンごとの回数、軸の範囲、真円度、ドリフト、振動の結果がテキストでコピーされます。リセットは接続を保ったまま記録だけを消します。
ボタン番号は文字ではなく位置で決まります
ブラウザーがコントローラーを標準配列(standard)として読み取ると、ボタン17個と軸4本に、位置ごとに決められた番号が付きます。メーカーごとにボタンの刻印が違っても、同じ位置なら同じ番号です。そのため、右クラスターの下のボタンは、Xbox では A、PlayStation では ×、Nintendo では B と書かれていても、すべて0番です。下の表は、W3C の標準配列の表にある位置を、代表的な表記とともにまとめたものです。
| 番号 | 位置 | Xbox | PlayStation | Nintendo |
|---|---|---|---|---|
| 0 | 右クラスター 下 | A | × | B |
| 1 | 右クラスター 右 | B | ○ | A |
| 2 | 右クラスター 左 | X | □ | Y |
| 3 | 右クラスター 上 | Y | △ | X |
| 4 | 左上の手前(バンパー) | LB | L1 | L |
| 5 | 右上の手前(バンパー) | RB | R1 | R |
| 6 | 左下の手前(トリガー) | LT | L2 | ZL |
| 7 | 右下の手前(トリガー) | RT | R2 | ZR |
| 8 | 中央 左 | View | Create(PS4 は Share) | − |
| 9 | 中央 右 | Menu | Options | + |
| 10 | 左スティック押し込み | LS | L3 | LS |
| 11 | 右スティック押し込み | RS | R3 | RS |
| 12~15 | 十字キー 上・下・左・右 | ↑ ↓ ← → | ↑ ↓ ← → | ↑ ↓ ← → |
| 16 | 中央のボタン | Xbox | PS | Home |
標準配列にない入力、たとえばタッチパッドの押し込みやキャプチャーボタンは、17番のあとに番号が続き、ボタン数が18個以上に見えることがあります。こうしたボタンは、チップに「ボタン 17」のように番号で表示されます。ブラウザーが標準配列として読み取れなかったコントローラーでは、図を薄く表示し、すべてのボタンと軸を番号チップだけで見せます。どの2本の軸が1本のスティックなのか分からないため、スティックの円とドリフト観測も使えません。
スティック値の向きと到達の輪郭(真円度)
スティック1本は、横軸と縦軸の2つの値で届きます。左スティックは軸0・1、右スティックは軸2・3で、値は−1から1までです。横軸は左が負、縦軸は上が負です。スティックを上に倒したのにYが−1になるのは、標準の向きがそう決められているためです。円の下の距離は中心からのずれ √(X² + Y²) で、Xが0.030、Yが−0.040なら距離は0.050です。
スティックを端まで倒して回すと、円の中に灰色の輪郭が残ります。このツールは方向を10°ずつ36区画に分け、区画ごとに最も遠くまで届いた距離を覚えています。距離0.5以上まで倒した区画だけを「届いた方向」と数え、36区画すべてに届くと、半径1から平均で何%ずれているか(平均誤差)と、最も倒しきれていない方向を表示します。下の表は、同じ計算で求めた値です。
| 端まで倒したときの形 | 平均誤差 | 最短の方向 |
|---|---|---|
| どの方向でも距離1.000で止まる(円形ガイド) | 0.0% | 1.000 |
| 円形だが、右上の30~60°の3区画だけ0.850で止まる | 1.3% | 0.850 · 右上 |
| 横と縦がそれぞれ端まで行き、斜めの距離が1を超える(四角形ガイド) | 12.7% | 1.004 · 右 |
平均誤差は、低いほどよいという点数ではありません。斜めで横と縦が同時に端まで行くコントローラーは四角形になり、12%台の値が出るのが自然です。注目したいのは最短の方向です。ほかの方向は1付近なのに、ある方向だけが0.8台で止まるなら、その方向には倒しきれていないということなので、同じ操作を何度か繰り返し、もう一方のスティックとも比べてみてください。円の下の横・縦の範囲は、リセット後に各軸が記録した最小値と最大値です。
ドリフト5秒観測の数え方
スティックドリフトとは、手を離してもスティックの値が中心の0に戻らない、またはひとりでに揺れる現象です。観測を開始を押した瞬間からちょうど5秒間、開始時刻は含み、5秒になる瞬間は含まない区間で読み取った値をすべて集めます。その値から、スティックごとに平均X・平均Y(どちらに寄っているか)と、中心から最も離れた距離(揺れまで含めた最大のずれ)を求めます。画面の更新が毎秒60回なら、サンプルは約300個です。
| 開始からの経過時間 | 左スティック X | 左スティック Y | 計算 |
|---|---|---|---|
| 0 ms | 0.030 | −0.020 | 含める |
| 1,000 ms | 0.050 | −0.010 | 含める |
| 2,500 ms | 0.040 | −0.030 | 含める |
| 4,999 ms | 0.060 | −0.020 | 含める |
| 5,000 ms | 0.300 | 0.300 | 除く(終了時刻) |
この例の結果は、サンプル4個、平均X 0.045、平均Y −0.020、最大距離0.063です。5,000 msに届いた0.300は観測が終わったあとの値なので含めません。途中でEscキーを押したり、別のウィンドウやタブに移ったり、接続が切れたり、別のコントローラーを選んだりすると、それまでに集めた値では平均を出さず、観測をキャンセルします。観測中は振動ボタンがロックされます。モーターの振動がスティックの値に混ざるためです。
デッドゾーンの基準線と並べて見る
手を離したスティックが小さな値を送ってくるのはよくあることです。そのためゲームやゲームエンジンは、中心付近の小さな値を0とみなすデッドゾーンを設けています。散布図の2本の点線の輪は、公開されている既定値の2種類です。最大距離が内側の輪より小さければ、この既定値を使うゲームではドリフトが除外される可能性が高いと言えます。
| 基準 | 元の値 | −1~1に換算した値 |
|---|---|---|
| Unity Input System の既定デッドゾーン最小値(スティック) | 0.125 | 0.125 |
| Microsoft XInput の推奨デッドゾーン、左スティック | 7,849(軸の範囲 −32,768~32,767) | 7,849 ÷ 32,767 ≈ 0.240 |
| Microsoft XInput の推奨デッドゾーン、右スティック | 8,689 | 8,689 ÷ 32,767 ≈ 0.265 |
| Microsoft XInput のトリガー押下の基準(参考用で、このツールの比較には使いません) | 30(トリガーの範囲 0~255) | 30 ÷ 255 ≈ 0.118 |
結果の行には、最大距離がUnityの既定値の内側か、それより大きいがXInputの推奨値の内側か、XInputの推奨値さえ超えているかが表示されます。これは故障の判定ではなく、あくまで比較です。デッドゾーンを小さく設定したゲームや、設定でデッドゾーンを減らした場合は、0.05程度のドリフトでも画面に現れることがあります。逆に、大きなドリフトでもデッドゾーンが大きいゲームでは気にならないことがあります。平均は小さいのに最大距離だけが大きいときは、手を離した直後にスティックが揺れたか、コントローラーが動いた可能性があるので、じっと置いたままもう一度観測してください。
トリガーの押し込み量と最大値の表示
標準配列の6番・7番のトリガーは、押した度合いを0から1の値で送ります。図のトリガーバーがその値だけ満ちるとともに、名前の横に現在の値が数字で表示され、チップのバーにも同じ値が描かれます。今回の記録でもっとも深く押した値が1より小さい場合、チップのバーにオレンジ色の縦線が残るので、奥まで入らないトリガーがすぐ分かります。たとえば右トリガーを0.35まで押し、奥まで押し込んでから0.20まで戻すと、現在値は0.20、最大は1.00です。
トリガーが「押された」状態に変わる基準は、ブラウザーとコントローラーが決めています。そのため、バーが少し満ちていても、チップがまだ押下に変わらないことがあります。コントローラー専用アプリでトリガーストップ(軽く押しただけで最後まで押したとみなして送る機能)や感度を変えている場合は、その設定が反映された値が表示されます。
振動テスト: 2つのモーターを別々に動かして確かめる
多くのコントローラーの振動は、性質の違う2つのモーターで作られています。ブラウザーの標準仕様では、強い側(strong)を低周波、弱い側(weak)を高周波の振動と定めており、Microsoft の XInput のドキュメントは、左のモーターが低周波、右のモーターが高周波だと説明しています。このツールは両モーター、強モーターのみ、弱モーターのみをそれぞれ0.8秒間、最大の強さで送るので、片側のグリップだけが振動しない場合を見分けられます。トリガー振動に対応したコントローラーとブラウザーでは、左右のトリガーも個別にテストできます。
| ブラウザー | 両モーターの振動 | トリガーの振動 |
|---|---|---|
| Chrome・Edge(Windows・macOS など) | 対応(Chrome 68 から) | Chrome 126 から、対応するコントローラーのみ |
| Safari(macOS) | 対応(16.4 から) | 非対応 |
| Firefox | 非対応 | 非対応 |
| iPhone・iPad の Safari | 非対応 | 非対応 |
振動ボタンは、ブラウザーがこのコントローラーに振動機能を開放しているときだけ押せます。コマンドが終わったあと、ブラウザーが「complete」と通知しても、それはコマンドが終了したという意味で、モーターが実際に振動した確認ではありません。振動の有無は、手で感じた結果で判断してください。別のコマンドが割り込むと「preempted」で終わり、タブが非表示の状態ではコマンドが拒否されます。ワイヤレス接続で省電力設定が有効な場合や、ほかのアプリが振動を使用中の場合は、弱く感じることがあります。
コントローラーが表示されない、名前やボタン数が違うとき
ブラウザーはプライバシー保護のため、ページが画面に表示されている間に、ユーザーがコントローラーのボタンを押すかスティックを動かすまで、コントローラーの一覧を空にしています。ケーブルを挿しただけでは何も出ないのが正常なので、ボタンを1回押してください。それでも変わらないときは、次の順で確認します。
- OSのBluetoothやデバイスの設定で、コントローラーが接続済みと表示されているかを見ます。
- 別のUSBポートや別のケーブルに替えてみます。充電専用ケーブルは信号を伝えません。
- Chrome、Edge、Firefox、Safariのうち別のブラウザーで、同じ手順を繰り返します。ブラウザーによって、対応するコントローラーや接続方式が異なります。
- Steam入力やコントローラー専用アプリが起動しているなら、終了してからもう一度試します。こうしたソフトは信号を別の形に変換して、名前やボタン数を違って見せることがあります。
コントローラーを2台以上つなぐと、上のバーに選択ボックスが現れます。ブラウザーが割り当てた番号(パッド 0、パッド 1…)ごとに記録を別々に数えます。切断されたコントローラーは「未接続」として残り、同じ番号に同じ名前で再接続すると続きから数えます。その番号に別のコントローラーがつながったときは、新しい記録から始まります。見ていたコントローラーが切断されると、つながっている別のコントローラーに表示が移り、最近の入力にはどのパッドの入力かが番号で併記されます。
よくある間違い
- Yの値の符号を逆に読む: 標準配列では上が負です。上に倒して−1が出れば正常です。
- 手を添えたままドリフトを観測する: 親指がスティックにわずかに触れているだけでも平均が変わります。コントローラーを机に置き、手を離してから開始してください。
- 真円度の平均誤差だけで判断する: 四角形ガイドのコントローラーは、正常でも12%台になります。最短の方向の値も合わせて見てください。
- ボタンをごく速く連打して回数を確かめる: このツールは画面が更新されるたびに状態を読みます。毎秒60回更新される画面では、約16.7 msより短く押して離した入力は、読み取る前に終わって抜けることがあります。
- 表記の文字で番号を探す: Nintendo のコントローラーの A は右クラスターの右なので1番です。番号は文字ではなく位置で決まります。
- complete を振動の確認とみなす: ブラウザーの complete は、コマンドを終えたという意味です。振動は手で確かめてください。
できないこと
- このツールが見ているのは、ブラウザーに届いた値です。スティック部品の摩耗、ボタンスイッチの寿命、入力遅延、ポーリングレートは測らず、故障かどうかも判定しません。
- 真円度の36区画・0.5の基準と、ドリフト5秒は、このツールが定めた集計方法です。メーカーの正常範囲ではなく、交換や修理は販売店とメーカーの案内に従ってください。
- デッドゾーンの基準線は、UnityとXInputが公開している既定値です。実際のゲームはそれぞれ別の値を使い、設定メニューで変えられる場合もあります。
- 画面の更新ごとに値を読むので、それより短い入力は取りこぼすことがあります。タブが非表示になると読み取りを止め、その間の入力は数えません。
- コントローラー専用アプリ、Steam入力、OSのアクセシビリティ設定が信号を変えた場合、その結果がそのまま表示されます。ブラウザーが振動や一部のボタンに対応していない組み合わせもあります。
- 記録は保存されず、再読み込みやページを閉じると消えます。この説明は測定データの扱いについてのもので、サイト全体で通信がないという意味ではありません。
出典
- 01W3C: Gamepad標準配列のボタン0~16・軸0~3と向き、ユーザー操作前は非公開、振動の dual-rumble・trigger-rumble、非表示文書での拒否
- 02MDN: Using the Gamepad API接続イベントと、フレームごとに状態を読み直す方法
- 03MDN: GamepadHapticActuator.playEffect()振動コマンドの引数と、結果の complete・preempted
- 04MDN browser-compat-data: GamepadHapticActuatorplayEffect は Chrome 68・Safari 16.4 から、Firefox・iOS は非対応、trigger-rumble は Chrome 126 から
- 05Microsoft Learn: Getting Started With XInputデッドゾーンの定義、推奨値 7,849・8,689、トリガーの基準 30
- 06Microsoft Learn: XINPUT_GAMEPAD structureスティックの軸 −32,768~32,767、トリガー 0~255
- 07Microsoft Learn: XINPUT_VIBRATION structure左モーターは低周波、右モーターは高周波
- 08Unity Input System: InputSettingsdefaultDeadzoneMin 0.125、defaultDeadzoneMax 0.925
出典の確認日は2026-10-22です。真円度の36区画・0.5の基準とドリフト5秒観測は、このツールが定めた集計方法です。
よくある質問
コントローラーをつないだのに、画面に何も表示されません。
ブラウザーは、このページが画面に表示されている間にコントローラーのボタンが1回押されるまで、コントローラーの存在をページに知らせません。このタブを前面にしたままボタンを1つ押してください。それでも変わらないときは、OSの設定で接続されているかを確認し、別のUSBポートや別のブラウザーでもう一度試してください。
スティックドリフトはどうやって確認しますか。
コントローラーを平らな場所に置き、スティックとボタンから手を離してから、ドリフト5秒観測の観測を開始を押してください。5秒間に読み取った値の平均位置と、中心から最も離れた距離がスティックごとに表示され、拡大散布図で点がどちらに偏っているかも見えます。2、3回繰り返して、似た方向に寄るかを確認してください。
手を離してもスティックの値が0にならないのは故障ですか。
必ずしもそうではありません。手を離したスティックが小さな値を送ることはよくあり、ゲームは中心付近の値を無視するデッドゾーンを設けています。Unity の既定値は0.125、Microsoft XInput の推奨値は左が約0.240、右が約0.265です。最大距離がこの基準線の内側なら、既定設定のゲームでは除外される可能性が高いです。ただしゲームごとにデッドゾーンは違うため、このツールは故障を判定しません。
真円度の平均誤差とは何ですか。
スティックを端まで倒して回したとき、10°ごとに分けた36方向それぞれで最も遠くまで届いた距離が、半径1から平均で何%ずれているかを表します。四角形ガイドのように斜めの距離が1より大きくなるコントローラーでは約12.7%が出ることもあります。数字1つで良し悪しを決めず、一緒に表示される最短の方向の値が、ほかの方向より目立って低くないかを見てください。
スティックを上に倒したのに、Y の値が負になります。
正常です。ブラウザーの標準配列では、縦軸は上が負、下が正で、横軸は左が負、右が正です。ゲーム内では上を正に変換して使う場合が多いので、逆に感じることがあります。
トリガーを奥まで押しても1.00になりません。
チップのバーで最大の押し込み量が1より小さいと、オレンジ色の印が残ります。左右のトリガーを同じ力で何度か押して最大値を比べ、コントローラー専用アプリでトリガーストップや感度の設定が有効になっていないか確認してください。片方だけが大きく低い場合は、その値を記録のコピーで残しておくと、問い合わせのときに役立ちます。
振動テストのボタンが押せません。
ブラウザーが振動機能をページに開放しているときだけ押せます。Chrome・Edge と macOS の Safari 16.4 以降は両モーターの振動に対応し、トリガー振動は Chrome 126 以降で、対応するコントローラーの場合にのみ有効になります。Firefox と iPhone・iPad の Safari には振動コマンドがありません。ブラウザーが complete と通知しても、実際に振動したかどうかは手で確かめる必要があります。
PlayStation や Nintendo のコントローラーはボタンの名前が違います。
図の下の表記を PlayStation や Nintendo に切り替えると、その名前で表示されます。ブラウザーは文字ではなく位置で番号を付けるため、右クラスターの下のボタンは、Xbox の A、PlayStation の ×、Nintendo の B がすべて0番です。コントローラー名からメーカーが分かる場合は、表記を自動で選びます。