/// <summary> /// /// </summary> /// <returns></returns> public static List <Joystick> GetJoysticks() { List <Joystick> ret = new List <Joystick>(); WinMM.JOYCAPS tmpJoyCaps = new WinMM.JOYCAPS(); for (uint i = 0; i < MAX_JOYSTICK_DEVICES; i++) { if (WinMM.joyGetDevCaps((UIntPtr)i, ref tmpJoyCaps, 404) == WinMM.JOYERR_NOERROR) // Get joystick info { WinMM.JOYINFO joyinfo = new WinMM.JOYINFO(); if (WinMM.joyGetPos(i, ref joyinfo) == WinMM.JOYERR_NOERROR) { ret.Add(new Joystick(i)); } } } return(ret); }
/// <summary> /// /// </summary> public Joystick(uint joyNum) { WinMM.JOYCAPS joyCaps = new WinMM.JOYCAPS(); if (WinMM.joyGetDevCaps((UIntPtr)joyNum, ref joyCaps, 404) != 0) //Get joystick info { throw new Exception("Joystick is not ready."); } ID = joyNum; Name = joyCaps.szPname; HasZ = (joyCaps.wCaps & WinMM.JOYCAPS_HASZ) != 0; HasR = (joyCaps.wCaps & WinMM.JOYCAPS_HASR) != 0; HasU = (joyCaps.wCaps & WinMM.JOYCAPS_HASU) != 0; HasV = (joyCaps.wCaps & WinMM.JOYCAPS_HASV) != 0; HasPOV = (joyCaps.wCaps & WinMM.JOYCAPS_HASPOV) != 0; IsPOV4DIR = (joyCaps.wCaps & WinMM.JOYCAPS_POV4DIR) != 0; IsPOVCTS = (joyCaps.wCaps & WinMM.JOYCAPS_POVCTS) != 0; NumberOfAxes = joyCaps.wNumAxes; NumberOfButtons = joyCaps.wNumButtons; }