搖桿在模擬器裡沒反應?五分鐘內搞定

你的瀏覽器模擬器認不到搖桿嗎?本指南將帶你逐步排查 Gamepad API 偵錯、瀏覽器旗標、模式切換的各種眉角,以及 USB 備援方案,讓你快速回到遊戲狀態。

RGS Editorial 最後審閱

為什麼搖桿會突然失靈

當搖桿在瀏覽器執行的模擬器裡無法正常運作時,問題幾乎從來不出在模擬器本身——通常是以下三種情況之一:作業系統尚未完成裝置配對、瀏覽器尚未收到按鈕觸發以啟動 Gamepad API,或者搖桿正在以瀏覽器無法辨識的模式廣播訊號。請依序照著以下步驟操作,大多數情況都能在五分鐘內解決。

瀏覽器的 Gamepad API(已納入 W3C Gamepad 規範標準化)要求明確的使用者操作——具體來說,是在搖桿本身按下任意按鈕——之後才會向網頁回報任何裝置。光是這一個要求,就讓許多使用者踢到鐵板,因此本指南從這裡開始說起。

Step 1 — 確認搖桿已完成配對

在調整瀏覽器設定之前,先確認搖桿已在作業系統層級被正確辨識。在任意瀏覽器分頁開啟 gamepadtester.net,然後按下搖桿上的任意按鈕。如果出現搖桿卡片,且搖桿軸向或按鈕都有回應,代表作業系統已正確配對該裝置,你可以繼續進行 Step 2。若什麼都沒出現,問題就不是瀏覽器模擬器的搖桿設定——而是配對問題,必須先在作業系統層面解決。

在 Windows 10 與 11 上,前往「設定 → 藍牙與裝置 → 裝置」,在「其他裝置」底下尋找你的搖桿。若藍牙搖桿出現在清單中但顯示「未連線」,代表配對連線已中斷;請移除該裝置並重新配對。在 macOS 13 及更新版本上,請使用「系統設定 → 藍牙」。Linux 使用者可在終端機執行「bluetoothctl devices」來列出已配對的硬體裝置。

有線 USB 搖桿應該不需要任何配對步驟,直接就能在 gamepadtester.net 上顯示。如果有線搖桿在那裡沒有出現,請試試不同的 USB 連接埠(最好是直接連接至主機板上的連接埠,而非透過集線器),然後在 Windows 的裝置管理員或 Linux 的「lsusb」指令中確認裝置是否已被列舉出來。若作業系統根本無法列舉該搖桿,就無法將其傳遞給任何瀏覽器使用。

Step 2 — 確認瀏覽器是否能偵測到搖桿

假設 gamepadtester.net 已確認作業系統層級的配對沒有問題,接下來要確認的是瀏覽器是否有將 Gamepad API 暴露給模擬器頁面。如果 Gamepad API 在特定網站無法運作,但 gamepadtester.net 卻正常,那極有可能是某個瀏覽器旗標被停用,或是模擬器頁面在伺服器端送出了含有 Permission-Policy 標頭、封鎖了「gamepad」功能的回應。

在 Chrome 以及基於 Chromium 的瀏覽器(Edge、Brave、Opera)中,將「chrome://flags/#enable-gamepad」貼入網址列。若該旗標存在於你的版本且被設為「Disabled」,請將其切換為「Enabled」並重新啟動瀏覽器。在目前穩定版 Chrome(版本 124 及更新版本)中,此旗標預設為啟用,因此找不到它是正常現象——不必擔心。

Firefox 有類似的偏好設定:開啟「about:config」,搜尋「dom.gamepad.enabled」,確認其值設為「true」。Firefox 也要求搖桿存取必須在安全情境(HTTPS)下進行,因此若模擬器頁面是透過純 HTTP 提供的,無論偏好設定的值為何,Firefox 都無法偵測到搖桿。

如果模擬器是架設在你可以控制或檢查的網站上,請開啟 DevTools(F12),並查看主頁面的回應標頭。像「Permissions-Policy: gamepad=()」這樣的標頭會明確封鎖該來源的所有搖桿存取。從瀏覽器端無法覆寫伺服器送出的 Permission-Policy 標頭;必須由網站管理者移除或放寬該設定。如果是在本機自行架設的模擬器,通常不會出現這個標頭。

在 Gamepad API 中最常被忽略的要求,就是「首次輸入規則」。規範明定,在使用者於瀏覽器視窗取得焦點的情況下按下至少一個按鈕之前,搖桿不會向 JavaScript 公開。請先用滑鼠在模擬器的畫布區域內點一下,再按下搖桿上的按鈕。若沒有先完成這個聚焦點擊,按鈕的輸入可能完全被忽略。這不是程式錯誤——而是一個刻意設計的安全邊界,用以防止第三方腳本在使用者不知情的情況下列舉搖桿。

Step 3 — 搖桿模式與 xinput

許多現代搖桿會根據開機時按住的按鈕不同,以不同方式向系統自我介紹。8BitDo Pro 2 就是最典型的例子:開機時按住不同的按鈕,可以進入 Switch 模式、Android 模式、XInput 模式或 macOS 模式。每種模式都會向主機呈現不同的 USB 或 Bluetooth 裝置描述符,而瀏覽器則根據這些描述符對應到不同的內部搖桿設定檔。如果搖桿在模擬器裡無法運作,但在 gamepadtester.net 中有出現,請檢查它目前處於哪種模式——不同模式的軸向數量與按鈕數量都會有所不同。

以 8BitDo Pro 2 來說,XInput 模式(連接 USB 線後按住「X」開機)在 Windows 上的 Chromium 系瀏覽器中相容性最佳,因為 XInput 裝置會經過一套成熟穩定的驅動程式堆疊進行映射。Android 模式(按住「B」開機)通常是 Linux 上藍牙連線的最佳選擇。Switch 模式是專為 Nintendo Switch 主機設計的,在桌面作業系統上可能會讓瀏覽器的搖桿按鍵映射產生混亂,有時會造成按鈕被誤判為軸向輸入。

其他具有模式切換功能的搖桿,包括 Sony DualSense 與 DualShock 4——它們透過 USB 與藍牙連線時所呈現的裝置描述符有所不同——以及 Xbox Core Controller,後者需要在 Windows 上透過 Xbox Accessories 應用程式套用軔體更新,才能影響 USB 描述符的行為。如果模擬器使用預先建置的按鍵映射(這在基於 RetroArch 的網頁版模擬器中很常見),一個出乎意料的裝置描述符可能導致即使搖桿技術上已被偵測到,所有輸入仍然全部對應錯誤。

  • 8BitDo Pro 2:在 Windows 上以 USB 開機時按住「X」可切換至 XInput 模式;在 Linux/macOS 上以 Bluetooth 開機時按住「B」可切換至 Android 模式。
  • Sony DualSense:在瀏覽器模擬器中,USB 連線的穩定性優於 Bluetooth;Windows 11 22H2 或更新版本無需安裝 DS4Windows。
  • Xbox Core Controller:Bluetooth 模式需要 Xbox 控制器軔體保持最新版本;請透過 Windows 上的 Xbox Accessories 應用程式進行確認。
  • 第三方通用手把:若控制器僅提供 DirectInput(HID)介面,Chromium 可能會以非標準按鍵配置呈現——請對照 gamepadtester.net 上的按鍵索引,確認是否與模擬器預期的對應關係一致。
  • Nintendo Switch Pro Controller:在所有主流瀏覽器上均可透過 USB 正常使用;Windows 上的 Bluetooth 支援不穩定,原因在於 Windows 原生不支援 Switch HID 通訊協定,需借助第三方驅動程式。

Bluetooth 專屬修復方式

Bluetooth 控制器引入了有線連線完全不會遇到的無線電與通訊堆疊複雜性。在瀏覽器模擬器情境中,最常見的三種 Bluetooth 專屬故障模式為:控制器在使用途中進入睡眠模式,且喚醒後瀏覽器無法重新偵測;其他 2.4 GHz 裝置的干擾(同頻段的 Wi-Fi、在接收器附近輻射雜訊的 USB 3.0 周邊裝置);以及作業系統 Bluetooth 堆疊的特殊問題導致 HID 設定檔被靜默中斷連線。

若控制器在使用途中斷線,Gamepad API 將觸發「gamepaddisconnected」事件。部分瀏覽器版模擬器會監聽此事件並暫停遊戲,其他則否。無論如何,重新連線後按下控制器上的任意按鍵,應能再次觸發「gamepadconnected」事件並恢復偵測——但你必須先在模擬器視窗內點擊一下,以重新建立瀏覽器焦點,原因與步驟 2 中說明的首次輸入機制相同。

使用 Bluetooth 4.0 或更早版本的 USB Bluetooth 介面卡,有時會與支援 Bluetooth 5.0 功能的控制器發生相容性問題。若你的電腦內建 Bluetooth 5.0 介面卡,但同時插著 USB 接收器,Windows 可能會將控制器路由至 USB 接收器而非內建介面卡。請在裝置管理員中停用該 USB 接收器,再重新配對至內建介面卡進行測試。

在 macOS 上,自 macOS 10.15(Catalina)起,需要授予瀏覽器 Bluetooth 存取權限。請前往「系統設定」→「隱私權與安全性」→「Bluetooth」,確認你的瀏覽器(Chrome、Firefox、Safari)已列出並啟用。若缺少此權限,即使作業系統顯示 Bluetooth 控制器已連線,瀏覽器仍無法讀取其 HID 資料。

  • 請將控制器保持在 Bluetooth 接收器 3 公尺範圍內,以降低重傳延遲。
  • 若條件允許,建議將 Bluetooth 控制器配對至放置於電腦前方的 USB Bluetooth 接收器,而非透過機殼內部複雜射頻環境的內建介面卡。
  • 在 Windows 上停用 Bluetooth 電源管理:開啟裝置管理員 → Bluetooth 介面卡 → 內容 → 電源管理 → 取消勾選「允許電腦關閉這個裝置以節省電源」。
  • 在使用 BlueZ 的 Linux 系統上,請確認控制器已被設為信任裝置(在 bluetoothctl 中執行「trust <MAC>」),使其能自動重新連線,避免出現可能導致 HID 握手停滯的確認提示。

萬不得已時,改用 USB

若上述方法均無法解決瀏覽器偵測不到遊戲手把的問題,有線 USB 連線是目前最可靠的備用方案。USB HID 控制器採用同步列舉方式,不存在無線干擾,不會進入睡眠,也無需任何配對狀態。所有實作 Gamepad API 的瀏覽器均支援 USB HID 控制器,且無需額外設定。

有線 USB 的缺點在於物理限制:你必須與電腦保持連線,線材長度有限(標準 USB 線最長約 5 公尺,超過此長度訊號可能劣化,雖然主動延長線可延伸距離),且頻繁插拔 USB 接頭,會對線材的 micro-USB 或 USB-C 插頭以及控制器上的連接埠造成機械性磨損。

若你偏好的控制器沒有 USB 線材選項——某些純 Bluetooth 手把確實如此——一款適合 NES 至 PS2 世代遊戲的有線替代方案是 Raphnet USB 轉接器系列。它能將原廠控制器直通至 USB HID,不會因微控制器輪詢而產生輸入延遲。這些轉接器以標準 HID 搖桿形式呈現,在 Windows、macOS 及 Linux 上均無需安裝驅動程式,可被所有瀏覽器的 Gamepad API 實作直接偵測。

Chromebook 或 ChromeOS 使用者請注意,Gamepad API 雖然可用,但 USB 裝置存取受 ChromeOS 權限系統管控。請插入 USB 控制器後,前往「設定」→「裝置」確認控制器已列出。若你使用的是 Linux(Crostini)容器進行模擬,而非網頁版模擬器,則必須在 ChromeOS「設定」→「Linux」→「USB 裝置」中明確啟用 USB 直通至容器的功能。

常見問題

為什麼我的控制器在 gamepadtester.net 上正常運作,卻在模擬器中無法使用?
模擬器頁面可能透過 Permissions-Policy HTTP 標頭封鎖了 Gamepad API 的存取權限,或者它可能要求你先在遊戲畫布內點擊,再按下控制器按鈕。請先用滑鼠點擊模擬器螢幕,然後按下控制器上的任一按鈕。若模擬器仍然無視輸入,請在 DevTools 中檢查頁面的回應標頭,確認是否存在「Permissions-Policy: gamepad=()」這個項目。
「按下任意按鈕以啟動控制器」這句話究竟是什麼意思?
W3C Gamepad API 規範要求:在瀏覽器視窗獲得焦點之後,必須實際按下控制器上的某個按鈕,頁面的 JavaScript 才能取得任何搖桿資料。這項設計是為了防止網站透過已連接的硬體裝置悄悄對訪客進行指紋識別。請先點擊瀏覽器分頁或模擬器畫布,再按下控制器上的正面按鈕——依照這個順序操作,即可滿足規範的要求。
我的 8BitDo 控制器雖然被偵測到,但所有按鈕的對應都是錯的——該如何修正?
8BitDo Pro 2 會根據啟動模式的不同,呈現出不同的按鈕配置。Switch 模式是專為 Nintendo Switch 硬體設計的,其按鈕對應方式與大多數瀏覽器模擬器所預期的不同。請先關閉控制器電源,若使用 Windows 並透過 USB 連接,請按住「X」鍵再連接,以進入 XInput 模式;若在 Linux 或 macOS 上透過 Bluetooth 開機,請按住「B」鍵以進入 Android 模式。切換模式後,請再次前往 gamepadtester.net 確認新的按鈕索引是否正確。
瀏覽器模擬器的控制器修正方式,在 Firefox 和 Chrome 上有什麼不同?
有兩個值得注意的差異。首先,Firefox 要求模擬器頁面必須透過 HTTPS 提供服務;在 HTTP 頁面上,無論其他設定為何,控制器都不會被偵測到。其次,Firefox 使用「about:config」而非「chrome://flags」來啟用或檢查搖桿支援——相關的偏好設定項目為「dom.gamepad.enabled」。Chrome 的 Gamepad API 實作在整體上與 Firefox 相容,但 Chrome 在歷史上更新其控制器對應資料庫的頻率較高。
我可以在不安裝額外軟體的情況下,在瀏覽器模擬器中使用 PS4 或 PS5 控制器嗎?
透過 USB 連接時,在 Windows 10 及 11、macOS 12 及更新版本,以及大多數 Linux 發行版上,DualShock 4 與 DualSense 均可被 Chromium 和 Firefox 識別為標準 HID 搖桿,無需安裝任何額外軟體。透過 Bluetooth 連接時,結果則較不穩定——Chrome 透過內建的 HID 描述符對應,原生支援 DualShock 4,但部分模擬器頁面仍可能錯誤對應觸控板點擊或 L3/R3 搖桿軸。DS4Windows 是一款僅支援 Windows 的第三方工具,它會將控制器重新呈現為 XInput 裝置,雖然能解決對應問題,但代價是需要在背景常駐一個執行程序。
有沒有辦法不造訪外部網站,就能測試 Gamepad API 的支援情況?
有的。開啟瀏覽器的開發者主控台(按 F12 → 切換至 Console 分頁),輸入「navigator.getGamepads()」。請先按下控制器上的某個按鈕,再重新執行這個指令。如果 Gamepad API 運作正常,你將會看到一個陣列,其中包含一個具有非 null 值的 Gamepad 物件;若在按下按鈕後,陣列內容全為 null 或完全為空,則代表瀏覽器並未將該裝置暴露給目前的頁面環境。這個測試方法適用於任何透過 HTTPS 提供服務的頁面。