# Gamepad Tester

> 在瀏覽器中測試任何手把：即時視覺化每個按鍵與扳機、引導式 10 秒搖桿飄移量測、死區檢視、雙馬達震動測試與輪詢率估算。支援 Xbox、PS 與 Switch Pro。

- URL: https://bytescope.dev/zh-Hant/gamepad-test/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/gamepad-test.md) · [ja](https://bytescope.dev/ja/gamepad-test.md)
- Runs: 全部在你的瀏覽器裡跑，什麼都不會上傳。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

透過 USB 或藍牙連接手把，然後按任一鍵喚醒它（Gamepad API 只有在收到輸入後才會顯示手把 — 頁面會引導你完成這一步）。你每按一個鍵，它就會在手把示意圖上亮起，扳機會顯示 0–1 的類比數值，也能同時並排測試多個手把。

搖桿分析是這個工具的核心。附拖尾的即時 XY 散點圖會精確顯示每根搖桿所在的位置；圓周度測試要你沿著邊緣繞一圈，以揭露行程範圍的問題；放大的中心檢視讓靜止時的偏移現形；而引導式飄移測試 — 放開手把 10 秒 — 會量測平均與尖峰偏差，並給出像「左搖桿飄移 3.2%，高於正常範圍」這樣的白話判定。搖桿飄移是現代手把最典型的故障，量測它勝過用猜的。

此外還有：附獨立強／弱馬達滑桿的雙震動測試、從時間戳差值估算的輪詢率（125 Hz 的有線手把與 1000 Hz 的電競手把差異一目瞭然），以及和我們鍵盤測試工具相同的快速重觸連跳（chatter）偵測。一切都在你的瀏覽器本機執行 — 輸入資料絕不離開你的裝置。

另有三項進階功能讓這台工作台更完整。輸入延遲測試會閃現一個提示，並同時以兩種方式為你的按壓計時：反應值（從閃光到按壓，這老實說包含了你自己的反應時間），以及把 Gamepad API 的時間戳與狀態首次可讀取的影格相減、藉此扣除人為反應的管線值 — 這是沙箱化的網頁最接近「裝置＋輪詢延遲」的數字。接上兩支手把時，並排比較模式會把兩者的示意圖與搖桿散點放進同一畫面，讓你把一支已知良好的手把直接對照一支疑似飄移的手把。而匯出按鈕會把完整診斷下載成 JSON — id、對應、按鍵與軸數量、目前數值與觀測到的最小／最大範圍、輪詢率估算值，以及任何飄移結果 — 可直接附在保固申請或論壇貼文上。

## Limits

Does not remap buttons, update firmware or fix drift; it shows live Gamepad API input.

## Machine output

Copy JSON copies an envelope `{ tool, url, generatedAt, userAgentHint, result }`. `tool` is `"gamepad-test"`; `result` is per-pad button/axis aggregates. An unpressed button is never reported as unresponsive.

- `gamepadApiPresent` (boolean | null) — `null` = not probed yet; `false` = probed, `navigator.getGamepads` missing; `true` = API present.
- `connectedCount` (number) — How many pads are listed in `pads`.
- `pads` (array of objects) — Connected pads, sorted by `index`. Each pad: index, id, mapping, buttonCount, axisCount; `pressedButtonIndexes` / `notPressedButtonIndexes` / `movedAxisIndexes` (sorted number[] or `null` when this pad was not the selected readout — not observed; `[]` means observed, none); `unresponsiveButtonIndexes` (always `null` — this page has no dead-button confirmation); `axisMovedThreshold` (number or `null` when not observed); `axisObservedRanges` (per-axis max−min, or `null` on the whole field if not observed; unobserved axes inside the array are `null`); `vibrationActuatorPresent` (boolean or `null` when not the selected pad / not probed); `measuredPollHz` (number or `null` when not enough timestamp deltas); `snappedPollHz` (number or `null` when nothing nearby); `pollRateIsLowerBound` (`null` = poll rate not measured; `true` = timestamps look quantized so `measuredPollHz` is a lower bound; `false` = measured, not flagged as quantized).

## FAQ

### 我的手把沒出現 — 該怎麼辦？

先按它上面任一鍵：瀏覽器基於隱私考量，在收到輸入前會隱藏手把。若還是沒出現，請確認它在作業系統層級已配對／連接，並試試換一個 USB 埠或重新配對藍牙。有些非常舊或冷門的手把沒有實作標準對應，可能會以不尋常的按鍵編號出現。

### 多少搖桿飄移算是正常？

靜止時，一根健康的搖桿應落在中心約 1–2% 的範圍內（遊戲會把這藏在通常 5–10% 的死區裡）。持續偏移超過約 3–5%，或搖桿在沒人碰時自己遊走，就會在遊戲中表現為不想要的移動 — 這正是電位計磨損的經典故障，值得清潔、重新校正或維修。

### 震動測試適用於每一種手把嗎？

它使用 Gamepad API 的雙震動致動器，在 Chromium 系瀏覽器中適用於大多數 Xbox 和 PlayStation 手把。有些瀏覽器和某些手把（以及 macOS 上大多數的藍牙連線）不會提供震動 — 工具會在致動器不可用時告訴你，而不是默默失敗。

### 我可以用 Switch Pro 手把或 Joy-Con 嗎？

測試是可以的：它們透過藍牙配對，並在大多數瀏覽器中提供標準對應。請注意瀏覽器只能讀取手把 — 它無法把手把變成給其他 PC 遊戲用的系統層級虛擬手把；那需要像 BetterJoy 或 Steam Input 這類驅動程式層級的工具。

### 輪詢率的數字代表什麼？

它代表你的手把多常回報一次自身狀態，由更新之間的時間戳估算而來。125 Hz（8 ms）是常見的基準，高階有線手把可達 1000 Hz（1 ms）。較低不代表壞掉 — 但如果一個號稱「1000 Hz」的手把量出來是 125 Hz，請檢查它的有線連接與模式。

### 輸入延遲測試有多準確？

它會回報兩個數字。反應值（從綠色閃光到按下按鍵）主要由你自己的反應時間主導 — 適合用來比較不同設定，但不適合用來評斷手把本身。管線值則對硬體更誠實：它把 Gamepad API 的時間戳與影格時間相減，量測在 requestAnimationFrame 迴圈第一次能對手把狀態做出反應時，該狀態已經有多舊。瀏覽器沙箱無法量測真正端到端的顯示延遲，而時間戳的粒度加上你的輪詢間隔會替管線值設下一個下限，所以請把它讀作輸入新鮮度的上限，而非實驗室等級的數字。

### 我可以同時比較兩支手把嗎？

可以 — 接上兩支手把並切換到比較模式。每支手把都會有各自的即時示意圖與搖桿散點／飄移讀數並排顯示，這是把磨損搖桿和健康搖桿對照的最快方式。你可以選擇要把已連接手把中的哪兩支放進各欄。

### 匯出的 JSON 裡有什麼？

所選手把的 id、標準對應名稱、按鍵與軸數量、每個控制項的目前數值加上你測試期間觀測到的最小與最大值、輪詢率估算值，以及若你有執行的話還包括飄移測試結果。一切都在你的瀏覽器中產生並直接下載 — 不會送往任何地方。匯出前請把每根搖桿沿邊緣繞一圈並握緊兩個扳機，讓觀測範圍完整。
