dinput: Add OS/X sliders.
diff --git a/dlls/dinput/joystick_osx.c b/dlls/dinput/joystick_osx.c index 4faf621..ea5ad63 100644 --- a/dlls/dinput/joystick_osx.c +++ b/dlls/dinput/joystick_osx.c
@@ -289,6 +289,7 @@ IOHIDDeviceRef tIOHIDDeviceRef; CFArrayRef gElementCFArrayRef; DWORD axes = 0; + DWORD sliders = 0; DWORD buttons = 0; DWORD povs = 0; @@ -343,6 +344,11 @@ povs++; break; } + case kHIDUsage_GD_Slider: + sliders ++; + if (sliders > 2) + break; + /* fallthrough, sliders are axis */ case kHIDUsage_GD_X: case kHIDUsage_GD_Y: case kHIDUsage_GD_Z: @@ -413,6 +419,7 @@ { int button_idx = 0; int pov_idx = 0; + int slider_idx = 0; CFIndex idx, cnt = CFArrayGetCount( gElementCFArrayRef ); for ( idx = 0; idx < cnt; idx++ ) @@ -455,6 +462,7 @@ case kHIDUsage_GD_Rx: case kHIDUsage_GD_Ry: case kHIDUsage_GD_Rz: + case kHIDUsage_GD_Slider: { IOHIDDeviceGetValue(tIOHIDDeviceRef, tIOHIDElementRef, &valueRef); val = IOHIDValueGetIntegerValue(valueRef); @@ -478,6 +486,10 @@ case kHIDUsage_GD_Rz: device->generic.js.lRz = joystick_map_axis(&device->generic.props[idx], val); break; + case kHIDUsage_GD_Slider: + device->generic.js.rglSlider[slider_idx] = joystick_map_axis(&device->generic.props[idx], val); + slider_idx ++; + break; } break; } @@ -585,6 +597,7 @@ LPDIDATAFORMAT df = NULL; int idx = 0; int axis_map[8]; /* max axes */ + int slider_count = 0; TRACE("%s %p %p %p %hu\n", debugstr_guid(rguid), jvt, dinput, pdev, index); @@ -644,6 +657,10 @@ case kHIDUsage_GD_Rx: wine_obj = 3; break; case kHIDUsage_GD_Ry: wine_obj = 4; break; case kHIDUsage_GD_Rz: wine_obj = 5; break; + case kHIDUsage_GD_Slider: + wine_obj = 6 + slider_count; + slider_count++; + break; } if (wine_obj < 0 ) continue;