From 221708d64ebf7b9c6bed3674e9363779a3ed1a4d Mon Sep 17 00:00:00 2001 From: Bob Ziuchkovski Date: Sun, 7 Jan 2018 16:26:04 -0700 Subject: [PATCH] dinput: Ignore vendor-specific usage pages for joystick elements on Mac. Signed-off-by: Bob Ziuchkovski Signed-off-by: Alexandre Julliard --- dlls/dinput/joystick_osx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/dinput/joystick_osx.c b/dlls/dinput/joystick_osx.c index 43fa20ea94c..b0dcdd99d53 100644 --- a/dlls/dinput/joystick_osx.c +++ b/dlls/dinput/joystick_osx.c @@ -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) { -- 2.11.4.GIT