获取设备上给定输入类型的额外按钮的控制器按钮索引。
语法
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