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;