来自GetRawInputDeviceList()的原始输入设备太多

9 c winapi

之后

UINT lSize; 
GetRawInputDeviceInfo(hDevice, RIDI_DEVICEINFO, NULL, &lSize);
RID_DEVICE_INFO* lInfo = (RID_DEVICE_INFO*) malloc(lSize); 
GetRawInputDeviceInfo(hDevice, RIDI_DEVICEINFO, lInfo, &lSize);
Run Code Online (Sandbox Code Playgroud)

我有9个设备:3个鼠标,3个键盘,3个隐藏设备.我有一个鼠标,一个触摸板,两个键盘和一个操纵杆.

什么是剩菜?

另一件事,我不确定给定的信息是否正确:

//keyboard #1
cbSize = 32
dwType = 1
keyboard.dwType = 81
keyboard.dwSubType = 0
keyboard.dwKeyboardMode = 1
keyboard.dwNumberOfFunctionKeys = 12
keyboard.dwNumberOfIndicators = 3
keyboard.dwNumberOfKeysTotal = 101

//keyboard #2 //keyboard 2
cbSize = 32
dwType = 1
keyboard.dwType = 81
keyboard.dwSubType = 0
keyboard.dwKeyboardMode = 1
keyboard.dwNumberOfFunctionKeys = 12 //~15
keyboard.dwNumberOfIndicators = 3
keyboard.dwNumberOfKeysTotal = 265 //~110

//keyboard #3 //keyboard 1
cbSize = 32
dwType = 7
keyboard.dwType = 81
keyboard.dwSubType = 0
keyboard.dwKeyboardMode = 1
keyboard.dwNumberOfFunctionKeys = 12
keyboard.dwNumberOfIndicators = 3
keyboard.dwNumberOfKeysTotal = 101 //~110


//mouse #1 //the touchpad
cbSize = 32
dwType = 0
mouse.dwId = 2
mouse.dwNumberOfButtons = 2
mouse.dwSampleRate = 60
mouse.fHasHorizontalWheel = 0 //1

//mouse #2 //the mouse
cbSize = 32
dwType = 0
mouse.dwId = 256
mouse.dwNumberOfButtons = 9 //5 buttons
mouse.dwSampleRate = 0 // the range is [-170,+170]
mouse.fHasHorizontalWheel = 0 //1

//mouse #3
cbSize = 32
dwType = 0
mouse.dwId = 32
mouse.dwNumberOfButtons = 3
mouse.dwSampleRate = 100
mouse.fHasHorizontalWheel = 0

//hid device #1 //the joystick
cbSize = 32 
dwType = 2
hid.dwVendorId = 1699 
hid.dwProductId = 1124
hid.dwVersionNumber = 275
hid.usUsagePage = 1
hid.usUsage = 4

//hid device #2
cbSize = 32
dwType = 2
hid.dwVendorId = 1452
hid.dwProductId = 545
hid.dwVersionNumber = 113
hid.usUsagePage = 12
hid.usUsage = 1

//hid device #3
cbSize = 32
dwType = 2
hid.dwVendorId = 1276
hid.dwProductId = 2049
hid.dwVersionNumber = 5649
hid.usUsagePage = 12
hid.usUsage = 1
Run Code Online (Sandbox Code Playgroud)

那我错了?如果这些信息是正确的,那么它们的含义是什么?谢谢!

bha*_*era 6

发生这种情况是因为Windows创建了一个可以捕获多个设备的设备(这是默认设备).这通常是您获得的第一个设备 GetRawInputDeviceList(.........)

示例:

kb0 = real keyboard 1 & real keyboard 2
kb1 = real keyboard 1
kb2 = real keyboard 2

mouse0 = touchpad+mouse
mouse1 = touchpad
mouse2 = mouse
Run Code Online (Sandbox Code Playgroud)