mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2024-11-23 09:49:16 +01:00
Merge branch 'jay' into vigem-udpserver
# Conflicts: # DS4Windows/DS4Control/ControlService.cs
This commit is contained in:
commit
ce4a01b99b
@ -7,10 +7,12 @@ using System.Media;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using static DS4Windows.Global;
|
using static DS4Windows.Global;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using Microsoft.Win32;
|
||||||
using Nefarius.ViGEm.Client;
|
using Nefarius.ViGEm.Client;
|
||||||
using Nefarius.ViGEm.Client.Targets;
|
using Nefarius.ViGEm.Client.Targets;
|
||||||
using Nefarius.ViGEm.Client.Targets.Xbox360;
|
using Nefarius.ViGEm.Client.Targets.Xbox360;
|
||||||
using Registry = Microsoft.Win32.Registry;
|
|
||||||
|
|
||||||
namespace DS4Windows
|
namespace DS4Windows
|
||||||
{
|
{
|
||||||
@ -166,7 +168,32 @@ namespace DS4Windows
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createHidGuardKey()
|
public void ScanPurgeHidGuard()
|
||||||
|
{
|
||||||
|
RegistryKey tempkey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\Whitelist");
|
||||||
|
string[] subkeys = tempkey.GetSubKeyNames();
|
||||||
|
bool processExists = false;
|
||||||
|
for (int ind = 0, arlen = subkeys.Length; ind < arlen; ind++)
|
||||||
|
{
|
||||||
|
processExists = true;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Process.GetProcessById(Convert.ToInt32(subkeys[ind]));
|
||||||
|
}
|
||||||
|
catch { processExists = false; }
|
||||||
|
|
||||||
|
if (!processExists)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Registry.LocalMachine.DeleteSubKey(@"SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\Whitelist\" + subkeys[ind]);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CreateHidGuardKey()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -779,28 +779,28 @@ namespace DS4Windows
|
|||||||
|
|
||||||
if (absX <= 0.4)
|
if (absX <= 0.4)
|
||||||
{
|
{
|
||||||
outputX = 0.43 * absX;
|
outputX = 0.45 * absX;
|
||||||
}
|
}
|
||||||
else if (absX <= 0.75)
|
else if (absX <= 0.75)
|
||||||
{
|
{
|
||||||
outputX = absX - 0.228;
|
outputX = absX - 0.22;
|
||||||
}
|
}
|
||||||
else if (absX > 0.75)
|
else if (absX > 0.75)
|
||||||
{
|
{
|
||||||
outputX = (absX * 1.912) - 0.912;
|
outputX = (absX * 1.88) - 0.88;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (absY <= 0.4)
|
if (absY <= 0.4)
|
||||||
{
|
{
|
||||||
outputY = 0.43 * absY;
|
outputY = 0.45 * absY;
|
||||||
}
|
}
|
||||||
else if (absY <= 0.75)
|
else if (absY <= 0.75)
|
||||||
{
|
{
|
||||||
outputY = absY - 0.228;
|
outputY = absY - 0.22;
|
||||||
}
|
}
|
||||||
else if (absY > 0.75)
|
else if (absY > 0.75)
|
||||||
{
|
{
|
||||||
outputY = (absY * 1.912) - 0.912;
|
outputY = (absY * 1.88) - 0.88;
|
||||||
}
|
}
|
||||||
|
|
||||||
dState.LX = (byte)(outputX * signX * 127.5 + 127.5);
|
dState.LX = (byte)(outputX * signX * 127.5 + 127.5);
|
||||||
@ -839,28 +839,28 @@ namespace DS4Windows
|
|||||||
|
|
||||||
if (absX <= 0.4)
|
if (absX <= 0.4)
|
||||||
{
|
{
|
||||||
outputX = 0.414 * absX;
|
outputX = 0.45 * absX;
|
||||||
}
|
}
|
||||||
else if (absX <= 0.75)
|
else if (absX <= 0.75)
|
||||||
{
|
{
|
||||||
outputX = absX - 0.24;
|
outputX = absX - 0.22;
|
||||||
}
|
}
|
||||||
else if (absX > 0.75)
|
else if (absX > 0.75)
|
||||||
{
|
{
|
||||||
outputX = (absX * 1.9376) - 0.9376;
|
outputX = (absX * 1.88) - 0.88;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (absY <= 0.4)
|
if (absY <= 0.4)
|
||||||
{
|
{
|
||||||
outputY = 0.414 * absY;
|
outputY = 0.45 * absY;
|
||||||
}
|
}
|
||||||
else if (absY <= 0.75)
|
else if (absY <= 0.75)
|
||||||
{
|
{
|
||||||
outputY = absY - 0.24;
|
outputY = absY - 0.22;
|
||||||
}
|
}
|
||||||
else if (absY > 0.75)
|
else if (absY > 0.75)
|
||||||
{
|
{
|
||||||
outputY = (absY * 1.9376) - 0.9376;
|
outputY = (absY * 1.88) - 0.88;
|
||||||
}
|
}
|
||||||
|
|
||||||
dState.RX = (byte)(outputX * signX * 127.5 + 127.5);
|
dState.RX = (byte)(outputX * signX * 127.5 + 127.5);
|
||||||
|
36
DS4Windows/DS4Control/ScpHub.Designer.cs
generated
36
DS4Windows/DS4Control/ScpHub.Designer.cs
generated
@ -1,36 +0,0 @@
|
|||||||
namespace DS4Windows
|
|
||||||
{
|
|
||||||
partial class ScpHub
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Required designer variable.
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clean up any resources being used.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
|
||||||
{
|
|
||||||
if (disposing && (components != null))
|
|
||||||
{
|
|
||||||
components.Dispose();
|
|
||||||
}
|
|
||||||
base.Dispose(disposing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Component Designer generated code
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Required method for Designer support - do not modify
|
|
||||||
/// the contents of this method with the code editor.
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
|
||||||
{
|
|
||||||
components = new System.ComponentModel.Container();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace DS4Windows
|
|
||||||
{
|
|
||||||
public partial class ScpHub : Component
|
|
||||||
{
|
|
||||||
protected IntPtr m_Reference = IntPtr.Zero;
|
|
||||||
protected volatile Boolean m_Started = false;
|
|
||||||
|
|
||||||
public event EventHandler<DebugEventArgs> Debug = null;
|
|
||||||
|
|
||||||
public event EventHandler<ReportEventArgs> Report = null;
|
|
||||||
|
|
||||||
protected virtual Boolean LogDebug(String Data, bool warning)
|
|
||||||
{
|
|
||||||
DebugEventArgs args = new DebugEventArgs(Data, warning);
|
|
||||||
|
|
||||||
On_Debug(this, args);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean Active
|
|
||||||
{
|
|
||||||
get { return m_Started; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public ScpHub()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ScpHub(IContainer container)
|
|
||||||
{
|
|
||||||
container.Add(this);
|
|
||||||
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public virtual Boolean Open()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean Start()
|
|
||||||
{
|
|
||||||
return m_Started;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean Stop()
|
|
||||||
{
|
|
||||||
return !m_Started;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean Close()
|
|
||||||
{
|
|
||||||
if (m_Reference != IntPtr.Zero) ScpDevice.UnregisterNotify(m_Reference);
|
|
||||||
|
|
||||||
return !m_Started;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public virtual Boolean Suspend()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Boolean Resume()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void On_Debug(object sender, DebugEventArgs e)
|
|
||||||
{
|
|
||||||
if (Debug != null) Debug(sender, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
protected virtual void On_Report(object sender, ReportEventArgs e)
|
|
||||||
{
|
|
||||||
if (Report != null) Report(sender, e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,93 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace ScpServer
|
|
||||||
{
|
|
||||||
[System.ComponentModel.DesignerCategory("")]
|
|
||||||
public class AdvancedComboBox : ComboBox
|
|
||||||
{
|
|
||||||
public Label Label { get; set; }
|
|
||||||
|
|
||||||
public AdvancedComboBox()
|
|
||||||
{
|
|
||||||
base.Visible = false;
|
|
||||||
Label = new Label();
|
|
||||||
Label.Tag = this;
|
|
||||||
Label.ForeColor = Color.Blue;
|
|
||||||
Label.TextAlign = ContentAlignment.MiddleCenter;
|
|
||||||
Label.BackColor = Color.Transparent;
|
|
||||||
Label.MouseDown += Label_MouseDown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color Color
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return Label.ForeColor;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Label.ForeColor = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public new bool Visible
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return Label.Visible;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
Label.Visible = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Label_MouseDown(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
|
||||||
DroppedDown = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnParentChanged(EventArgs e)
|
|
||||||
{
|
|
||||||
base.OnParentChanged(e);
|
|
||||||
|
|
||||||
if (Parent != null)
|
|
||||||
{
|
|
||||||
Label.Location = this.Location;
|
|
||||||
Label.Size = this.Size;
|
|
||||||
Label.Dock = this.Dock;
|
|
||||||
Label.Anchor = this.Anchor;
|
|
||||||
Label.Enabled = this.Enabled;
|
|
||||||
Label.Visible = this.Visible;
|
|
||||||
Label.RightToLeft = this.RightToLeft;
|
|
||||||
Label.Font = this.Font;
|
|
||||||
Label.Text = this.Text
|
|
||||||
.Replace("Right Click", "Right-Click")
|
|
||||||
.Replace(" Button", string.Empty)
|
|
||||||
.Replace("Left ", string.Empty)
|
|
||||||
.Replace("Right ", string.Empty);
|
|
||||||
Label.TabStop = this.TabStop;
|
|
||||||
Label.TabIndex = this.TabIndex;
|
|
||||||
}
|
|
||||||
Label.Parent = this.Parent;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnSelectedIndexChanged(EventArgs e)
|
|
||||||
{
|
|
||||||
base.OnSelectedIndexChanged(e);
|
|
||||||
|
|
||||||
Label.Text = this.Text
|
|
||||||
.Replace("Right Click", "Right-Click")
|
|
||||||
.Replace(" Button", string.Empty)
|
|
||||||
.Replace("Left ", string.Empty)
|
|
||||||
.Replace("Right ", string.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -991,15 +991,16 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question
|
|||||||
private bool inHotPlug = false;
|
private bool inHotPlug = false;
|
||||||
private int hotplugCounter = 0;
|
private int hotplugCounter = 0;
|
||||||
private object hotplugCounterLock = new object();
|
private object hotplugCounterLock = new object();
|
||||||
|
private const int DBT_DEVNODES_CHANGED = 0x0007;
|
||||||
protected override void WndProc(ref Message m)
|
protected override void WndProc(ref Message m)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
if (m.Msg == ScpDevice.WM_DEVICECHANGE)
|
if (m.Msg == ScpDevice.WM_DEVICECHANGE)
|
||||||
{
|
{
|
||||||
if (runHotPlug)
|
if (runHotPlug)
|
||||||
{
|
{
|
||||||
Int32 Type = m.WParam.ToInt32();
|
Int32 Type = m.WParam.ToInt32();
|
||||||
|
if (Type == DBT_DEVNODES_CHANGED)
|
||||||
|
{
|
||||||
lock (hotplugCounterLock)
|
lock (hotplugCounterLock)
|
||||||
{
|
{
|
||||||
hotplugCounter++;
|
hotplugCounter++;
|
||||||
@ -1014,14 +1015,13 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { }
|
|
||||||
if (m.Msg == WM_QUERYENDSESSION)
|
if (m.Msg == WM_QUERYENDSESSION)
|
||||||
systemShutdown = true;
|
systemShutdown = true;
|
||||||
|
|
||||||
// If this is WM_QUERYENDSESSION, the closing event should be
|
// If this is WM_QUERYENDSESSION, the closing event should be
|
||||||
// raised in the base WndProc.
|
// raised in the base WndProc.
|
||||||
try { base.WndProc(ref m); }
|
base.WndProc(ref m);
|
||||||
catch { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InnerHotplug2(SynchronizationContext uiContext)
|
private void InnerHotplug2(SynchronizationContext uiContext)
|
||||||
@ -2463,7 +2463,7 @@ Properties.Resources.DS4Update, MessageBoxButtons.YesNo, MessageBoxIcon.Question
|
|||||||
{
|
{
|
||||||
Registry.LocalMachine.DeleteSubKeyTree(@"SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\Whitelist");
|
Registry.LocalMachine.DeleteSubKeyTree(@"SYSTEM\CurrentControlSet\Services\HidGuardian\Parameters\Whitelist");
|
||||||
Log.LogToGui("Cleared HidGuardian Whitelist", false);
|
Log.LogToGui("Cleared HidGuardian Whitelist", false);
|
||||||
Program.rootHub.createHidGuardKey();
|
Program.rootHub.CreateHidGuardKey();
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
namespace DS4Windows.Properties {
|
|
||||||
|
|
||||||
|
|
||||||
// This class allows you to handle specific events on the settings class:
|
|
||||||
// The SettingChanging event is raised before a setting's value is changed.
|
|
||||||
// The PropertyChanged event is raised after a setting's value is changed.
|
|
||||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
|
||||||
// The SettingsSaving event is raised before the setting values are saved.
|
|
||||||
internal sealed partial class Settings {
|
|
||||||
|
|
||||||
public Settings() {
|
|
||||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
|
||||||
//
|
|
||||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
|
||||||
//
|
|
||||||
// this.SettingsSaving += this.SettingsSavingEventHandler;
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
|
||||||
// Add code to handle the SettingChangingEvent event here.
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
|
||||||
// Add code to handle the SettingsSaving event here.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -408,12 +408,18 @@ namespace DS4Windows
|
|||||||
private Thread timeoutCheckThread = null;
|
private Thread timeoutCheckThread = null;
|
||||||
private bool timeoutExecuted = false;
|
private bool timeoutExecuted = false;
|
||||||
private bool timeoutEvent = false;
|
private bool timeoutEvent = false;
|
||||||
|
private bool runCalib;
|
||||||
|
public bool ShouldRunCalib()
|
||||||
|
{
|
||||||
|
return runCalib;
|
||||||
|
}
|
||||||
|
|
||||||
public DS4Device(HidDevice hidDevice)
|
public DS4Device(HidDevice hidDevice)
|
||||||
{
|
{
|
||||||
hDevice = hidDevice;
|
hDevice = hidDevice;
|
||||||
conType = HidConnectionType(hDevice);
|
conType = HidConnectionType(hDevice);
|
||||||
Mac = hDevice.readSerial();
|
Mac = hDevice.readSerial();
|
||||||
|
runCalib = true;
|
||||||
if (conType == ConnectionType.USB || conType == ConnectionType.SONYWA)
|
if (conType == ConnectionType.USB || conType == ConnectionType.SONYWA)
|
||||||
{
|
{
|
||||||
inputReport = new byte[64];
|
inputReport = new byte[64];
|
||||||
@ -428,6 +434,10 @@ namespace DS4Windows
|
|||||||
audio = new DS4Audio();
|
audio = new DS4Audio();
|
||||||
micAudio = new DS4Audio(DS4Library.CoreAudio.DataFlow.Capture);
|
micAudio = new DS4Audio(DS4Library.CoreAudio.DataFlow.Capture);
|
||||||
}
|
}
|
||||||
|
else if (tempAttr.VendorId == 0x146B)
|
||||||
|
{
|
||||||
|
runCalib = false;
|
||||||
|
}
|
||||||
|
|
||||||
synced = true;
|
synced = true;
|
||||||
}
|
}
|
||||||
@ -452,7 +462,8 @@ namespace DS4Windows
|
|||||||
touchpad = new DS4Touchpad();
|
touchpad = new DS4Touchpad();
|
||||||
sixAxis = new DS4SixAxis();
|
sixAxis = new DS4SixAxis();
|
||||||
Crc32Algorithm.InitializeTable(DefaultPolynomial);
|
Crc32Algorithm.InitializeTable(DefaultPolynomial);
|
||||||
refreshCalibration();
|
if (runCalib)
|
||||||
|
RefreshCalibration();
|
||||||
|
|
||||||
if (!hDevice.IsFileStreamOpen())
|
if (!hDevice.IsFileStreamOpen())
|
||||||
{
|
{
|
||||||
@ -462,7 +473,7 @@ namespace DS4Windows
|
|||||||
sendOutputReport(true, true); // initialize the output report
|
sendOutputReport(true, true); // initialize the output report
|
||||||
}
|
}
|
||||||
|
|
||||||
private void timeoutTestThread()
|
private void TimeoutTestThread()
|
||||||
{
|
{
|
||||||
while (!timeoutExecuted)
|
while (!timeoutExecuted)
|
||||||
{
|
{
|
||||||
@ -481,7 +492,7 @@ namespace DS4Windows
|
|||||||
|
|
||||||
const int DS4_FEATURE_REPORT_5_LEN = 41;
|
const int DS4_FEATURE_REPORT_5_LEN = 41;
|
||||||
const int DS4_FEATURE_REPORT_5_CRC32_POS = DS4_FEATURE_REPORT_5_LEN - 4;
|
const int DS4_FEATURE_REPORT_5_CRC32_POS = DS4_FEATURE_REPORT_5_LEN - 4;
|
||||||
public void refreshCalibration()
|
public void RefreshCalibration()
|
||||||
{
|
{
|
||||||
byte[] calibration = new byte[41];
|
byte[] calibration = new byte[41];
|
||||||
calibration[0] = conType == ConnectionType.BT ? (byte)0x05 : (byte)0x02;
|
calibration[0] = conType == ConnectionType.BT ? (byte)0x05 : (byte)0x02;
|
||||||
@ -532,7 +543,7 @@ namespace DS4Windows
|
|||||||
ds4Output.IsBackground = true;
|
ds4Output.IsBackground = true;
|
||||||
ds4Output.Start();
|
ds4Output.Start();
|
||||||
|
|
||||||
timeoutCheckThread = new Thread(timeoutTestThread);
|
timeoutCheckThread = new Thread(TimeoutTestThread);
|
||||||
timeoutCheckThread.Priority = ThreadPriority.BelowNormal;
|
timeoutCheckThread.Priority = ThreadPriority.BelowNormal;
|
||||||
timeoutCheckThread.Name = "DS4 Timeout thread: " + Mac;
|
timeoutCheckThread.Name = "DS4 Timeout thread: " + Mac;
|
||||||
timeoutCheckThread.IsBackground = true;
|
timeoutCheckThread.IsBackground = true;
|
||||||
@ -987,6 +998,7 @@ namespace DS4Windows
|
|||||||
pbAccel[i-6] = pbInput[i];
|
pbAccel[i-6] = pbInput[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sixAxis.handleSixaxis(gyro, accel, cState, elapsedDeltaTime);
|
sixAxis.handleSixaxis(gyro, accel, cState, elapsedDeltaTime);
|
||||||
|
|
||||||
/* Debug output of incoming HID data:
|
/* Debug output of incoming HID data:
|
||||||
|
@ -40,6 +40,7 @@ namespace DS4Windows
|
|||||||
new VidPidInfo(SONY_VID, 0x09CC),
|
new VidPidInfo(SONY_VID, 0x09CC),
|
||||||
new VidPidInfo(RAZER_VID, 0x1000),
|
new VidPidInfo(RAZER_VID, 0x1000),
|
||||||
new VidPidInfo(NACON_VID, 0x0D01),
|
new VidPidInfo(NACON_VID, 0x0D01),
|
||||||
|
new VidPidInfo(NACON_VID, 0x0D02),
|
||||||
new VidPidInfo(HORI_VID, 0x00EE), // Hori PS4 Mini Wired Gamepad
|
new VidPidInfo(HORI_VID, 0x00EE), // Hori PS4 Mini Wired Gamepad
|
||||||
new VidPidInfo(0x7545, 0x0104)
|
new VidPidInfo(0x7545, 0x0104)
|
||||||
};
|
};
|
||||||
@ -233,7 +234,8 @@ namespace DS4Windows
|
|||||||
deviceSerials.Add(serial);
|
deviceSerials.Add(serial);
|
||||||
}
|
}
|
||||||
|
|
||||||
device.refreshCalibration();
|
if (device.ShouldRunCalib())
|
||||||
|
device.RefreshCalibration();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,7 @@ namespace DS4Windows
|
|||||||
private CalibData[] calibrationData = new CalibData[6] { new CalibData(), new CalibData(),
|
private CalibData[] calibrationData = new CalibData[6] { new CalibData(), new CalibData(),
|
||||||
new CalibData(), new CalibData(), new CalibData(), new CalibData()
|
new CalibData(), new CalibData(), new CalibData(), new CalibData()
|
||||||
};
|
};
|
||||||
|
private bool calibrationDone = false;
|
||||||
|
|
||||||
public DS4SixAxis()
|
public DS4SixAxis()
|
||||||
{
|
{
|
||||||
@ -187,6 +188,8 @@ namespace DS4Windows
|
|||||||
calibrationData[5].bias = accelZPlus - accelRange / 2;
|
calibrationData[5].bias = accelZPlus - accelRange / 2;
|
||||||
calibrationData[5].sensNumer = 2 * SixAxis.ACC_RES_PER_G;
|
calibrationData[5].sensNumer = 2 * SixAxis.ACC_RES_PER_G;
|
||||||
calibrationData[5].sensDenom = accelRange;
|
calibrationData[5].sensDenom = accelRange;
|
||||||
|
|
||||||
|
calibrationDone = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applyCalibs(ref int yaw, ref int pitch, ref int roll,
|
private void applyCalibs(ref int yaw, ref int pitch, ref int roll,
|
||||||
@ -227,6 +230,7 @@ namespace DS4Windows
|
|||||||
int AccelY = (short)((ushort)(accel[3] << 8) | accel[2]);
|
int AccelY = (short)((ushort)(accel[3] << 8) | accel[2]);
|
||||||
int AccelZ = (short)((ushort)(accel[5] << 8) | accel[4]);
|
int AccelZ = (short)((ushort)(accel[5] << 8) | accel[4]);
|
||||||
|
|
||||||
|
if (calibrationDone)
|
||||||
applyCalibs(ref currentYaw, ref currentPitch, ref currentRoll, ref AccelX, ref AccelY, ref AccelZ);
|
applyCalibs(ref currentYaw, ref currentPitch, ref currentRoll, ref AccelX, ref AccelY, ref AccelZ);
|
||||||
|
|
||||||
SixAxisEventArgs args = null;
|
SixAxisEventArgs args = null;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>DS4Windows</RootNamespace>
|
<RootNamespace>DS4Windows</RootNamespace>
|
||||||
<AssemblyName>DS4Windows</AssemblyName>
|
<AssemblyName>DS4Windows</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
@ -94,6 +94,7 @@
|
|||||||
<LangVersion>6</LangVersion>
|
<LangVersion>6</LangVersion>
|
||||||
<DebugSymbols>false</DebugSymbols>
|
<DebugSymbols>false</DebugSymbols>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<WarningLevel>1</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@ -118,6 +119,7 @@
|
|||||||
<LangVersion>6</LangVersion>
|
<LangVersion>6</LangVersion>
|
||||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<WarningLevel>1</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.Win32.TaskScheduler, Version=2.8.0.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Win32.TaskScheduler, Version=2.8.0.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL">
|
||||||
@ -154,12 +156,6 @@
|
|||||||
<Compile Include="DS4Control\ScpDevice.Designer.cs">
|
<Compile Include="DS4Control\ScpDevice.Designer.cs">
|
||||||
<DependentUpon>ScpDevice.cs</DependentUpon>
|
<DependentUpon>ScpDevice.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="DS4Control\ScpHub.cs">
|
|
||||||
<SubType>Component</SubType>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="DS4Control\ScpHub.Designer.cs">
|
|
||||||
<DependentUpon>ScpHub.cs</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="DS4Control\ScpUtil.cs" />
|
<Compile Include="DS4Control\ScpUtil.cs" />
|
||||||
<Compile Include="DS4Control\UdpServer.cs" />
|
<Compile Include="DS4Control\UdpServer.cs" />
|
||||||
<Compile Include="DS4Control\X360Device.cs">
|
<Compile Include="DS4Control\X360Device.cs">
|
||||||
@ -183,7 +179,6 @@
|
|||||||
<Compile Include="DS4Library\DS4StateExposed.cs" />
|
<Compile Include="DS4Library\DS4StateExposed.cs" />
|
||||||
<Compile Include="DS4Library\DS4Touchpad.cs" />
|
<Compile Include="DS4Library\DS4Touchpad.cs" />
|
||||||
<Compile Include="DS4Forms\AdvancedColorDialog.cs" />
|
<Compile Include="DS4Forms\AdvancedColorDialog.cs" />
|
||||||
<Compile Include="DS4Forms\AdvancedComboBox.cs" />
|
|
||||||
<Compile Include="DS4Forms\DS4Form.cs">
|
<Compile Include="DS4Forms\DS4Form.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -233,7 +228,6 @@
|
|||||||
<Compile Include="DS4Forms\SaveWhere.Designer.cs">
|
<Compile Include="DS4Forms\SaveWhere.Designer.cs">
|
||||||
<DependentUpon>SaveWhere.cs</DependentUpon>
|
<DependentUpon>SaveWhere.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="DS4Forms\Settings.cs" />
|
|
||||||
<Compile Include="DS4Forms\SpecActions.cs">
|
<Compile Include="DS4Forms\SpecActions.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -103,7 +103,8 @@ namespace DS4Windows
|
|||||||
//if (mutex.WaitOne(TimeSpan.Zero, true))
|
//if (mutex.WaitOne(TimeSpan.Zero, true))
|
||||||
//{
|
//{
|
||||||
createControlService();
|
createControlService();
|
||||||
rootHub.createHidGuardKey();
|
rootHub.ScanPurgeHidGuard();
|
||||||
|
rootHub.CreateHidGuardKey();
|
||||||
//rootHub = new ControlService();
|
//rootHub = new ControlService();
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.Run(new DS4Form(args));
|
Application.Run(new DS4Form(args));
|
||||||
|
2
DS4Windows/Properties/Settings.Designer.cs
generated
2
DS4Windows/Properties/Settings.Designer.cs
generated
@ -12,7 +12,7 @@ namespace DS4Windows.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")]
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
|
||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
10
README.md
10
README.md
@ -8,20 +8,20 @@ You can find the latest and older versions [here](https://github.com/Ryochan7/DS
|
|||||||
|
|
||||||
UdpServer builds for using Gyro motion controls in Cemu.
|
UdpServer builds for using Gyro motion controls in Cemu.
|
||||||
|
|
||||||
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.120_UdpServer_x64.zip
|
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_UdpServer_x64.zip
|
||||||
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.120_ViGEm_UdpServer_x64.zip
|
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_ViGEm_UdpServer_x64.zip
|
||||||
|
|
||||||
ViGEm build.
|
ViGEm build.
|
||||||
|
|
||||||
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.120_ViGEm_x64.zip
|
http://ryochan7.xyz/ds4windows/test/DS4Windows_1.4.121_ViGEm_x64.zip
|
||||||
|
|
||||||
This project is a fork of the work of Jays2Kings. You can find the old project
|
This project is a fork of the work of Jays2Kings. You can find the old project
|
||||||
website at [ds4windows.com](http://ds4windows.com).
|
website at [ds4windows.com](http://ds4windows.com).
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- Windows 7 or newer
|
- Windows 7 SP1 or newer
|
||||||
- [Microsoft .NET 4.5.2 or higher (needed to unzip the driver and for macros to work properly)](http://www.microsoft.com/en-us/download/details.aspx?id=42642)
|
- [Microsoft .NET 4.6.1 or higher (needed to unzip the driver and for macros to work properly)](https://www.microsoft.com/en-us/download/details.aspx?id=49982)
|
||||||
- SCP Virtual Bus Driver (Downloaded & Installed with DS4Windows)
|
- SCP Virtual Bus Driver (Downloaded & Installed with DS4Windows)
|
||||||
- Microsoft 360 Driver (link inside DS4Windows, already installed on Windows 7 SP1 and higher or if you've used a 360 controller before)
|
- Microsoft 360 Driver (link inside DS4Windows, already installed on Windows 7 SP1 and higher or if you've used a 360 controller before)
|
||||||
- Sony DualShock 4 (This should be obvious)
|
- Sony DualShock 4 (This should be obvious)
|
||||||
|
4
TODO.md
4
TODO.md
@ -1,7 +1,6 @@
|
|||||||
# TODO
|
# TODO
|
||||||
|
|
||||||
* Perform some final cleanup and release version 1.5
|
* Perform some final cleanup and release version 1.5
|
||||||
* ~~Attempt to work out BT disconnect issues by looking at older versions~~
|
|
||||||
* Attempt to remove reliance on the main thread when disconnecting a device.
|
* Attempt to remove reliance on the main thread when disconnecting a device.
|
||||||
Currently used to delay hotplug routine
|
Currently used to delay hotplug routine
|
||||||
* Look into distributing profile properties around various objects
|
* Look into distributing profile properties around various objects
|
||||||
@ -10,6 +9,3 @@ It will complicate the architecture a little bit but hopefully
|
|||||||
any speed difference will make up for it.
|
any speed difference will make up for it.
|
||||||
* Remove old welcome dialog and make new driver installer executable.
|
* Remove old welcome dialog and make new driver installer executable.
|
||||||
Use newer standards (WPF) and bundle app with DS4Windows
|
Use newer standards (WPF) and bundle app with DS4Windows
|
||||||
* ~~Attempt to no longer disable service when changing dinput only option
|
|
||||||
in profiles
|
|
||||||
* ~~Update Task Scheduler to latest version~~
|
|
||||||
|
Loading…
Reference in New Issue
Block a user