public void JoyAxis(HID_USAGES parAxis, Int32 parValue, uint parDSid) { if (parAxis != 0) { //bunch of offset correction nonsense, may need reevaluation //Seems to be very close, Constant offset of 0.5 seems to be present //Also Scaled values cannot get within 64 of vJoy limits //this gives pratical limits of (64-32704) int JoyValue = (int)((parValue + 1) * AXIS_SCALE) - AXIS_SCALE_OFFSET; switch (parAxis) { case HID_USAGES.HID_USAGE_X: joyReport[parDSid - 1].AxisX = JoyValue; break; case HID_USAGES.HID_USAGE_Y: joyReport[parDSid - 1].AxisY = JoyValue; break; case HID_USAGES.HID_USAGE_Z: joyReport[parDSid - 1].AxisZ = JoyValue; break; case HID_USAGES.HID_USAGE_RX: joyReport[parDSid - 1].AxisXRot = JoyValue; break; case HID_USAGES.HID_USAGE_RY: joyReport[parDSid - 1].AxisYRot = JoyValue; break; case HID_USAGES.HID_USAGE_RZ: joyReport[parDSid - 1].AxisZRot = JoyValue; break; case HID_USAGES.HID_USAGE_SL0: joyReport[parDSid - 1].Slider = JoyValue; break; case HID_USAGES.HID_USAGE_SL1: joyReport[parDSid - 1].Dial = JoyValue; break; } } }
protected int GetValue(ref vJoy.JoystickState joyReport, HID_USAGES hid) { switch (hid) { case HID_USAGES.HID_USAGE_X: return joyReport.AxisX; case HID_USAGES.HID_USAGE_Y: return joyReport.AxisY; case HID_USAGES.HID_USAGE_Z: return joyReport.AxisZ; case HID_USAGES.HID_USAGE_RX: return joyReport.AxisXRot; case HID_USAGES.HID_USAGE_RY: return joyReport.AxisYRot; case HID_USAGES.HID_USAGE_RZ: return joyReport.AxisZRot; case HID_USAGES.HID_USAGE_SL0: return joyReport.Slider; case HID_USAGES.HID_USAGE_SL1: return joyReport.Dial; default: return 0; } }
protected void AssignAxis(ref HID_USAGES parSourceAxis, string parTargetAxis) { switch (parTargetAxis) { case "AX": { m_EnabledAxis[0] = true; parSourceAxis = HID_USAGES.HID_USAGE_X; } break; case "AY": { m_EnabledAxis[1] = true; parSourceAxis = HID_USAGES.HID_USAGE_Y; } break; case "AZ": { m_EnabledAxis[2] = true; parSourceAxis = HID_USAGES.HID_USAGE_Z; } break; case "ARX": { m_EnabledAxis[3] = true; parSourceAxis = HID_USAGES.HID_USAGE_RX; } break; case "ARY": { m_EnabledAxis[4] = true; parSourceAxis = HID_USAGES.HID_USAGE_RY; } break; case "ARZ": { m_EnabledAxis[5] = true; parSourceAxis = HID_USAGES.HID_USAGE_RZ; } break; case "ASL0": { m_EnabledAxis[6] = true; parSourceAxis = HID_USAGES.HID_USAGE_SL0; } break; case "ASL1": { m_EnabledAxis[7] = true; parSourceAxis = HID_USAGES.HID_USAGE_SL1; } break; } }
public virtual int AxisMinValue(HID_USAGES hidusage) { return -AXISLIMIT; }
public bool GetVJDAxisMin(UInt32 rID, HID_USAGES Axis, ref long Min) { return _GetVJDAxisMin(rID, (uint)Axis, ref Min); }
public bool GetVJDAxisExist(UInt32 rID, HID_USAGES Axis) { UInt32 res = _GetVJDAxisExist(rID, (uint)Axis); if (res == 1) return true; else return false; }
public void SetAxis(int x, HID_USAGES usage) { if(!enabledAxis[usage]) throw new Exception(string.Format("Axis {0} not enabled, enable it from VJoy config", usage)); joystick.SetAxis(x + AxisMax, Index, usage); currentAxisValue[usage] = x; }
private void SetAxis(byte parAxisValue, HID_USAGES parTargetHID, bool parInverted, uint parDsID) { if (parInverted) { vJPad.JoyAxis(parTargetHID, SCPConstants.MAX_SCP_AXIS - parAxisValue, parDsID); } else { vJPad.JoyAxis(parTargetHID, parAxisValue, parDsID); } }
////// Write data public bool SetAxis(Int32 Value, UInt32 rID, HID_USAGES Axis) { return(_SetAxis(Value, rID, Axis)); }
public bool GetVJDAxisMin(UInt32 rID, HID_USAGES Axis, ref long Min) { return(_GetVJDAxisMin(rID, (uint)Axis, ref Min)); }
public bool GetVJDAxisMax(UInt32 rID, HID_USAGES Axis, ref long Max) { return(_GetVJDAxisMax(rID, (uint)Axis, ref Max)); }
private static extern bool _SetAxis(Int32 Value, UInt32 rID, HID_USAGES Axis);
public void SetAxis(HID_USAGES axisId, double v) { joy.SetAxis((int)(v * Math.Pow(2, 16)), ID, axisId); }
public AnalogInput(HID_USAGES _Axis, string _DisplayName) { Axis = _Axis; DisplayName = _DisplayName; }
public AxisExtents GetAxisExtents(HID_USAGES Axis) { return(new AxisExtents(GetMinForAxis(Axis), GetMaxForAxis(Axis))); }
public int GetAxis(HID_USAGES usage) { return(currentAxisValue.ContainsKey(usage) ? currentAxisValue[usage] : 0); }
public bool GetVJDAxisExist(UInt32 rID, HID_USAGES Axis) { return _GetVJDAxisExist(rID, (uint)Axis); }
public void JoyAxis255(HID_USAGES parAxis, int parValue, uint parDSid) { if (parAxis != 0) { //bunch of offset correction nonsense, may need reevaluation //Seems to be very close, Constant offset of 0.5 seems to be present //Also Scaled values cannot get within 64 of vJoy limits //this gives pratical limits of (64-32704) int JoyValue = (int)((parValue + 1) * AXIS_SCALE) - AXIS_SCALE_OFFSET; JoyAxis(parAxis, JoyValue, parDSid); } }
public int GetAxis(HID_USAGES usage) { return currentAxisValue.ContainsKey(usage) ? currentAxisValue[usage] : 0; }
private void JoyAxis(HID_USAGES parAxis, int parJoyValue, uint parDSid) { switch (parAxis) { case HID_USAGES.HID_USAGE_X: joyReport[parDSid - 1].AxisX = parJoyValue; break; case HID_USAGES.HID_USAGE_Y: joyReport[parDSid - 1].AxisY = parJoyValue; break; case HID_USAGES.HID_USAGE_Z: joyReport[parDSid - 1].AxisZ = parJoyValue; break; case HID_USAGES.HID_USAGE_RX: joyReport[parDSid - 1].AxisXRot = parJoyValue; break; case HID_USAGES.HID_USAGE_RY: joyReport[parDSid - 1].AxisYRot = parJoyValue; break; case HID_USAGES.HID_USAGE_RZ: joyReport[parDSid - 1].AxisZRot = parJoyValue; break; case HID_USAGES.HID_USAGE_SL0: joyReport[parDSid - 1].Slider = parJoyValue; break; case HID_USAGES.HID_USAGE_SL1: joyReport[parDSid - 1].Dial = parJoyValue; break; } }
protected void SetValue(ref vJoy.JoystickState joyReport, HID_USAGES hid, int value) { switch (hid) { case HID_USAGES.HID_USAGE_X: joyReport.AxisX = value; break; case HID_USAGES.HID_USAGE_Y: joyReport.AxisY = value; break; case HID_USAGES.HID_USAGE_Z: joyReport.AxisZ = value; break; case HID_USAGES.HID_USAGE_RX: joyReport.AxisXRot = value; break; case HID_USAGES.HID_USAGE_RY: joyReport.AxisYRot = value; break; case HID_USAGES.HID_USAGE_RZ: joyReport.AxisZRot = value; break; case HID_USAGES.HID_USAGE_SL0: joyReport.Slider = value; break; case HID_USAGES.HID_USAGE_SL1: joyReport.Dial = value; break; } }
public void JoyAxis1023(HID_USAGES parAxis, int parValue, uint parDSid) { if (parAxis != 0) { //See above function for comment about scaling int JoyValue = (int)((parValue + 1) * ACCEL_SCALE) - ACCEL_SCALE_OFFSET; JoyAxis(parAxis, JoyValue, parDSid); } }
public override int AxisMinValue(HID_USAGES hidusage) { //long maxValue = 0; //long minValue = 0; //if (!minMaxAxis.ContainsKey(hidusage)) //{ // _joystick.GetVJDAxisMax(_deviceid, hidusage, ref maxValue); // _joystick.GetVJDAxisMin(_deviceid, hidusage, ref minValue); // minMaxAxis.Add(hidusage, new int[] { (int)minValue, (int)maxValue }); //} return -AXISLIMIT; }
public bool GetVJDAxisMax(UInt32 rID, HID_USAGES Axis, ref long Max) { return _GetVJDAxisMax(rID, (uint)Axis, ref Max); }
//-32767 .. 32767 public override void SetAxis(int value, HID_USAGES axis) { lock(lockSetAxis) { try { var val = (value + AXISLIMIT) / 2; _joystick.SetAxis(val, _deviceid, axis); } catch { Debug.Print("VJoyEizikovich::SetAxis exception"); } } }
////// Write data public bool SetAxis(Int32 Value, UInt32 rID, HID_USAGES Axis) { return _SetAxis(Value, rID, Axis); }
public override bool Acquire() { lock (lockAcquire) { var status = _joystick.GetVJDStatus(_deviceid); switch (status) { case VjdStat.VJD_STAT_OWN: return true; case VjdStat.VJD_STAT_FREE: break; case VjdStat.VJD_STAT_BUSY: return false; case VjdStat.VJD_STAT_MISS: return false; default: return false; }; _joystick.AcquireVJD(_deviceid); var axisList = new HID_USAGES[] { HID_USAGES.HID_USAGE_X, HID_USAGES.HID_USAGE_Y, HID_USAGES.HID_USAGE_RZ }; var v = 0; foreach (var a in axisList) { v = AxisMinValue(a); SetAxis(0, a); } var btnNumber = _joystick.GetVJDButtonNumber(_deviceid); for (uint i = 0; i < btnNumber; i++) _joystick.SetBtn(false, _deviceid, i); if (OnAcquire != null) OnAcquire(this, EventArgs.Empty); isAcquired = true; return true; } }
public virtual void SetAxis(int value, HID_USAGES axis) { }
public static String VirtualName(HID_USAGES id) { JoystickOffset offset = VirtualIDs.Where(vid => vid.Value == id).FirstOrDefault().Key; return AllNames[offset]; }
int ConvertStickAxisDegreesToAxisInt(float axisDegres, HID_USAGES hid) { return(ConvertAxisRatioToAxisInt(axisDegres / joystickMaxDegrees, hid)); }