├── DS4Windows
├── Resources
│ ├── A.PNG
│ ├── B.png
│ ├── BT.png
│ ├── EE.wav
│ ├── LB.png
│ ├── LS.png
│ ├── LT.png
│ ├── RB.png
│ ├── RS.png
│ ├── RT.png
│ ├── UP.png
│ ├── X.png
│ ├── Y.png
│ ├── BACK.png
│ ├── Clock.png
│ ├── DOWN.png
│ ├── DS4.ico
│ ├── DS4W.ico
│ ├── LEFT.png
│ ├── LSD.png
│ ├── LSL.png
│ ├── LSR.png
│ ├── LSU.png
│ ├── RIGHT.png
│ ├── RSD.png
│ ├── RSL.png
│ ├── RSR.png
│ ├── RSU.png
│ ├── START.png
│ ├── USB.png
│ ├── mouse.png
│ ├── none.png
│ ├── size.png
│ ├── 360 map.png
│ ├── DS4 old.ico
│ ├── Scp_All.ico
│ ├── checked.png
│ ├── delete.png
│ ├── export.png
│ ├── rainbow.png
│ ├── 360 fades.png
│ ├── DS4 Config.png
│ ├── Pairmode.png
│ ├── Red Circle.png
│ ├── UpperTouch.png
│ ├── left touch.png
│ ├── rainbowC.png
│ ├── x360test.png
│ ├── DS4 lightbar.png
│ ├── DS4W - White.ico
│ ├── imageres_new.png
│ ├── right touch.png
│ ├── saveprofile.png
│ ├── shell32_copy.png
│ ├── shell32_new.png
│ ├── 360 highlight.png
│ ├── 360 highlight.psd
│ ├── DS4 Controller.png
│ ├── DS4-Config_Down.png
│ ├── DS4-Config_L1.png
│ ├── DS4-Config_L2.png
│ ├── DS4-Config_LS.png
│ ├── DS4-Config_Left.png
│ ├── DS4-Config_PS.png
│ ├── DS4-Config_R1.png
│ ├── DS4-Config_R2.png
│ ├── DS4-Config_RS.png
│ ├── DS4-Config_Up.png
│ ├── imageres_import.png
│ ├── shell32 delete.png
│ ├── shell32_export.png
│ ├── DS4-Config_Circle.png
│ ├── DS4-Config_Cross.png
│ ├── DS4-Config_Right.png
│ ├── DS4-Config_Share.png
│ ├── DS4-Config_Square.png
│ ├── DS4-Config_TouchLeft.png
│ ├── DS4-Config_Triangle.png
│ ├── DS4-Config_ptionss.png
│ ├── xbox_360_controller.png
│ ├── DS4-Config_TouchMulti.png
│ ├── DS4-Config_TouchRight.png
│ └── DS4-Config_TouchUpper.png
├── DS4Forms
│ ├── DS4W.ico
│ ├── app.config
│ ├── DS4Keyboard.cs
│ ├── Alreadyrunning.cs
│ ├── Settings.cs
│ ├── Alreadyrunning.Designer.cs
│ ├── DupBox.cs
│ ├── AdvancedComboBox.cs
│ ├── DupBox.Designer.cs
│ ├── SaveWhere.cs
│ ├── Hotkeys.cs
│ ├── SaveWhere.Designer.cs
│ ├── WelcomeDialog.cs
│ ├── DS4Keyboard.resx
│ ├── DupBox.sv.resx
│ ├── Hotkeys.ja.resx
│ ├── Hotkeys.sv.resx
│ ├── KBM360.sv.resx
│ ├── Options.hu.resx
│ ├── Options.sv.resx
│ ├── RecordBox.sv.resx
│ ├── SaveWhere.hu.resx
│ ├── SaveWhere.id.resx
│ ├── SaveWhere.ja.resx
│ ├── SaveWhere.sv.resx
│ ├── WinProgs.hu.resx
│ ├── WinProgs.id.resx
│ ├── WinProgs.nl.resx
│ ├── WinProgs.sv.resx
│ ├── WinProgs.vi.resx
│ ├── Alreadyrunning.resx
│ ├── SpecActions.hu.resx
│ └── SpecActions.id.resx
├── app.config
├── Properties
│ ├── Settings.settings
│ ├── Settings.Designer.cs
│ └── AssemblyInfo.cs
├── HidLibrary
│ ├── Extensions.cs
│ ├── HidDeviceAttributes.cs
│ └── HidDeviceCapabilities.cs
├── DS4Control
│ ├── ITouchpadBehaviour.cs
│ ├── Log.cs
│ ├── ScpHub.Designer.cs
│ ├── ScpDevice.Designer.cs
│ ├── X360Device.designer.cs
│ ├── ScpHub.cs
│ └── MouseWheel.cs
├── app.manifest
└── DS4Library
│ ├── DS4StateExposed.cs
│ ├── DS4State.cs
│ └── DS4Sixaxis.cs
├── DS4Windows.sln
├── README.md
├── .gitattributes
└── .gitignore
/DS4Windows/Resources/A.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/A.PNG
--------------------------------------------------------------------------------
/DS4Windows/Resources/B.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/B.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/BT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/BT.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/EE.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/EE.wav
--------------------------------------------------------------------------------
/DS4Windows/Resources/LB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LB.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LS.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LT.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RB.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RS.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RT.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/UP.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/UP.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/X.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/X.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/Y.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/Y.png
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DS4W.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/DS4Forms/DS4W.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/BACK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/BACK.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/Clock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/Clock.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DOWN.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DOWN.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4W.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4W.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/LEFT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LEFT.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LSD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LSD.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LSL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LSL.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LSR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LSR.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/LSU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/LSU.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RIGHT.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RIGHT.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RSD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RSD.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RSL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RSL.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RSR.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RSR.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/RSU.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/RSU.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/START.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/START.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/USB.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/USB.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/mouse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/mouse.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/none.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/none.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/size.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/size.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/360 map.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/360 map.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4 old.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4 old.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/Scp_All.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/Scp_All.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/checked.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/delete.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/export.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/rainbow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/rainbow.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/360 fades.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/360 fades.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4 Config.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4 Config.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/Pairmode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/Pairmode.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/Red Circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/Red Circle.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/UpperTouch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/UpperTouch.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/left touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/left touch.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/rainbowC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/rainbowC.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/x360test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/x360test.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4 lightbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4 lightbar.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4W - White.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4W - White.ico
--------------------------------------------------------------------------------
/DS4Windows/Resources/imageres_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/imageres_new.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/right touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/right touch.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/saveprofile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/saveprofile.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/shell32_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/shell32_copy.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/shell32_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/shell32_new.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/360 highlight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/360 highlight.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/360 highlight.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/360 highlight.psd
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4 Controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4 Controller.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Down.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_L1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_L1.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_L2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_L2.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_LS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_LS.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Left.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_PS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_PS.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_R1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_R1.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_R2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_R2.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_RS.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_RS.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Up.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/imageres_import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/imageres_import.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/shell32 delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/shell32 delete.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/shell32_export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/shell32_export.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Circle.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Cross.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Cross.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Right.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Share.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Square.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_TouchLeft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_TouchLeft.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_Triangle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_Triangle.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_ptionss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_ptionss.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/xbox_360_controller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/xbox_360_controller.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_TouchMulti.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_TouchMulti.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_TouchRight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_TouchRight.png
--------------------------------------------------------------------------------
/DS4Windows/Resources/DS4-Config_TouchUpper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/objects/DS4Windows/jay/DS4Windows/Resources/DS4-Config_TouchUpper.png
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/DS4Windows/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/DS4Windows/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DS4Keyboard.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 |
11 | namespace DS4Windows
12 | {
13 | public partial class DS4Keyboard : Form
14 | {
15 | public DS4Keyboard()
16 | {
17 | InitializeComponent();
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/DS4Windows/HidLibrary/Extensions.cs:
--------------------------------------------------------------------------------
1 | using System.Text;
2 |
3 | namespace DS4Windows
4 | {
5 | public static class Extensions
6 | {
7 | public static string ToUTF8String(this byte[] buffer)
8 | {
9 | var value = Encoding.UTF8.GetString(buffer);
10 | return value.Remove(value.IndexOf((char)0));
11 | }
12 |
13 | public static string ToUTF16String(this byte[] buffer)
14 | {
15 | var value = Encoding.Unicode.GetString(buffer);
16 | return value.Remove(value.IndexOf((char)0));
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/ITouchpadBehaviour.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DS4Windows
7 | {
8 | interface ITouchpadBehaviour
9 | {
10 | void touchesBegan(object sender, TouchpadEventArgs arg);
11 | void touchesMoved(object sender, TouchpadEventArgs arg);
12 | void touchButtonUp(object sender, TouchpadEventArgs arg);
13 | void touchButtonDown(object sender, TouchpadEventArgs arg);
14 | void touchesEnded(object sender, TouchpadEventArgs arg);
15 | void sixaxisMoved(object sender, SixAxisEventArgs unused);
16 | void touchUnchanged(object sender, EventArgs unused);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/DS4Windows/HidLibrary/HidDeviceAttributes.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | public class HidDeviceAttributes
4 | {
5 | internal HidDeviceAttributes(NativeMethods.HIDD_ATTRIBUTES attributes)
6 | {
7 | VendorId = attributes.VendorID;
8 | ProductId = attributes.ProductID;
9 | Version = attributes.VersionNumber;
10 |
11 | VendorHexId = "0x" + attributes.VendorID.ToString("X4");
12 | ProductHexId = "0x" + attributes.ProductID.ToString("X4");
13 | }
14 |
15 | public int VendorId { get; private set; }
16 | public int ProductId { get; private set; }
17 | public int Version { get; private set; }
18 | public string VendorHexId { get; set; }
19 | public string ProductHexId { get; set; }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Alreadyrunning.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Diagnostics;
6 | using System.Drawing;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using System.Windows.Forms;
11 |
12 | namespace DS4Windows
13 | {
14 | public partial class Alreadyrunning : Form
15 | {
16 | Stopwatch sw;
17 |
18 | public Alreadyrunning()
19 | {
20 | InitializeComponent();
21 | this.WindowState = FormWindowState.Minimized;
22 | Hide();
23 | Timer t = new Timer();
24 | t.Start();
25 | t.Tick += t_Tick;
26 | sw = new Stopwatch();
27 | sw.Start();
28 | }
29 |
30 | void t_Tick(object sender, EventArgs e)
31 | {
32 | if (sw.ElapsedMilliseconds >= 10)
33 | this.Close();
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/Log.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DS4Windows
7 | {
8 | public class Log
9 | {
10 | public static event EventHandler TrayIconLog;
11 | public static event EventHandler GuiLog;
12 |
13 | public static void LogToGui(string data, bool warning)
14 | {
15 | if (GuiLog != null)
16 | {
17 | GuiLog(null, new DebugEventArgs(data, warning));
18 | }
19 | }
20 |
21 | public static void LogToTray(string data, bool warning = false, bool ignoreSettings = false)
22 | {
23 | if (TrayIconLog != null)
24 | {
25 | if (ignoreSettings)
26 | TrayIconLog(ignoreSettings, new DebugEventArgs(data, warning));
27 | else
28 | TrayIconLog(null, new DebugEventArgs(data, warning));
29 | }
30 | }
31 | }
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/DS4Windows/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace DS4Windows.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/ScpHub.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class ScpHub
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | components = new System.ComponentModel.Container();
32 | }
33 |
34 | #endregion
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/ScpDevice.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class ScpDevice
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | components = new System.ComponentModel.Container();
32 | }
33 |
34 | #endregion
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/X360Device.designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class X360Device
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Component Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | components = new System.ComponentModel.Container();
32 | }
33 |
34 | #endregion
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Settings.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows.Properties {
2 |
3 |
4 | // This class allows you to handle specific events on the settings class:
5 | // The SettingChanging event is raised before a setting's value is changed.
6 | // The PropertyChanged event is raised after a setting's value is changed.
7 | // The SettingsLoaded event is raised after the setting values are loaded.
8 | // The SettingsSaving event is raised before the setting values are saved.
9 | internal sealed partial class Settings {
10 |
11 | public Settings() {
12 | // // To add event handlers for saving and changing settings, uncomment the lines below:
13 | //
14 | // this.SettingChanging += this.SettingChangingEventHandler;
15 | //
16 | // this.SettingsSaving += this.SettingsSavingEventHandler;
17 | //
18 | }
19 |
20 | private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
21 | // Add code to handle the SettingChangingEvent event here.
22 | }
23 |
24 | private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
25 | // Add code to handle the SettingsSaving event here.
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/DS4Windows.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 14
4 | VisualStudioVersion = 14.0.25420.1
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DS4Windows", "DS4Windows\DS4Windows.csproj", "{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Debug|x64 = Debug|x64
12 | Release|Any CPU = Release|Any CPU
13 | Release|x64 = Release|x64
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.ActiveCfg = Debug|Any CPU
19 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.Build.0 = Debug|Any CPU
20 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
21 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.Build.0 = Release|Any CPU
22 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.ActiveCfg = Release|Any CPU
23 | {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | EndGlobal
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## This version of DS4Windows is no longer maintained and will recieve no future updates. For a newer version and more updates, download [Ryochan7's DS4Windows](https://github.com/Ryochan7/DS4Windows)
2 |
3 |
4 |
5 | ## DS4Windows
6 | Like those other ds4tools, but sexier.
7 |
8 | DS4Windows is a portable program that allows you to get the best experience while using a DualShock 4 on your PC. By emulating a Xbox 360 controller, many more games are accessible.
9 |
10 | You can find the latest and older versions [here](https://github.com/Jays2Kings/DS4Windows/releases)
11 |
12 | ### Requirements
13 |
14 | [Microsoft .NET 4.5 or higher (needed to unzip the driver and for macros to work properly)](http://www.microsoft.com/en-us/download/details.aspx?id=42642)
15 | DS4 Driver (Downloaded & Installed with DS4Windows)
16 | Microsoft 360 Driver (link inside DS4Windows, already installed on Windows 7 SP1 and higher or if you've used a 360 controller before)
17 | Sony DualShock 4 (This should be obvious)
18 | Micro USB cable
19 | (Optional)Bluetooth 2.1+, via adapter or built in pc [(My recommendation)](http://www.amazon.com/gp/product/B004LNXO28/ref=oh_aui_search_detailpage?ie=UTF8&psc=1) (Toshiba's bluetooth & Bluetooth adapters using CSR currently does not work)
20 |
21 | Note: Hide DS4 currently doesn't work on Windows 10 without a workaround (disabling Network list service and restarting, but this causes serious issues with windows, use caution)
22 | You can find more info out at [ds4windows.com](http://ds4windows.com)
23 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Alreadyrunning.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class Alreadyrunning
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.SuspendLayout();
32 | //
33 | // Alreadyrunning
34 | //
35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
37 | this.ClientSize = new System.Drawing.Size(226, 43);
38 | this.Name = "Alreadyrunning";
39 | this.ShowInTaskbar = false;
40 | this.Text = "Alreadyrunning";
41 | this.ResumeLayout(false);
42 |
43 | }
44 |
45 | #endregion
46 |
47 | }
48 | }
--------------------------------------------------------------------------------
/DS4Windows/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DS4Windows")]
9 | [assembly: AssemblyDescription("Sony DualShock 4 to Microsoft Xinput controller mapper")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DS4Windows")]
13 | [assembly: AssemblyCopyright("Copyright © Scarlet.Crush Productions 2012, 2013; InhexSTER, HecticSeptic, electrobrains 2013, 2014; Jays2Kings 2013, 2014, 2015")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("a52b5b20-d9ee-4f32-8518-307fa14aa0c6")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.4.52")]
36 | [assembly: AssemblyFileVersion("1.4.52")]
37 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/ScpHub.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 |
4 | namespace DS4Windows
5 | {
6 | public partial class ScpHub : Component
7 | {
8 | protected IntPtr m_Reference = IntPtr.Zero;
9 | protected volatile Boolean m_Started = false;
10 |
11 | public event EventHandler Debug = null;
12 |
13 | public event EventHandler Report = null;
14 |
15 | protected virtual Boolean LogDebug(String Data, bool warning)
16 | {
17 | DebugEventArgs args = new DebugEventArgs(Data, warning);
18 |
19 | On_Debug(this, args);
20 |
21 | return true;
22 | }
23 |
24 | public Boolean Active
25 | {
26 | get { return m_Started; }
27 | }
28 |
29 |
30 | public ScpHub()
31 | {
32 | InitializeComponent();
33 | }
34 |
35 | public ScpHub(IContainer container)
36 | {
37 | container.Add(this);
38 |
39 | InitializeComponent();
40 | }
41 |
42 |
43 | public virtual Boolean Open()
44 | {
45 | return true;
46 | }
47 |
48 | public virtual Boolean Start()
49 | {
50 | return m_Started;
51 | }
52 |
53 | public virtual Boolean Stop()
54 | {
55 | return !m_Started;
56 | }
57 |
58 | public virtual Boolean Close()
59 | {
60 | if (m_Reference != IntPtr.Zero) ScpDevice.UnregisterNotify(m_Reference);
61 |
62 | return !m_Started;
63 | }
64 |
65 |
66 | public virtual Boolean Suspend()
67 | {
68 | return true;
69 | }
70 |
71 | public virtual Boolean Resume()
72 | {
73 | return true;
74 | }
75 |
76 | protected virtual void On_Debug(object sender, DebugEventArgs e)
77 | {
78 | if (Debug != null) Debug(sender, e);
79 | }
80 |
81 |
82 | protected virtual void On_Report(object sender, ReportEventArgs e)
83 | {
84 | if (Report != null) Report(sender, e);
85 | }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/DS4Windows/HidLibrary/HidDeviceCapabilities.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | public class HidDeviceCapabilities
4 | {
5 | internal HidDeviceCapabilities(NativeMethods.HIDP_CAPS capabilities)
6 | {
7 | Usage = capabilities.Usage;
8 | UsagePage = capabilities.UsagePage;
9 | InputReportByteLength = capabilities.InputReportByteLength;
10 | OutputReportByteLength = capabilities.OutputReportByteLength;
11 | FeatureReportByteLength = capabilities.FeatureReportByteLength;
12 | Reserved = capabilities.Reserved;
13 | NumberLinkCollectionNodes = capabilities.NumberLinkCollectionNodes;
14 | NumberInputButtonCaps = capabilities.NumberInputButtonCaps;
15 | NumberInputValueCaps = capabilities.NumberInputValueCaps;
16 | NumberInputDataIndices = capabilities.NumberInputDataIndices;
17 | NumberOutputButtonCaps = capabilities.NumberOutputButtonCaps;
18 | NumberOutputValueCaps = capabilities.NumberOutputValueCaps;
19 | NumberOutputDataIndices = capabilities.NumberOutputDataIndices;
20 | NumberFeatureButtonCaps = capabilities.NumberFeatureButtonCaps;
21 | NumberFeatureValueCaps = capabilities.NumberFeatureValueCaps;
22 | NumberFeatureDataIndices = capabilities.NumberFeatureDataIndices;
23 |
24 | }
25 |
26 | public short Usage { get; private set; }
27 | public short UsagePage { get; private set; }
28 | public short InputReportByteLength { get; private set; }
29 | public short OutputReportByteLength { get; private set; }
30 | public short FeatureReportByteLength { get; private set; }
31 | public short[] Reserved { get; private set; }
32 | public short NumberLinkCollectionNodes { get; private set; }
33 | public short NumberInputButtonCaps { get; private set; }
34 | public short NumberInputValueCaps { get; private set; }
35 | public short NumberInputDataIndices { get; private set; }
36 | public short NumberOutputButtonCaps { get; private set; }
37 | public short NumberOutputValueCaps { get; private set; }
38 | public short NumberOutputDataIndices { get; private set; }
39 | public short NumberFeatureButtonCaps { get; private set; }
40 | public short NumberFeatureValueCaps { get; private set; }
41 | public short NumberFeatureDataIndices { get; private set; }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Control/MouseWheel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 |
7 | namespace DS4Windows
8 | {
9 | class MouseWheel
10 | {
11 | private readonly int deviceNumber;
12 | public MouseWheel(int deviceNum)
13 | {
14 | deviceNumber = deviceNum;
15 | }
16 |
17 | // Keep track of remainders when performing scrolls or we lose fractional parts.
18 | private double horizontalRemainder = 0.0, verticalRemainder = 0.0;
19 |
20 | public void touchesBegan(TouchpadEventArgs arg)
21 | {
22 | if (arg.touches.Length == 2)
23 | horizontalRemainder = verticalRemainder = 0.0;
24 | }
25 |
26 | public void touchesMoved(TouchpadEventArgs arg, bool dragging)
27 | {
28 | if (arg.touches.Length != 2 || dragging)
29 | return;
30 | Touch lastT0 = arg.touches[0].previousTouch;
31 | Touch lastT1 = arg.touches[1].previousTouch;
32 | Touch T0 = arg.touches[0];
33 | Touch T1 = arg.touches[1];
34 |
35 | //mouse wheel 120 == 1 wheel click according to Windows API
36 | double lastMidX = (lastT0.hwX + lastT1.hwX) / 2d, lastMidY = (lastT0.hwY + lastT1.hwY) / 2d,
37 | currentMidX = (T0.hwX + T1.hwX) / 2d, currentMidY = (T0.hwY + T1.hwY) / 2d;
38 | double coefficient = Global.ScrollSensitivity[deviceNumber];
39 | // Adjust for touch distance: "standard" distance is 960 pixels, i.e. half the width. Scroll farther if fingers are farther apart, and vice versa, in linear proportion.
40 | double touchXDistance = T1.hwX - T0.hwX, touchYDistance = T1.hwY - T0.hwY, touchDistance = Math.Sqrt(touchXDistance * touchXDistance + touchYDistance * touchYDistance);
41 | coefficient *= touchDistance / 960.0;
42 |
43 | // Collect rounding errors instead of losing motion.
44 | double xMotion = coefficient * (currentMidX - lastMidX);
45 | if ((xMotion > 0.0 &&horizontalRemainder > 0.0) || (xMotion < 0.0 &&horizontalRemainder < 0.0))
46 | xMotion += horizontalRemainder;
47 | int xAction = (int)xMotion;
48 | horizontalRemainder = xMotion - xAction;
49 |
50 | double yMotion = coefficient * (lastMidY - currentMidY);
51 | if ((yMotion > 0.0 && verticalRemainder > 0.0) || (yMotion < 0.0 && verticalRemainder < 0.0))
52 | yMotion += verticalRemainder;
53 | int yAction = (int)yMotion;
54 | verticalRemainder = yMotion - yAction;
55 |
56 | if (yAction != 0 || xAction != 0)
57 | InputMethods.MouseWheel(yAction, xAction);
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DupBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Threading.Tasks;
9 | using System.Windows.Forms;
10 |
11 |
12 | namespace DS4Windows
13 | {
14 | public partial class DupBox : Form
15 | {
16 | public string oldfilename;
17 | DS4Form yes;
18 | public DupBox(string name, DS4Form mainwindow)
19 | {
20 | InitializeComponent();
21 | oldfilename = name;
22 | yes = mainwindow;
23 | }
24 |
25 | private void button1_Click(object sender, EventArgs e)
26 | {
27 | if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|"))
28 | {
29 | System.IO.File.Copy(Global.appdatapath + "\\Profiles\\" + oldfilename + ".xml", Global.appdatapath + "\\Profiles\\" + tBProfile.Text + ".xml", true);
30 | yes.RefreshProfiles();
31 | this.Close();
32 | }
33 | else
34 | MessageBox.Show(Properties.Resources.ValidName, Properties.Resources.NotValid, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
35 | }
36 |
37 | private void tBProfile_TextChanged(object sender, EventArgs e)
38 | {
39 | if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|"))
40 | tBProfile.ForeColor = System.Drawing.SystemColors.WindowText;
41 | else
42 | tBProfile.ForeColor = System.Drawing.SystemColors.GrayText;
43 | }
44 |
45 | private void tBProfile_Enter(object sender, EventArgs e)
46 | {
47 | if (tBProfile.Text == "<" + Properties.Resources.TypeNewName + ">")
48 | tBProfile.Text = "";
49 | }
50 |
51 | private void tBProfile_Leave(object sender, EventArgs e)
52 | {
53 | if (tBProfile.Text == "")
54 | tBProfile.Text = "<" + Properties.Resources.TypeNewName + ">";
55 | }
56 |
57 | private void button2_Click(object sender, EventArgs e)
58 | {
59 | this.Close();
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/AdvancedComboBox.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Drawing;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Windows.Forms;
7 |
8 | namespace ScpServer
9 | {
10 | [System.ComponentModel.DesignerCategory("")]
11 | public class AdvancedComboBox : ComboBox
12 | {
13 | public Label Label { get; set; }
14 |
15 | public AdvancedComboBox()
16 | {
17 | base.Visible = false;
18 | Label = new Label();
19 | Label.Tag = this;
20 | Label.ForeColor = Color.Blue;
21 | Label.TextAlign = ContentAlignment.MiddleCenter;
22 | Label.BackColor = Color.Transparent;
23 | Label.MouseDown += Label_MouseDown;
24 | }
25 |
26 | public Color Color
27 | {
28 | get
29 | {
30 | return Label.ForeColor;
31 | }
32 | set
33 | {
34 | Label.ForeColor = value;
35 | }
36 | }
37 |
38 | public new bool Visible
39 | {
40 | get
41 | {
42 | return Label.Visible;
43 | }
44 | set
45 | {
46 | Label.Visible = value;
47 | }
48 | }
49 |
50 | private void Label_MouseDown(object sender, MouseEventArgs e)
51 | {
52 | if (e.Button == System.Windows.Forms.MouseButtons.Left)
53 | DroppedDown = true;
54 | }
55 |
56 | protected override void OnParentChanged(EventArgs e)
57 | {
58 | base.OnParentChanged(e);
59 |
60 | if (Parent != null)
61 | {
62 | Label.Location = this.Location;
63 | Label.Size = this.Size;
64 | Label.Dock = this.Dock;
65 | Label.Anchor = this.Anchor;
66 | Label.Enabled = this.Enabled;
67 | Label.Visible = this.Visible;
68 | Label.RightToLeft = this.RightToLeft;
69 | Label.Font = this.Font;
70 | Label.Text = this.Text
71 | .Replace("Right Click", "Right-Click")
72 | .Replace(" Button", string.Empty)
73 | .Replace("Left ", string.Empty)
74 | .Replace("Right ", string.Empty);
75 | Label.TabStop = this.TabStop;
76 | Label.TabIndex = this.TabIndex;
77 | }
78 | Label.Parent = this.Parent;
79 | }
80 |
81 | protected override void OnSelectedIndexChanged(EventArgs e)
82 | {
83 | base.OnSelectedIndexChanged(e);
84 |
85 | Label.Text = this.Text
86 | .Replace("Right Click", "Right-Click")
87 | .Replace(" Button", string.Empty)
88 | .Replace("Left ", string.Empty)
89 | .Replace("Right ", string.Empty);
90 | }
91 |
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.sln.docstates
8 |
9 | # Build results
10 |
11 | [Dd]ebug/
12 | [Rr]elease/
13 | x64/
14 | build/
15 | [Bb]in/
16 | [Oo]bj/
17 |
18 | # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
19 | !packages/*/build/
20 |
21 | # MSTest test Results
22 | [Tt]est[Rr]esult*/
23 | [Bb]uild[Ll]og.*
24 |
25 | *_i.c
26 | *_p.c
27 | *.ilk
28 | *.meta
29 | *.obj
30 | *.pch
31 | *.pdb
32 | *.pgc
33 | *.pgd
34 | *.rsp
35 | *.sbr
36 | *.tlb
37 | *.tli
38 | *.tlh
39 | *.tmp
40 | *.tmp_proj
41 | *.log
42 | *.vspscc
43 | *.vssscc
44 | .builds
45 | *.pidb
46 | *.log
47 | *.scc
48 |
49 | # Visual C++ cache files
50 | ipch/
51 | *.aps
52 | *.ncb
53 | *.opensdf
54 | *.sdf
55 | *.cachefile
56 |
57 | # Visual Studio profiler
58 | *.psess
59 | *.vsp
60 | *.vspx
61 |
62 | # Guidance Automation Toolkit
63 | *.gpState
64 |
65 | # ReSharper is a .NET coding add-in
66 | _ReSharper*/
67 | *.[Rr]e[Ss]harper
68 |
69 | # TeamCity is a build add-in
70 | _TeamCity*
71 |
72 | # DotCover is a Code Coverage Tool
73 | *.dotCover
74 |
75 | # NCrunch
76 | *.ncrunch*
77 | .*crunch*.local.xml
78 |
79 | # Installshield output folder
80 | [Ee]xpress/
81 |
82 | # DocProject is a documentation generator add-in
83 | DocProject/buildhelp/
84 | DocProject/Help/*.HxT
85 | DocProject/Help/*.HxC
86 | DocProject/Help/*.hhc
87 | DocProject/Help/*.hhk
88 | DocProject/Help/*.hhp
89 | DocProject/Help/Html2
90 | DocProject/Help/html
91 |
92 | # Click-Once directory
93 | publish/
94 |
95 | # Publish Web Output
96 | *.Publish.xml
97 |
98 | # NuGet Packages Directory
99 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
100 | #packages/
101 |
102 | # Windows Azure Build Output
103 | csx
104 | *.build.csdef
105 |
106 | # Windows Store app package directory
107 | AppPackages/
108 |
109 | # Others
110 | sql/
111 | *.Cache
112 | ClientBin/
113 | [Ss]tyle[Cc]op.*
114 | ~$*
115 | *~
116 | *.dbmdl
117 | *.[Pp]ublish.xml
118 | *.pfx
119 | *.publishsettings
120 |
121 | # RIA/Silverlight projects
122 | Generated_Code/
123 |
124 | # Backup & report files from converting an old project file to a newer
125 | # Visual Studio version. Backup files are not needed, because we have git ;-)
126 | _UpgradeReport_Files/
127 | Backup*/
128 | UpgradeLog*.XML
129 | UpgradeLog*.htm
130 |
131 | # SQL Server files
132 | App_Data/*.mdf
133 | App_Data/*.ldf
134 |
135 |
136 | #LightSwitch generated files
137 | GeneratedArtifacts/
138 | _Pvt_Extensions/
139 | ModelManifest.xml
140 |
141 | # =========================
142 | # Windows detritus
143 | # =========================
144 |
145 | # Windows image file caches
146 | Thumbs.db
147 | ehthumbs.db
148 |
149 | # Folder config file
150 | Desktop.ini
151 |
152 | # Recycle Bin used on file shares
153 | $RECYCLE.BIN/
154 |
155 | # Mac desktop service store files
156 | .DS_Store
157 |
--------------------------------------------------------------------------------
/DS4Windows/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
53 |
54 | true
55 |
56 |
57 |
58 |
59 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DupBox.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class DupBox
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DupBox));
32 | this.btnSave = new System.Windows.Forms.Button();
33 | this.tBProfile = new System.Windows.Forms.TextBox();
34 | this.btnCancel = new System.Windows.Forms.Button();
35 | this.SuspendLayout();
36 | //
37 | // btnSave
38 | //
39 | resources.ApplyResources(this.btnSave, "btnSave");
40 | this.btnSave.Name = "btnSave";
41 | this.btnSave.UseVisualStyleBackColor = true;
42 | this.btnSave.Click += new System.EventHandler(this.button1_Click);
43 | //
44 | // tBProfile
45 | //
46 | resources.ApplyResources(this.tBProfile, "tBProfile");
47 | this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText;
48 | this.tBProfile.Name = "tBProfile";
49 | this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged);
50 | this.tBProfile.Enter += new System.EventHandler(this.tBProfile_Enter);
51 | this.tBProfile.Leave += new System.EventHandler(this.tBProfile_Leave);
52 | //
53 | // btnCancel
54 | //
55 | resources.ApplyResources(this.btnCancel, "btnCancel");
56 | this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
57 | this.btnCancel.Name = "btnCancel";
58 | this.btnCancel.UseVisualStyleBackColor = true;
59 | this.btnCancel.Click += new System.EventHandler(this.button2_Click);
60 | //
61 | // DupBox
62 | //
63 | this.AcceptButton = this.btnSave;
64 | resources.ApplyResources(this, "$this");
65 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
66 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
67 | this.CancelButton = this.btnCancel;
68 | this.Controls.Add(this.btnCancel);
69 | this.Controls.Add(this.tBProfile);
70 | this.Controls.Add(this.btnSave);
71 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
72 | this.MaximizeBox = false;
73 | this.MinimizeBox = false;
74 | this.Name = "DupBox";
75 | this.ShowInTaskbar = false;
76 | this.ResumeLayout(false);
77 | this.PerformLayout();
78 |
79 | }
80 |
81 | #endregion
82 |
83 | private System.Windows.Forms.Button btnSave;
84 | private System.Windows.Forms.TextBox tBProfile;
85 | private System.Windows.Forms.Button btnCancel;
86 | }
87 | }
--------------------------------------------------------------------------------
/DS4Windows/DS4Library/DS4StateExposed.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DS4Windows
7 | {
8 | public class DS4StateExposed
9 | {
10 | private DS4State _state;
11 | private byte[] accel = new byte[] { 0, 0, 0, 0, 0, 0 },
12 | gyro = new byte[] { 0, 0, 0, 0, 0, 0 };
13 |
14 | public DS4StateExposed()
15 | {
16 | _state = new DS4State();
17 | }
18 | public DS4StateExposed(DS4State state)
19 | {
20 | _state = state;
21 | }
22 |
23 | bool Square { get { return _state.Square; } }
24 | bool Triangle { get { return _state.Triangle; } }
25 | bool Circle { get { return _state.Circle; } }
26 | bool Cross { get { return _state.Cross; } }
27 | bool DpadUp { get { return _state.DpadUp; } }
28 | bool DpadDown { get { return _state.DpadDown; } }
29 | bool DpadLeft { get { return _state.DpadLeft; } }
30 | bool DpadRight { get { return _state.DpadRight; } }
31 | bool L1 { get { return _state.L1; } }
32 | bool L3 { get { return _state.L3; } }
33 | bool R1 { get { return _state.R1; } }
34 | bool R3 { get { return _state.R3; } }
35 | bool Share { get { return _state.Share; } }
36 | bool Options { get { return _state.Options; } }
37 | bool PS { get { return _state.PS; } }
38 | bool Touch1 { get { return _state.Touch1; } }
39 | bool Touch2 { get { return _state.Touch2; } }
40 | bool TouchButton { get { return _state.TouchButton; } }
41 | byte LX { get { return _state.LX; } }
42 | byte RX { get { return _state.RX; } }
43 | byte LY { get { return _state.LY; } }
44 | byte RY { get { return _state.RY; } }
45 | byte L2 { get { return _state.L2; } }
46 | byte R2 { get { return _state.R2; } }
47 | int Battery { get { return _state.Battery; } }
48 |
49 | /// Holds raw DS4 input data from 14 to 19
50 | public byte[] Accel { set { accel = value; } }
51 | /// Holds raw DS4 input data from 20 to 25
52 | public byte[] Gyro { set { gyro = value; } }
53 |
54 | /// Yaw leftward/counter-clockwise/turn to port or larboard side
55 | /// Add double the previous result to this delta and divide by three.
56 | public int AccelX { get { return (short)((ushort)(accel[2] << 8) | accel[3]) / 256; } }
57 | /// Pitch upward/backward
58 | /// Add double the previous result to this delta and divide by three.
59 | public int AccelY { get { return (short)((ushort)(accel[0] << 8) | accel[1] ) / 256; } }
60 | /// roll left/L side of controller down/starboard raising up
61 | /// Add double the previous result to this delta and divide by three.
62 | public int AccelZ { get { return (short)((ushort)(accel[4] << 8) | accel[5]) / 256; } }
63 | /// R side of controller upward
64 | /// Add double the previous result to this delta and divide by three.
65 | public int GyroX { get { return (short)((ushort)(gyro[0] << 8) | gyro[1]) / 64; } }
66 | /// touchpad and button face side of controller upward
67 | /// Add double the previous result to this delta and divide by three.
68 | public int GyroY { get { return (short)((ushort)(gyro[2] << 8) | gyro[3]) / 64; } }
69 | /// Audio/expansion ports upward and light bar/shoulders/bumpers/USB port downward
70 | /// Add double the previous result to this delta and divide by three.
71 | public int GyroZ { get { return (short)((ushort)(gyro[4] << 8) | gyro[5]) / 64; } }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.cs:
--------------------------------------------------------------------------------
1 |
2 | using System;
3 | using System.Collections.Generic;
4 | using System.ComponentModel;
5 | using System.Data;
6 | using System.Drawing;
7 | using System.IO;
8 | using System.Linq;
9 | using System.Reflection;
10 | using System.Text;
11 | using System.Threading.Tasks;
12 | using System.Windows.Forms;
13 | using System.Xml;
14 |
15 | namespace DS4Windows
16 | {
17 | public partial class SaveWhere : Form
18 | {
19 | private bool multisaves;
20 | string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
21 | public SaveWhere(bool multisavespots)
22 | {
23 | InitializeComponent();
24 | Icon = Properties.Resources.DS4W;
25 | multisaves = multisavespots;
26 | lbMultiSaves.Visible = multisaves;
27 | cBDeleteOther.Visible = multisaves;
28 | if (multisaves)
29 | lbPickWhere.Text += Properties.Resources.OtherFileLocation;
30 | if (Global.AdminNeeded())
31 | bnPrgmFolder.Enabled = false;
32 | }
33 |
34 | private void bnPrgmFolder_Click(object sender, EventArgs e)
35 | {
36 | Global.SaveWhere(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName);
37 | if (multisaves && !cBDeleteOther.Checked)
38 | {
39 | try { Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Windows", true); }
40 | catch { }
41 | }
42 | else if (!multisaves)
43 | Save(Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + "\\Profiles.xml");
44 | Close();
45 | }
46 |
47 | private void bnAppdataFolder_Click(object sender, EventArgs e)
48 | {
49 |
50 | if (multisaves && !cBDeleteOther.Checked)
51 | try
52 | {
53 | Directory.Delete(exepath + "\\Profiles", true);
54 | File.Delete(exepath + "\\Profiles.xml");
55 | File.Delete(exepath + "\\Auto Profiles.xml");
56 | }
57 | catch (UnauthorizedAccessException) { MessageBox.Show("Cannot Delete old settings, please manaully delete", "DS4Windows"); }
58 | else if (!multisaves)
59 | Save(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Windows\\Profiles.xml");
60 | Global.SaveWhere(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Windows");
61 | Close();
62 | }
63 |
64 | public bool Save(String path)
65 | {
66 | Boolean Saved = true;
67 | XmlDocument m_Xdoc = new XmlDocument();
68 | try
69 | {
70 | XmlNode Node;
71 |
72 | m_Xdoc.RemoveAll();
73 |
74 | Node = m_Xdoc.CreateXmlDeclaration("1.0", "utf-8", String.Empty);
75 | m_Xdoc.AppendChild(Node);
76 |
77 | Node = m_Xdoc.CreateComment(String.Format(" Profile Configuration Data. {0} ", DateTime.Now));
78 | m_Xdoc.AppendChild(Node);
79 |
80 | Node = m_Xdoc.CreateWhitespace("\r\n");
81 | m_Xdoc.AppendChild(Node);
82 |
83 | Node = m_Xdoc.CreateNode(XmlNodeType.Element, "Profile", null);
84 |
85 | m_Xdoc.AppendChild(Node);
86 |
87 | m_Xdoc.Save(path);
88 | }
89 | catch { Saved = false; }
90 |
91 | return Saved;
92 | }
93 |
94 | private void SaveWhere_FormClosing(object sender, FormClosingEventArgs e)
95 | {
96 | if (String.IsNullOrEmpty(Global.appdatapath))
97 | if (MessageBox.Show(Properties.Resources.ALocactionNeeded, Properties.Resources.CloseDS4W,
98 | MessageBoxButtons.YesNo) == DialogResult.No)
99 | e.Cancel = true;
100 | }
101 | }
102 | }
103 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Library/DS4State.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | namespace DS4Windows
7 | {
8 | public class DS4State
9 | {
10 | public DateTime ReportTimeStamp;
11 | public bool Square, Triangle, Circle, Cross;
12 | public bool DpadUp, DpadDown, DpadLeft, DpadRight;
13 | public bool L1, L3, R1, R3;
14 | public bool Share, Options, PS, Touch1, Touch2, TouchButton, TouchRight, TouchLeft;
15 | public byte Touch1Identifier, Touch2Identifier;
16 | public byte LX, RX, LY, RY, L2, R2;
17 | public byte FrameCounter; // 0, 1, 2...62, 63, 0....
18 | public byte TouchPacketCounter; // we break these out automatically
19 | public byte Battery; // 0 for charging, 10/20/30/40/50/60/70/80/90/100 for percentage of full
20 |
21 | public DS4State()
22 | {
23 | Square = Triangle = Circle = Cross = false;
24 | DpadUp = DpadDown = DpadLeft = DpadRight = false;
25 | L1 = L3 = R1 = R3 = false;
26 | Share = Options = PS = Touch1 = Touch2 = TouchButton = TouchRight = TouchLeft = false;
27 | LX = RX = LY = RY = 127;
28 | L2 = R2 = 0;
29 | FrameCounter = 255; // only actually has 6 bits, so this is a null indicator
30 | TouchPacketCounter = 255; // 8 bits, no great junk value
31 | Battery = 0;
32 | }
33 |
34 | public DS4State(DS4State state)
35 | {
36 | ReportTimeStamp = state.ReportTimeStamp;
37 | Square = state.Square;
38 | Triangle = state.Triangle;
39 | Circle = state.Circle;
40 | Cross = state.Cross;
41 | DpadUp = state.DpadUp;
42 | DpadDown = state.DpadDown;
43 | DpadLeft = state.DpadLeft;
44 | DpadRight = state.DpadRight;
45 | L1 = state.L1;
46 | L2 = state.L2;
47 | L3 = state.L3;
48 | R1 = state.R1;
49 | R2 = state.R2;
50 | R3 = state.R3;
51 | Share = state.Share;
52 | Options = state.Options;
53 | PS = state.PS;
54 | Touch1 = state.Touch1;
55 | TouchRight = state.TouchRight;
56 | TouchLeft = state.TouchLeft;
57 | Touch1Identifier = state.Touch1Identifier;
58 | Touch2 = state.Touch2;
59 | Touch2Identifier = state.Touch2Identifier;
60 | TouchButton = state.TouchButton;
61 | TouchPacketCounter = state.TouchPacketCounter;
62 | LX = state.LX;
63 | RX = state.RX;
64 | LY = state.LY;
65 | RY = state.RY;
66 | FrameCounter = state.FrameCounter;
67 | Battery = state.Battery;
68 | }
69 |
70 | public DS4State Clone()
71 | {
72 | return new DS4State(this);
73 | }
74 |
75 | public void CopyTo(DS4State state)
76 | {
77 | state.ReportTimeStamp = ReportTimeStamp;
78 | state.Square = Square;
79 | state.Triangle = Triangle;
80 | state.Circle = Circle;
81 | state.Cross = Cross;
82 | state.DpadUp = DpadUp;
83 | state.DpadDown = DpadDown;
84 | state.DpadLeft = DpadLeft;
85 | state.DpadRight = DpadRight;
86 | state.L1 = L1;
87 | state.L2 = L2;
88 | state.L3 = L3;
89 | state.R1 = R1;
90 | state.R2 = R2;
91 | state.R3 = R3;
92 | state.Share = Share;
93 | state.Options = Options;
94 | state.PS = PS;
95 | state.Touch1 = Touch1;
96 | state.Touch1Identifier = Touch1Identifier;
97 | state.Touch2 = Touch2;
98 | state.Touch2Identifier = Touch2Identifier;
99 | state.TouchLeft = TouchLeft;
100 | state.TouchRight = TouchRight;
101 | state.TouchButton = TouchButton;
102 | state.TouchPacketCounter = TouchPacketCounter;
103 | state.LX = LX;
104 | state.RX = RX;
105 | state.LY = LY;
106 | state.RY = RY;
107 | state.FrameCounter = FrameCounter;
108 | state.Battery = Battery;
109 | }
110 |
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Library/DS4Sixaxis.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace DS4Windows
8 | {
9 | public class SixAxisEventArgs : EventArgs
10 | {
11 | public readonly SixAxis sixAxis;
12 | public readonly System.DateTime timeStamp;
13 | public SixAxisEventArgs(System.DateTime utcTimestamp, SixAxis sa)
14 | {
15 | sixAxis = sa;
16 | this.timeStamp = utcTimestamp;
17 | }
18 | }
19 |
20 | public class SixAxis
21 | {
22 | public readonly int gyroX, gyroY, gyroZ, deltaX, deltaY, deltaZ, accelX, accelY, accelZ;
23 | public readonly byte touchID;
24 | public readonly SixAxis previousAxis;
25 | public SixAxis(int X, int Y, int Z, int aX, int aY, int aZ, SixAxis prevAxis = null)
26 | {
27 | gyroX = X;
28 | gyroY = Y;
29 | gyroZ = Z;
30 | accelX = aX;
31 | accelY = aY;
32 | accelZ = aZ;
33 | previousAxis = prevAxis;
34 | if (previousAxis != null)
35 | {
36 | deltaX = X - previousAxis.gyroX;
37 | deltaY = Y - previousAxis.gyroY;
38 | deltaZ = Z - previousAxis.gyroZ;
39 | }
40 | }
41 | }
42 |
43 | public class DS4SixAxis
44 | {
45 | public event EventHandler SixAxisMoved = null; // deltaX/deltaY are set because one or both fingers were already down on a prior sensor reading
46 | public event EventHandler SixAccelMoved = null; // no status change for the touchpad itself... but other sensors may have changed, or you may just want to do some processing
47 |
48 | internal int lastGyroX, lastGyroY, lastGyroZ, lastAX, lastAY, lastAZ; // tracks 0, 1 or 2 touches; we maintain touch 1 and 2 separately
49 | internal byte[] previousPacket = new byte[8];
50 |
51 |
52 | public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state)
53 | {
54 | //bool touchPadIsDown = sensors.TouchButton;
55 | /*if (!PacketChanged(data, touchPacketOffset) && touchPadIsDown == lastTouchPadIsDown)
56 | {
57 | if (SixAxisUnchanged != null)
58 | SixAxisUnchanged(this, EventArgs.Empty);
59 | return;
60 | }*/
61 | /* byte touchID1 = (byte)(data[0 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);
62 | byte touchID2 = (byte)(data[4 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);*/
63 | int currentX = (short)((ushort)(gyro[0] << 8) | gyro[1]) / 64;
64 | int currentY = (short)((ushort)(gyro[2] << 8) | gyro[3]) / 64;
65 | int currentZ = (short)((ushort)(gyro[4] << 8) | gyro[5]) / 64;
66 | int AccelX = (short)((ushort)(accel[2] << 8) | accel[3]) / 256;
67 | int AccelY = (short)((ushort)(accel[0] << 8) | accel[1]) / 256;
68 | int AccelZ = (short)((ushort)(accel[4] << 8) | accel[5]) / 256;
69 | SixAxisEventArgs args;
70 | //if (sensors.Touch1 || sensors.Touch2)
71 | {
72 | /* if (SixAxisMoved != null)
73 | {
74 | SixAxis sPrev, now;
75 | sPrev = new SixAxis(lastGyroX, lastGyroY, lastGyroZ, lastAX,lastAY,lastAZ);
76 | now = new SixAxis(currentX, currentY, currentZ, AccelX, AccelY, AccelZ, sPrev);
77 | args = new SixAxisEventArgs(state.ReportTimeStamp, now);
78 | SixAxisMoved(this, args);
79 | }
80 |
81 | lastGyroX = currentX;
82 | lastGyroY = currentY;
83 | lastGyroZ = currentZ;
84 | lastAX = AccelX;
85 | lastAY = AccelY;
86 | lastAZ = AccelZ;*/
87 | }
88 | if (AccelX != 0 || AccelY != 0 || AccelZ != 0)
89 | {
90 | if (SixAccelMoved != null)
91 | {
92 | SixAxis sPrev, now;
93 | sPrev = new SixAxis(lastGyroX, lastGyroY, lastGyroZ, lastAX, lastAY, lastAZ);
94 | now = new SixAxis(currentX, currentY, currentZ, AccelX, AccelY, AccelZ, sPrev);
95 | args = new SixAxisEventArgs(state.ReportTimeStamp, now);
96 | SixAccelMoved(this, args);
97 | }
98 |
99 | lastGyroX = currentX;
100 | lastGyroY = currentY;
101 | lastGyroZ = currentZ;
102 | lastAX = AccelX;
103 | lastAY = AccelY;
104 | lastAZ = AccelZ;
105 | }
106 | }
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Hotkeys.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | using System.Reflection;
5 | using System.Threading;
6 | using System.Diagnostics;
7 | using System.Drawing;
8 |
9 | namespace DS4Windows
10 | {
11 | public partial class Hotkeys : Form
12 | {
13 | public Hotkeys()
14 | {
15 | InitializeComponent();
16 | string s = Thread.CurrentThread.CurrentUICulture.ToString().Split('-')[0];
17 |
18 | Control[] ctrls = tLPTranslators.Controls.Find("lb" + s, true);
19 | if (ctrls.Length > 0)
20 | {
21 | ((Label)ctrls[0]).ForeColor = Color.DarkGreen;
22 | int ind = tLPTranslators.Controls.IndexOf(ctrls[0]) + 1;
23 | ((Label)tLPTranslators.Controls[ind]).ForeColor = Color.DarkGreen;
24 | }
25 | FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
26 | string version = fvi.FileVersion;
27 | lbAbout.Text += version + ")";
28 | if (tPCredits.HasChildren)
29 | foreach (System.Windows.Forms.Control ctrl in tPCredits.Controls)
30 | {
31 | if (ctrl.HasChildren)
32 | foreach (System.Windows.Forms.Control ctrl2 in ctrl.Controls)
33 | ctrl2.MouseHover += Items_MouseHover;
34 | ctrl.MouseHover += Items_MouseHover;
35 | }
36 | tPCredits.MouseHover += Items_MouseHover;
37 | lbLinkText.Text = string.Empty;
38 | }
39 |
40 | private void Items_MouseHover(object sender, EventArgs e)
41 | {
42 | switch (((System.Windows.Forms.Control)sender).Name)
43 | {
44 | //if (File.Exists(appdatapath + "\\Auto Profiles.xml"))
45 | case "linkJays2Kings": lbLinkText.Text = "http://ds4windows.com"; break;
46 | case "linkElectro": lbLinkText.Text = "https://code.google.com/r/brianfundakowskifeldman-ds4windows/"; break;
47 | case "linkInhexSTER": lbLinkText.Text = "https://code.google.com/p/ds4-tool/"; break;
48 | case "linkJhebbel": lbLinkText.Text = "http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows"; break;
49 | case "linkSourceCode": lbLinkText.Text = "https://github.com/Jays2Kings/DS4Windows"; break;
50 | case "linkBoganhobo": lbLinkText.Text = "https://github.com/boganhobo"; break;
51 | case "linkChamilsaan": lbLinkText.Text = "https://github.com/Chamilsaan"; break;
52 | case "linkKiliansch": lbLinkText.Text = "https://github.com/kiliansch"; break;
53 | case "linkTeokp": lbLinkText.Text = "https://github.com/teokp"; break;
54 | default: lbLinkText.Text = string.Empty; break;
55 | }
56 | }
57 |
58 | private void linkJays2Kings_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
59 | {
60 | Process.Start("http://ds4windows.com");
61 | }
62 |
63 | private void linkElectro_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
64 | {
65 | Process.Start("https://code.google.com/r/brianfundakowskifeldman-ds4windows/");
66 | }
67 |
68 | private void linkInhexSTER_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
69 | {
70 | Process.Start("https://code.google.com/p/ds4-tool/");
71 | }
72 |
73 | private void linkJhebbel_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
74 | {
75 | Process.Start("http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows");
76 | }
77 |
78 | private void lLChangelog_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
79 | {
80 | Process.Start("https://docs.google.com/document/d/1l4xcgVQkGUskc5CQ0p069yW22Cd5WAH_yE3Fz2hXo0E/edit?usp=sharing");
81 | }
82 |
83 | private void linkDonate_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
84 | {
85 | Process.Start("https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2FTZ9BZEHSQ8Q&lc=US&item_name=DS4Windows¤cy_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted");
86 | }
87 |
88 | private void linkSourceCode_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
89 | {
90 | Process.Start("https://github.com/Jays2Kings/DS4Windows");
91 | }
92 |
93 | private void linkBoganhobo_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
94 | {
95 | Process.Start("https://github.com/boganhobo");
96 | }
97 |
98 | private void linkChamilsaan_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
99 | {
100 | Process.Start("https://github.com/Chamilsaan");
101 | }
102 |
103 | private void linkKiliansch_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
104 | {
105 | Process.Start("https://github.com/kiliansch");
106 | }
107 |
108 | private void linkTeokp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
109 | {
110 | Process.Start("https://github.com/teokp");
111 | }
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace DS4Windows
2 | {
3 | partial class SaveWhere
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SaveWhere));
32 | this.label4 = new System.Windows.Forms.Label();
33 | this.label3 = new System.Windows.Forms.Label();
34 | this.bnAppdataFolder = new System.Windows.Forms.Button();
35 | this.bnPrgmFolder = new System.Windows.Forms.Button();
36 | this.lbPickWhere = new System.Windows.Forms.Label();
37 | this.lbMultiSaves = new System.Windows.Forms.Label();
38 | this.cBDeleteOther = new System.Windows.Forms.CheckBox();
39 | this.SuspendLayout();
40 | //
41 | // label4
42 | //
43 | resources.ApplyResources(this.label4, "label4");
44 | this.label4.ForeColor = System.Drawing.SystemColors.GrayText;
45 | this.label4.Name = "label4";
46 | //
47 | // label3
48 | //
49 | resources.ApplyResources(this.label3, "label3");
50 | this.label3.ForeColor = System.Drawing.SystemColors.GrayText;
51 | this.label3.Name = "label3";
52 | //
53 | // bnAppdataFolder
54 | //
55 | resources.ApplyResources(this.bnAppdataFolder, "bnAppdataFolder");
56 | this.bnAppdataFolder.Name = "bnAppdataFolder";
57 | this.bnAppdataFolder.UseVisualStyleBackColor = true;
58 | this.bnAppdataFolder.Click += new System.EventHandler(this.bnAppdataFolder_Click);
59 | //
60 | // bnPrgmFolder
61 | //
62 | resources.ApplyResources(this.bnPrgmFolder, "bnPrgmFolder");
63 | this.bnPrgmFolder.Name = "bnPrgmFolder";
64 | this.bnPrgmFolder.UseVisualStyleBackColor = true;
65 | this.bnPrgmFolder.Click += new System.EventHandler(this.bnPrgmFolder_Click);
66 | //
67 | // lbPickWhere
68 | //
69 | resources.ApplyResources(this.lbPickWhere, "lbPickWhere");
70 | this.lbPickWhere.ForeColor = System.Drawing.SystemColors.ControlText;
71 | this.lbPickWhere.Name = "lbPickWhere";
72 | //
73 | // lbMultiSaves
74 | //
75 | resources.ApplyResources(this.lbMultiSaves, "lbMultiSaves");
76 | this.lbMultiSaves.ForeColor = System.Drawing.SystemColors.ControlText;
77 | this.lbMultiSaves.Name = "lbMultiSaves";
78 | //
79 | // cBDeleteOther
80 | //
81 | resources.ApplyResources(this.cBDeleteOther, "cBDeleteOther");
82 | this.cBDeleteOther.Name = "cBDeleteOther";
83 | this.cBDeleteOther.UseVisualStyleBackColor = true;
84 | //
85 | // SaveWhere
86 | //
87 | resources.ApplyResources(this, "$this");
88 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
89 | this.BackColor = System.Drawing.SystemColors.ControlLightLight;
90 | this.Controls.Add(this.cBDeleteOther);
91 | this.Controls.Add(this.label4);
92 | this.Controls.Add(this.lbMultiSaves);
93 | this.Controls.Add(this.lbPickWhere);
94 | this.Controls.Add(this.label3);
95 | this.Controls.Add(this.bnAppdataFolder);
96 | this.Controls.Add(this.bnPrgmFolder);
97 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
98 | this.MaximizeBox = false;
99 | this.MinimizeBox = false;
100 | this.Name = "SaveWhere";
101 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SaveWhere_FormClosing);
102 | this.ResumeLayout(false);
103 | this.PerformLayout();
104 |
105 | }
106 |
107 | #endregion
108 |
109 | private System.Windows.Forms.Label label4;
110 | private System.Windows.Forms.Label label3;
111 | private System.Windows.Forms.Button bnAppdataFolder;
112 | private System.Windows.Forms.Button bnPrgmFolder;
113 | private System.Windows.Forms.Label lbPickWhere;
114 | private System.Windows.Forms.Label lbMultiSaves;
115 | private System.Windows.Forms.CheckBox cBDeleteOther;
116 | }
117 | }
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WelcomeDialog.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Linq;
7 | using System.Text;
8 | using System.Windows.Forms;
9 | using System.Net;
10 |
11 | using System.IO;
12 | using System.IO.Compression;
13 | using System.Diagnostics;
14 | using System.Runtime.InteropServices;
15 | using System.Security.Principal;
16 | using System.Security.Permissions;
17 | using System.Reflection;
18 |
19 | namespace DS4Windows
20 | {
21 | public partial class WelcomeDialog : Form
22 | {
23 | public WelcomeDialog()
24 | {
25 | InitializeComponent();
26 | Icon = Properties.Resources.DS4;
27 |
28 | }
29 |
30 | private void bnFinish_Click(object sender, EventArgs e)
31 | {
32 | this.Close();
33 | }
34 |
35 | private void linkBluetoothSettings_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
36 | {
37 | Process.Start("control", "bthprops.cpl");
38 | }
39 | bool driverinstalling = false;
40 | private void bnStep1_Click(object sender, EventArgs e)
41 | {
42 | WebClient wb = new WebClient();
43 | if (!driverinstalling)
44 | {
45 | wb.DownloadFileAsync(new Uri("http://ds4windows.com/Files/Virtual Bus Driver.zip"), exepath + "\\VBus.zip");
46 | wb.DownloadProgressChanged += wb_DownloadProgressChanged;
47 | wb.DownloadFileCompleted += wb_DownloadFileCompleted;
48 | driverinstalling = true;
49 | }
50 | }
51 |
52 | private void wb_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
53 | {
54 | bnStep1.Text = Properties.Resources.Downloading.Replace("*number*", e.ProgressPercentage.ToString());
55 | }
56 |
57 | string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
58 | private void wb_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
59 | {
60 | bnStep1.Text = Properties.Resources.OpeningInstaller;
61 | try
62 | {
63 | File.Delete(exepath + "\\ScpDriver.exe");
64 | File.Delete(exepath + "\\ScpDriver.log");
65 | Directory.Delete(exepath + "\\System", true);
66 | Directory.Delete(exepath + "\\DIFxAPI", true);
67 | }
68 | catch { }
69 | Directory.CreateDirectory(exepath + "\\Virtual Bus Driver");
70 | try { ZipFile.ExtractToDirectory(exepath + "\\VBus.zip", exepath + "\\Virtual Bus Driver"); } //Saved so the user can uninstall later
71 | catch { }
72 | try { ZipFile.ExtractToDirectory(exepath + "\\VBus.zip", exepath); }
73 | //Made here as starting the scpdriver.exe via process.start, the program looks for file from where it was called, not where the exe is
74 | catch { }
75 | if (File.Exists(exepath + "\\ScpDriver.exe"))
76 | try
77 | {
78 | Process.Start(exepath + "\\ScpDriver.exe", "si");
79 | bnStep1.Text = Properties.Resources.Installing;
80 | }
81 | catch { Process.Start(exepath + "\\Virtual Bus Driver"); }
82 |
83 | Timer timer = new Timer();
84 | timer.Start();
85 | timer.Tick += timer_Tick;
86 | }
87 | bool waitForFile;
88 | DateTime waitFileCheck;
89 | private void timer_Tick(object sender, EventArgs e)
90 | {
91 | Process[] processes = Process.GetProcessesByName("ScpDriver");
92 | if (processes.Length < 1)
93 | {
94 | if (!File.Exists(exepath + "\\ScpDriver.log") && !waitForFile)
95 | {
96 | waitForFile = true;
97 | waitFileCheck = DateTime.UtcNow;
98 | return;
99 | }
100 | if (waitForFile && waitFileCheck + TimeSpan.FromMinutes(2) < DateTime.UtcNow)
101 | {
102 | bnStep1.Text = Properties.Resources.InstallFailed;
103 | Process.Start(exepath + "\\Virtual Bus Driver");
104 | File.Delete(exepath + "\\VBus.zip");
105 | ((Timer)sender).Stop();
106 | return;
107 | }
108 | else if (waitForFile)
109 | return;
110 | string log = File.ReadAllText(exepath + "\\ScpDriver.log");
111 | if (log.Contains("Install Succeeded"))
112 | bnStep1.Text = Properties.Resources.InstallComplete;
113 | else
114 | {
115 | bnStep1.Text = Properties.Resources.InstallFailed;
116 | Process.Start(exepath + "\\Virtual Bus Driver");
117 | }
118 | try
119 | {
120 | File.Delete(exepath + "\\ScpDriver.exe");
121 | File.Delete(exepath + "\\ScpDriver.log");
122 | Directory.Delete(exepath + "\\System", true);
123 | Directory.Delete(exepath + "\\DIFxAPI", true);
124 | }
125 | catch { }
126 | File.Delete(exepath + "\\VBus.zip");
127 | ((Timer)sender).Stop();
128 | }
129 | }
130 |
131 |
132 | private void button2_Click(object sender, EventArgs e)
133 | {
134 | Process.Start("http://www.microsoft.com/hardware/en-us/d/xbox-360-controller-for-windows");
135 | }
136 | }
137 | }
138 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DS4Keyboard.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/DupBox.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Hotkeys.ja.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Hotkeys.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/KBM360.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Options.hu.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Options.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/RecordBox.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.hu.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.id.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.ja.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SaveWhere.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WinProgs.hu.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WinProgs.id.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WinProgs.nl.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WinProgs.sv.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/WinProgs.vi.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/Alreadyrunning.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SpecActions.hu.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------
/DS4Windows/DS4Forms/SpecActions.id.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
--------------------------------------------------------------------------------