입력 장치에 대한 모든 정보를 기술합니다.
구문
struct GameInputDeviceInfo
{
uint16_t vendorId;
uint16_t productId;
GameInputUsage usage;
APP_LOCAL_DEVICE_ID deviceId;
APP_LOCAL_DEVICE_ID deviceRootId;
GameInputDeviceFamily deviceFamily;
GameInputKind supportedInput;
GameInputRumbleMotors supportedRumbleMotors;
GameInputSystemButtons supportedSystemButtons;
const char* displayName;
const char* pnpPath;
const GameInputKeyboardInfo* keyboardInfo;
const GameInputMouseInfo* mouseInfo;
const GameInputArcadeStickInfo* arcadeStickInfo;
const GameInputFlightStickInfo* flightStickInfo;
const GameInputGamepadInfo* gamepadInfo;
const GameInputRacingWheelInfo* racingWheelInfo;
const GameInputUiNavigationInfo* uiNavigationInfo;
uint32_t controllerAxisCount;
const GameInputControllerAxisInfo* controllerAxisInfo;
uint32_t controllerButtonCount;
const GameInputControllerButtonInfo* controllerButtonInfo;
uint32_t controllerSwitchCount;
const GameInputControllerSwitchInfo* controllerSwitchInfo;
uint32_t forceFeedbackMotorCount;
const GameInputForceFeedbackMotorInfo* forceFeedbackMotorInfo;
};
멤버
vendorId 형식: uint16_t
입력 장치의 공급업체를 식별합니다.
productId 형식: uint16_t
입력 장치를 제품으로 식별합니다.
usage 형식: GameInputUsage
사용된 입력을 기술하는 두 파트로 나눠진 색인입니다.
deviceId 형식: APP_LOCAL_DEVICE_ID
입력 장치의 장치 ID입니다.
deviceRootId 형식: APP_LOCAL_DEVICE_ID
입력 장치의 루트 ID입니다.
deviceFamily 형식: GameInputDeviceFamily
입력 장치가 속하는 입력 장치 군을 지정합니다.
supportedInput 형식: GameInputKind
장치가 지원하는 입력 유형을 기술합니다.
supportedRumbleMotors 형식: GameInputRumbleMotors
장치에 있는 액세스 가능한 진동 모터(있는 경우)를 기술합니다.
supportedSystemButtons 형식: GameInputSystemButtons
종종 게임 외부에서 시스템을 제어하는 데 사용할 수 있는 단추에 대해 설명합니다.
displayName 형식: const char*
디바이스의 식별 이름을 설명합니다.
pnpPath 형식: const char*
디바이스의 PNP 경로에 대해 설명합니다. 이 경로는 다른 API를 통해 기본 디바이스를 참조하는 데 사용할 수 있습니다.
keyboardInfo 형식: GameInputKeyboardInfo const *
키보드 입력 장치에 대한 정보입니다.
mouseInfo 형식: GameInputMouseInfo const *
마우스 입력 장치에 대한 정보입니다.
arcadeStickInfo 형식: GameInputArcadeStickInfo const *
아케이드 스틱 입력 장치에 대한 정보입니다.
flightStickInfo 형식: GameInputFlightStickInfo const *
비행 스틱 입력 장치에 대한 정보입니다.
gamepadInfo 형식: GameInputGamepadInfo const *
게임 패드 입력 장치에 대한 정보입니다.
racingWheelInfo 형식: GameInputRacingWheelInfo const *
레이싱 휠 입력 장치에 대한 정보입니다.
uiNavigationInfo 형식: GameInputUiNavigationInfo const *
입력 장치의 탐색 매핑에 대한 정보입니다.
controllerAxisCount 형식: uint32_t
입력 장치의 축 수입니다.
controllerAxisInfo 형식: GameInputControllerAxisInfo const *
입력 장치의 모든 축에 대한 정보입니다.
controllerButtonCount 형식: uint32_t
입력 장치의 버튼 수입니다.
controllerButtonInfo 형식: GameInputControllerButtonInfo const *
입력 장치의 모든 버튼에 대한 정보입니다.
controllerSwitchCount 형식: uint32_t
입력 장치의 스위치 수입니다.
controllerSwitchInfo 형식: GameInputControllerSwitchInfo const *
입력 장치의 모든 스위치에 대한 정보입니다.
forceFeedbackMotorCount 형식: uint32_t
입력 장치의 힘 피드백 모터 수입니다.
forceFeedbackMotorInfo 형식: GameInputForceFeedbackMotorInfo const *
장치의 모든 힘 피드백 모터에 대한 정보입니다.
비고
는 deviceId 디바이스를 고유하게 식별하는 256비트 해시 값인 애플리케이션 로컬 ID입니다. 이 ID는 지정된 장치에 대해 항상 동일하며, 동일한 USB 포트에 연결되어 있는 한, 시스템을 재부팅하거나 응용 프로그램을 다시 실행해도 동일하게 유지됩니다. 응용 프로그램 로컬 ID 해시는 부분적으로 호출을 수행하는 응용 프로그램 및 시스템 측의 정보를 사용해서 생성됩니다.
는 deviceRootId 복합 디바이스에 대한 루트 디바이스 노드를 식별하는 또 다른 애플리케이션-로컬 ID입니다. 이 ID를 통해 응용 프로그램은 개별 장치들의 관계를 파악할 수 있습니다. 예를 들어 일부 게이밍 키보드는 자기 자신을 여러 키보드 노드가 포함된 복합 장치로 표시함으로써 동시 키입력 8개라는 기존 USB의 한계를 해결합니다. 이것들은 모두 "시스템" 키보드로 병합되므로, 사용자에게 투명한 방식으로 진행됩니다. 하지만 GameInput API를 통해 키보드별 입력을 처리할 때는 이러한 방식을 이해함으로써, 키눌림에 함수를 매핑할 때 잘못된(즉, 키눌림이 항상 특정 장치로부터 시작될 것이라는) 가정을 피할 수 있습니다.
deviceId 및 deviceRootId 는 디바이스가 복합 디바이스의 많은 인터페이스 중 하나가 아닌 경우 동일합니다.
문자열에는 displayName 디바이스에 대한 "친숙한" 이름이 포함되어 있습니다. 이 문자열은 응용 프로그램의 UI에 표시하기에 적합하지만, 지역화 여부를 보장할 수 없습니다. 그 이유는 GameInput API가 이 문자열을 여러 위치에서 검색하고, 최종 대안 중 하나가 장치의 펌웨어로부터 오기 때문입니다.
구조의 GameInputDeviceInfo 최종 필드는 개별 컨트롤러 단추의 자세한 속성 또는 힘 피드백 및 촉각 피드백 지원에 대한 정보와 같은 디바이스에 대한 가변 크기의 정보 배열에 대한 포인터입니다. NULL 포인터는 장치에서 해당 기능이 제공 또는 지원되지 않음을 나타냅니다. 각 배열의 요소 수는 이 구조에 있는 해당 필드로 표시됩니다(SAL 주석 참조).
어떤 입력 장치라도 모든 속성에 대해 읽기 가능한 값을 가질 수는 없습니다. 일부 입력 장치에는 관련 속성에 대한 값만 포함됩니다. IGameInputDevice::GetDeviceInfo에서 반환됩니다.
요건
헤더: GameInput.h
지원되는 플랫폼: Windows