[DINPUT] Sync with Wine 3.0. CORE-14225
[reactos.git] / dll / directx / wine / dinput / joystick_osx.c
index e135849..67b1d63 100644 (file)
@@ -640,14 +640,20 @@ static void get_osx_device_elements(JoystickImpl *device, int axis_map[8])
         {
             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)
                     {