if (HIDStatus != HIDP_STATUS_SUCCESS)
{
UE_LOG(LogRawInputWindows,Warning,TEXT("Failed to read button caps: %x:%s"),(int32)HIDStatus,*GetErrorString(HIDStatus));
}
else
{
//const int32 NumberOfButtons = ButtonCapsBuffer[0].Range.UsageMax - ButtonCapsBuffer[0].Range.UsageMin + 1;
/*当摇杆同时按下多个键时,上边的会出错,报HIDStatusBufferTooSmall错误,所以直接赋值*/
const int32 NumberOfButtons = 40;
const uint32 ButtonDataBufferSize = NumberOfButtons * sizeof(uint16);
uint16* ButtonDataBuffer = (uint16*)FMemory_Alloca(ButtonDataBufferSize);
FMemory::Memzero(ButtonDataBuffer,ButtonDataBufferSize);
uint32 UsageNumButtonCaps = NumberOfButtons;
HIDStatus = DLLPointers.HidP_GetUsages(HIDP_REPORT_TYPE::HidP_Input,ButtonCapsBuffer[0].UsagePage,ButtonDataBuffer,&UsageNumButtonCaps,InPreParsedData,(PCHAR)InRawInputDataBuffer->data.hid.bRawData,InRawInputDataBuffer->data.hid.dwSizeHid);
if (HIDStatus != HIDP_STATUS_SUCCESS)
{
UE_LOG(LogRawInputWindows,TEXT("Failed to read button data: %x:%s"),*GetErrorString(HIDStatus));
2.插件修改了源码后需要重新编译,我的ue4是launcher下载的,我们需要将该插件内Intermediate和Binaries文件夹删除,再打开项目就会提示缺少rawinput.dll,然后点击确定重新编译。
4.还有一种情况,就是默认该插件只有8个axis和20个button,我需要更多地button和axis,需要把源码内的button和axis增加至你需要的个数,然后重新编译,这个比较简单,就不一一说了,只需要小心一些,修改好几个文件呢。特别的,就是RawInputWindows.h中修改两个宏定义。