{
IOHIDElementRef element = ( IOHIDElementRef ) CFArrayGetValueAtIndex( elements, idx );
int type = IOHIDElementGetType( element );
+ int usage_page = IOHIDElementGetUsagePage( element );
TRACE("element %s\n", debugstr_element(element));
+ if (usage_page >= kHIDPage_VendorDefinedStart)
+ {
+ /* vendor pages can repurpose type ids, resulting in incorrect case matches below (e.g. ds4 controllers) */
+ continue;
+ }
+
switch(type)
{
case kIOHIDElementTypeInput_Button:
{
- int usage_page = IOHIDElementGetUsagePage( element );
TRACE("kIOHIDElementTypeInput_Button usage_page %d\n", usage_page);
if (usage_page != kHIDPage_Button)
{