public Joystick(Int32 uJoyID) { _info = new JOYINFOEX(); _info.dwSize = 13 * sizeof(Int32); _info.dwFlags = JOY_RETURNALL; _uJoyID = uJoyID; }
public static JoystickState GetAsJoystickState(int joystickIndex) { if (joystickIndex < 0 || joystickIndex >= NumJoysticks) { throw new ArgumentOutOfRangeException("joystickIndex"); } JOYINFOEX pji = new JOYINFOEX(); pji.dwSize = sizeOfJOYINFOEX; pji.dwFlags = 255; //pji.dwButtons = new int[11];// ここでdwButtonsにボタンマップの状態を入れたいがどうすればよいのか.. //pji.dwButtonNumber = new int[32]; /*ようやくわかった dwButtonsは32bitフラグ! つまりボタンマップ配列に変換する所だけ追加すればいける!*/ int ret = joyGetPosEx((uint)joystickIndex, ref pji);// ここでpjiに値が入る // Convert to managed joystick states. return(new JoystickState( ret == 0, calibrations[joystickIndex].PositionX.ConvertInternal(pji.dwXpos), calibrations[joystickIndex].PositionY.ConvertInternal(pji.dwYpos), calibrations[joystickIndex].PositionZ.ConvertInternal(pji.dwZpos), calibrations[joystickIndex].PositionR.ConvertInternal(pji.dwRpos), calibrations[joystickIndex].PositionU.ConvertInternal(pji.dwUpos), calibrations[joystickIndex].PositionV.ConvertInternal(pji.dwVpos), /*(int)pji.dwButtons*/ (int)pji.dwButtons, pji.dwButtonNumber, Calc.BinToBoolean(Calc.DecToBin(pji.dwButtons, 32)), pji.GetDPad())); }
public JOYERR GetPosEx(uint JoyID) { JOYERR err = joyGetPosEx(JoyID, ptr); JoyInfoEx = (JOYINFOEX)Marshal.PtrToStructure(ptr, JoyInfoEx.GetType()); return(err); }
public static JOYINFOEX getJoyPosEx(uint uJoyID) { JOYINFOEX joyinfo = new JOYINFOEX(); joyinfo.dwFlags = 0xff; joyinfo.dwSize = 13 * 4; joyGetPosEx(uJoyID, ref joyinfo); return(joyinfo); }
public JoyPad() { JoyInfoEx = new JOYINFOEX(); JoyInfoEx.dwSize = (uint)Marshal.SizeOf(typeof(JOYINFOEX)); JoyInfoEx.dwFlags = JOY_RETURNALL; ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(JOYINFOEX))); Marshal.StructureToPtr(JoyInfoEx, ptr, false); }
public JoystickState ReadState() { JOYINFOEX joyinfo = new JOYINFOEX(); joyinfo.dwFlags = JOYINFOFLAGS.JOY_RETURNALL; NativeMethods.Throw( NativeMethods.joyGetPosEx(this.deviceId, ref joyinfo), NativeMethods.ErrorSource.Joystick); return(null); }
/// <summary> /// Function to poll the joystick for data. /// </summary> protected override void PollJoystick() { JOYINFOEX joyInfo = GetWin32JoystickData(); // Do nothing if we're not connected. if (!IsConnected) { return; } // Get primary axis data. Center between the range. X = CenterValue((int)joyInfo.X, Capabilities.XAxisRange); Y = -CenterValue((int)joyInfo.Y, Capabilities.YAxisRange); // Get secondary axis data. if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsSecondaryXAxis) == JoystickCapabilityFlags.SupportsSecondaryXAxis) { SecondaryX = CenterValue((int)joyInfo.Axis5, Capabilities.SecondaryXAxisRange); } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsSecondaryYAxis) == JoystickCapabilityFlags.SupportsSecondaryYAxis) { SecondaryY = -CenterValue((int)joyInfo.Axis6, Capabilities.SecondaryYAxisRange); } // Get throttle/rudder info. if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsThrottle) == JoystickCapabilityFlags.SupportsThrottle) { Throttle = CenterValue((int)joyInfo.Z, Capabilities.ThrottleAxisRange); } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsRudder) == JoystickCapabilityFlags.SupportsRudder) { Rudder = CenterValue((int)joyInfo.Rudder, Capabilities.RudderAxisRange); } // Get POV data. if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsPOV) == JoystickCapabilityFlags.SupportsPOV) { POV = (int)joyInfo.POV; } // Update buttons. for (int i = 0; i < _buttonStates.Count; i++) { _buttonStates.SetButtonState(i, (joyInfo.Buttons & (JoystickButton)(1 << i)) != 0); } }
public CJoystick(int id) { caps = new JOYCAPS(); info = new JOYINFOEX { dwSize = (uint)Marshal.SizeOf(typeof(JOYINFOEX)), dwFlags = ReturnType.All, }; this.ID = id; this.Available = Update(); if (id != -1) { joyGetDevCaps(id, ref caps, Marshal.SizeOf(typeof(JOYCAPS))); } }
static public JoystickState GetJoysticState(int JoystickIndex) { JOYINFOEX joystickInfo = new JOYINFOEX(); joystickInfo.Size = Marshal.SizeOf(joystickInfo); int result = joyGetPosEx(JoystickIndex, ref joystickInfo); JoystickState joy = new JoystickState(); if (result == 0) { joy.x1 = ((float)joystickInfo.X / 32768.0f - 1.0f); joy.y1 = -((float)joystickInfo.Y / 32768.0f - 1.0f); joy.b1 = joystickInfo.Z < 18000; } else { joy.x1 = 0; joy.y1 = 0; joy.b1 = false; } return(joy); }
private static extern int joyGetPosEx(int joystickNumber, ref JOYINFOEX info);
internal static extern int joyGetPosEx(int uJoyID, ref JOYINFOEX pji);
public static JoystickState GetAsJoystickState(int joystickIndex) { if (joystickIndex < 0 || joystickIndex >= NumJoysticks) throw new ArgumentOutOfRangeException("joystickIndex"); JOYINFOEX pji = new JOYINFOEX(); pji.dwSize = sizeOfJOYINFOEX; pji.dwFlags = 255; //pji.dwButtons = new int[11];// ここでdwButtonsにボタンマップの状態を入れたいがどうすればよいのか.. //pji.dwButtonNumber = new int[32]; /*ようやくわかった dwButtonsは32bitフラグ! つまりボタンマップ配列に変換する所だけ追加すればいける!*/ int ret = joyGetPosEx((uint)joystickIndex, ref pji);// ここでpjiに値が入る // Convert to managed joystick states. return new JoystickState( ret == 0, calibrations[joystickIndex].PositionX.ConvertInternal(pji.dwXpos), calibrations[joystickIndex].PositionY.ConvertInternal(pji.dwYpos), calibrations[joystickIndex].PositionZ.ConvertInternal(pji.dwZpos), calibrations[joystickIndex].PositionR.ConvertInternal(pji.dwRpos), calibrations[joystickIndex].PositionU.ConvertInternal(pji.dwUpos), calibrations[joystickIndex].PositionV.ConvertInternal(pji.dwVpos), /*(int)pji.dwButtons*/(int)pji.dwButtons, pji.dwButtonNumber, Calc.BinToBoolean(Calc.DecToBin(pji.dwButtons, 32)), pji.GetDPad()); }
public static extern ResultCode joyGetPosEx(int uJoyID, JOYINFOEX pji);
public JoyStick() { pji = new JOYINFOEX(); }
private static uint getPos(uint uJoyID, ref JOYINFOEX pji) { pji.dwSize = (uint)Marshal.SizeOf(pji); pji.dwFlags = 0xFF; return(joyGetPosEx(uJoyID, ref pji)); }
private static extern uint joyGetPosEx(uint uJoyID, ref JOYINFOEX pji);
public static JOYINFOEX getJoyPosEx(uint uJoyID) { JOYINFOEX joyinfo = new JOYINFOEX(); joyinfo.dwFlags = 0xff; joyinfo.dwSize = 13 * 4; joyGetPosEx(uJoyID, ref joyinfo); return joyinfo; }
public static extern Int32 joyGetPosEx(Int32 uJoyID, ref JOYINFOEX pji);
public static extern int joyGetPosEx(uint uJoyID, ref JOYINFOEX pji);
/// <summary> /// Function to retrieve the state of the joystick. /// </summary> /// <returns></returns> private JOYINFOEX GetWin32JoystickData() { var joyInfo = new JOYINFOEX { Size = DirectAccess.SizeOf <JOYINFOEX>(), Flags = JoystickInfoFlags.ReturnButtons | JoystickInfoFlags.ReturnX | JoystickInfoFlags.ReturnY }; // Joystick information. // Determine which data we want to return. if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsThrottle) == JoystickCapabilityFlags.SupportsThrottle) { joyInfo.Flags |= JoystickInfoFlags.ReturnZ; } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsSecondaryXAxis) == JoystickCapabilityFlags.SupportsSecondaryXAxis) { joyInfo.Flags |= JoystickInfoFlags.ReturnAxis5; } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsSecondaryYAxis) == JoystickCapabilityFlags.SupportsSecondaryYAxis) { joyInfo.Flags |= JoystickInfoFlags.ReturnAxis6; } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsRudder) == JoystickCapabilityFlags.SupportsRudder) { joyInfo.Flags |= JoystickInfoFlags.ReturnRudder; } if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsPOV) == JoystickCapabilityFlags.SupportsPOV) { joyInfo.Flags |= JoystickInfoFlags.ReturnPOV; if ((Capabilities.ExtraCapabilities & JoystickCapabilityFlags.SupportsContinuousPOV) == JoystickCapabilityFlags.SupportsContinuousPOV) { joyInfo.Flags |= JoystickInfoFlags.ReturnPOVContinuousDegreeBearings; } } int error = Win32API.joyGetPosEx(_joystickID, ref joyInfo); // If the joystick is disconnected then leave. if (error == 0xA7) { IsConnected = false; return(default(JOYINFOEX)); } // If it's any other error, then throw an exception. if (error > 0) { throw new GorgonException(GorgonResult.CannotRead, string.Format(Resources.GORINP_RAW_CANNOT_READ_JOYSTICK_DATA, _joystickID, error.FormatHex())); } IsConnected = true; return(joyInfo); }
public static extern uint joyGetPosEx(uint uJoyID, ref JOYINFOEX pji);
public static extern Int32 GetJoystickState(Int32 uJoyID, ref JOYINFOEX pji);
static extern int joyGetPosEx(uint uJoyId, ref JOYINFOEX pji);
public static extern MMRESULT joyGetPosEx(int uJoyID, ref JOYINFOEX pji);
static public JoystickState GetJoysticState(int JoystickIndex) { JOYINFOEX joystickInfo = new JOYINFOEX(); joystickInfo.Size = Marshal.SizeOf(joystickInfo); int result = joyGetPosEx(JoystickIndex, ref joystickInfo); JoystickState joy = new JoystickState(); if (result == 0) { joy.x1 = ((float)joystickInfo.X / 32768.0f - 1.0f); joy.y1 = -((float)joystickInfo.Y / 32768.0f - 1.0f); joy.b1 = joystickInfo.Z < 18000; } else { joy.x1 = 0; joy.y1 = 0; joy.b1 = false; } return joy; }
private void Initialize() { this.jsx = new JOYINFOEX(); this.jsx.dwSize = Marshal.SizeOf(jsx); this.jsx.dwFlags = JOY_RETURNALL; this.valid = GetPosition(); }