Controller werkt niet in emulator? Opgelost in 5 minuten
Werkt je controller niet in je browser-emulator? Deze gids loodst je door Gamepad API-debugging, browserflaggen, modusinstelling-eigenaardigheden en USB-alternatieven om je zo snel mogelijk aan het spelen te krijgen.
Door RGS Editorial · Gepubliceerd: · Bijgewerkt:
Laatst herzien door RGS Editorial op
Waarom je controller ermee stopt
Wanneer een controller niet werkt in een emulator die in je browser draait, ligt de fout bijna nooit bij de emulator zelf — het is meestal een van drie dingen: het besturingssysteem heeft het apparaat nog niet klaar met koppelen, de browser heeft nog geen knopdruk ontvangen om de Gamepad API te activeren, of de controller zendt een signaal uit in een modus die de browser niet herkent. Werk de onderstaande stappen in volgorde door en de meeste problemen zijn binnen vijf minuten verholpen.
De browser Gamepad API (gestandaardiseerd in de W3C Gamepad-specificatie) vereist een expliciete gebruikershandeling — specifiek een knopdruk op de controller zelf — voordat het apparaat aan een webpagina wordt gemeld. Juist deze eis zorgt voor meer verwarring dan welk ander probleem ook, dus de gids begint hier.
Stap 1 — controleer of de controller is gekoppeld
Voordat je browserinstellingen aanpast, controleer je eerst of de controller op besturingssysteemniveau wordt herkend. Open gamepadtester.net in een browsertabblad en druk op een willekeurige knop op je controller. Als er een gamepad-kaart verschijnt en assen of knoppen reageren, heeft het besturingssysteem het apparaat correct gekoppeld en kun je doorgaan naar stap 2. Als er niets verschijnt, gaat het niet om een browser-emulator controller-probleem — het is een koppelingsprobleem dat je eerst in je besturingssysteem moet oplossen.
Op Windows 10 en 11 ga je naar Instellingen → Bluetooth en apparaten → Apparaten en zoek je je controller onder 'Overige apparaten'. Bluetooth-controllers die in deze lijst staan maar 'Niet verbonden' tonen, hebben hun koppelingsverbinding verloren; verwijder het apparaat en koppel het opnieuw. Op macOS 13 en later gebruik je Systeeminstellingen → Bluetooth. Linux-gebruikers kunnen 'bluetoothctl devices' in een terminal uitvoeren om gekoppelde hardware te bekijken.
Bedrade USB-controllers zouden direct zichtbaar moeten zijn in gamepadtester.net, zonder enige koppelstap. Als een bedrade controller daar niet verschijnt, probeer dan een andere USB-poort (bij voorkeur een poort direct op het moederbord in plaats van een hub), en controleer vervolgens Apparaatbeheer op Windows of 'lsusb' op Linux om te bevestigen dat het apparaat überhaupt wordt gedetecteerd. Een controller die het besturingssysteem niet kan detecteren, kan ook niet worden doorgegeven aan een browser.
Stap 2 — ziet de browser de controller
Ervan uitgaande dat gamepadtester.net de koppeling op besturingssysteemniveau bevestigt, is de volgende vraag of de browser de Gamepad API beschikbaar stelt aan de emulator-pagina. Als de Gamepad API niet werkt op een specifieke site, terwijl gamepadtester.net wel werkt, is dat een sterk teken dat ofwel een browserflag is uitgeschakeld, ofwel dat de emulator-pagina wordt aangeboden met een Permission-Policy-header die de 'gamepad'-functie blokkeert.
In Chrome en op Chromium gebaseerde browsers (Edge, Brave, Opera) plak je 'chrome://flags/#enable-gamepad' in de adresbalk. Als de flag beschikbaar is in jouw versie en is ingesteld op 'Disabled', zet je die op 'Enabled' en herstart je de browser. In de huidige stabiele versie van Chrome (versie 124 en later) is deze flag standaard ingeschakeld, dus als je hem niet ziet is dat normaal — geen probleem.
Firefox biedt een vergelijkbare voorkeur: open 'about:config', zoek naar 'dom.gamepad.enabled' en controleer of dit op 'true' staat. Firefox stelt ook als eis dat gamepad-toegang via een beveiligde context (HTTPS) verloopt, dus een emulator-pagina die via gewone HTTP wordt aangeboden zal in Firefox nooit controllers zien, ongeacht de waarde van die voorkeur.
Als de emulator gehost is op een site die je beheert of kunt inspecteren, open dan DevTools (F12) en controleer de response-headers van de hoofdpagina. Een header zoals 'Permissions-Policy: gamepad=()' blokkeert expliciet alle gamepad-toegang voor dat domein. Je kunt een server-gestuurde Permission-Policy-header niet vanuit de browser overschrijven; de sitebeheerder moet die verwijderen of versoepelen. Voor zelfgehoste emulators die lokaal draaien, is deze header doorgaans niet aanwezig.
De meest gemiste vereiste in de Gamepad API is de eerste-invoer-regel. De specificatie stelt verplicht dat een gamepad niet zichtbaar wordt gemaakt voor JavaScript totdat de gebruiker ten minste één knop heeft ingedrukt terwijl het browservenster de focus heeft. Klik eerst met je muis in het canvas-gebied van de emulator en druk daarna een knop op de controller in. Zonder die gefocuste klik kan de knopdruk volledig worden genegeerd. Dit is geen bug — het is een bewuste beveiligingsgrens om stille gamepad-detectie door scripts van derden te voorkomen.
Stap 3 — controllermodus en xinput
Veel moderne controllers melden zichzelf verschillend aan, afhankelijk van welke knop tijdens het inschakelen ingedrukt werd gehouden. De 8BitDo Pro 2 is het duidelijkste voorbeeld: door tijdens het inschakelen verschillende knoppen ingedrukt te houden, schakel je hem in Switch-modus, Android-modus, XInput-modus of macOS-modus. Elke modus presenteert een andere USB- of Bluetooth-apparaatdescriptor aan de host, en browsers koppelen deze descriptors aan verschillende interne gamepad-profielen. Als de controller niet werkt in de emulator maar wel verschijnt in gamepadtester.net, controleer dan in welke modus hij staat — de assen en het aantal knoppen verschillen per modus.
Voor de 8BitDo Pro 2 specifiek levert XInput-modus (houd 'X' ingedrukt tijdens het inschakelen met een USB-kabel aangesloten) de meest consistente resultaten in op Chromium gebaseerde browsers op Windows, omdat XInput-apparaten via een goed ingeburgerde driver-stack worden afgehandeld. Android-modus (houd 'B' ingedrukt tijdens het inschakelen) is doorgaans de beste keuze voor Bluetooth op Linux. Switch-modus is ontworpen voor Nintendo Switch-consoles en kan de gamepad-mapping in de browser op desktop-besturingssystemen in de war sturen, soms omdat assen worden verwacht waar knoppen horen te zitten.
Andere controllers met modusschakelaars zijn onder meer de Sony DualSense en DualShock 4, die zich anders gedragen via USB dan via Bluetooth, en de Xbox Core Controller, waarvoor de Xbox Accessories-app op Windows nodig is om firmware-updates toe te passen die van invloed zijn op het USB-descriptor-gedrag. Als de emulator gebruikmaakt van een vooraf ingestelde knoptoewijzing — wat gebruikelijk is bij op RetroArch gebaseerde web-builds — kan een onverwachte apparaatdescriptor ertoe leiden dat elke invoer verkeerd wordt toegewezen, zelfs als de controller technisch gezien wel wordt gedetecteerd.
- 8BitDo Pro 2: houd 'X' ingedrukt bij het inschakelen via USB voor XInput-modus op Windows; houd 'B' ingedrukt bij het inschakelen via Bluetooth voor Android-modus op Linux/macOS.
- Sony DualSense: een USB-verbinding is betrouwbaarder voor browser-emulators dan Bluetooth; DS4Windows is niet vereist op Windows 11 22H2 of later.
- Xbox Core Controller: Bluetooth-modus vereist dat de Xbox-controllerfirmware up-to-date is; controleer dit via de Xbox Accessories-app op Windows.
- Generieke controllers van derden: als de controller alleen een DirectInput (HID)-interface aanbiedt, kan Chromium hem presenteren met een niet-standaard knopindeling — vergelijk de knopindices op gamepadtester.net met de verwachte mapping van de emulator.
- Nintendo Switch Pro Controller: werkt via USB in alle grote browsers; Bluetooth-ondersteuning op Windows is wisselvallig omdat Windows het Switch HID-protocol niet native ondersteunt zonder drivers van derden.
Oplossingen specifiek voor Bluetooth
Bluetooth-controllers voegen een laag van radio- en stackcomplexiteit toe die bedrade verbindingen volledig vermijden. De drie meest voorkomende Bluetooth-specifieke storingen bij browser-emulators zijn: de controller die halverwege een sessie in slaapstand gaat en niet opnieuw wordt herkend door de browser na het wekken; storing van andere 2,4 GHz-apparaten (Wi-Fi op hetzelfde kanaal, USB 3.0-randapparatuur die ruis uitzendt nabij de ontvanger); en eigenaardigheden in de Bluetooth-stack van het besturingssysteem die het HID-profiel stilletjes verbreken.
Als de controller tijdens een sessie de verbinding verbreekt, zal de Gamepad API een 'gamepaddisconnected'-event afvuren. Sommige browser-gebaseerde emulators luisteren hiernaar en pauzeren het spel; andere doen dat niet. In beide gevallen zou het indrukken van een knop op de controller na opnieuw verbinden het 'gamepadconnected'-event opnieuw moeten activeren en de detectie hervatten — maar je moet eerst binnen het emulatorvenster klikken om de browserfocus te herstellen, om dezelfde reden van de eerste invoer die in stap 2 wordt beschreven.
USB Bluetooth-adapters die Bluetooth 4.0 of ouder gebruiken, hebben soms moeite met controllers die Bluetooth 5.0-functies adverteren. Als je pc een ingebouwde Bluetooth 5.0-adapter heeft maar je ook een USB-dongle gebruikt, kan Windows de controller naar de dongle routeren in plaats van naar de ingebouwde adapter. Schakel de dongle uit in Apparaatbeheer en koppel opnieuw met de ingebouwde adapter om dit te testen.
Op macOS is het verlenen van Bluetooth-toestemming aan de browser verplicht sinds macOS 10.15 (Catalina). Ga naar Systeeminstellingen → Privacy & Beveiliging → Bluetooth en controleer of je browser (Chrome, Firefox, Safari) in de lijst staat en ingeschakeld is. Zonder deze toestemming kan de browser geen HID-data lezen van een Bluetooth-controller, zelfs als het besturingssysteem aangeeft dat de controller verbonden is.
- Houd de controller binnen 3 meter van de Bluetooth-ontvanger om de latentie bij hertransmissie te beperken.
- Koppel Bluetooth-controllers indien mogelijk aan een USB Bluetooth-dongle die voor de pc is geplaatst, in plaats van aan een ingebouwde adapter die door een drukke interne RF-omgeving loopt.
- Schakel Bluetooth-energiebeheer uit op Windows: Apparaatbeheer → Bluetooth-adapter → Eigenschappen → Energiebeheer → vink 'De computer mag dit apparaat uitschakelen om energie te besparen' uit.
- Op Linux met BlueZ: controleer of de controller vertrouwd is ('trust <MAC>' in bluetoothctl), zodat hij automatisch opnieuw verbinding maakt zonder een bevestigingsvenster dat de HID-handshake kan blokkeren.
Als alles mislukt, gebruik dan USB
Als niets van het bovenstaande het probleem van een niet-herkende gamepad in de browser oplost, is een bedrade USB-verbinding de meest betrouwbare terugvaloptie. USB HID-controllers worden synchroon geïnventariseerd, hebben geen last van radiostoring, gaan niet in slaapstand en vereisen geen koppelstatus. Elke browser die de Gamepad API ondersteunt, herkent USB HID-controllers zonder aanvullende configuratie.
Het nadeel van bedraad USB is fysiek van aard: je zit vast aan de machine, de kabellengte is beperkt (standaard USB-kabels lopen tot 5 meter voor signaalverlies optreedt, al kunnen actieve verlengkabels dit verlengen), en het regelmatig aan- en loskoppelen van USB-connectors veroorzaakt mechanische slijtage aan zowel de micro-USB- of USB-C-stekker van de kabel als de poort op de controller.
Als je favoriete controller geen USB-kabeloptie heeft — sommige pads met alleen Bluetooth hebben die niet — is een bedraad alternatief dat gaming van NES tot en met PS2-tijdperk dekt de Raphnet USB-adapterreeks. Die stuurt originele controllers door naar USB HID zonder invoervertraging die door microcontroller-polling wordt veroorzaakt. Deze adapters presenteren zich als standaard HID-joysticks en worden herkend door elke implementatie van de browser Gamepad API, zonder stuurprogramma-installatie op Windows, macOS of Linux.
Voor gebruikers op Chromebook of ChromeOS: de Gamepad API is beschikbaar, maar USB-apparaattoegang wordt beheerd via het ChromeOS-rechtensysteem. Sluit de USB-controller aan en ga vervolgens naar Instellingen → Apparaten om te bevestigen dat de controller in de lijst staat. Als je een Linux (Crostini)-container gebruikt voor emulatie in plaats van een web-gebaseerde emulator, moet USB-doorsturing naar de container expliciet worden ingeschakeld via ChromeOS-instellingen → Linux → USB-apparaten.
Veelgestelde vragen
- Waarom werkt mijn controller wel op gamepadtester.net maar niet in de emulator?
- De emulatorpagina blokkeert mogelijk de toegang tot de Gamepad API via een Permissions-Policy HTTP-header, of vereist dat je eerst in het game canvas klikt voordat je een knop op de controller indrukt. Klik met je muis op het emulaterscherm en druk vervolgens op een knop van de controller. Als de emulator de invoer nog steeds negeert, controleer dan de response-headers van de pagina in DevTools op een 'Permissions-Policy: gamepad=()' vermelding.
- Wat betekent 'druk op een willekeurige knop om de controller te activeren' precies?
- De W3C Gamepad API-specificatie vereist dat je een fysieke knop op de controller indrukt nadat het browservenster focus heeft, voordat gamepadgegevens beschikbaar worden gesteld aan de JavaScript van de pagina. Dit voorkomt dat websites bezoekers stilletjes kunnen identificeren via aangesloten hardware. Klik eerst binnen het browsertabblad of het emulator canvas, en druk daarna op een face button van de controller — die volgorde voldoet aan de vereiste.
- Mijn 8BitDo controller wordt herkend, maar alle knoppen zijn verkeerd toegewezen — hoe los ik dat op?
- De 8BitDo Pro 2 presenteert verschillende knopindelingen afhankelijk van de opstartmodus. De Switch-modus is bedoeld voor Nintendo Switch-hardware en wijst knoppen anders toe dan de meeste browser-emulators verwachten. Zet de controller uit, houd 'X' ingedrukt terwijl je via USB verbindt om op Windows de XInput-modus te activeren, of houd 'B' ingedrukt bij het opstarten via Bluetooth voor de Android-modus op Linux en macOS. Controleer na het wisselen van modus opnieuw op gamepadtester.net of de nieuwe knopindices kloppen.
- Werkt de oplossing voor browser-emulator controllers anders in Firefox dan in Chrome?
- Ja, er zijn twee opvallende verschillen. Firefox vereist dat de emulatorpagina via HTTPS wordt aangeboden; een controller wordt niet herkend op een HTTP-pagina, ongeacht andere instellingen. Firefox gebruikt ook 'about:config' in plaats van 'chrome://flags' om gamepad-ondersteuning in te schakelen of te inspecteren — de relevante voorkeur is 'dom.gamepad.enabled'. De Gamepad API-implementatie van Chrome is overigens grotendeels compatibel met die van Firefox, maar Chrome heeft van oudsher zijn controller-mappingdatabase vaker bijgewerkt.
- Kan ik een PS4- of PS5-controller gebruiken in een browser-emulator zonder extra software?
- Via USB worden zowel de DualShock 4 als de DualSense door Chromium en Firefox herkend als standaard HID-gamepads, zonder extra software op Windows 10 en 11, macOS 12 en later, en de meeste Linux-distributies. Via Bluetooth zijn de resultaten wisselender — Chrome heeft native ondersteuning voor de DualShock 4 via zijn interne HID-descriptormapping, maar sommige emulatorpagina's kunnen de touchpad-klik of de L3/R3-assen toch nog verkeerd toewijzen. DS4Windows is een Windows-only tool van derden die de controller opnieuw presenteert als XInput, wat mappingproblemen kan oplossen, maar ten koste gaat van een achtergrondproces.
- Is er een manier om Gamepad API-ondersteuning te testen zonder een externe site te bezoeken?
- Ja. Open de ontwikkelaarsconsole van de browser (F12 → tabblad Console) en typ 'navigator.getGamepads()'. Druk eerst op een knop van je controller en voer het commando daarna nogmaals uit. Als de Gamepad API werkt, zie je een array met een Gamepad-object met niet-null-waarden; als de array alleen nulls bevat of leeg is na een knopdruk, stelt de browser het apparaat niet beschikbaar aan de pagina-context. Deze test werkt op elke pagina die via HTTPS wordt aangeboden.