GetExtraButtonIndexes

获取设备上给定输入类型的额外按钮的控制器按钮索引。

语法

HRESULT GetExtraButtonIndexes(
    GameInputKind inputKind,
    uint32_t extraButtonCount,
    uint8_t* extraButtonIndexes
);

参数

inputKind _In_
类型:GameInputKind

正在请求其额外按钮索引的输入类型。

extraButtonCount _In_
类型:uint32_t

额外按钮的预期按钮索引计数。 可以通过调用 GetExtraButtonCount 来检索此数字。

extraButtonIndexes _Out_writes_ (extraButtonCount) _
类型:uint8_t*

指向按钮索引数组的指针。

返回值

类型:HRESULT

函数结果。

备注

其他按钮是物理设备上存在的控制器按钮,但不是指定输入类型的标准映射的一部分。

在调用此方法之前,应首先调用 GetExtraButtonCount 以确定有多少额外按钮可用,并将该计数作为 extraButtonCount 参数传递。

下一个代码片段演示如何使用游戏板的额外按钮:

bool GetGamepadExtraButtonValues(
    std::vector<bool>* extraButtons,
    IGameInputReading* reading) noexcept
{
    Mwrl::ComPtr<IGameInputDevice> device;
    reading->GetDevice(&device);

    uint32_t extraButtonCount = 0;
    if (FAILED(device->GetExtraButtonCount(GameInputKindGamepad, &extraButtonCount)))
    {
        return false;
    }

    std::vector<uint8_t> buttonIndexes(extraButtonCount);
    extraButtons->resize(extraButtonCount);
    if (FAILED(device->GetExtraButtonIndexes(
        GameInputKindGamepad,
        extraButtonCount,
        buttonIndexes.data())))
    {
        return false;
    }

    std::vector<bool> buttonStates(reading->GetControllerButtonCount());
    reading->GetControllerButtonState(static_cast<uint32_t>(buttonStates.size()), buttonStates.data());

    for (size_t i = 0; i < buttonIndexes.size(); ++i)
    {
        if (buttonIndexes[i] < buttonStates.size())
        {
            (*extraButtons)[i] = buttonStates[buttonIndexes[i]];
        }
    }

    return true;
}

要求

头文件:GameInput.h

库:gameinput.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

GameInputKind
GetExtraButtonCount
GetExtraAxisIndexes
IGameInputDevice