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-pad )物理标签

dpadDownLabel
类型:GameInputLabel

向下方向键(D-pad )物理标签

dpadLeftLabel
类型:GameInputLabel

向左方向键(D-pad )物理标签

dpadRightLabel
类型:GameInputLabel

向右方向键(D-pad )物理标签。

leftShoulderButtonLabel
类型:GameInputLabel

左侧肩按钮物理标签。

rightShoulderButtonLabel
类型:GameInputLabel

右侧肩按钮物理标签。

leftThumbstickButtonLabel
类型:GameInputLabel

左摇杆物理标签。

rightThumbstickButtonLabel
类型:GameInputLabel

右摇杆物理标签。

extraButtonCount
类型:uint32_t

未映射到游戏板按钮的设备按钮数。

extraAxisCount
类型:uint32_t

未映射到游戏板轴的设备轴数。

备注

此结构在 GameInputDeviceInfo 结构中使用。

GameInputDeviceInfoIGameInputDevice::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