에뮬레이터에서 컨트롤러가 작동하지 않나요? 5분 안에 해결하세요
브라우저 에뮬레이터에서 컨트롤러가 작동하지 않으십니까? 이 가이드는 Gamepad API 디버깅, 브라우저 플래그, 모드 전환 문제, 그리고 USB 대체 방법을 단계별로 안내하여 빠르게 게임을 즐길 수 있도록 도와드립니다.
글쓴이: RGS Editorial · 게시: · 업데이트:
RGS Editorial 이(가) 에 마지막으로 검토
컨트롤러가 작동을 멈추는 이유
브라우저에서 실행 중인 에뮬레이터에서 컨트롤러가 작동하지 않을 때, 그 원인은 거의 대부분 에뮬레이터 자체에 있지 않습니다 — 보통 세 가지 중 하나입니다: OS가 기기 페어링을 아직 완료하지 못했거나, 브라우저가 Gamepad API를 활성화하는 버튼 입력을 받지 못했거나, 또는 컨트롤러가 브라우저가 인식하지 못하는 모드로 신호를 송출하고 있는 경우입니다. 아래 단계를 순서대로 진행하면 대부분의 경우 5분 이내에 문제가 해결됩니다.
브라우저의 Gamepad API(W3C 게임패드 사양으로 표준화됨)는 웹 페이지에 기기를 보고하기 전에 명시적인 사용자 동작 — 구체적으로 컨트롤러 자체에서의 버튼 누름 — 이 필요합니다. 이 단일 요구 사항이 다른 어떤 문제보다 더 많은 사용자들을 혼란스럽게 만들기 때문에, 이 가이드는 여기서부터 시작합니다.
Step 1 — 컨트롤러 페어링 확인
브라우저 설정을 건드리기 전에, 컨트롤러가 운영 체제 수준에서 인식되고 있는지 먼저 확인하십시오. 임의의 브라우저 탭에서 gamepadtester.net을 열고 컨트롤러의 아무 버튼이나 눌러보십시오. 게임패드 카드가 나타나고 축(axes)이나 버튼이 반응한다면, OS가 기기를 올바르게 페어링한 것이므로 Step 2로 넘어가셔도 됩니다. 아무것도 나타나지 않는다면, 이는 브라우저 에뮬레이터 컨트롤러 문제가 아닌 페어링 문제이므로 OS에서 먼저 해결해야 합니다.
Windows 10 및 11에서는 설정 → Bluetooth 및 디바이스 → 디바이스로 이동하여 '기타 장치' 항목 아래에서 컨트롤러를 찾으십시오. 이 목록에 나타나지만 '연결 안 됨'으로 표시되는 Bluetooth 컨트롤러는 페어링 세션이 끊어진 것입니다. 기기를 제거한 후 다시 페어링하십시오. macOS 13 이상에서는 시스템 설정 → Bluetooth를 사용하십시오. Linux 사용자는 터미널에서 'bluetoothctl devices'를 실행하여 페어링된 하드웨어 목록을 확인할 수 있습니다.
유선 USB 컨트롤러는 페어링 과정 없이 gamepadtester.net에 즉시 나타나야 합니다. 유선 컨트롤러가 거기에 표시되지 않는다면, 다른 USB 포트(허브보다는 마더보드에 직접 연결된 포트를 권장합니다)를 시도해 보시고, Windows에서는 장치 관리자를, Linux에서는 'lsusb'를 통해 기기가 제대로 열거(enumerate)되는지 확인하십시오. OS가 열거할 수 없는 컨트롤러는 어떤 브라우저에도 전달될 수 없습니다.
Step 2 — 브라우저에서 컨트롤러를 인식하는지 확인
gamepadtester.net에서 OS 수준의 페어링이 확인되었다면, 다음으로 브라우저가 에뮬레이터 페이지에 Gamepad API를 노출하고 있는지 확인해야 합니다. 특정 사이트에서 Gamepad API가 작동하지 않는데 gamepadtester.net에서는 정상 작동한다면, 브라우저 플래그가 비활성화되어 있거나 에뮬레이터 페이지가 'gamepad' 기능을 차단하는 Permission-Policy 헤더와 함께 제공되고 있다는 강력한 신호입니다.
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에 노출되지 않습니다. 먼저 마우스로 에뮬레이터의 캔버스 영역을 클릭한 후, 컨트롤러의 버튼을 누르십시오. 포커스된 클릭 없이는 버튼 누름이 완전히 무시될 수 있습니다. 이것은 버그가 아닙니다 — 제3자 스크립트에 의한 무음 게임패드 열거를 방지하기 위한 의도적인 보안 경계입니다.
Step 3 — 컨트롤러 모드와 XInput
많은 최신 컨트롤러들은 전원을 켤 때 어떤 모드 버튼을 누르고 있었는지에 따라 서로 다른 방식으로 자신을 알립니다. 8BitDo Pro 2가 가장 명확한 예입니다. 전원을 켤 때 서로 다른 버튼을 누르고 있으면 Switch 모드, 안드로이드 모드, XInput 모드, 또는 macOS 모드로 진입합니다. 각 모드는 호스트에 서로 다른 USB 또는 Bluetooth 기기 디스크립터를 제공하며, 브라우저는 이 디스크립터들을 서로 다른 내부 게임패드 프로파일에 매핑합니다. 컨트롤러가 에뮬레이터에서 작동하지 않지만 gamepadtester.net에서는 나타난다면, 현재 어떤 모드인지 확인하십시오 — 모드마다 축과 버튼 수가 다릅니다.
특히 8BitDo Pro 2의 경우, XInput 모드(USB 케이블을 연결한 상태에서 전원을 켜는 동시에 'X'를 누름)가 Windows의 Chromium 기반 브라우저에서 가장 일관된 결과를 제공합니다. XInput 기기는 잘 확립된 드라이버 스택을 통해 매핑되기 때문입니다. 안드로이드 모드(전원을 켤 때 'B' 누름)는 일반적으로 Linux에서 Bluetooth 연결 시 가장 좋은 선택입니다. Switch 모드는 Nintendo Switch 콘솔을 위해 설계된 것으로, 데스크톱 운영 체제에서는 브라우저의 게임패드 매핑을 혼란스럽게 만들 수 있으며, 때로는 버튼이 있어야 할 자리에 축이 나타나는 현상을 유발합니다.
모드 전환 기능을 갖춘 다른 컨트롤러로는 Sony DualSense와 DualShock 4가 있으며, 이들은 USB와 Bluetooth 연결 방식에 따라 서로 다르게 동작합니다. 또한 Xbox Core Controller는 USB 디스크립터 동작에 영향을 미치는 펌웨어 업데이트를 적용하기 위해 Windows에서 Xbox Accessories 앱이 필요합니다. 에뮬레이터가 사전 구성된 버튼 매핑(RetroArch 기반 웹 빌드에서 흔히 사용됨)을 사용하는 경우, 예상치 못한 기기 디스크립터로 인해 컨트롤러가 기술적으로 인식되더라도 모든 입력이 잘못 매핑될 수 있습니다.
- 8BitDo Pro 2: Windows에서 USB 전원 켤 때 'X'를 누른 채로 켜면 XInput 모드로 전환됩니다. Linux/macOS에서 Bluetooth 전원 켤 때 'B'를 누른 채로 켜면 Android 모드로 전환됩니다.
- Sony DualSense: 브라우저 에뮬레이터에서는 Bluetooth보다 USB 연결이 더 안정적입니다. 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 특유의 장애가 발생하는 가장 흔한 세 가지 원인은 다음과 같습니다. 첫째, 세션 도중 컨트롤러가 절전 모드로 진입하여 재활성화 시 브라우저가 이를 다시 감지하지 못하는 경우, 둘째, 동일 대역의 Wi-Fi나 수신기 근처에서 노이즈를 발생시키는 USB 3.0 주변기기 등 2.4 GHz 대역 장치의 간섭, 셋째, HID 프로파일을 조용히 끊어버리는 운영체제 Bluetooth 스택의 특이 동작입니다.
세션 도중 컨트롤러 연결이 끊어지면 Gamepad API는 'gamepaddisconnected' 이벤트를 발생시킵니다. 일부 브라우저 기반 에뮬레이터는 이 이벤트를 감지하여 일시 정지하지만, 그렇지 않은 경우도 있습니다. 어느 쪽이든, 재연결 후 컨트롤러의 아무 버튼이나 누르면 'gamepadconnected' 이벤트가 다시 발생하여 감지가 재개됩니다. 다만 Step 2에서 설명한 최초 입력 이유와 동일하게, 브라우저 포커스를 다시 확보하려면 반드시 에뮬레이터 창 내부를 먼저 클릭해야 합니다.
Bluetooth 4.0 이하를 사용하는 USB Bluetooth 어댑터는 Bluetooth 5.0 기능을 지원하는 컨트롤러와 연결할 때 문제가 발생하는 경우가 있습니다. PC에 내장 Bluetooth 5.0 어댑터가 있는데 USB 동글을 함께 사용 중이라면, Windows가 내장 어댑터 대신 USB 동글로 컨트롤러를 연결할 수 있습니다. 이 경우 장치 관리자에서 동글을 비활성화한 후 내장 어댑터에 다시 페어링하여 테스트해 보시기 바랍니다.
macOS에서는 macOS 10.15 (Catalina) 이후부터 브라우저에 Bluetooth 권한을 부여해야 합니다. 시스템 설정 → 개인정보 보호 및 보안 → Bluetooth로 이동하여 사용 중인 브라우저(Chrome, Firefox, Safari)가 목록에 등록되어 있고 활성화되어 있는지 확인하시기 바랍니다. 이 권한이 없으면, OS에서 컨트롤러가 연결된 것으로 표시되더라도 브라우저는 Bluetooth 컨트롤러의 HID 데이터를 읽을 수 없습니다.
- 재전송 지연을 줄이기 위해 컨트롤러를 Bluetooth 수신기로부터 3미터 이내에 두시기 바랍니다.
- 가능하다면, Bluetooth 컨트롤러를 PC 내부의 혼잡한 RF 환경을 거치는 내장 어댑터보다 PC 전면에 배치한 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 전용 패드는 USB를 지원하지 않습니다 — 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는 게임패드 지원을 활성화하거나 확인할 때 'chrome://flags' 대신 'about:config'를 사용하며, 관련 환경설정 항목은 'dom.gamepad.enabled'입니다. Chrome의 Gamepad API 구현은 전반적으로 Firefox와 호환되지만, Chrome은 역사적으로 컨트롤러 매핑 데이터베이스를 더 자주 업데이트해 왔습니다.
- 별도의 소프트웨어 없이 브라우저 에뮬레이터에서 PS4 또는 PS5 컨트롤러를 사용할 수 있나요?
- USB로 연결하는 경우, DualShock 4와 DualSense 모두 Windows 10 및 11, macOS 12 이상, 그리고 대부분의 Linux 배포판에서 Chromium과 Firefox가 별도 소프트웨어 없이 표준 HID 게임패드로 인식합니다. Bluetooth를 통한 연결은 결과가 더 일정하지 않습니다 — Chrome은 내부 HID 디스크립터 매핑을 통해 DualShock 4를 기본적으로 지원하지만, 일부 에뮬레이터 페이지에서는 터치패드 클릭이나 L3/R3 축이 잘못 매핑될 수 있습니다. DS4Windows는 컨트롤러를 XInput 장치로 재표현하는 Windows 전용 서드파티 도구로, 백그라운드 프로세스가 추가되는 대신 매핑 문제를 해결할 수 있습니다.
- 외부 사이트를 방문하지 않고도 Gamepad API 지원 여부를 테스트할 수 있는 방법이 있나요?
- 네, 있습니다. 브라우저의 개발자 콘솔(F12 → Console 탭)을 열고 'navigator.getGamepads()'를 입력하십시오. 먼저 컨트롤러의 버튼을 누른 뒤 다시 명령을 실행하세요. Gamepad API가 정상적으로 작동 중이라면, null이 아닌 값을 가진 Gamepad 객체가 담긴 배열이 표시됩니다. 버튼을 누른 후에도 배열에 null만 있거나 비어 있다면, 브라우저가 해당 장치를 페이지 컨텍스트에 노출하지 않고 있는 것입니다. 이 테스트는 HTTPS로 제공되는 모든 페이지에서 작동합니다.