mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2025-01-11 15:59:08 +01:00
Merge branch 'mika-n-jay' into jay
This commit is contained in:
commit
085db3cf76
@ -426,11 +426,11 @@ namespace DS4Windows
|
|||||||
useDInputOnly[i] = false;
|
useDInputOnly[i] = false;
|
||||||
x360controls[i] = new Xbox360Controller(vigemTestClient);
|
x360controls[i] = new Xbox360Controller(vigemTestClient);
|
||||||
int devIndex = i;
|
int devIndex = i;
|
||||||
/*x360controls[i].FeedbackReceived += (sender, args) =>
|
x360controls[i].FeedbackReceived += (sender, args) =>
|
||||||
{
|
{
|
||||||
SetDevRumble(device, args.LargeMotor, args.SmallMotor, devIndex);
|
SetDevRumble(device, args.LargeMotor, args.SmallMotor, devIndex);
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
x360controls[i].Connect();
|
x360controls[i].Connect();
|
||||||
LogDebug("X360 Controller #" + (i + 1) + " connected");
|
LogDebug("X360 Controller #" + (i + 1) + " connected");
|
||||||
}
|
}
|
||||||
@ -683,11 +683,11 @@ namespace DS4Windows
|
|||||||
useDInputOnly[Index] = false;
|
useDInputOnly[Index] = false;
|
||||||
x360controls[Index] = new Xbox360Controller(vigemTestClient);
|
x360controls[Index] = new Xbox360Controller(vigemTestClient);
|
||||||
int devIndex = Index;
|
int devIndex = Index;
|
||||||
/*x360controls[Index].FeedbackReceived += (sender, args) =>
|
x360controls[Index].FeedbackReceived += (sender, args) =>
|
||||||
{
|
{
|
||||||
SetDevRumble(device, args.LargeMotor, args.SmallMotor, devIndex);
|
SetDevRumble(device, args.LargeMotor, args.SmallMotor, devIndex);
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
x360controls[Index].Connect();
|
x360controls[Index].Connect();
|
||||||
LogDebug("X360 Controller #" + (Index + 1) + " connected");
|
LogDebug("X360 Controller #" + (Index + 1) + " connected");
|
||||||
}
|
}
|
||||||
@ -1060,11 +1060,11 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
LogDebug("Plugging in X360 Controller #" + (ind + 1));
|
LogDebug("Plugging in X360 Controller #" + (ind + 1));
|
||||||
x360controls[ind] = new Xbox360Controller(vigemTestClient);
|
x360controls[ind] = new Xbox360Controller(vigemTestClient);
|
||||||
/*x360controls[ind].FeedbackReceived += (eventsender, args) =>
|
x360controls[ind].FeedbackReceived += (eventsender, args) =>
|
||||||
{
|
{
|
||||||
SetDevRumble(device, args.LargeMotor, args.SmallMotor, ind);
|
SetDevRumble(device, args.LargeMotor, args.SmallMotor, ind);
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
x360controls[ind].Connect();
|
x360controls[ind].Connect();
|
||||||
useDInputOnly[ind] = false;
|
useDInputOnly[ind] = false;
|
||||||
LogDebug("X360 Controller #" + (ind + 1) + " connected");
|
LogDebug("X360 Controller #" + (ind + 1) + " connected");
|
||||||
|
@ -1896,11 +1896,15 @@ namespace DS4Windows
|
|||||||
{
|
{
|
||||||
actionFound = true;
|
actionFound = true;
|
||||||
|
|
||||||
if (!actionDone[index].dev[device] && !useTempProfile[device])
|
if (!actionDone[index].dev[device] && (!useTempProfile[device] || untriggeraction[device] == null || untriggeraction[device].typeID != SpecialAction.ActionTypeId.Profile) )
|
||||||
{
|
{
|
||||||
actionDone[index].dev[device] = true;
|
actionDone[index].dev[device] = true;
|
||||||
untriggeraction[device] = action;
|
// If Loadprofile special action doesn't have unload trigger then don't set untrigger status. This way the new loaded profile allows yet another loadProfile action key events)
|
||||||
untriggerindex[device] = index;
|
if (action.uTrigger.Count > 0)
|
||||||
|
{
|
||||||
|
untriggeraction[device] = action;
|
||||||
|
untriggerindex[device] = index;
|
||||||
|
}
|
||||||
//foreach (DS4Controls dc in action.trigger)
|
//foreach (DS4Controls dc in action.trigger)
|
||||||
for (int i = 0, arlen = action.trigger.Count; i < arlen; i++)
|
for (int i = 0, arlen = action.trigger.Count; i < arlen; i++)
|
||||||
{
|
{
|
||||||
|
@ -3064,11 +3064,11 @@ namespace DS4Windows
|
|||||||
if (xinputStatus && xinputPlug)
|
if (xinputStatus && xinputPlug)
|
||||||
{
|
{
|
||||||
control.x360controls[device] = new Nefarius.ViGEm.Client.Targets.Xbox360Controller(control.vigemTestClient);
|
control.x360controls[device] = new Nefarius.ViGEm.Client.Targets.Xbox360Controller(control.vigemTestClient);
|
||||||
/*control.x360controls[device].FeedbackReceived += (eventsender, args) =>
|
control.x360controls[device].FeedbackReceived += (eventsender, args) =>
|
||||||
{
|
{
|
||||||
control.SetDevRumble(tempDev, args.LargeMotor, args.SmallMotor, device);
|
control.SetDevRumble(tempDev, args.LargeMotor, args.SmallMotor, device);
|
||||||
};
|
};
|
||||||
*/
|
|
||||||
control.x360controls[device].Connect();
|
control.x360controls[device].Connect();
|
||||||
Global.useDInputOnly[device] = false;
|
Global.useDInputOnly[device] = false;
|
||||||
AppLogger.LogToGui("X360 Controller #" + (device + 1) + " connected", false);
|
AppLogger.LogToGui("X360 Controller #" + (device + 1) + " connected", false);
|
||||||
|
@ -92,13 +92,16 @@ namespace DS4Windows
|
|||||||
case "Profile":
|
case "Profile":
|
||||||
cBActions.SelectedIndex = 3;
|
cBActions.SelectedIndex = 3;
|
||||||
cBProfiles.Text = act.details;
|
cBProfiles.Text = act.details;
|
||||||
foreach (string s in act.ucontrols.Split('/'))
|
if (act.ucontrols != null)
|
||||||
foreach (ListViewItem lvi in lVUnloadTrigger.Items)
|
{
|
||||||
if (lvi.Text == s)
|
foreach (string s in act.ucontrols.Split('/'))
|
||||||
{
|
foreach (ListViewItem lvi in lVUnloadTrigger.Items)
|
||||||
lvi.Checked = true;
|
if (lvi.Text == s)
|
||||||
break;
|
{
|
||||||
}
|
lvi.Checked = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "Key":
|
case "Key":
|
||||||
cBActions.SelectedIndex = 4;
|
cBActions.SelectedIndex = 4;
|
||||||
@ -261,7 +264,7 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (cBProfiles.SelectedIndex > 0 && ucontrols.Count > 0)
|
if (cBProfiles.SelectedIndex > 0 /*&& ucontrols.Count > 0*/)
|
||||||
{
|
{
|
||||||
action = Properties.Resources.LoadProfile.Replace("*profile*", cBProfiles.Text);
|
action = Properties.Resources.LoadProfile.Replace("*profile*", cBProfiles.Text);
|
||||||
actRe = true;
|
actRe = true;
|
||||||
|
@ -611,6 +611,8 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private readonly Stopwatch rumbleAutostopTimer = new Stopwatch(); // Autostop timer to stop rumble motors if those are stuck in a rumble state
|
||||||
|
|
||||||
private byte outputPendCount = 0;
|
private byte outputPendCount = 0;
|
||||||
private readonly Stopwatch standbySw = new Stopwatch();
|
private readonly Stopwatch standbySw = new Stopwatch();
|
||||||
private unsafe void performDs4Output()
|
private unsafe void performDs4Output()
|
||||||
@ -1210,6 +1212,13 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rumbleAutostopTimer.IsRunning)
|
||||||
|
{
|
||||||
|
// Workaround to a bug in ViGem driver. Force stop potentially stuck rumble motor on the next output report if there haven't been new rumble events within X seconds
|
||||||
|
if (rumbleAutostopTimer.ElapsedMilliseconds >= 2000L)
|
||||||
|
setRumble(0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (synchronous)
|
if (synchronous)
|
||||||
{
|
{
|
||||||
if (output || haptime)
|
if (output || haptime)
|
||||||
@ -1399,6 +1408,11 @@ namespace DS4Windows
|
|||||||
testRumble.RumbleMotorStrengthRightLightFast = rightLightFastMotor;
|
testRumble.RumbleMotorStrengthRightLightFast = rightLightFastMotor;
|
||||||
testRumble.RumbleMotorStrengthLeftHeavySlow = leftHeavySlowMotor;
|
testRumble.RumbleMotorStrengthLeftHeavySlow = leftHeavySlowMotor;
|
||||||
testRumble.RumbleMotorsExplicitlyOff = rightLightFastMotor == 0 && leftHeavySlowMotor == 0;
|
testRumble.RumbleMotorsExplicitlyOff = rightLightFastMotor == 0 && leftHeavySlowMotor == 0;
|
||||||
|
|
||||||
|
if (testRumble.RumbleMotorsExplicitlyOff)
|
||||||
|
rumbleAutostopTimer.Reset(); // Stop an autostop timer because ViGem driver sent properly a zero rumble notification
|
||||||
|
else
|
||||||
|
rumbleAutostopTimer.Restart(); // Start an autostop timer to stop potentially stuck rumble motor because of lost rumble notification events from ViGem driver
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MergeStates()
|
private void MergeStates()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user