DirectInput 및 XUSB 디바이스
Windows의 XUSB용 드라이버는 XINPUT DLL에 대한 커널 모드 인터페이스를 구현합니다. 일반 컨트롤러 디바이스에서 DirectInput API를 사용하는 레거시 타이틀에 대한 좋은 환경을 제공하기 위해 드라이버는 DirectInput에서 선택하는 HID(휴먼 인터페이스 디바이스) 클래스 인터페이스도 내보내기합니다. 기존 XINPUT 버전의 게임 애플리케이션 집합에서 일반적인 동작에 따라 XUSB를 HID에 매핑하도록 선택했으며, 최신 하위 유형에 대한 매핑을 업데이트했습니다. 이 토픽에서는 매핑을 설명합니다.
HID(휴먼 인터페이스 장치)
HID 표준은 Microsoft가 입력 디바이스에 대한 프로토콜을 일반화하기 위해 최초로 제안한 범용 직렬 버스(USB) 위원회의 표준입니다. 바이트 코드 설명 언어로 구성되며, 게임 패드, 마우스, 조이스틱, 스로틀, 방향 컨트롤, 다중 축 컨트롤러를 표현할 수 있습니다. 이 표준은 일반화되므로 임의의 디바이스에서 입력을 사용하는 소프트웨어를 작성하는 데 어려움을 겪을 수 있습니다. 따라서 게임 중심 DirectInput API의 경우 하드웨어 제조업체가 드라이버를 통해 지원하도록 장려하기 위해 특정 유형의 하위 매핑을 개발했습니다.
Important
RawInput API를 통해 HID 입력 디바이스에 액세스하고 하위 수준 HID API를 통해 입력 보고서를 처리할 수도 있지만 진동 피드백은 DirectInput과 같이 작동하지 않습니다.
매핑
XUSB 드라이버는 XINPUT 및 DirectInput 사용을 모두 지원하기 위해 디바이스에 대한 XUSB 클래스 인터페이스와 HID 클래스 인터페이스를 모두 구현합니다. 이 매핑은 XUSB 하위 형식 정보를 기반으로 합니다. 드라이버는 네 개의 고유한 매핑 그룹을 구현합니다.
XUSB 하위 형식 | 매핑 |
---|---|
XINPUT_DEVSUBTYPE_GAMEPAD(하위 형식 1) | Gamepad |
XINPUT_DEVSUBTYPE_WHEEL(하위 유형 2) | 휠 |
XINPUT_DEVSUBTYPE_ARCADE_STICK(하위 유형 3) | 아케이드 스틱/아케이드 패드 |
XINPUT_DEVSUBTYPE_FLIGHT_STICK(하위 유형 4) | 플라이트 스틱 |
XINPUT_DEVSUBTYPE_DANCE_PAD(하위 유형 5) | 새 하위 형식에 대한 기본값 |
XINPUT_DEVSUBTYPE_GUITAR(하위 유형 6) | 기타 |
XINPUT_DEVSUBTYPE_GUITAR_ALTERNATE(하위 유형 7) | |
XINPUT_DEVSUBTYPE_DRUM_KIT(하위 유형 8) | |
XINPUT_DEVSUBTYPE_GUITAR_BASS(하위 유형 11) | |
XINPUT_DEVSUBTYPE_ARCADE_PAD(하위 유형 19) |
참고 항목
다음 HID 매핑은 정적입니다. 즉, 디바이스 기능 보고서에서 특정 버튼 또는 축이 지원되지 않음을 나타내더라도 매핑은 여전히 포함되지만 항상 오프 상태 또는 가운데 값을 보고합니다.
Gamepad
이 매핑은 기본 매핑이며 표준 게임 패드를 중심으로 설계되었고 게임 패드 HID 사용 유형으로 노출됩니다.
제어 | HID 사용량 이름 | 사용량 페이지 | 사용 ID |
---|---|---|---|
왼쪽 스틱 | X, Y | 0x01 | 0x30, 0x31 |
오른쪽 스틱 | Rx, Ry | 0x01 | 0x33, 0x34 |
왼쪽 트리거 + 오른쪽 트리거 | Z* | 0x01 | 0x32 |
D 패드 위쪽, 아래쪽, 왼쪽, 오른쪽 | 햇 스위치 | 0x01 | 0x39 |
A | 단추 1 | 0x09 | 0x01 |
B | 단추 2 | 0x09 | 0x02 |
X | 단추 3 | 0x09 | 0x03 |
Y | 단추 4 | 0x09 | 0x04 |
LB(왼쪽 범퍼) | 단추 5 | 0x09 | 0x05 |
RB(오른쪽 범퍼) | 단추 6 | 0x09 | 0x06 |
뒤로 | 단추 7 | 0x09 | 0x07 |
시작 | 단추 8 | 0x09 | 0x08 |
LSB(왼쪽 스틱 버튼) | 단추 9 | 0x09 | 0x09 |
RSB(오른쪽 스틱 버튼) | 단추 10 | 0x09 | 0x0A |
참고 항목
(*): Z가 회전을 위해 대부분의 타이틀에서 예상하는 가운데 맞춤 동작을 나타내도록 결합됩니다. 이는 DirectInput 및 HID를 통해 가능한 모든 트리거 조합 값을 볼 수 없음을 의미합니다.
아케이드 스틱/아케이드 패드
아케이드 스틱 컨트롤러를 중심으로 설계된 매핑이며 게임 패드 HID 사용 유형으로 노출됩니다. 아케이드 패드는 아케이드 스틱과 매우 비슷하지만 크기는 더 작은 폼 팩터입니다. 이러한 디자인은 아날로그 왼쪽 트리거와 오른쪽 트리거를 최소 및 최대 축 값을 보고하는 디지털 버튼으로 대체합니다.
제어 | HID 사용량 이름 | 사용량 페이지 | 사용 ID |
---|---|---|---|
D 패드 위쪽, 아래쪽, 왼쪽, 오른쪽 | 햇 스위치 | 0x01 | 0x39 |
A | 단추 1 | 0x09 | 0x01 |
B | 단추 2 | 0x09 | 0x02 |
X | 단추 3 | 0x09 | 0x03 |
Y | 단추 4 | 0x09 | 0x04 |
LB(왼쪽 범퍼) | 단추 5 | 0x09 | 0x05 |
RB(오른쪽 범퍼) | 단추 6 | 0x09 | 0x06 |
뒤로 | 단추 7 | 0x09 | 0x07 |
시작 | 단추 8 | 0x09 | 0x08 |
왼쪽 트리거 | 단추 9 | 0x09 | 0x09 |
오른쪽 트리거 | 단추 10 | 0x09 | 0x0A |
이러한 디바이스는 추가 컨트롤을 지원하거나 지원하지 않을 수도 있지만, 왼쪽 스틱, 오른쪽 스틱, LSB(왼쪽 스틱 단추) 및 RSB(오른쪽 스틱 단추) HID 매핑에 의해 노출되지 않습니다.
휠
이 매핑은 레이싱 휠을 중심으로 설계되었으며 게임 패드 HID 사용 유형으로 노출됩니다.
제어 | HID 사용량 이름 | 사용량 페이지 | 사용 ID |
---|---|---|---|
휠(왼쪽 스틱 X) | X | 0x01 | 0x30 |
가속기 페달(오른쪽 트리거) + 브레이크 페달(왼쪽 트리거) | Z* | 0x01 | 0x32 |
D 패드 위쪽, 아래쪽, 왼쪽, 오른쪽 | 햇 스위치 | 0x01 | 0x39 |
A | 단추 1 | 0x09 | 0x01 |
B | 단추 2 | 0x09 | 0x02 |
X | 단추 3 | 0x09 | 0x03 |
Y | 단추 4 | 0x09 | 0x04 |
LB(왼쪽 범퍼) | 단추 5 | 0x09 | 0x05 |
RB(오른쪽 범퍼) | 단추 6 | 0x09 | 0x06 |
LSB(왼쪽 스틱 버튼) | 단추 7 | 0x09 | 0x07 |
RSB(오른쪽 스틱 버튼) | 단추 8 | 0x09 | 0x08 |
뒤로 | 단추 9 | 0x09 | 0x09 |
시작 | 단추 10 | 0x09 | 0x0A |
참고 항목
(*): Z가 브레이크 및 액셀러레이터 컨트롤에 대해 대부분의 타이틀에서 예상하는 가운데 맞춤 동작을 나타내도록 결합됩니다. 이는 DirectInput을 통해 가능한 모든 페달 조합 값을 볼 수 없음을 의미합니다.
플라이트 스틱
이 매핑은 플라이트 스틱을 중심으로 설계되었으며 조이스틱 HID 사용 유형으로 노출됩니다.
제어 | 사용량 이름 | 사용량 페이지 | 사용 ID |
---|---|---|---|
플라이트 스틱(왼쪽 스틱) | X, Y | 0x01 | 0x30, 0x31 |
POV 햇(오른쪽 스틱) | Rx, Ry | 0x01 | 0x33, 0x34 |
제한(오른쪽 트리거) | Z | 0x01 | 0x32 |
러더(왼쪽 트리거) | Rz | 0x01 | 0x35 |
D 패드 위쪽, 아래쪽, 왼쪽, 오른쪽 | 햇 스위치 | 0x01 | 0x39 |
주 무기(A) | 단추 1 | 0x09 | 0x01 |
보조 무기(B) | 단추 2 | 0x09 | 0x02 |
X | 단추 3 | 0x09 | 0x03 |
Y | 단추 4 | 0x09 | 0x04 |
LB(왼쪽 범퍼) | 단추 5 | 0x09 | 0x05 |
RB(오른쪽 범퍼) | 단추 6 | 0x09 | 0x06 |
뒤로 | 단추 7 | 0x09 | 0x07 |
시작 | 단추 8 | 0x09 | 0x08 |
LSB(왼쪽 스틱 버튼) | 단추 9 | 0x09 | 0x09 |
RSB(오른쪽 스틱 버튼) | 단추 10 | 0x09 | 0x0A |
참고 항목
이는 최종 플라이트 스틱 디자인을 기반으로 합니다. 이는 초기 플라이트 스틱 정의와 다르기 때문에 이전 모델과 새 모델을 지원하는 모드 스위치가 있는 디바이스가 많습니다. 이 매핑은 새 모델을 가정합니다.