Merge branch 'jay' into vigem-udpserver

# Conflicts:
#	DS4Windows/DS4Control/ScpUtil.cs
This commit is contained in:
Travis Nickles 2019-01-26 21:34:43 -06:00
commit bdea569582
7 changed files with 103 additions and 158 deletions

View File

@ -166,6 +166,18 @@ namespace DS4Windows
// Thread.SpinWait(500); // Thread.SpinWait(500);
//} //}
if (Global.IsHidGuardianInstalled())
{
ProcessStartInfo startInfo =
new ProcessStartInfo(Global.exepath + "\\HidGuardHelper.exe");
startInfo.Verb = "runas";
startInfo.Arguments = Process.GetCurrentProcess().Id.ToString();
startInfo.WorkingDirectory = Global.exepath;
try
{ Process tempProc = Process.Start(startInfo); tempProc.Dispose(); }
catch { }
}
for (int i = 0, arlength = DS4Controllers.Length; i < arlength; i++) for (int i = 0, arlength = DS4Controllers.Length; i < arlength; i++)
{ {
processingData[i] = new X360Data(); processingData[i] = new X360Data();

View File

@ -3077,11 +3077,11 @@ namespace DS4Windows
switch (control) switch (control)
{ {
case DS4Controls.LXNeg: result = cState.LX < 127 - 55; break; case DS4Controls.LXNeg: result = cState.LX < 128 - 55; break;
case DS4Controls.LYNeg: result = cState.LY < 127 - 55; break; case DS4Controls.LYNeg: result = cState.LY < 128 - 55; break;
case DS4Controls.RXNeg: result = cState.RX < 127 - 55; break; case DS4Controls.RXNeg: result = cState.RX < 128 - 55; break;
case DS4Controls.RYNeg: result = cState.RY < 127 - 55; break; case DS4Controls.RYNeg: result = cState.RY < 128 - 55; break;
default: result = axisValue > 127 + 55; break; default: result = axisValue > 128 + 55; break;
} }
} }
else if (controlType == DS4StateFieldMapping.ControlType.Trigger) else if (controlType == DS4StateFieldMapping.ControlType.Trigger)
@ -3448,7 +3448,7 @@ namespace DS4Windows
{ {
byte result = 0; byte result = 0;
byte trueVal = 0; byte trueVal = 0;
byte falseVal = 127; byte falseVal = 128;
if (alt) if (alt)
trueVal = 255; trueVal = 255;
@ -3548,6 +3548,7 @@ namespace DS4Windows
return result; return result;
} }
/* TODO: Possibly remove usage of this version of the method */
public static byte getXYAxisMapping(int device, DS4Controls control, DS4State cState, DS4StateExposed eState, Mouse tp, bool alt = false) public static byte getXYAxisMapping(int device, DS4Controls control, DS4State cState, DS4StateExposed eState, Mouse tp, bool alt = false)
{ {
byte result = 0; byte result = 0;
@ -3690,74 +3691,6 @@ namespace DS4Windows
return result; return result;
} }
/* TODO: Possibly remove usage of this version of the method */
//Returns false for any bool,
//if control is one of the xy axis returns 127
//if its a trigger returns 0
public static void resetToDefaultValue(DS4Controls control, DS4State cState)
{
if (control >= DS4Controls.Square && control <= DS4Controls.Cross)
{
switch (control)
{
case DS4Controls.Cross: cState.Cross = false; break;
case DS4Controls.Square: cState.Square = false; break;
case DS4Controls.Triangle: cState.Triangle = false; break;
case DS4Controls.Circle: cState.Circle = false; break;
default: break;
}
}
else if (control >= DS4Controls.L1 && control <= DS4Controls.R3)
{
switch (control)
{
case DS4Controls.L1: cState.L1 = false; break;
case DS4Controls.L2: cState.L2 = 0; break;
case DS4Controls.L3: cState.L3 = false; break;
case DS4Controls.R1: cState.R1 = false; break;
case DS4Controls.R2: cState.R2 = 0; break;
case DS4Controls.R3: cState.R3 = false; break;
default: break;
}
}
else if (control >= DS4Controls.DpadUp && control <= DS4Controls.DpadLeft)
{
switch (control)
{
case DS4Controls.DpadUp: cState.DpadUp = false; break;
case DS4Controls.DpadDown: cState.DpadDown = false; break;
case DS4Controls.DpadLeft: cState.DpadLeft = false; break;
case DS4Controls.DpadRight: cState.DpadRight = false; break;
default: break;
}
}
else if (control >= DS4Controls.LXNeg && control <= DS4Controls.RYPos)
{
switch (control)
{
case DS4Controls.LXNeg: cState.LX = 127; break;
case DS4Controls.LYNeg: cState.LY = 127; break;
case DS4Controls.RXNeg: cState.RX = 127; break;
case DS4Controls.RYNeg: cState.RY = 127; break;
case DS4Controls.LXPos: cState.LX = 127; break;
case DS4Controls.LYPos: cState.LY = 127; break;
case DS4Controls.RXPos: cState.RX = 127; break;
case DS4Controls.RYPos: cState.RY = 127; break;
default: break;
}
}
else
{
switch (control)
{
case DS4Controls.Share: cState.Share = false; break;
case DS4Controls.Options: cState.Options = false; break;
case DS4Controls.PS: cState.PS = false; break;
default: break;
}
}
}
private static void resetToDefaultValue2(DS4Controls control, DS4State cState, private static void resetToDefaultValue2(DS4Controls control, DS4State cState,
DS4StateFieldMapping fieldMap) DS4StateFieldMapping fieldMap)
{ {
@ -3769,9 +3702,9 @@ namespace DS4Windows
} }
else if (controlType == DS4StateFieldMapping.ControlType.AxisDir) else if (controlType == DS4StateFieldMapping.ControlType.AxisDir)
{ {
fieldMap.axisdirs[controlNum] = 127; fieldMap.axisdirs[controlNum] = 128;
int controlRelation = (controlNum % 2 == 0 ? controlNum - 1 : controlNum + 1); int controlRelation = (controlNum % 2 == 0 ? controlNum - 1 : controlNum + 1);
fieldMap.axisdirs[controlRelation] = 127; fieldMap.axisdirs[controlRelation] = 128;
} }
else if (controlType == DS4StateFieldMapping.ControlType.Trigger) else if (controlType == DS4StateFieldMapping.ControlType.Trigger)
{ {

View File

@ -227,7 +227,7 @@ namespace DS4Windows
{ {
protected static BackingStore m_Config = new BackingStore(); protected static BackingStore m_Config = new BackingStore();
protected static Int32 m_IdleTimeout = 600000; protected static Int32 m_IdleTimeout = 600000;
public static string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName; public static readonly string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
public static string appdatapath; public static string appdatapath;
public static bool firstRun = false; public static bool firstRun = false;
public static bool multisavespots = false; public static bool multisavespots = false;
@ -297,25 +297,28 @@ namespace DS4Windows
return principal.IsInRole(WindowsBuiltInRole.Administrator); return principal.IsInRole(WindowsBuiltInRole.Administrator);
} }
public static bool IsScpVBusInstalled() private static bool CheckForSysDevice(string searchHardwareId)
{ {
bool result = false; bool result = false;
Guid sysGuid = Guid.Parse("{4d36e97d-e325-11ce-bfc1-08002be10318}"); Guid sysGuid = Guid.Parse("{4d36e97d-e325-11ce-bfc1-08002be10318}");
NativeMethods.SP_DEVINFO_DATA deviceInfoData = new NativeMethods.SP_DEVINFO_DATA(); NativeMethods.SP_DEVINFO_DATA deviceInfoData =
deviceInfoData.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(deviceInfoData); new NativeMethods.SP_DEVINFO_DATA();
deviceInfoData.cbSize =
System.Runtime.InteropServices.Marshal.SizeOf(deviceInfoData);
var dataBuffer = new byte[4096]; var dataBuffer = new byte[4096];
ulong propertyType = 0; ulong propertyType = 0;
var requiredSize = 0; var requiredSize = 0;
IntPtr deviceInfoSet = NativeMethods.SetupDiGetClassDevs(ref sysGuid, null, 0, 0); IntPtr deviceInfoSet = NativeMethods.SetupDiGetClassDevs(ref sysGuid, null, 0, 0);
for (int i = 0; !result && NativeMethods.SetupDiEnumDeviceInfo(deviceInfoSet, i, ref deviceInfoData); i++) for (int i = 0; !result && NativeMethods.SetupDiEnumDeviceInfo(deviceInfoSet, i, ref deviceInfoData); i++)
{ {
if (NativeMethods.SetupDiGetDeviceProperty(deviceInfoSet, ref deviceInfoData, ref NativeMethods.DEVPKEY_Device_HardwareIds, ref propertyType, if (NativeMethods.SetupDiGetDeviceProperty(deviceInfoSet, ref deviceInfoData,
ref NativeMethods.DEVPKEY_Device_HardwareIds, ref propertyType,
dataBuffer, dataBuffer.Length, ref requiredSize, 0)) dataBuffer, dataBuffer.Length, ref requiredSize, 0))
{ {
string hardwareId = dataBuffer.ToUTF16String(); string hardwareId = dataBuffer.ToUTF16String();
//if (hardwareIds.Contains("Virtual Gamepad Emulation Bus")) //if (hardwareIds.Contains("Virtual Gamepad Emulation Bus"))
// result = true; // result = true;
if (hardwareId.Equals(@"Root\ViGEmBus")) if (hardwareId.Equals(searchHardwareId))
result = true; result = true;
} }
} }
@ -328,6 +331,16 @@ namespace DS4Windows
return result; return result;
} }
public static bool IsHidGuardianInstalled()
{
return CheckForSysDevice(@"Root\HidGuardian");
}
public static bool IsScpVBusInstalled()
{
return CheckForSysDevice(@"Root\ViGEmBus");
}
public static void FindConfigLocation() public static void FindConfigLocation()
{ {
if (File.Exists(exepath + "\\Auto Profiles.xml") if (File.Exists(exepath + "\\Auto Profiles.xml")
@ -3458,15 +3471,12 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
{ dcs.UpdateSettings(shift, action, exts, kt, trigger);
dcs.UpdateSettings(shift, action, exts, kt, trigger);
break;
}
} }
} }
@ -3478,19 +3488,15 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
{ if (shift)
if (shift) dcs.shiftExtras = exts;
dcs.shiftExtras = exts; else
else dcs.extras = exts;
dcs.extras = exts;
break;
}
} }
} }
@ -3502,19 +3508,15 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
{ if (shift)
if (shift) dcs.shiftKeyType = keyType;
dcs.shiftKeyType = keyType; else
else dcs.keyType = keyType;
dcs.keyType = keyType;
break;
}
} }
} }
@ -3526,16 +3528,18 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
if (shift)
{ {
if (shift) return dcs.shiftTrigger;
return dcs.shiftAction; }
else else
return dcs.action; {
return dcs.action;
} }
} }
@ -3570,17 +3574,15 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
{ if (shift)
if (shift) return dcs.shiftExtras;
return dcs.shiftExtras; else
else return dcs.extras;
return dcs.extras;
}
} }
return null; return null;
@ -3594,17 +3596,15 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
{ if (shift)
if (shift) return dcs.shiftKeyType;
return dcs.shiftKeyType; else
else return dcs.keyType;
return dcs.keyType;
}
} }
return DS4KeyType.None; return DS4KeyType.None;
@ -3618,12 +3618,12 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
return dcs.shiftTrigger; return dcs.shiftTrigger;
} }
return 0; return 0;
@ -3650,12 +3650,12 @@ namespace DS4Windows
else else
dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true); dc = (DS4Controls)Enum.Parse(typeof(DS4Controls), buttonName, true);
List<DS4ControlSettings> ds4settingsList = ds4settings[deviceNum]; int temp = (int)dc;
for (int i = 0, settingsLen = ds4settingsList.Count; i < settingsLen; i++) if (temp > 0)
{ {
DS4ControlSettings dcs = ds4settingsList[i]; int index = temp - 1;
if (dcs.control == dc) DS4ControlSettings dcs = ds4settings[deviceNum][index];
return dcs; return dcs;
} }
return null; return null;

View File

@ -401,7 +401,7 @@ namespace DS4Windows
if (btnStartStop.Enabled && start) if (btnStartStop.Enabled && start)
{ {
TaskRunner.Delay(50).ContinueWith((t) => { TaskRunner.Delay(100).ContinueWith((t) => {
this.BeginInvoke((System.Action)(() => BtnStartStop_Clicked())); this.BeginInvoke((System.Action)(() => BtnStartStop_Clicked()));
}); });
} }

View File

@ -450,11 +450,11 @@ namespace DS4Windows
if (isExclusive) if (isExclusive)
{ {
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | NativeMethods.FILE_FLAG_OVERLAPPED, 0); hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | 0x100 | NativeMethods.FILE_FLAG_OVERLAPPED, 0);
} }
else else
{ {
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, NativeMethods.FILE_SHARE_READ | NativeMethods.FILE_SHARE_WRITE, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | NativeMethods.FILE_FLAG_OVERLAPPED, 0); hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, NativeMethods.FILE_SHARE_READ | NativeMethods.FILE_SHARE_WRITE, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | 0x100 | NativeMethods.FILE_FLAG_OVERLAPPED, 0);
} }
return hidHandle; return hidHandle;

View File

@ -33,7 +33,7 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.6.7")] [assembly: AssemblyVersion("1.6.8")]
[assembly: AssemblyFileVersion("1.6.7")] [assembly: AssemblyFileVersion("1.6.8")]
[assembly: NeutralResourcesLanguage("en")] [assembly: NeutralResourcesLanguage("en")]

View File

@ -1 +1 @@
1.6.7 1.6.8