├── .gitattributes ├── .gitignore ├── .vs └── config │ └── applicationhost.config ├── DS4Windows.sln ├── DS4Windows ├── DS4Control │ ├── ControlSerivce.cs │ ├── DS4LightBar.cs │ ├── ITouchpadBehaviour.cs │ ├── InputMethods.cs │ ├── Log.cs │ ├── Mapping.cs │ ├── Mouse.cs │ ├── MouseCursor.cs │ ├── MouseWheel.cs │ ├── ScpDevice.Designer.cs │ ├── ScpDevice.cs │ ├── ScpHub.Designer.cs │ ├── ScpHub.cs │ ├── ScpUtil.cs │ ├── X360Device.cs │ └── X360Device.designer.cs ├── DS4Forms │ ├── AdvancedColorDialog.cs │ ├── AdvancedComboBox.cs │ ├── Alreadyrunning.Designer.cs │ ├── Alreadyrunning.cs │ ├── Alreadyrunning.resx │ ├── DS4Form.Designer.cs │ ├── DS4Form.ar.resx │ ├── DS4Form.cs │ ├── DS4Form.cs.resx │ ├── DS4Form.de-DE.resx │ ├── DS4Form.el.resx │ ├── DS4Form.es.resx │ ├── DS4Form.fi.resx │ ├── DS4Form.fr-FR.resx │ ├── DS4Form.he.resx │ ├── DS4Form.hu.resx │ ├── DS4Form.id.resx │ ├── DS4Form.it-IT.resx │ ├── DS4Form.ja.resx │ ├── DS4Form.ko.resx │ ├── DS4Form.nl.resx │ ├── DS4Form.pl.resx │ ├── DS4Form.pt-BR.resx │ ├── DS4Form.resx │ ├── DS4Form.ro-RO.resx │ ├── DS4Form.ru-RU.resx │ ├── DS4Form.sl.resx │ ├── DS4Form.sv.resx │ ├── DS4Form.tr.resx │ ├── DS4Form.uk.resx │ ├── DS4Form.vi.resx │ ├── DS4Form.zh-Hans.resx │ ├── DS4Form.zh-Hant.resx │ ├── DS4Keyboard.Designer.cs │ ├── DS4Keyboard.cs │ ├── DS4Keyboard.resx │ ├── DS4W.ico │ ├── DupBox.Designer.cs │ ├── DupBox.ar.resx │ ├── DupBox.cs │ ├── DupBox.cs.resx │ ├── DupBox.de-DE.resx │ ├── DupBox.el.resx │ ├── DupBox.es.resx │ ├── DupBox.fi.resx │ ├── DupBox.fr-FR.resx │ ├── DupBox.he.resx │ ├── DupBox.hu.resx │ ├── DupBox.id.resx │ ├── DupBox.it-IT.resx │ ├── DupBox.ja.resx │ ├── DupBox.ko.resx │ ├── DupBox.nl.resx │ ├── DupBox.pl.resx │ ├── DupBox.pt-BR.resx │ ├── DupBox.resx │ ├── DupBox.ro-RO.resx │ ├── DupBox.ru-RU.resx │ ├── DupBox.sl.resx │ ├── DupBox.sv.resx │ ├── DupBox.tr.resx │ ├── DupBox.uk.resx │ ├── DupBox.vi.resx │ ├── DupBox.zh-Hans.resx │ ├── DupBox.zh-Hant.resx │ ├── Hotkeys.Designer.cs │ ├── Hotkeys.ar.resx │ ├── Hotkeys.cs │ ├── Hotkeys.cs.resx │ ├── Hotkeys.de-DE.resx │ ├── Hotkeys.el.resx │ ├── Hotkeys.es.resx │ ├── Hotkeys.fi.resx │ ├── Hotkeys.fr-FR.resx │ ├── Hotkeys.he.resx │ ├── Hotkeys.hu.resx │ ├── Hotkeys.id.resx │ ├── Hotkeys.it-IT.resx │ ├── Hotkeys.ja.resx │ ├── Hotkeys.ko.resx │ ├── Hotkeys.nl.resx │ ├── Hotkeys.pl.resx │ ├── Hotkeys.pt-BR.resx │ ├── Hotkeys.resx │ ├── Hotkeys.ro-RO.resx │ ├── Hotkeys.ru-RU.resx │ ├── Hotkeys.sl.resx │ ├── Hotkeys.sv.resx │ ├── Hotkeys.tr.resx │ ├── Hotkeys.uk.resx │ ├── Hotkeys.vi.resx │ ├── Hotkeys.zh-Hans.resx │ ├── Hotkeys.zh-Hant.resx │ ├── KBM360.Designer.cs │ ├── KBM360.ar.resx │ ├── KBM360.cs │ ├── KBM360.cs.resx │ ├── KBM360.de-DE.resx │ ├── KBM360.el.resx │ ├── KBM360.es.resx │ ├── KBM360.fi.resx │ ├── KBM360.fr-FR.resx │ ├── KBM360.he.resx │ ├── KBM360.hu.resx │ ├── KBM360.id.resx │ ├── KBM360.it-IT.resx │ ├── KBM360.ja.resx │ ├── KBM360.ko.resx │ ├── KBM360.nl.resx │ ├── KBM360.pl.resx │ ├── KBM360.pt-BR.resx │ ├── KBM360.resx │ ├── KBM360.ro-RO.resx │ ├── KBM360.ru-RU.resx │ ├── KBM360.sl.resx │ ├── KBM360.sv.resx │ ├── KBM360.tr.resx │ ├── KBM360.uk.resx │ ├── KBM360.vi.resx │ ├── KBM360.zh-Hans.resx │ ├── KBM360.zh-Hant.resx │ ├── Options.Designer.cs │ ├── Options.ar.resx │ ├── Options.cs │ ├── Options.cs.resx │ ├── Options.de-DE.resx │ ├── Options.el.resx │ ├── Options.es.resx │ ├── Options.fi.resx │ ├── Options.fr-FR.resx │ ├── Options.he.resx │ ├── Options.hu.resx │ ├── Options.id.resx │ ├── Options.it-IT.resx │ ├── Options.ja.resx │ ├── Options.ko.resx │ ├── Options.nl.resx │ ├── Options.pl.resx │ ├── Options.pt-BR.resx │ ├── Options.resx │ ├── Options.ro-RO.resx │ ├── Options.ru-RU.resx │ ├── Options.sl.resx │ ├── Options.sv.resx │ ├── Options.tr.resx │ ├── Options.uk.resx │ ├── Options.vi.resx │ ├── Options.zh-Hans.resx │ ├── Options.zh-Hant.resx │ ├── RecordBox.Designer.cs │ ├── RecordBox.ar.resx │ ├── RecordBox.cs │ ├── RecordBox.cs.resx │ ├── RecordBox.de-DE.resx │ ├── RecordBox.el.resx │ ├── RecordBox.es.resx │ ├── RecordBox.fi.resx │ ├── RecordBox.fr-FR.resx │ ├── RecordBox.he.resx │ ├── RecordBox.hu.resx │ ├── RecordBox.id.resx │ ├── RecordBox.it-IT.resx │ ├── RecordBox.ja.resx │ ├── RecordBox.ko.resx │ ├── RecordBox.nl.resx │ ├── RecordBox.pl.resx │ ├── RecordBox.pt-BR.resx │ ├── RecordBox.resx │ ├── RecordBox.ro-RO.resx │ ├── RecordBox.ru-RU.resx │ ├── RecordBox.sl.resx │ ├── RecordBox.sv.resx │ ├── RecordBox.tr.resx │ ├── RecordBox.uk.resx │ ├── RecordBox.vi.resx │ ├── RecordBox.zh-Hans.resx │ ├── RecordBox.zh-Hant.resx │ ├── SaveWhere.Designer.cs │ ├── SaveWhere.ar.resx │ ├── SaveWhere.cs │ ├── SaveWhere.cs.resx │ ├── SaveWhere.de-DE.resx │ ├── SaveWhere.el.resx │ ├── SaveWhere.es.resx │ ├── SaveWhere.fi.resx │ ├── SaveWhere.fr-FR.resx │ ├── SaveWhere.he.resx │ ├── SaveWhere.hu.resx │ ├── SaveWhere.id.resx │ ├── SaveWhere.it-IT.resx │ ├── SaveWhere.ja.resx │ ├── SaveWhere.ko.resx │ ├── SaveWhere.nl.resx │ ├── SaveWhere.pl.resx │ ├── SaveWhere.pt-BR.resx │ ├── SaveWhere.resx │ ├── SaveWhere.ro-RO.resx │ ├── SaveWhere.ru-RU.resx │ ├── SaveWhere.sl.resx │ ├── SaveWhere.sv.resx │ ├── SaveWhere.tr.resx │ ├── SaveWhere.uk.resx │ ├── SaveWhere.vi.resx │ ├── SaveWhere.zh-Hans.resx │ ├── SaveWhere.zh-Hant.resx │ ├── Settings.cs │ ├── SpecActions.Designer.cs │ ├── SpecActions.ar.resx │ ├── SpecActions.cs │ ├── SpecActions.cs.resx │ ├── SpecActions.de-DE.resx │ ├── SpecActions.el.resx │ ├── SpecActions.es.resx │ ├── SpecActions.fi.resx │ ├── SpecActions.fr-FR.resx │ ├── SpecActions.he.resx │ ├── SpecActions.hu.resx │ ├── SpecActions.id.resx │ ├── SpecActions.it-IT.resx │ ├── SpecActions.ja.resx │ ├── SpecActions.ko.resx │ ├── SpecActions.nl.resx │ ├── SpecActions.pl.resx │ ├── SpecActions.pt-BR.resx │ ├── SpecActions.resx │ ├── SpecActions.ro-RO.resx │ ├── SpecActions.ru-RU.resx │ ├── SpecActions.sl.resx │ ├── SpecActions.sv.resx │ ├── SpecActions.tr.resx │ ├── SpecActions.uk.resx │ ├── SpecActions.vi.resx │ ├── SpecActions.zh-Hans.resx │ ├── SpecActions.zh-Hant.resx │ ├── WelcomeDialog.Designer.cs │ ├── WelcomeDialog.ar.resx │ ├── WelcomeDialog.cs │ ├── WelcomeDialog.cs.resx │ ├── WelcomeDialog.de-DE.resx │ ├── WelcomeDialog.el.resx │ ├── WelcomeDialog.es.resx │ ├── WelcomeDialog.fi.resx │ ├── WelcomeDialog.fr-FR.resx │ ├── WelcomeDialog.he.resx │ ├── WelcomeDialog.hu.resx │ ├── WelcomeDialog.id.resx │ ├── WelcomeDialog.it-IT.resx │ ├── WelcomeDialog.ja.resx │ ├── WelcomeDialog.ko.resx │ ├── WelcomeDialog.nl.resx │ ├── WelcomeDialog.pl.resx │ ├── WelcomeDialog.pt-BR.resx │ ├── WelcomeDialog.resx │ ├── WelcomeDialog.ro-RO.resx │ ├── WelcomeDialog.ru-RU.resx │ ├── WelcomeDialog.sl.resx │ ├── WelcomeDialog.sv.resx │ ├── WelcomeDialog.tr.resx │ ├── WelcomeDialog.uk.resx │ ├── WelcomeDialog.vi.resx │ ├── WelcomeDialog.zh-Hans.resx │ ├── WelcomeDialog.zh-Hant.resx │ ├── WinProgs.Designer.cs │ ├── WinProgs.ar.resx │ ├── WinProgs.cs │ ├── WinProgs.cs.resx │ ├── WinProgs.de-DE.resx │ ├── WinProgs.el.resx │ ├── WinProgs.es.resx │ ├── WinProgs.fi.resx │ ├── WinProgs.fr-FR.resx │ ├── WinProgs.he.resx │ ├── WinProgs.hu.resx │ ├── WinProgs.id.resx │ ├── WinProgs.it-IT.resx │ ├── WinProgs.ja.resx │ ├── WinProgs.ko.resx │ ├── WinProgs.nl.resx │ ├── WinProgs.pl.resx │ ├── WinProgs.pt-BR.resx │ ├── WinProgs.resx │ ├── WinProgs.ro-RO.resx │ ├── WinProgs.ru-RU.resx │ ├── WinProgs.sl.resx │ ├── WinProgs.sv.resx │ ├── WinProgs.tr.resx │ ├── WinProgs.uk.resx │ ├── WinProgs.vi.resx │ ├── WinProgs.zh-Hans.resx │ ├── WinProgs.zh-Hant.resx │ └── app.config ├── DS4Library │ ├── DS4Device.cs │ ├── DS4Devices.cs │ ├── DS4Sixaxis.cs │ ├── DS4State.cs │ ├── DS4StateExposed.cs │ └── DS4Touchpad.cs ├── DS4Windows.csproj ├── HidLibrary │ ├── Extensions.cs │ ├── HidDevice.cs │ ├── HidDeviceAttributes.cs │ ├── HidDeviceCapabilities.cs │ ├── HidDevices.cs │ ├── LICENSE.htm │ └── NativeMethods.cs ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.ar.resx │ ├── Resources.cs.resx │ ├── Resources.de-DE.resx │ ├── Resources.el.resx │ ├── Resources.es.resx │ ├── Resources.fi.resx │ ├── Resources.fr-FR.resx │ ├── Resources.he.resx │ ├── Resources.hu.resx │ ├── Resources.id.resx │ ├── Resources.it-IT.resx │ ├── Resources.ja.resx │ ├── Resources.ko.resx │ ├── Resources.nl.resx │ ├── Resources.pl.resx │ ├── Resources.pt-BR.resx │ ├── Resources.resx │ ├── Resources.ro-RO.resx │ ├── Resources.ru-RU.resx │ ├── Resources.sl.resx │ ├── Resources.sv.resx │ ├── Resources.tr.resx │ ├── Resources.uk.resx │ ├── Resources.vi.resx │ ├── Resources.zh-Hant.resx │ ├── Resources.zh-hans.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── Resources │ ├── 360 fades.png │ ├── 360 highlight.png │ ├── 360 highlight.psd │ ├── 360 map.png │ ├── A.PNG │ ├── B.png │ ├── BACK.png │ ├── BT.png │ ├── Clock.png │ ├── DOWN.png │ ├── DS4 Config.png │ ├── DS4 Controller.png │ ├── DS4 lightbar.png │ ├── DS4 old.ico │ ├── DS4-Config_Circle.png │ ├── DS4-Config_Cross.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_Right.png │ ├── DS4-Config_Share.png │ ├── DS4-Config_Square.png │ ├── DS4-Config_TouchLeft.png │ ├── DS4-Config_TouchMulti.png │ ├── DS4-Config_TouchRight.png │ ├── DS4-Config_TouchUpper.png │ ├── DS4-Config_Triangle.png │ ├── DS4-Config_Up.png │ ├── DS4-Config_ptionss.png │ ├── DS4.ico │ ├── DS4W - White.ico │ ├── DS4W.ico │ ├── EE.wav │ ├── LB.png │ ├── LEFT.png │ ├── LS.png │ ├── LSD.png │ ├── LSL.png │ ├── LSR.png │ ├── LSU.png │ ├── LT.png │ ├── Pairmode.png │ ├── RB.png │ ├── RIGHT.png │ ├── RS.png │ ├── RSD.png │ ├── RSL.png │ ├── RSR.png │ ├── RSU.png │ ├── RT.png │ ├── Red Circle.png │ ├── START.png │ ├── Scp_All.ico │ ├── UP.png │ ├── USB.png │ ├── UpperTouch.png │ ├── X.png │ ├── Y.png │ ├── checked.png │ ├── delete.png │ ├── export.png │ ├── imageres_import.png │ ├── imageres_new.png │ ├── left touch.png │ ├── mouse.png │ ├── none.png │ ├── rainbow.png │ ├── rainbowC.png │ ├── right touch.png │ ├── saveprofile.png │ ├── shell32 delete.png │ ├── shell32_copy.png │ ├── shell32_export.png │ ├── shell32_new.png │ ├── size.png │ ├── x360test.png │ └── xbox_360_controller.png ├── app.config └── app.manifest └── README.md /.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 | -------------------------------------------------------------------------------- /.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.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 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/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/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 | -------------------------------------------------------------------------------- /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/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/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/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/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/DS4W.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/DS4Forms/DS4W.ico -------------------------------------------------------------------------------- /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/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/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.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/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.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/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/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/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/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 | -------------------------------------------------------------------------------- /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/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/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /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/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/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/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/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/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 | -------------------------------------------------------------------------------- /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/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/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /DS4Windows/Resources/360 fades.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/360 fades.png -------------------------------------------------------------------------------- /DS4Windows/Resources/360 highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/360 highlight.png -------------------------------------------------------------------------------- /DS4Windows/Resources/360 highlight.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/360 highlight.psd -------------------------------------------------------------------------------- /DS4Windows/Resources/360 map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/360 map.png -------------------------------------------------------------------------------- /DS4Windows/Resources/A.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/A.PNG -------------------------------------------------------------------------------- /DS4Windows/Resources/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/B.png -------------------------------------------------------------------------------- /DS4Windows/Resources/BACK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/BACK.png -------------------------------------------------------------------------------- /DS4Windows/Resources/BT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/BT.png -------------------------------------------------------------------------------- /DS4Windows/Resources/Clock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/Clock.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DOWN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DOWN.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4 Config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4 Config.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4 Controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4 Controller.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4 lightbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4 lightbar.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4 old.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4 old.ico -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Circle.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Cross.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Down.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_L1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_L1.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_L2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_L2.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_LS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_LS.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Left.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_PS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_PS.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_R1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_R1.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_R2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_R2.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_RS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_RS.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Right.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Share.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Square.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_TouchLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_TouchLeft.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_TouchMulti.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_TouchMulti.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_TouchRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_TouchRight.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_TouchUpper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_TouchUpper.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Triangle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Triangle.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_Up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_Up.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4-Config_ptionss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4-Config_ptionss.png -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4.ico -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4W - White.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4W - White.ico -------------------------------------------------------------------------------- /DS4Windows/Resources/DS4W.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/DS4W.ico -------------------------------------------------------------------------------- /DS4Windows/Resources/EE.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/EE.wav -------------------------------------------------------------------------------- /DS4Windows/Resources/LB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LB.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LEFT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LEFT.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LS.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LSD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LSD.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LSL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LSL.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LSR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LSR.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LSU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LSU.png -------------------------------------------------------------------------------- /DS4Windows/Resources/LT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/LT.png -------------------------------------------------------------------------------- /DS4Windows/Resources/Pairmode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/Pairmode.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RB.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RIGHT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RIGHT.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RS.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RSD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RSD.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RSL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RSL.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RSR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RSR.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RSU.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RSU.png -------------------------------------------------------------------------------- /DS4Windows/Resources/RT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/RT.png -------------------------------------------------------------------------------- /DS4Windows/Resources/Red Circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/Red Circle.png -------------------------------------------------------------------------------- /DS4Windows/Resources/START.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/START.png -------------------------------------------------------------------------------- /DS4Windows/Resources/Scp_All.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/Scp_All.ico -------------------------------------------------------------------------------- /DS4Windows/Resources/UP.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/UP.png -------------------------------------------------------------------------------- /DS4Windows/Resources/USB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/USB.png -------------------------------------------------------------------------------- /DS4Windows/Resources/UpperTouch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/UpperTouch.png -------------------------------------------------------------------------------- /DS4Windows/Resources/X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/X.png -------------------------------------------------------------------------------- /DS4Windows/Resources/Y.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/Y.png -------------------------------------------------------------------------------- /DS4Windows/Resources/checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/checked.png -------------------------------------------------------------------------------- /DS4Windows/Resources/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/delete.png -------------------------------------------------------------------------------- /DS4Windows/Resources/export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/export.png -------------------------------------------------------------------------------- /DS4Windows/Resources/imageres_import.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/imageres_import.png -------------------------------------------------------------------------------- /DS4Windows/Resources/imageres_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/imageres_new.png -------------------------------------------------------------------------------- /DS4Windows/Resources/left touch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/left touch.png -------------------------------------------------------------------------------- /DS4Windows/Resources/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/mouse.png -------------------------------------------------------------------------------- /DS4Windows/Resources/none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/none.png -------------------------------------------------------------------------------- /DS4Windows/Resources/rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/rainbow.png -------------------------------------------------------------------------------- /DS4Windows/Resources/rainbowC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/rainbowC.png -------------------------------------------------------------------------------- /DS4Windows/Resources/right touch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/right touch.png -------------------------------------------------------------------------------- /DS4Windows/Resources/saveprofile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/saveprofile.png -------------------------------------------------------------------------------- /DS4Windows/Resources/shell32 delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/shell32 delete.png -------------------------------------------------------------------------------- /DS4Windows/Resources/shell32_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/shell32_copy.png -------------------------------------------------------------------------------- /DS4Windows/Resources/shell32_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/shell32_export.png -------------------------------------------------------------------------------- /DS4Windows/Resources/shell32_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/shell32_new.png -------------------------------------------------------------------------------- /DS4Windows/Resources/size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/size.png -------------------------------------------------------------------------------- /DS4Windows/Resources/x360test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/x360test.png -------------------------------------------------------------------------------- /DS4Windows/Resources/xbox_360_controller.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jays2Kings/DS4Windows/14b831d7a0b74986e68fadea0330ddfb2955f3b4/DS4Windows/Resources/xbox_360_controller.png -------------------------------------------------------------------------------- /DS4Windows/app.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------