게임패드의 속성에 대해 설명합니다.
구문
struct GameInputGamepadInfo
{
GameInputGamepadButtons supportedLayout;
GameInputLabel menuButtonLabel;
GameInputLabel viewButtonLabel;
GameInputLabel aButtonLabel;
GameInputLabel bButtonLabel;
GameInputLabel cButtonLabel;
GameInputLabel xButtonLabel;
GameInputLabel yButtonLabel;
GameInputLabel zButtonLabel;
GameInputLabel dpadUpLabel;
GameInputLabel dpadDownLabel;
GameInputLabel dpadLeftLabel;
GameInputLabel dpadRightLabel;
GameInputLabel leftShoulderButtonLabel;
GameInputLabel rightShoulderButtonLabel;
GameInputLabel leftThumbstickButtonLabel;
GameInputLabel rightThumbstickButtonLabel;
uint32_t extraButtonCount;
uint32_t extraAxisCount;
};
멤버
supportedLayout
형식: GameInputGamepadButtons
게임 패드의 레이아웃을 설명합니다. 축에는 단추 변환이 있으므로 이를 사용하여 게임 패드에 있는 축을 확인할 수 있습니다.
menuButtonLabel
형식: GameInputLabel
메뉴 단추의 실제 레이블.
viewButtonLabel
형식: GameInputLabel
보기 단추의 실제 레이블입니다.
aButtonLabel
형식: GameInputLabel
A 단추의 실제 레이블입니다.
bButtonLabel
형식: GameInputLabel
B 단추의 실제 레이블입니다.
cButtonLabel
형식: GameInputLabel
C 단추에 대한 실제 레이블입니다.
xButtonLabel
형식: GameInputLabel
X 단추의 실제 레이블입니다.
yButtonLabel
형식: GameInputLabel
Y 단추의 실제 레이블입니다.
zButtonLabel
형식: GameInputLabel
Z 단추에 대한 실제 레이블입니다.
dpadUpLabel
형식: GameInputLabel
위쪽 D-패드의 실제 레이블.
dpadDownLabel
형식: GameInputLabel
아래쪽 D-패드의 실제 레이블.
dpadLeftLabel
형식: GameInputLabel
왼쪽 D-패드의 실제 레이블.
dpadRightLabel
형식: GameInputLabel
오른쪽 D-패드의 실제 레이블입니다.
leftShoulderButtonLabel
형식: GameInputLabel
왼쪽 어깨 버튼에 대한 실제 레이블입니다.
rightShoulderButtonLabel
형식: GameInputLabel
오른쪽 어깨 버튼에 대한 실제 레이블입니다.
leftThumbstickButtonLabel
형식: GameInputLabel
왼쪽 엄지 스틱에 대한 실제 레이블입니다.
rightThumbstickButtonLabel
형식: GameInputLabel
오른쪽 엄지 스틱에 대한 실제 레이블입니다.
extraButtonCount
형식: uint32_t
게임 패드 단추에 매핑되지 않은 디바이스 단추의 수입니다.
extraAxisCount
형식: uint32_t
게임 패드 축에 매핑되지 않은 디바이스 축의 수입니다.
비고
이 구조는 GameInputDeviceInfo 구조에서 사용됩니다.
GameInputDeviceInfo은(는) IGameInputDevice::GetDeviceInfo 메서드에서 사용 됩니다.
자세한 내용은 GameInput 장치를 참조하세요.
게임 패드 레이아웃
GameInput은 단일 표준 레이아웃으로 지원을 제한하는 대신 게임 패드에 대한 다양한 폼 팩터를 지원합니다. 이는 이 구조체의 멤버를 supportedLayout 통해 GameInputGamepadButtons 유형의 비트 필드로 노출됩니다. 축은 와 같은 GameInputGamepadLeftTriggerButton축-단추 변환을 통해 이 열거형에도 있습니다. 이러한 번역에 대한 자세한 내용은 GameInputGamepadButtons를 참조하세요.
게임 패드에 필요한 최소 레이아웃은 없으며 지원되는 축과 단추의 조합이 있을 수 있습니다. 지원되지 않는 모든 단추 또는 축은 왼쪽에 있어야 하며 추가 축 또는 단추로 액세스할 수 있습니다.
게임 패드 요소와 일반적인 레이아웃의 몇 가지 일반적인 그룹화가 상수로 정의되었습니다. 공통 레이아웃을 빠르게 식별하거나, 특정 입력을 필터링하거나, 사용자 지정 레이아웃을 만드는 데 사용할 수 있습니다. 자세한 내용은 GameInputGamepadButtons를 참조하세요.
지원되는 레이아웃 및 폼 팩터의 예상 범위는 무한하므로 매핑 및 게임 패드 사용자가 따라야 할 고려 사항 및 동작의 작은 집합이 있습니다.
엄지스틱, 어깨 또는 트리거와 같은 두 요소가 있는 요소의 경우 중앙에 하나가 있는 경우 기본값은 왼쪽 요소여야 합니다. 디바이스의 왼쪽 또는 오른쪽에 배치된 경우 그에 따라 매핑되어야 합니다.
다른 문자 모양으로 인한 모호성을 방지하기 위해 얼굴 단추는 다음과 같이 문자 모양에 관계없이 물리적 위치에 따라 매핑되고 읽어야 합니다.
다음 코드 예제에서는 게임 패드가 레이아웃 또는 특정 입력 또는 모듈을 지원하는지 여부를 확인하는 방법을 보여 줍니다.
bool IsStandardLayout(const GameInputGamepadInfo& gamepadInfo) noexcept
{
// Supports the standard layout and no more
return (gamepadInfo.supportedLayout & GameInputGamepadLayoutStandard) == GameInputGamepadLayoutStandard;
}
bool IsDpadSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
// Supports the D-pad module and more
return gamepadInfo.supportedLayout & GameInputGamepadModuleDpad;
}
bool IsXButtonSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
return gamepadInfo.supportedLayout & GameInputGamepadX;
}
다음 코드 예제에서는 사용자 지정 레이아웃을 만들고 게임 패드에서 지원하는지 확인하는 방법을 보여 줍니다.
bool IsCustomLayoutSupported(const GameInputGamepadInfo& gamepadInfo) noexcept
{
static const GameInputGamepadButtons customLayout =
GameInputGamepadA |
GameInputGamepadB |
GameInputGamepadC |
GameInputGamepadX |
GameInputGamepadY |
GameInputGamepadZ |
GameInputGamepadModuleShoulders |
GameInputGamepadModuleDpad;
return (gamepadInfo.supportedLayout & customLayout) == GameInputGamepadLayoutCustom;
}
요구 사항
헤더: GameInput.h
지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔