/// <summary> /// Retrieves the capabilities of a device. /// </summary> /// <param name="deviceId">The DeviceID for which to retrieve the capabilities.</param> /// <returns>The capabilities of the device.</returns> private static JoystickDeviceCaps GetDeviceCaps(int deviceId) { JOYCAPS joycaps = new JOYCAPS(); NativeMethods.joyGetDevCaps(deviceId, ref joycaps, Marshal.SizeOf(joycaps.GetType())); JoystickDeviceCaps caps = new JoystickDeviceCaps(); caps.DeviceId = deviceId; caps.Manufacturer = GetManufacturer(joycaps.wMid); caps.Name = joycaps.szPname; caps.ProductId = joycaps.wPid; caps.ButtonCount = joycaps.wNumButtons; caps.PeriodMin = joycaps.wPeriodMin; caps.PeriodMax = joycaps.wPeriodMax; var axes = new int[][] { new [] { joycaps.wXmin, joycaps.wXmax }, new [] { joycaps.wYmin, joycaps.wYmax }, new [] { joycaps.wZmin, joycaps.wZmax }, new [] { joycaps.wRmin, joycaps.wRmax }, new [] { joycaps.wUmin, joycaps.wUmax }, new [] { joycaps.wVmin, joycaps.wVmax } }; caps.Capabilities = joycaps.wCaps; return(caps); }