다음을 통해 공유


GameInputGamepadInfo

게임패드의 속성에 대해 설명합니다.

구문

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 콘솔

참고 항목

GameInput 개요
GameInput