├── .gitignore ├── CHANGELOG.md ├── DSApps ├── .gitignore ├── App.axaml ├── App.axaml.cs ├── Content │ └── imagen-ds5.png ├── DSApps.csproj ├── MainWindow.axaml ├── MainWindow.axaml.cs ├── Model │ └── About.cs ├── Program.cs ├── SideBar.xaml ├── Style.xaml ├── Utils.cs └── Views │ ├── About.axaml │ └── About.axaml.cs ├── DualSenseSupport ├── Class1.cs ├── Colors.cs ├── DSLight.cs ├── DSTrigger.cs ├── DeviceInfo.cs ├── DeviceInfoXbox.cs ├── Devices.cs ├── DualSenseSupport.csproj ├── Logger.cs ├── Properties │ └── AssemblyInfo.cs ├── Tracer.cs ├── Util.cs └── packages.config ├── README.md ├── Testing.sln └── Testing ├── App.config ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings └── Testing.csproj /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | .idea 13 | 14 | # User-specific files (MonoDevelop/Xamarin Studio) 15 | *.userprefs 16 | 17 | # Mono auto generated files 18 | mono_crash.* 19 | 20 | # Build results 21 | [Dd]ebug/ 22 | [Dd]ebugPublic/ 23 | [Rr]elease/ 24 | [Rr]eleases/ 25 | x64/ 26 | x86/ 27 | [Ww][Ii][Nn]32/ 28 | [Aa][Rr][Mm]/ 29 | [Aa][Rr][Mm]64/ 30 | bld/ 31 | [Bb]in/ 32 | [Oo]bj/ 33 | [Ll]og/ 34 | [Ll]ogs/ 35 | 36 | # Visual Studio 2015/2017 cache/options directory 37 | .vs/ 38 | # Uncomment if you have tasks that create the project's static files in wwwroot 39 | #wwwroot/ 40 | 41 | # Visual Studio 2017 auto generated files 42 | Generated\ Files/ 43 | 44 | # MSTest test Results 45 | [Tt]est[Rr]esult*/ 46 | [Bb]uild[Ll]og.* 47 | 48 | # NUnit 49 | *.VisualState.xml 50 | TestResult.xml 51 | nunit-*.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | 66 | # ASP.NET Scaffolding 67 | ScaffoldingReadMe.txt 68 | 69 | # StyleCop 70 | StyleCopReport.xml 71 | 72 | # Files built by Visual Studio 73 | *_i.c 74 | *_p.c 75 | *_h.h 76 | *.ilk 77 | *.meta 78 | *.obj 79 | *.iobj 80 | *.pch 81 | *.pdb 82 | *.ipdb 83 | *.pgc 84 | *.pgd 85 | *.rsp 86 | *.sbr 87 | *.tlb 88 | *.tli 89 | *.tlh 90 | *.tmp 91 | *.tmp_proj 92 | *_wpftmp.csproj 93 | *.log 94 | *.vspscc 95 | *.vssscc 96 | .builds 97 | *.pidb 98 | *.svclog 99 | *.scc 100 | 101 | # Chutzpah Test files 102 | _Chutzpah* 103 | 104 | # Visual C++ cache files 105 | ipch/ 106 | *.aps 107 | *.ncb 108 | *.opendb 109 | *.opensdf 110 | *.sdf 111 | *.cachefile 112 | *.VC.db 113 | *.VC.VC.opendb 114 | 115 | # Visual Studio profiler 116 | *.psess 117 | *.vsp 118 | *.vspx 119 | *.sap 120 | 121 | # Visual Studio Trace Files 122 | *.e2e 123 | 124 | # TFS 2012 Local Workspace 125 | $tf/ 126 | 127 | # Guidance Automation Toolkit 128 | *.gpState 129 | 130 | # ReSharper is a .NET coding add-in 131 | _ReSharper*/ 132 | *.[Rr]e[Ss]harper 133 | *.DotSettings.user 134 | 135 | # TeamCity is a build add-in 136 | _TeamCity* 137 | 138 | # DotCover is a Code Coverage Tool 139 | *.dotCover 140 | 141 | # AxoCover is a Code Coverage Tool 142 | .axoCover/* 143 | !.axoCover/settings.json 144 | 145 | # Coverlet is a free, cross platform Code Coverage Tool 146 | coverage*.json 147 | coverage*.xml 148 | coverage*.info 149 | 150 | # Visual Studio code coverage results 151 | *.coverage 152 | *.coveragexml 153 | 154 | # NCrunch 155 | _NCrunch_* 156 | .*crunch*.local.xml 157 | nCrunchTemp_* 158 | 159 | # MightyMoose 160 | *.mm.* 161 | AutoTest.Net/ 162 | 163 | # Web workbench (sass) 164 | .sass-cache/ 165 | 166 | # Installshield output folder 167 | [Ee]xpress/ 168 | 169 | # DocProject is a documentation generator add-in 170 | DocProject/buildhelp/ 171 | DocProject/Help/*.HxT 172 | DocProject/Help/*.HxC 173 | DocProject/Help/*.hhc 174 | DocProject/Help/*.hhk 175 | DocProject/Help/*.hhp 176 | DocProject/Help/Html2 177 | DocProject/Help/html 178 | 179 | # Click-Once directory 180 | publish/ 181 | 182 | # Publish Web Output 183 | *.[Pp]ublish.xml 184 | *.azurePubxml 185 | # Note: Comment the next line if you want to checkin your web deploy settings, 186 | # but database connection strings (with potential passwords) will be unencrypted 187 | *.pubxml 188 | *.publishproj 189 | 190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 191 | # checkin your Azure Web App publish settings, but sensitive information contained 192 | # in these scripts will be unencrypted 193 | PublishScripts/ 194 | 195 | # NuGet Packages 196 | *.nupkg 197 | # NuGet Symbol Packages 198 | *.snupkg 199 | # The packages folder can be ignored because of Package Restore 200 | **/[Pp]ackages/* 201 | # except build/, which is used as an MSBuild target. 202 | !**/[Pp]ackages/build/ 203 | # Uncomment if necessary however generally it will be regenerated when needed 204 | #!**/[Pp]ackages/repositories.config 205 | # NuGet v3's project.json files produces more ignorable files 206 | *.nuget.props 207 | *.nuget.targets 208 | 209 | # Microsoft Azure Build Output 210 | csx/ 211 | *.build.csdef 212 | 213 | # Microsoft Azure Emulator 214 | ecf/ 215 | rcf/ 216 | 217 | # Windows Store app package directories and files 218 | AppPackages/ 219 | BundleArtifacts/ 220 | Package.StoreAssociation.xml 221 | _pkginfo.txt 222 | *.appx 223 | *.appxbundle 224 | *.appxupload 225 | 226 | # Visual Studio cache files 227 | # files ending in .cache can be ignored 228 | *.[Cc]ache 229 | # but keep track of directories ending in .cache 230 | !?*.[Cc]ache/ 231 | 232 | # Others 233 | ClientBin/ 234 | ~$* 235 | *~ 236 | *.dbmdl 237 | *.dbproj.schemaview 238 | *.jfm 239 | *.pfx 240 | *.publishsettings 241 | orleans.codegen.cs 242 | 243 | # Including strong name files can present a security risk 244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 245 | #*.snk 246 | 247 | # Since there are multiple workflows, uncomment next line to ignore bower_components 248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 249 | #bower_components/ 250 | 251 | # RIA/Silverlight projects 252 | Generated_Code/ 253 | 254 | # Backup & report files from converting an old project file 255 | # to a newer Visual Studio version. Backup files are not needed, 256 | # because we have git ;-) 257 | _UpgradeReport_Files/ 258 | Backup*/ 259 | UpgradeLog*.XML 260 | UpgradeLog*.htm 261 | ServiceFabricBackup/ 262 | *.rptproj.bak 263 | 264 | # SQL Server files 265 | *.mdf 266 | *.ldf 267 | *.ndf 268 | 269 | # Business Intelligence projects 270 | *.rdl.data 271 | *.bim.layout 272 | *.bim_*.settings 273 | *.rptproj.rsuser 274 | *- [Bb]ackup.rdl 275 | *- [Bb]ackup ([0-9]).rdl 276 | *- [Bb]ackup ([0-9][0-9]).rdl 277 | 278 | # Microsoft Fakes 279 | FakesAssemblies/ 280 | 281 | # GhostDoc plugin setting file 282 | *.GhostDoc.xml 283 | 284 | # Node.js Tools for Visual Studio 285 | .ntvs_analysis.dat 286 | node_modules/ 287 | 288 | # Visual Studio 6 build log 289 | *.plg 290 | 291 | # Visual Studio 6 workspace options file 292 | *.opt 293 | 294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 295 | *.vbw 296 | 297 | # Visual Studio LightSwitch build output 298 | **/*.HTMLClient/GeneratedArtifacts 299 | **/*.DesktopClient/GeneratedArtifacts 300 | **/*.DesktopClient/ModelManifest.xml 301 | **/*.Server/GeneratedArtifacts 302 | **/*.Server/ModelManifest.xml 303 | _Pvt_Extensions 304 | 305 | # Paket dependency manager 306 | .paket/paket.exe 307 | paket-files/ 308 | 309 | # FAKE - F# Make 310 | .fake/ 311 | 312 | # CodeRush personal settings 313 | .cr/personal 314 | 315 | # Python Tools for Visual Studio (PTVS) 316 | __pycache__/ 317 | *.pyc 318 | 319 | # Cake - Uncomment if you are using it 320 | # tools/** 321 | # !tools/packages.config 322 | 323 | # Tabs Studio 324 | *.tss 325 | 326 | # Telerik's JustMock configuration file 327 | *.jmconfig 328 | 329 | # BizTalk build output 330 | *.btp.cs 331 | *.btm.cs 332 | *.odx.cs 333 | *.xsd.cs 334 | 335 | # OpenCover UI analysis results 336 | OpenCover/ 337 | 338 | # Azure Stream Analytics local run output 339 | ASALocalRun/ 340 | 341 | # MSBuild Binary and Structured Log 342 | *.binlog 343 | 344 | # NVidia Nsight GPU debugger configuration file 345 | *.nvuser 346 | 347 | # MFractors (Xamarin productivity tool) working folder 348 | .mfractor/ 349 | 350 | # Local History for Visual Studio 351 | .localhistory/ 352 | 353 | # BeatPulse healthcheck temp database 354 | healthchecksdb 355 | 356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 357 | MigrationBackup/ 358 | 359 | # Ionide (cross platform F# VS Code tools) working folder 360 | .ionide/ 361 | 362 | # Fody - auto-generated XML schema 363 | FodyWeavers.xsd -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 5 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 6 | 7 | ## [Unreleased] 8 | ### Added 9 | - New UI 10 | - Changelog 11 | ### Planed 12 | - Profiles support 13 | - Bluetooth Support 14 | 15 | 16 | ## [0.0.3] - 2020-12-03 17 | ### Fixed 18 | - Fix error with a XBOX controller is connected. 19 | 20 | ## [0.0.2] - 2020-12-03 21 | ### Added 22 | - Added Gamecube mode support 23 | 24 | ## [0.0.1] - 2020-11-20 25 | - First Release, Preview build 26 | 27 | 28 | # Author Info 29 | - [Github](https://github.com/Mxater/DualSenseSupport ) 30 | - [Email](mailto:sebastian.aviles@codemaker.cl "sebastian.aviles@codemaker.cl") -------------------------------------------------------------------------------- /DSApps/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode/ 3 | .vs/ 4 | 5 | bin/ 6 | obj/ 7 | 8 | *.user -------------------------------------------------------------------------------- /DSApps/App.axaml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /DSApps/App.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls.ApplicationLifetimes; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace DSApps 6 | { 7 | public class App : Application 8 | { 9 | public override void Initialize() 10 | { 11 | AvaloniaXamlLoader.Load(this); 12 | } 13 | 14 | public override void OnFrameworkInitializationCompleted() 15 | { 16 | if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) 17 | { 18 | desktop.MainWindow = new MainWindow(); 19 | } 20 | 21 | base.OnFrameworkInitializationCompleted(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /DSApps/Content/imagen-ds5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mxater/DualSenseSupport/574eea2d6512d1099be7944547b41f933c50288a/DSApps/Content/imagen-ds5.png -------------------------------------------------------------------------------- /DSApps/DSApps.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | WinExe 4 | net5.0 5 | enable 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /DSApps/MainWindow.axaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | Content Page 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /DSApps/MainWindow.axaml.cs: -------------------------------------------------------------------------------- 1 | using Avalonia; 2 | using Avalonia.Controls; 3 | using Avalonia.Markup.Xaml; 4 | 5 | namespace DSApps 6 | { 7 | public class MainWindow : Window 8 | { 9 | public MainWindow() 10 | { 11 | InitializeComponent(); 12 | #if DEBUG 13 | this.AttachDevTools(); 14 | #endif 15 | } 16 | 17 | private void InitializeComponent() 18 | { 19 | AvaloniaXamlLoader.Load(this); 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /DSApps/Model/About.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using JetBrains.Annotations; 3 | using ReactiveUI; 4 | namespace DSApps.Model 5 | { 6 | public class About : ReactiveObject 7 | { 8 | private string versionName; 9 | public string VersionName 10 | { 11 | get => versionName; 12 | set => this.RaiseAndSetIfChanged(ref versionName, value); 13 | } 14 | 15 | private bool isNewUpdate = false; 16 | public bool IsNewUpdate 17 | { 18 | get => isNewUpdate; 19 | set => this.RaiseAndSetIfChanged(ref isNewUpdate, value); 20 | } 21 | 22 | private string actualVersion; 23 | public string ActualVersion 24 | { 25 | get => actualVersion; 26 | set => this.RaiseAndSetIfChanged(ref actualVersion, value); 27 | } 28 | 29 | private string versionUrl; 30 | public string VersionUrl 31 | { 32 | get => versionUrl; 33 | set => this.RaiseAndSetIfChanged(ref versionUrl, value); 34 | } 35 | 36 | 37 | 38 | } 39 | } -------------------------------------------------------------------------------- /DSApps/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Avalonia; 3 | using Avalonia.Controls; 4 | using Avalonia.Controls.ApplicationLifetimes; 5 | 6 | namespace DSApps 7 | { 8 | class Program 9 | { 10 | // Initialization code. Don't use any Avalonia, third-party APIs or any 11 | // SynchronizationContext-reliant code before AppMain is called: things aren't initialized 12 | // yet and stuff might break. 13 | public static void Main(string[] args) => BuildAvaloniaApp() 14 | .StartWithClassicDesktopLifetime(args); 15 | 16 | // Avalonia configuration, don't remove; also used by visual designer. 17 | public static AppBuilder BuildAvaloniaApp() 18 | => AppBuilder.Configure() 19 | .UsePlatformDetect() 20 | .LogToTrace(); 21 | } 22 | } -------------------------------------------------------------------------------- /DSApps/SideBar.xaml: -------------------------------------------------------------------------------- 1 | 3 | 44 | 45 | 61 | 64 | 67 | 70 | 73 | -------------------------------------------------------------------------------- /DSApps/Style.xaml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /DSApps/Utils.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | 4 | namespace DSApps 5 | { 6 | public static class Utils 7 | { 8 | public static void OpenUrl(Uri url) 9 | { 10 | Process myProcess = new Process(); 11 | // true is the default, but it is important not to set it to false 12 | try 13 | { 14 | myProcess.StartInfo.UseShellExecute = true; 15 | myProcess.StartInfo.FileName = url.ToString(); 16 | myProcess.Start(); 17 | } 18 | catch 19 | { 20 | Debug.WriteLine("Cant open Link: " + url); 21 | } 22 | 23 | } 24 | 25 | public static void OpenUrl(string url) 26 | { 27 | OpenUrl(new Uri(url)); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /DSApps/Views/About.axaml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | DSApp 13 | 14 | 15 | 16 | ¿Que trae nuevo? 17 | 18 | 19 | ¡Nueva version disponible! 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | asd 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /DSApps/Views/About.axaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Threading; 4 | using Avalonia; 5 | using Avalonia.Controls; 6 | using Avalonia.Input; 7 | using Avalonia.Markup.Xaml; 8 | using Newtonsoft.Json.Linq; 9 | using RestSharp; 10 | 11 | namespace DSApps.Views 12 | { 13 | public class About : UserControl 14 | { 15 | 16 | 17 | private readonly Model.About aboutModel = new Model.About(); 18 | 19 | 20 | public About() 21 | { 22 | DataContext = aboutModel; 23 | // aboutModel.VersionName 24 | aboutModel.VersionName = "🍌"; 25 | aboutModel.ActualVersion = "V0.0.2"; 26 | // Bind(aboutModel.VersionName, "🍌🍌🍌"); 27 | InitializeComponent(); 28 | new Thread(() => 29 | { 30 | try 31 | { 32 | var restClient = 33 | new RestClient("https://ds5.codemaker.cl/version.json"); 34 | var restRequest = new RestRequest(Method.GET); 35 | var restResponse = restClient.Execute(restRequest); 36 | var jsonReply = Newtonsoft.Json.JsonConvert.DeserializeObject(restResponse.Content); 37 | var VersionName = jsonReply["ActualVersion"].Value(); 38 | Debug.WriteLine("Version Name: " + VersionName); 39 | aboutModel.VersionName = VersionName; 40 | aboutModel.VersionUrl = jsonReply["DownloadUrl"].ToString(); 41 | if (aboutModel.ActualVersion != aboutModel.VersionName) 42 | { 43 | aboutModel.IsNewUpdate = true; 44 | } 45 | } 46 | catch 47 | { 48 | Debug.WriteLine("Error on get Version"); 49 | } 50 | }).Start(); 51 | } 52 | 53 | private void InitializeComponent() 54 | { 55 | AvaloniaXamlLoader.Load(this); 56 | } 57 | 58 | private void InputElement_OnPointerPressed(object? sender, PointerPressedEventArgs e) 59 | { 60 | Utils.OpenUrl($"https://github.com/Mxater/DualSenseSupport/releases/tag/{aboutModel.ActualVersion}"); 61 | } 62 | 63 | 64 | 65 | private void TextNewVersion_OnPointerPressed(object? sender, PointerPressedEventArgs e) 66 | { 67 | Utils.OpenUrl(aboutModel.VersionUrl); 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /DualSenseSupport/Class1.cs: -------------------------------------------------------------------------------- 1 | namespace DualSenseSupport 2 | { 3 | public class Class1 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /DualSenseSupport/Colors.cs: -------------------------------------------------------------------------------- 1 | namespace DualSenseSupport 2 | { 3 | public class Colors 4 | { 5 | public int Red=0; 6 | public int Green=0; 7 | public int Blue=255; 8 | } 9 | } -------------------------------------------------------------------------------- /DualSenseSupport/DSLight.cs: -------------------------------------------------------------------------------- 1 | namespace DualSenseSupport 2 | { 3 | 4 | public class DSLight 5 | { 6 | public enum LedOptions 7 | { 8 | None=0x0, 9 | PlayerLedBrightnes=0x1, 10 | UninterrumpableLed=0x2, 11 | Both=0x01 | 0x02 12 | } 13 | 14 | public enum PulseOptions 15 | { 16 | None=0, 17 | FadeBlue=1, 18 | FadeOut=2 19 | } 20 | public Colors Colors=new Colors(); 21 | public int Brightness=0; 22 | public int PlayerNumber=0; 23 | public int LedOption = 0; 24 | public int PulseOption = 0; 25 | } 26 | } -------------------------------------------------------------------------------- /DualSenseSupport/DSTrigger.cs: -------------------------------------------------------------------------------- 1 | namespace DSProject 2 | { 3 | public class DsTrigger 4 | { 5 | public enum Modes 6 | { 7 | Off =0x0 , 8 | Rigid =0x1, 9 | Pulse =0x2, 10 | Rigid_A=0x1 | 0x20, 11 | Rigid_B=0x1 | 0x04, 12 | Rigid_AB=0x1 | 0x20 | 0x04, 13 | Pulse_A = 0x2 | 0x20, 14 | Pulse_B = 0x2 | 0x04, 15 | Pulse_AB = 0x2 | 0x20 | 0x04, 16 | GameCube = -1, 17 | Calibration= 0xFC 18 | } 19 | 20 | public Modes Mode = Modes.Off; 21 | public int Force1 = 0; 22 | public int Force2 = 0; 23 | public int Force3 = 0; 24 | public int Force4 = 0; 25 | public int Force5 = 0; 26 | public int Force6 = 0; 27 | public int Force7 = 0; 28 | 29 | public DsTrigger(Modes mode,int force1 =0, int force2=0, int force3=0, int force4=0, int force5=0, int force6=0 ,int force7=0) 30 | { 31 | Mode = mode; 32 | Force1 = force1; 33 | Force2 = force2; 34 | Force3 = force3; 35 | Force4 = force4; 36 | Force5 = force5; 37 | Force6 = force6; 38 | Force7 = force7; 39 | } 40 | 41 | 42 | public DsTrigger() 43 | { 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /DualSenseSupport/DeviceInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using Device.Net; 3 | using DSProject; 4 | 5 | namespace DualSenseSupport 6 | { 7 | public class DeviceInfo 8 | { 9 | public enum ConnectionType 10 | { 11 | Usb, 12 | Bluetooth, 13 | Unknow 14 | } 15 | 16 | 17 | public ConnectionType ConnectionMethod; 18 | public string Uid; 19 | public IDevice Device; 20 | public ConnectedDeviceDefinition Connection; 21 | private readonly DSLight _dsLight= new DSLight(); 22 | private readonly DsTrigger _dsTriggerLeft= new DsTrigger(); 23 | private readonly DsTrigger _dsTriggerRight= new DsTrigger(); 24 | private int OveralMotors = 0; 25 | 26 | private Thread _timeoutCheckThread; 27 | private bool _isClosed = false; 28 | 29 | 30 | public void SetLightBrightness(int value) 31 | { 32 | _dsLight.Brightness = value.InRange(0, 2); 33 | } 34 | 35 | public void SetPlayerNumber(int value) 36 | { 37 | _dsLight.PlayerNumber = value.InRange(0, 31); 38 | } 39 | 40 | public void SetColor(System.Drawing.Color color) 41 | { 42 | _dsLight.Colors.Blue = color.B; 43 | _dsLight.Colors.Green = color.G; 44 | _dsLight.Colors.Red = color.R; 45 | } 46 | 47 | public void SetTriggerLeft(DsTrigger trigger) 48 | { 49 | _dsTriggerLeft.Mode = trigger.Mode; 50 | _dsTriggerLeft.Force1 = trigger.Force1; 51 | _dsTriggerLeft.Force2 = trigger.Force2; 52 | _dsTriggerLeft.Force3 = trigger.Force3; 53 | _dsTriggerLeft.Force4 = trigger.Force4; 54 | _dsTriggerLeft.Force5 = trigger.Force5; 55 | _dsTriggerLeft.Force6 = trigger.Force6; 56 | _dsTriggerLeft.Force7 = trigger.Force7; 57 | } 58 | public void SetTriggerRight(DsTrigger trigger) 59 | { 60 | _dsTriggerRight.Mode = trigger.Mode; 61 | _dsTriggerRight.Force1 = trigger.Force1; 62 | _dsTriggerRight.Force2 = trigger.Force2; 63 | _dsTriggerRight.Force3 = trigger.Force3; 64 | _dsTriggerRight.Force4 = trigger.Force4; 65 | _dsTriggerRight.Force5 = trigger.Force5; 66 | _dsTriggerRight.Force6 = trigger.Force6; 67 | _dsTriggerRight.Force7 = trigger.Force7; 68 | } 69 | 70 | public void SetLedMode(DSLight.LedOptions ledOptions) 71 | { 72 | _dsLight.LedOption = (int) ledOptions; 73 | } 74 | public void SetPulseMode(DSLight.PulseOptions pulseOptions) 75 | { 76 | _dsLight.PulseOption = (int) pulseOptions; 77 | } 78 | 79 | public void SetOveralMotors(int value) 80 | { 81 | OveralMotors = value.InRange(0, 7); 82 | } 83 | 84 | public void Send() 85 | { 86 | if (ConnectionMethod == ConnectionType.Usb) 87 | { 88 | 89 | var outputReport = new byte[(int) Connection.WriteBufferSize]; 90 | 91 | outputReport[0] = 0x02; //REPORT TYPE 92 | outputReport[1] = 0x4 | 0x8 ; //CONTROL FLAGS 93 | // outputReport[1] = 0x4 | 0x8 | 0x10 | 0x20 | 0x40; //CONTROL FLAGS 94 | // outputReport[1] = 0x00; //CONTROL FLAGS 95 | outputReport[2] = 0x1 | 0x4 | 0x10 | 0x40; //Control flags 96 | // outputReport[2] = 0x1 | 0x4 | 0x10 | 0x40; //Control flags 97 | 98 | 99 | //AUDIO TESTING 100 | // outputReport[5] = 0x00; // audio volume of connected headphones (maxes out at about 0x7f) 101 | 102 | outputReport[39] = (byte) _dsLight.LedOption; //LED CONTROL 103 | 104 | outputReport[44] = (byte) _dsLight.PlayerNumber; 105 | outputReport[43] = (byte) _dsLight.Brightness; //Brillo Pulso 106 | outputReport[42] = (byte) _dsLight.PulseOption; //Pulse Option 107 | 108 | //COLORS 109 | outputReport[45] = (byte) _dsLight.Colors.Red; //R 110 | outputReport[46] = (byte) _dsLight.Colors.Green; //G 111 | outputReport[47] = (byte) _dsLight.Colors.Blue; //B 112 | 113 | 114 | //Triggers 115 | outputReport[11] = (byte) _dsTriggerRight.Mode; //Mode Motor Right 116 | outputReport[12] = (byte) _dsTriggerRight.Force1; //right trigger start of resistance section 117 | outputReport[13] = 118 | (byte) _dsTriggerRight 119 | .Force2; //right trigger (mode1) amount of force exerted (mode2) end of resistance section supplemental mode 4+20) flag(s?) 0x02 = do not pause effect when fully presse 120 | outputReport[14] = (byte) _dsTriggerRight.Force3; //right trigger force exerted in range (mode2) 121 | outputReport[15] = 122 | (byte) _dsTriggerRight 123 | .Force4; // strength of effect near release state (requires supplement modes 4 and 20) 124 | outputReport[16] = 125 | (byte) _dsTriggerRight.Force5; // strength of effect near middle (requires supplement modes 4 and 20) 126 | outputReport[17] = 127 | (byte) _dsTriggerRight 128 | .Force6; // strength of effect at pressed state (requires supplement modes 4 and 20) 129 | outputReport[20] = 130 | (byte) _dsTriggerRight 131 | .Force7; // effect actuation frequency in Hz (requires supplement modes 4 and 20) 132 | 133 | if (_dsTriggerRight.Mode == DsTrigger.Modes.GameCube) 134 | { 135 | outputReport[11] = (byte) DsTrigger.Modes.Pulse; //Mode Motor Right 136 | outputReport[12] = 0x90; //right trigger start of resistance section 137 | outputReport[13] = 0xA0; //right trigger (mode1) amount of force exerted (mode2) end of resistance section supplemental mode 4+20) flag(s?) 0x02 = do not pause effect when fully presse 138 | outputReport[14] = 0xFF; //right trigger force exerted in range (mode2) 139 | outputReport[15] = 0x0; // strength of effect near release state (requires supplement modes 4 and 20) 140 | outputReport[16] = 0x0; // strength of effect near middle (requires supplement modes 4 and 20) 141 | outputReport[17] = 0x0; // strength of effect at pressed state (requires supplement modes 4 and 20) 142 | outputReport[20] = 0x0; // effect actuation frequency in Hz (requires supplement modes 4 and 20) 143 | } 144 | 145 | 146 | outputReport[22] = (byte) _dsTriggerLeft.Mode; //Mode Motor Left 147 | outputReport[23] = (byte) _dsTriggerLeft.Force1; //right Left start of resistance section 148 | outputReport[24] = 149 | (byte) _dsTriggerLeft 150 | .Force2; //right Left (mode1) amount of force exerted (mode2) end of resistance section supplemental mode 4+20) flag(s?) 0x02 = do not pause effect when fully presse 151 | outputReport[25] = (byte) _dsTriggerLeft.Force3; //right Left force exerted in range (mode2) 152 | outputReport[26] = 153 | (byte) _dsTriggerLeft 154 | .Force4; // strength of effect near release state (requires supplement modes 4 and 20) 155 | outputReport[27] = 156 | (byte) _dsTriggerLeft.Force5; // strength of effect near middle (requires supplement modes 4 and 20) 157 | outputReport[28] = 158 | (byte) _dsTriggerLeft 159 | .Force6; // strength of effect at pressed state (requires supplement modes 4 and 20) 160 | outputReport[31] = 161 | (byte) _dsTriggerLeft 162 | .Force7; // effect actuation frequency in Hz (requires supplement modes 4 and 20) 163 | 164 | if (_dsTriggerLeft.Mode == DsTrigger.Modes.GameCube) 165 | { 166 | outputReport[22] = (byte) DsTrigger.Modes.Pulse; //Mode Motor Right 167 | outputReport[23] = 0x90; //right trigger start of resistance section 168 | outputReport[24] = 0xA0; //right trigger (mode1) amount of force exerted (mode2) end of resistance section supplemental mode 4+20) flag(s?) 0x02 = do not pause effect when fully presse 169 | outputReport[25] = 0xFF; //right trigger force exerted in range (mode2) 170 | outputReport[26] = 0x0; // strength of effect near release state (requires supplement modes 4 and 20) 171 | outputReport[27] = 0x0; // strength of effect near middle (requires supplement modes 4 and 20) 172 | outputReport[28] = 0x0; // strength of effect at pressed state (requires supplement modes 4 and 20) 173 | outputReport[31] = 0x0; // effect actuation frequency in Hz (requires supplement modes 4 and 20) 174 | } 175 | 176 | outputReport[37] = (byte) OveralMotors; 177 | 178 | Device.WriteAsync(outputReport).Wait(); 179 | } 180 | 181 | 182 | } 183 | 184 | public void Init() 185 | { 186 | var thread = new Thread(() => 187 | { 188 | Device.InitializeAsync().Wait(); 189 | }); 190 | thread.Start(); 191 | thread.Join(); 192 | 193 | 194 | _timeoutCheckThread = new Thread(TimeoutTestThread); 195 | _timeoutCheckThread.Priority = ThreadPriority.BelowNormal; 196 | _timeoutCheckThread.Name = "DualSense Timeout thread: " + Device.DeviceId; 197 | _timeoutCheckThread.IsBackground = true; 198 | _timeoutCheckThread.Start(); 199 | } 200 | 201 | public void Close() 202 | { 203 | _isClosed = true; 204 | Device.Close(); 205 | } 206 | 207 | private void TimeoutTestThread() 208 | { 209 | while (!_isClosed) 210 | { 211 | Send(); 212 | Thread.Sleep(1); 213 | } 214 | } 215 | } 216 | } -------------------------------------------------------------------------------- /DualSenseSupport/DeviceInfoXbox.cs: -------------------------------------------------------------------------------- 1 | using System.Threading; 2 | using Device.Net; 3 | using DSProject; 4 | 5 | namespace DualSenseSupport 6 | { 7 | public class DeviceInfoXbox 8 | { 9 | public enum ConnectionType 10 | { 11 | Usb, 12 | Bluetooth, 13 | Unknow 14 | } 15 | 16 | 17 | public ConnectionType ConnectionMethod; 18 | public string Uid; 19 | public IDevice Device; 20 | public ConnectedDeviceDefinition Connection; 21 | 22 | 23 | private Thread _timeoutCheckThread; 24 | private bool _isClosed = false; 25 | 26 | 27 | 28 | 29 | public void Read() 30 | { 31 | var readResult = Device.ReadAsync().Result; 32 | } 33 | 34 | public void Init() 35 | { 36 | var thread = new Thread(() => 37 | { 38 | Device.InitializeAsync().Wait(); 39 | }); 40 | thread.Start(); 41 | thread.Join(); 42 | 43 | 44 | _timeoutCheckThread = new Thread(TimeoutTestThread); 45 | _timeoutCheckThread.Priority = ThreadPriority.BelowNormal; 46 | _timeoutCheckThread.Name = "Xbox Timeout thread: " + Device.DeviceId; 47 | _timeoutCheckThread.IsBackground = true; 48 | _timeoutCheckThread.Start(); 49 | } 50 | 51 | public void Close() 52 | { 53 | _isClosed = true; 54 | Device.Close(); 55 | } 56 | 57 | private void TimeoutTestThread() 58 | { 59 | while (!_isClosed) 60 | { 61 | Read(); 62 | Thread.Sleep(1); 63 | } 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /DualSenseSupport/Devices.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | using System.Xml; 7 | using Device.Net; 8 | using Hid.Net.Windows; 9 | using Usb.Net.Windows; 10 | 11 | 12 | namespace DualSenseSupport 13 | { 14 | public class Devices 15 | { 16 | private static readonly DSProject.Logger _logger = new DSProject.Logger(); 17 | private static readonly Tracer _tracer = new Tracer(); 18 | 19 | 20 | private static List devicesList= new List(); 21 | private static List devicesListXbox= new List(); 22 | 23 | public static void Init() 24 | { 25 | WindowsHidDeviceFactory.Register(_logger, _tracer); 26 | WindowsUsbDeviceFactory.Register(_logger, _tracer); 27 | 28 | SearchDS5Controller(); 29 | // SearchXboxController(); 30 | } 31 | 32 | public static int GetDeviceCount() 33 | { 34 | return devicesList.Count; 35 | } 36 | 37 | public static DeviceInfo GetDevice(int index) 38 | { 39 | return devicesList[index]; 40 | } 41 | 42 | 43 | public static Tuple,IEnumerable> EnumerateDevices() 44 | { 45 | IEnumerable devicesList = new List(); 46 | var thread = new Thread(o => 47 | { 48 | devicesList = DeviceManager.Current.GetConnectedDeviceDefinitionsAsync(new FilterDeviceDefinition()) 49 | .Result; 50 | }); 51 | thread.Start(); 52 | thread.Join(); 53 | 54 | // var task = DeviceManager.Current.GetConnectedDeviceDefinitionsAsync(new FilterDeviceDefinition()); 55 | 56 | // devicesList = task.Result; 57 | var devices = new List(); 58 | var devicesXbox = new List(); 59 | foreach (var deviceDefinition in devicesList) 60 | { 61 | if (deviceDefinition.VendorId == 1356 && deviceDefinition.ProductId==3302) 62 | { 63 | var device = new DeviceInfo 64 | { 65 | Connection = deviceDefinition, 66 | Device = DeviceManager.Current.GetDevice(deviceDefinition), 67 | Uid= Guid.NewGuid().ToString() 68 | }; 69 | if (device.Connection.WriteBufferSize == 48) 70 | { 71 | device.ConnectionMethod = DeviceInfo.ConnectionType.Usb; 72 | } 73 | else if(device.Connection.WriteBufferSize == 547) 74 | { 75 | device.ConnectionMethod = DeviceInfo.ConnectionType.Bluetooth; 76 | } 77 | else 78 | { 79 | device.ConnectionMethod = DeviceInfo.ConnectionType.Unknow; 80 | } 81 | devices.Add(device); 82 | } 83 | 84 | if (deviceDefinition.VendorId == 1118 && deviceDefinition.ProductId == 654) 85 | { 86 | var device = new DeviceInfoXbox() 87 | { 88 | Connection = deviceDefinition, 89 | Device = DeviceManager.Current.GetDevice(deviceDefinition), 90 | Uid= Guid.NewGuid().ToString() 91 | }; 92 | devicesXbox.Add(device); 93 | } 94 | } 95 | 96 | 97 | 98 | return new Tuple, IEnumerable>(devices,devicesXbox); 99 | } 100 | 101 | public static void SearchDS5Controller() 102 | { 103 | var devices=EnumerateDevices().Item1; 104 | foreach (var deviceInfo in devicesList.Where(deviceInfo => deviceInfo.Device.IsInitialized)) 105 | { 106 | deviceInfo.Close(); 107 | } 108 | 109 | foreach (var deviceInfo in devices) 110 | { 111 | devicesList.Add(deviceInfo); 112 | deviceInfo.Init(); 113 | } 114 | } 115 | public static void SearchXboxController() 116 | { 117 | var devices=EnumerateDevices().Item2; 118 | foreach (var deviceInfo in devicesListXbox.Where(deviceInfo => deviceInfo.Device.IsInitialized)) 119 | { 120 | deviceInfo.Close(); 121 | } 122 | 123 | foreach (var deviceInfo in devices) 124 | { 125 | devicesListXbox.Add(deviceInfo); 126 | deviceInfo.Init(); 127 | } 128 | } 129 | 130 | 131 | public static void Close() 132 | { 133 | foreach (var deviceInfo in devicesList.Where(deviceInfo => deviceInfo.Device.IsInitialized)) 134 | { 135 | deviceInfo.Close(); 136 | } 137 | } 138 | 139 | } 140 | 141 | 142 | } -------------------------------------------------------------------------------- /DualSenseSupport/DualSenseSupport.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {6703B03F-E152-446F-A56E-5C226D169848} 8 | Library 9 | Properties 10 | DualSenseSupport 11 | DualSenseSupport 12 | v4.7.2 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | bin\x64\Debug\ 36 | x64 37 | 38 | 39 | bin\x64\Release\ 40 | x64 41 | TRACE 42 | true 43 | 44 | 45 | 46 | ..\packages\Device.Net.3.1.0\lib\net45\Device.Net.dll 47 | True 48 | 49 | 50 | ..\packages\Hid.Net.3.1.0\lib\net45\Hid.Net.dll 51 | True 52 | 53 | 54 | ..\packages\Microsoft.Extensions.Logging.Abstractions.5.0.0\lib\net461\Microsoft.Extensions.Logging.Abstractions.dll 55 | True 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | ..\packages\System.Drawing.Common.5.0.0\lib\net461\System.Drawing.Common.dll 64 | True 65 | 66 | 67 | ..\packages\System.Reactive.5.0.0\lib\net472\System.Reactive.dll 68 | True 69 | 70 | 71 | ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll 72 | True 73 | 74 | 75 | ..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll 76 | True 77 | 78 | 79 | 80 | 81 | 82 | ..\packages\Usb.Net.3.1.0\lib\net45\Usb.Net.dll 83 | True 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /DualSenseSupport/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using Hid.Net.Windows; 4 | using System.Reactive.Disposables; 5 | using Microsoft.Extensions.Logging; 6 | using ILogger = Device.Net.ILogger; 7 | 8 | namespace DSProject 9 | { 10 | public class Logger : ILogger 11 | { 12 | public readonly string Name; 13 | 14 | 15 | public LogLevel LogLevel { get; set; } 16 | 17 | /// 18 | public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, 19 | Func formatter) 20 | { 21 | if (!IsEnabled(logLevel)) 22 | { 23 | return; 24 | } 25 | 26 | var message = formatter(state, exception); 27 | 28 | if (!string.IsNullOrEmpty(message)) 29 | { 30 | Console.WriteLine(message); 31 | } 32 | } 33 | 34 | /// 35 | public bool IsEnabled(LogLevel logLevel) => LogLevel <= logLevel; 36 | 37 | /// 38 | public IDisposable BeginScope(TState state) => Disposable.Empty; 39 | 40 | public void Log(string message, string region, Exception ex, Device.Net.LogLevel logLevel) 41 | { 42 | if (!string.IsNullOrEmpty(message)) 43 | { 44 | Console.WriteLine(message); 45 | } 46 | } 47 | } 48 | } -------------------------------------------------------------------------------- /DualSenseSupport/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("DualSenseSupport")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("DualSenseSupport")] 12 | [assembly: AssemblyCopyright("Copyright © 2020")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("6703B03F-E152-446F-A56E-5C226D169848")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /DualSenseSupport/Tracer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reactive.Disposables; 3 | using Device.Net; 4 | using Microsoft.Extensions.Logging; 5 | using LogLevel = Microsoft.Extensions.Logging.LogLevel; 6 | 7 | 8 | namespace DualSenseSupport 9 | { 10 | public class Tracer : ITracer 11 | 12 | { 13 | public readonly string Name; 14 | 15 | public LogLevel LogLevel { get; set; } 16 | 17 | /// 18 | public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, 19 | Func formatter) 20 | { 21 | if (!IsEnabled(logLevel)) 22 | { 23 | return; 24 | } 25 | 26 | var message = formatter(state, exception); 27 | 28 | if (!string.IsNullOrEmpty(message)) 29 | { 30 | Console.WriteLine(message); 31 | } 32 | } 33 | 34 | /// 35 | public bool IsEnabled(LogLevel logLevel) => LogLevel <= logLevel; 36 | 37 | /// 38 | public IDisposable BeginScope(TState state) => Disposable.Empty; 39 | 40 | public void Trace(bool isWrite, byte[] data) 41 | { 42 | 43 | 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /DualSenseSupport/Util.cs: -------------------------------------------------------------------------------- 1 | namespace DualSenseSupport 2 | { 3 | public static class Util 4 | { 5 | public static int InRange(this int these, int min, int max) 6 | { 7 | if (these > max) 8 | { 9 | return max; 10 | } 11 | 12 | if (these < min) 13 | { 14 | return min; 15 | } 16 | 17 | return these; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /DualSenseSupport/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # DualSenseSupport 3 | Preliminar support for DualSense Haptic 4 | 5 | ![Tester interface](https://i.imgur.com/hp0sGZO.png) 6 | 7 | This has a DLL to integrate with Games. 8 | Only works with USB in this moment. 9 | 10 | # Sources 11 | 12 | [DualSense Haptics Output Report](https://www.reddit.com/r/gamedev/comments/jumvi5/dualsense_haptics_leds_and_more_hid_output_report) 13 | 14 | [DS4Windows First Idea and Support for implementation](https://github.com/Ryochan7/DS4Windows) 15 | 16 | [My implementation of DS4Windows with rumble for use With DSSupportApi](https://github.com/Mxater/DS4Windows) 17 | 18 | 19 | # Download 20 | [Main Page for Download Build](https://github.com/Mxater/DualSenseSupport/releases) 21 | 22 | # Social 23 | [Discord](https://discord.gg/UPCg9VK4gQ) 24 | 25 | [Patreon](https://www.patreon.com/mxater) 26 | 27 | [Payme](https://paypal.me/mxater) 28 | -------------------------------------------------------------------------------- /Testing.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30717.126 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testing", "Testing\Testing.csproj", "{8C7DE764-9106-421A-A70E-1651A824873C}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DualSenseSupport", "DualSenseSupport\DualSenseSupport.csproj", "{6703B03F-E152-446F-A56E-5C226D169848}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DSApps", "DSApps\DSApps.csproj", "{269EC777-2D29-4541-B8FE-1D6A46814E98}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Debug|x64 = Debug|x64 16 | Release|Any CPU = Release|Any CPU 17 | Release|x64 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {8C7DE764-9106-421A-A70E-1651A824873C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {8C7DE764-9106-421A-A70E-1651A824873C}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {8C7DE764-9106-421A-A70E-1651A824873C}.Debug|x64.ActiveCfg = Debug|x64 23 | {8C7DE764-9106-421A-A70E-1651A824873C}.Debug|x64.Build.0 = Debug|x64 24 | {8C7DE764-9106-421A-A70E-1651A824873C}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {8C7DE764-9106-421A-A70E-1651A824873C}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {8C7DE764-9106-421A-A70E-1651A824873C}.Release|x64.ActiveCfg = Release|x64 27 | {8C7DE764-9106-421A-A70E-1651A824873C}.Release|x64.Build.0 = Release|x64 28 | {6703B03F-E152-446F-A56E-5C226D169848}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 29 | {6703B03F-E152-446F-A56E-5C226D169848}.Debug|Any CPU.Build.0 = Debug|Any CPU 30 | {6703B03F-E152-446F-A56E-5C226D169848}.Debug|x64.ActiveCfg = Debug|x64 31 | {6703B03F-E152-446F-A56E-5C226D169848}.Debug|x64.Build.0 = Debug|x64 32 | {6703B03F-E152-446F-A56E-5C226D169848}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {6703B03F-E152-446F-A56E-5C226D169848}.Release|Any CPU.Build.0 = Release|Any CPU 34 | {6703B03F-E152-446F-A56E-5C226D169848}.Release|x64.ActiveCfg = Release|x64 35 | {6703B03F-E152-446F-A56E-5C226D169848}.Release|x64.Build.0 = Release|x64 36 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 37 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Debug|Any CPU.Build.0 = Debug|Any CPU 38 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Debug|x64.ActiveCfg = Debug|Any CPU 39 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Debug|x64.Build.0 = Debug|Any CPU 40 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Release|Any CPU.ActiveCfg = Release|Any CPU 41 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Release|Any CPU.Build.0 = Release|Any CPU 42 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Release|x64.ActiveCfg = Release|Any CPU 43 | {269EC777-2D29-4541-B8FE-1D6A46814E98}.Release|x64.Build.0 = Release|Any CPU 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | GlobalSection(ExtensibilityGlobals) = postSolution 49 | SolutionGuid = {12EFCCCF-1C26-43A7-93ED-567337DCE3DE} 50 | EndGlobalSection 51 | EndGlobal 52 | -------------------------------------------------------------------------------- /Testing/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Testing/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Testing 2 | { 3 | partial class Form1 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 | 21 | base.Dispose(disposing); 22 | } 23 | 24 | #region Windows Form Designer generated code 25 | 26 | /// 27 | /// Required method for Designer support - do not modify 28 | /// the contents of this method with the code editor. 29 | /// 30 | private void InitializeComponent() 31 | { 32 | this.ComboIndex = new System.Windows.Forms.ComboBox(); 33 | this.label1 = new System.Windows.Forms.Label(); 34 | this.colorDialog1 = new System.Windows.Forms.ColorDialog(); 35 | this.button1 = new System.Windows.Forms.Button(); 36 | this.pictureBox1 = new System.Windows.Forms.PictureBox(); 37 | this.trackR = new System.Windows.Forms.TrackBar(); 38 | this.trackG = new System.Windows.Forms.TrackBar(); 39 | this.trackB = new System.Windows.Forms.TrackBar(); 40 | this.label6 = new System.Windows.Forms.Label(); 41 | this.comboLeftMode = new System.Windows.Forms.ComboBox(); 42 | this.label2 = new System.Windows.Forms.Label(); 43 | this.labelPlayerNumber = new System.Windows.Forms.Label(); 44 | this.trackBar1 = new System.Windows.Forms.TrackBar(); 45 | this.trackBar2 = new System.Windows.Forms.TrackBar(); 46 | this.label3 = new System.Windows.Forms.Label(); 47 | this.comboBox1 = new System.Windows.Forms.ComboBox(); 48 | this.label4 = new System.Windows.Forms.Label(); 49 | this.label5 = new System.Windows.Forms.Label(); 50 | this.comboBox2 = new System.Windows.Forms.ComboBox(); 51 | this.tabControl1 = new System.Windows.Forms.TabControl(); 52 | this.tabPage1 = new System.Windows.Forms.TabPage(); 53 | this.l_n_7 = new System.Windows.Forms.NumericUpDown(); 54 | this.l_n_6 = new System.Windows.Forms.NumericUpDown(); 55 | this.l_n_5 = new System.Windows.Forms.NumericUpDown(); 56 | this.l_n_4 = new System.Windows.Forms.NumericUpDown(); 57 | this.l_n_3 = new System.Windows.Forms.NumericUpDown(); 58 | this.l_n_2 = new System.Windows.Forms.NumericUpDown(); 59 | this.l_n_1 = new System.Windows.Forms.NumericUpDown(); 60 | this.l_v_7 = new System.Windows.Forms.TrackBar(); 61 | this.l_v_6 = new System.Windows.Forms.TrackBar(); 62 | this.l_v_5 = new System.Windows.Forms.TrackBar(); 63 | this.l_v_4 = new System.Windows.Forms.TrackBar(); 64 | this.l_v_3 = new System.Windows.Forms.TrackBar(); 65 | this.l_v_2 = new System.Windows.Forms.TrackBar(); 66 | this.l_v_1 = new System.Windows.Forms.TrackBar(); 67 | this.tabPage2 = new System.Windows.Forms.TabPage(); 68 | this.r_n_7 = new System.Windows.Forms.NumericUpDown(); 69 | this.r_n_6 = new System.Windows.Forms.NumericUpDown(); 70 | this.r_n_5 = new System.Windows.Forms.NumericUpDown(); 71 | this.r_n_4 = new System.Windows.Forms.NumericUpDown(); 72 | this.r_n_3 = new System.Windows.Forms.NumericUpDown(); 73 | this.r_n_2 = new System.Windows.Forms.NumericUpDown(); 74 | this.r_n_1 = new System.Windows.Forms.NumericUpDown(); 75 | this.r_v_7 = new System.Windows.Forms.TrackBar(); 76 | this.r_v_6 = new System.Windows.Forms.TrackBar(); 77 | this.r_v_5 = new System.Windows.Forms.TrackBar(); 78 | this.r_v_4 = new System.Windows.Forms.TrackBar(); 79 | this.r_v_3 = new System.Windows.Forms.TrackBar(); 80 | this.r_v_2 = new System.Windows.Forms.TrackBar(); 81 | this.r_v_1 = new System.Windows.Forms.TrackBar(); 82 | this.comboRightMode = new System.Windows.Forms.ComboBox(); 83 | this.label14 = new System.Windows.Forms.Label(); 84 | this.label7 = new System.Windows.Forms.Label(); 85 | this.trackBar3 = new System.Windows.Forms.TrackBar(); 86 | ((System.ComponentModel.ISupportInitialize) (this.pictureBox1)).BeginInit(); 87 | ((System.ComponentModel.ISupportInitialize) (this.trackR)).BeginInit(); 88 | ((System.ComponentModel.ISupportInitialize) (this.trackG)).BeginInit(); 89 | ((System.ComponentModel.ISupportInitialize) (this.trackB)).BeginInit(); 90 | ((System.ComponentModel.ISupportInitialize) (this.trackBar1)).BeginInit(); 91 | ((System.ComponentModel.ISupportInitialize) (this.trackBar2)).BeginInit(); 92 | this.tabControl1.SuspendLayout(); 93 | this.tabPage1.SuspendLayout(); 94 | ((System.ComponentModel.ISupportInitialize) (this.l_n_7)).BeginInit(); 95 | ((System.ComponentModel.ISupportInitialize) (this.l_n_6)).BeginInit(); 96 | ((System.ComponentModel.ISupportInitialize) (this.l_n_5)).BeginInit(); 97 | ((System.ComponentModel.ISupportInitialize) (this.l_n_4)).BeginInit(); 98 | ((System.ComponentModel.ISupportInitialize) (this.l_n_3)).BeginInit(); 99 | ((System.ComponentModel.ISupportInitialize) (this.l_n_2)).BeginInit(); 100 | ((System.ComponentModel.ISupportInitialize) (this.l_n_1)).BeginInit(); 101 | ((System.ComponentModel.ISupportInitialize) (this.l_v_7)).BeginInit(); 102 | ((System.ComponentModel.ISupportInitialize) (this.l_v_6)).BeginInit(); 103 | ((System.ComponentModel.ISupportInitialize) (this.l_v_5)).BeginInit(); 104 | ((System.ComponentModel.ISupportInitialize) (this.l_v_4)).BeginInit(); 105 | ((System.ComponentModel.ISupportInitialize) (this.l_v_3)).BeginInit(); 106 | ((System.ComponentModel.ISupportInitialize) (this.l_v_2)).BeginInit(); 107 | ((System.ComponentModel.ISupportInitialize) (this.l_v_1)).BeginInit(); 108 | this.tabPage2.SuspendLayout(); 109 | ((System.ComponentModel.ISupportInitialize) (this.r_n_7)).BeginInit(); 110 | ((System.ComponentModel.ISupportInitialize) (this.r_n_6)).BeginInit(); 111 | ((System.ComponentModel.ISupportInitialize) (this.r_n_5)).BeginInit(); 112 | ((System.ComponentModel.ISupportInitialize) (this.r_n_4)).BeginInit(); 113 | ((System.ComponentModel.ISupportInitialize) (this.r_n_3)).BeginInit(); 114 | ((System.ComponentModel.ISupportInitialize) (this.r_n_2)).BeginInit(); 115 | ((System.ComponentModel.ISupportInitialize) (this.r_n_1)).BeginInit(); 116 | ((System.ComponentModel.ISupportInitialize) (this.r_v_7)).BeginInit(); 117 | ((System.ComponentModel.ISupportInitialize) (this.r_v_6)).BeginInit(); 118 | ((System.ComponentModel.ISupportInitialize) (this.r_v_5)).BeginInit(); 119 | ((System.ComponentModel.ISupportInitialize) (this.r_v_4)).BeginInit(); 120 | ((System.ComponentModel.ISupportInitialize) (this.r_v_3)).BeginInit(); 121 | ((System.ComponentModel.ISupportInitialize) (this.r_v_2)).BeginInit(); 122 | ((System.ComponentModel.ISupportInitialize) (this.r_v_1)).BeginInit(); 123 | ((System.ComponentModel.ISupportInitialize) (this.trackBar3)).BeginInit(); 124 | this.SuspendLayout(); 125 | // 126 | // ComboIndex 127 | // 128 | this.ComboIndex.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 129 | this.ComboIndex.FormattingEnabled = true; 130 | this.ComboIndex.Location = new System.Drawing.Point(12, 35); 131 | this.ComboIndex.Name = "ComboIndex"; 132 | this.ComboIndex.Size = new System.Drawing.Size(121, 21); 133 | this.ComboIndex.TabIndex = 0; 134 | // 135 | // label1 136 | // 137 | this.label1.Location = new System.Drawing.Point(12, 9); 138 | this.label1.Name = "label1"; 139 | this.label1.Size = new System.Drawing.Size(100, 23); 140 | this.label1.TabIndex = 1; 141 | this.label1.Text = "Joystick"; 142 | // 143 | // button1 144 | // 145 | this.button1.Location = new System.Drawing.Point(12, 72); 146 | this.button1.Name = "button1"; 147 | this.button1.Size = new System.Drawing.Size(75, 23); 148 | this.button1.TabIndex = 2; 149 | this.button1.Text = "Color Select"; 150 | this.button1.UseVisualStyleBackColor = true; 151 | this.button1.Click += new System.EventHandler(this.button1_Click); 152 | // 153 | // pictureBox1 154 | // 155 | this.pictureBox1.Location = new System.Drawing.Point(12, 101); 156 | this.pictureBox1.Name = "pictureBox1"; 157 | this.pictureBox1.Size = new System.Drawing.Size(49, 50); 158 | this.pictureBox1.TabIndex = 3; 159 | this.pictureBox1.TabStop = false; 160 | // 161 | // trackR 162 | // 163 | this.trackR.Location = new System.Drawing.Point(67, 101); 164 | this.trackR.Maximum = 255; 165 | this.trackR.Name = "trackR"; 166 | this.trackR.Size = new System.Drawing.Size(104, 45); 167 | this.trackR.TabIndex = 4; 168 | this.trackR.ValueChanged += new System.EventHandler(this.trackR_Scroll); 169 | // 170 | // trackG 171 | // 172 | this.trackG.Location = new System.Drawing.Point(177, 101); 173 | this.trackG.Maximum = 255; 174 | this.trackG.Name = "trackG"; 175 | this.trackG.Size = new System.Drawing.Size(104, 45); 176 | this.trackG.TabIndex = 5; 177 | this.trackG.ValueChanged += new System.EventHandler(this.trackG_Scroll); 178 | // 179 | // trackB 180 | // 181 | this.trackB.Location = new System.Drawing.Point(287, 101); 182 | this.trackB.Maximum = 255; 183 | this.trackB.Name = "trackB"; 184 | this.trackB.Size = new System.Drawing.Size(104, 45); 185 | this.trackB.TabIndex = 6; 186 | this.trackB.ValueChanged += new System.EventHandler(this.trackB_Scroll); 187 | // 188 | // label6 189 | // 190 | this.label6.Location = new System.Drawing.Point(6, 3); 191 | this.label6.Name = "label6"; 192 | this.label6.Size = new System.Drawing.Size(100, 23); 193 | this.label6.TabIndex = 1; 194 | this.label6.Text = "Mode"; 195 | // 196 | // comboLeftMode 197 | // 198 | this.comboLeftMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 199 | this.comboLeftMode.FormattingEnabled = true; 200 | this.comboLeftMode.Location = new System.Drawing.Point(6, 29); 201 | this.comboLeftMode.Name = "comboLeftMode"; 202 | this.comboLeftMode.Size = new System.Drawing.Size(213, 21); 203 | this.comboLeftMode.TabIndex = 0; 204 | this.comboLeftMode.SelectedIndexChanged += new System.EventHandler(this.comboLeftMode_SelectedIndexChanged); 205 | // 206 | // label2 207 | // 208 | this.label2.Location = new System.Drawing.Point(12, 154); 209 | this.label2.Name = "label2"; 210 | this.label2.Size = new System.Drawing.Size(86, 23); 211 | this.label2.TabIndex = 8; 212 | this.label2.Text = "Player number:"; 213 | // 214 | // labelPlayerNumber 215 | // 216 | this.labelPlayerNumber.Location = new System.Drawing.Point(104, 154); 217 | this.labelPlayerNumber.Name = "labelPlayerNumber"; 218 | this.labelPlayerNumber.Size = new System.Drawing.Size(100, 23); 219 | this.labelPlayerNumber.TabIndex = 9; 220 | this.labelPlayerNumber.Text = "0"; 221 | // 222 | // trackBar1 223 | // 224 | this.trackBar1.Location = new System.Drawing.Point(12, 180); 225 | this.trackBar1.Maximum = 31; 226 | this.trackBar1.Name = "trackBar1"; 227 | this.trackBar1.Size = new System.Drawing.Size(379, 45); 228 | this.trackBar1.TabIndex = 10; 229 | this.trackBar1.Scroll += new System.EventHandler(this.trackBar1_Scroll); 230 | // 231 | // trackBar2 232 | // 233 | this.trackBar2.Location = new System.Drawing.Point(12, 239); 234 | this.trackBar2.Maximum = 2; 235 | this.trackBar2.Name = "trackBar2"; 236 | this.trackBar2.Size = new System.Drawing.Size(379, 45); 237 | this.trackBar2.TabIndex = 12; 238 | this.trackBar2.Scroll += new System.EventHandler(this.trackBar2_Scroll); 239 | // 240 | // label3 241 | // 242 | this.label3.Location = new System.Drawing.Point(12, 213); 243 | this.label3.Name = "label3"; 244 | this.label3.Size = new System.Drawing.Size(86, 23); 245 | this.label3.TabIndex = 11; 246 | this.label3.Text = "Brightness"; 247 | // 248 | // comboBox1 249 | // 250 | this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 251 | this.comboBox1.FormattingEnabled = true; 252 | this.comboBox1.Items.AddRange(new object[] {"None", "Set Player Led Brightness", "Uninterruptable Blue LED Pulse", "Both"}); 253 | this.comboBox1.Location = new System.Drawing.Point(424, 180); 254 | this.comboBox1.Name = "comboBox1"; 255 | this.comboBox1.Size = new System.Drawing.Size(352, 21); 256 | this.comboBox1.TabIndex = 13; 257 | this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); 258 | // 259 | // label4 260 | // 261 | this.label4.Location = new System.Drawing.Point(424, 154); 262 | this.label4.Name = "label4"; 263 | this.label4.Size = new System.Drawing.Size(121, 23); 264 | this.label4.TabIndex = 14; 265 | this.label4.Text = "Set Mode"; 266 | // 267 | // label5 268 | // 269 | this.label5.Location = new System.Drawing.Point(424, 213); 270 | this.label5.Name = "label5"; 271 | this.label5.Size = new System.Drawing.Size(100, 23); 272 | this.label5.TabIndex = 15; 273 | this.label5.Text = "Pulse Mode"; 274 | // 275 | // comboBox2 276 | // 277 | this.comboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 278 | this.comboBox2.FormattingEnabled = true; 279 | this.comboBox2.Items.AddRange(new object[] {"None", "Fade to Blue", "Fade Out"}); 280 | this.comboBox2.Location = new System.Drawing.Point(424, 239); 281 | this.comboBox2.Name = "comboBox2"; 282 | this.comboBox2.Size = new System.Drawing.Size(352, 21); 283 | this.comboBox2.TabIndex = 0; 284 | this.comboBox2.SelectedIndexChanged += new System.EventHandler(this.comboBox2_SelectedIndexChanged); 285 | // 286 | // tabControl1 287 | // 288 | this.tabControl1.Controls.Add(this.tabPage1); 289 | this.tabControl1.Controls.Add(this.tabPage2); 290 | this.tabControl1.Location = new System.Drawing.Point(12, 290); 291 | this.tabControl1.Name = "tabControl1"; 292 | this.tabControl1.SelectedIndex = 0; 293 | this.tabControl1.Size = new System.Drawing.Size(764, 291); 294 | this.tabControl1.TabIndex = 16; 295 | // 296 | // tabPage1 297 | // 298 | this.tabPage1.Controls.Add(this.l_n_7); 299 | this.tabPage1.Controls.Add(this.l_n_6); 300 | this.tabPage1.Controls.Add(this.l_n_5); 301 | this.tabPage1.Controls.Add(this.l_n_4); 302 | this.tabPage1.Controls.Add(this.l_n_3); 303 | this.tabPage1.Controls.Add(this.l_n_2); 304 | this.tabPage1.Controls.Add(this.l_n_1); 305 | this.tabPage1.Controls.Add(this.l_v_7); 306 | this.tabPage1.Controls.Add(this.l_v_6); 307 | this.tabPage1.Controls.Add(this.l_v_5); 308 | this.tabPage1.Controls.Add(this.l_v_4); 309 | this.tabPage1.Controls.Add(this.l_v_3); 310 | this.tabPage1.Controls.Add(this.l_v_2); 311 | this.tabPage1.Controls.Add(this.l_v_1); 312 | this.tabPage1.Controls.Add(this.comboLeftMode); 313 | this.tabPage1.Controls.Add(this.label6); 314 | this.tabPage1.Location = new System.Drawing.Point(4, 22); 315 | this.tabPage1.Name = "tabPage1"; 316 | this.tabPage1.Padding = new System.Windows.Forms.Padding(3); 317 | this.tabPage1.Size = new System.Drawing.Size(756, 265); 318 | this.tabPage1.TabIndex = 0; 319 | this.tabPage1.Text = "Left Trigger"; 320 | this.tabPage1.UseVisualStyleBackColor = true; 321 | // 322 | // l_n_7 323 | // 324 | this.l_n_7.Location = new System.Drawing.Point(531, 3); 325 | this.l_n_7.Maximum = new decimal(new int[] {255, 0, 0, 0}); 326 | this.l_n_7.Name = "l_n_7"; 327 | this.l_n_7.Size = new System.Drawing.Size(45, 20); 328 | this.l_n_7.TabIndex = 22; 329 | this.l_n_7.ValueChanged += new System.EventHandler(this.l_n_7_ValueChanged); 330 | // 331 | // l_n_6 332 | // 333 | this.l_n_6.Location = new System.Drawing.Point(480, 3); 334 | this.l_n_6.Maximum = new decimal(new int[] {255, 0, 0, 0}); 335 | this.l_n_6.Name = "l_n_6"; 336 | this.l_n_6.Size = new System.Drawing.Size(45, 20); 337 | this.l_n_6.TabIndex = 21; 338 | this.l_n_6.ValueChanged += new System.EventHandler(this.l_n_6_ValueChanged); 339 | // 340 | // l_n_5 341 | // 342 | this.l_n_5.Location = new System.Drawing.Point(429, 3); 343 | this.l_n_5.Maximum = new decimal(new int[] {255, 0, 0, 0}); 344 | this.l_n_5.Name = "l_n_5"; 345 | this.l_n_5.Size = new System.Drawing.Size(45, 20); 346 | this.l_n_5.TabIndex = 20; 347 | this.l_n_5.ValueChanged += new System.EventHandler(this.l_n_5_ValueChanged); 348 | // 349 | // l_n_4 350 | // 351 | this.l_n_4.Location = new System.Drawing.Point(378, 3); 352 | this.l_n_4.Maximum = new decimal(new int[] {255, 0, 0, 0}); 353 | this.l_n_4.Name = "l_n_4"; 354 | this.l_n_4.Size = new System.Drawing.Size(45, 20); 355 | this.l_n_4.TabIndex = 19; 356 | this.l_n_4.ValueChanged += new System.EventHandler(this.l_n_4_ValueChanged); 357 | // 358 | // l_n_3 359 | // 360 | this.l_n_3.Location = new System.Drawing.Point(327, 3); 361 | this.l_n_3.Maximum = new decimal(new int[] {255, 0, 0, 0}); 362 | this.l_n_3.Name = "l_n_3"; 363 | this.l_n_3.Size = new System.Drawing.Size(45, 20); 364 | this.l_n_3.TabIndex = 18; 365 | this.l_n_3.ValueChanged += new System.EventHandler(this.l_n_3_ValueChanged); 366 | // 367 | // l_n_2 368 | // 369 | this.l_n_2.Location = new System.Drawing.Point(276, 3); 370 | this.l_n_2.Maximum = new decimal(new int[] {255, 0, 0, 0}); 371 | this.l_n_2.Name = "l_n_2"; 372 | this.l_n_2.Size = new System.Drawing.Size(45, 20); 373 | this.l_n_2.TabIndex = 17; 374 | this.l_n_2.ValueChanged += new System.EventHandler(this.l_n_2_ValueChanged); 375 | // 376 | // l_n_1 377 | // 378 | this.l_n_1.Location = new System.Drawing.Point(225, 3); 379 | this.l_n_1.Maximum = new decimal(new int[] {255, 0, 0, 0}); 380 | this.l_n_1.Name = "l_n_1"; 381 | this.l_n_1.Size = new System.Drawing.Size(45, 20); 382 | this.l_n_1.TabIndex = 16; 383 | this.l_n_1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged); 384 | // 385 | // l_v_7 386 | // 387 | this.l_v_7.Location = new System.Drawing.Point(531, 29); 388 | this.l_v_7.Maximum = 255; 389 | this.l_v_7.Name = "l_v_7"; 390 | this.l_v_7.Orientation = System.Windows.Forms.Orientation.Vertical; 391 | this.l_v_7.Size = new System.Drawing.Size(45, 230); 392 | this.l_v_7.TabIndex = 8; 393 | this.l_v_7.ValueChanged += new System.EventHandler(this.l_v_7_Scroll); 394 | // 395 | // l_v_6 396 | // 397 | this.l_v_6.Location = new System.Drawing.Point(480, 29); 398 | this.l_v_6.Maximum = 255; 399 | this.l_v_6.Name = "l_v_6"; 400 | this.l_v_6.Orientation = System.Windows.Forms.Orientation.Vertical; 401 | this.l_v_6.Size = new System.Drawing.Size(45, 230); 402 | this.l_v_6.TabIndex = 7; 403 | this.l_v_6.ValueChanged += new System.EventHandler(this.l_v_6_Scroll); 404 | // 405 | // l_v_5 406 | // 407 | this.l_v_5.Location = new System.Drawing.Point(429, 29); 408 | this.l_v_5.Maximum = 255; 409 | this.l_v_5.Name = "l_v_5"; 410 | this.l_v_5.Orientation = System.Windows.Forms.Orientation.Vertical; 411 | this.l_v_5.Size = new System.Drawing.Size(45, 230); 412 | this.l_v_5.TabIndex = 6; 413 | this.l_v_5.ValueChanged += new System.EventHandler(this.l_v_5_Scroll); 414 | // 415 | // l_v_4 416 | // 417 | this.l_v_4.Location = new System.Drawing.Point(378, 29); 418 | this.l_v_4.Maximum = 255; 419 | this.l_v_4.Name = "l_v_4"; 420 | this.l_v_4.Orientation = System.Windows.Forms.Orientation.Vertical; 421 | this.l_v_4.Size = new System.Drawing.Size(45, 230); 422 | this.l_v_4.TabIndex = 5; 423 | this.l_v_4.ValueChanged += new System.EventHandler(this.l_v_4_Scroll); 424 | // 425 | // l_v_3 426 | // 427 | this.l_v_3.Location = new System.Drawing.Point(327, 29); 428 | this.l_v_3.Maximum = 255; 429 | this.l_v_3.Name = "l_v_3"; 430 | this.l_v_3.Orientation = System.Windows.Forms.Orientation.Vertical; 431 | this.l_v_3.Size = new System.Drawing.Size(45, 230); 432 | this.l_v_3.TabIndex = 4; 433 | this.l_v_3.ValueChanged += new System.EventHandler(this.l_v_3_Scroll); 434 | // 435 | // l_v_2 436 | // 437 | this.l_v_2.Location = new System.Drawing.Point(276, 29); 438 | this.l_v_2.Maximum = 255; 439 | this.l_v_2.Name = "l_v_2"; 440 | this.l_v_2.Orientation = System.Windows.Forms.Orientation.Vertical; 441 | this.l_v_2.Size = new System.Drawing.Size(45, 230); 442 | this.l_v_2.TabIndex = 3; 443 | this.l_v_2.ValueChanged += new System.EventHandler(this.l_v_2_Scroll); 444 | // 445 | // l_v_1 446 | // 447 | this.l_v_1.Location = new System.Drawing.Point(225, 29); 448 | this.l_v_1.Maximum = 255; 449 | this.l_v_1.Name = "l_v_1"; 450 | this.l_v_1.Orientation = System.Windows.Forms.Orientation.Vertical; 451 | this.l_v_1.Size = new System.Drawing.Size(45, 230); 452 | this.l_v_1.TabIndex = 2; 453 | this.l_v_1.ValueChanged += new System.EventHandler(this.l_v_1_Scroll); 454 | // 455 | // tabPage2 456 | // 457 | this.tabPage2.Controls.Add(this.r_n_7); 458 | this.tabPage2.Controls.Add(this.r_n_6); 459 | this.tabPage2.Controls.Add(this.r_n_5); 460 | this.tabPage2.Controls.Add(this.r_n_4); 461 | this.tabPage2.Controls.Add(this.r_n_3); 462 | this.tabPage2.Controls.Add(this.r_n_2); 463 | this.tabPage2.Controls.Add(this.r_n_1); 464 | this.tabPage2.Controls.Add(this.r_v_7); 465 | this.tabPage2.Controls.Add(this.r_v_6); 466 | this.tabPage2.Controls.Add(this.r_v_5); 467 | this.tabPage2.Controls.Add(this.r_v_4); 468 | this.tabPage2.Controls.Add(this.r_v_3); 469 | this.tabPage2.Controls.Add(this.r_v_2); 470 | this.tabPage2.Controls.Add(this.r_v_1); 471 | this.tabPage2.Controls.Add(this.comboRightMode); 472 | this.tabPage2.Controls.Add(this.label14); 473 | this.tabPage2.Location = new System.Drawing.Point(4, 22); 474 | this.tabPage2.Name = "tabPage2"; 475 | this.tabPage2.Padding = new System.Windows.Forms.Padding(3); 476 | this.tabPage2.Size = new System.Drawing.Size(756, 265); 477 | this.tabPage2.TabIndex = 1; 478 | this.tabPage2.Text = "Right Trigger"; 479 | this.tabPage2.UseVisualStyleBackColor = true; 480 | // 481 | // r_n_7 482 | // 483 | this.r_n_7.Location = new System.Drawing.Point(528, 3); 484 | this.r_n_7.Maximum = new decimal(new int[] {255, 0, 0, 0}); 485 | this.r_n_7.Name = "r_n_7"; 486 | this.r_n_7.Size = new System.Drawing.Size(45, 20); 487 | this.r_n_7.TabIndex = 31; 488 | this.r_n_7.ValueChanged += new System.EventHandler(this.numericUpDown7_ValueChanged); 489 | // 490 | // r_n_6 491 | // 492 | this.r_n_6.Location = new System.Drawing.Point(477, 3); 493 | this.r_n_6.Maximum = new decimal(new int[] {255, 0, 0, 0}); 494 | this.r_n_6.Name = "r_n_6"; 495 | this.r_n_6.Size = new System.Drawing.Size(45, 20); 496 | this.r_n_6.TabIndex = 30; 497 | this.r_n_6.ValueChanged += new System.EventHandler(this.numericUpDown6_ValueChanged); 498 | // 499 | // r_n_5 500 | // 501 | this.r_n_5.Location = new System.Drawing.Point(426, 3); 502 | this.r_n_5.Maximum = new decimal(new int[] {255, 0, 0, 0}); 503 | this.r_n_5.Name = "r_n_5"; 504 | this.r_n_5.Size = new System.Drawing.Size(45, 20); 505 | this.r_n_5.TabIndex = 29; 506 | this.r_n_5.ValueChanged += new System.EventHandler(this.numericUpDown5_ValueChanged); 507 | // 508 | // r_n_4 509 | // 510 | this.r_n_4.Location = new System.Drawing.Point(375, 3); 511 | this.r_n_4.Maximum = new decimal(new int[] {255, 0, 0, 0}); 512 | this.r_n_4.Name = "r_n_4"; 513 | this.r_n_4.Size = new System.Drawing.Size(45, 20); 514 | this.r_n_4.TabIndex = 28; 515 | this.r_n_4.ValueChanged += new System.EventHandler(this.numericUpDown4_ValueChanged); 516 | // 517 | // r_n_3 518 | // 519 | this.r_n_3.Location = new System.Drawing.Point(324, 3); 520 | this.r_n_3.Maximum = new decimal(new int[] {255, 0, 0, 0}); 521 | this.r_n_3.Name = "r_n_3"; 522 | this.r_n_3.Size = new System.Drawing.Size(45, 20); 523 | this.r_n_3.TabIndex = 27; 524 | this.r_n_3.ValueChanged += new System.EventHandler(this.numericUpDown3_ValueChanged); 525 | // 526 | // r_n_2 527 | // 528 | this.r_n_2.Location = new System.Drawing.Point(273, 3); 529 | this.r_n_2.Maximum = new decimal(new int[] {255, 0, 0, 0}); 530 | this.r_n_2.Name = "r_n_2"; 531 | this.r_n_2.Size = new System.Drawing.Size(45, 20); 532 | this.r_n_2.TabIndex = 26; 533 | this.r_n_2.ValueChanged += new System.EventHandler(this.numericUpDown2_ValueChanged); 534 | // 535 | // r_n_1 536 | // 537 | this.r_n_1.Location = new System.Drawing.Point(222, 3); 538 | this.r_n_1.Maximum = new decimal(new int[] {255, 0, 0, 0}); 539 | this.r_n_1.Name = "r_n_1"; 540 | this.r_n_1.Size = new System.Drawing.Size(45, 20); 541 | this.r_n_1.TabIndex = 25; 542 | this.r_n_1.ValueChanged += new System.EventHandler(this.numericUpDown1_ValueChanged_1); 543 | // 544 | // r_v_7 545 | // 546 | this.r_v_7.Location = new System.Drawing.Point(528, 29); 547 | this.r_v_7.Maximum = 255; 548 | this.r_v_7.Name = "r_v_7"; 549 | this.r_v_7.Orientation = System.Windows.Forms.Orientation.Vertical; 550 | this.r_v_7.Size = new System.Drawing.Size(45, 230); 551 | this.r_v_7.TabIndex = 24; 552 | this.r_v_7.ValueChanged += new System.EventHandler(this.r_v_7_Scroll); 553 | // 554 | // r_v_6 555 | // 556 | this.r_v_6.Location = new System.Drawing.Point(477, 29); 557 | this.r_v_6.Maximum = 255; 558 | this.r_v_6.Name = "r_v_6"; 559 | this.r_v_6.Orientation = System.Windows.Forms.Orientation.Vertical; 560 | this.r_v_6.Size = new System.Drawing.Size(45, 230); 561 | this.r_v_6.TabIndex = 23; 562 | this.r_v_6.ValueChanged += new System.EventHandler(this.r_v_6_Scroll); 563 | // 564 | // r_v_5 565 | // 566 | this.r_v_5.Location = new System.Drawing.Point(426, 29); 567 | this.r_v_5.Maximum = 255; 568 | this.r_v_5.Name = "r_v_5"; 569 | this.r_v_5.Orientation = System.Windows.Forms.Orientation.Vertical; 570 | this.r_v_5.Size = new System.Drawing.Size(45, 230); 571 | this.r_v_5.TabIndex = 22; 572 | this.r_v_5.ValueChanged += new System.EventHandler(this.r_v_5_Scroll); 573 | // 574 | // r_v_4 575 | // 576 | this.r_v_4.Location = new System.Drawing.Point(375, 29); 577 | this.r_v_4.Maximum = 255; 578 | this.r_v_4.Name = "r_v_4"; 579 | this.r_v_4.Orientation = System.Windows.Forms.Orientation.Vertical; 580 | this.r_v_4.Size = new System.Drawing.Size(45, 230); 581 | this.r_v_4.TabIndex = 21; 582 | this.r_v_4.ValueChanged += new System.EventHandler(this.r_v_4_Scroll); 583 | // 584 | // r_v_3 585 | // 586 | this.r_v_3.Location = new System.Drawing.Point(324, 29); 587 | this.r_v_3.Maximum = 255; 588 | this.r_v_3.Name = "r_v_3"; 589 | this.r_v_3.Orientation = System.Windows.Forms.Orientation.Vertical; 590 | this.r_v_3.Size = new System.Drawing.Size(45, 230); 591 | this.r_v_3.TabIndex = 20; 592 | this.r_v_3.ValueChanged += new System.EventHandler(this.r_v_3_Scroll); 593 | // 594 | // r_v_2 595 | // 596 | this.r_v_2.Location = new System.Drawing.Point(273, 29); 597 | this.r_v_2.Maximum = 255; 598 | this.r_v_2.Name = "r_v_2"; 599 | this.r_v_2.Orientation = System.Windows.Forms.Orientation.Vertical; 600 | this.r_v_2.Size = new System.Drawing.Size(45, 230); 601 | this.r_v_2.TabIndex = 19; 602 | this.r_v_2.ValueChanged += new System.EventHandler(this.r_v_2_Scroll); 603 | // 604 | // r_v_1 605 | // 606 | this.r_v_1.Location = new System.Drawing.Point(222, 29); 607 | this.r_v_1.Maximum = 255; 608 | this.r_v_1.Name = "r_v_1"; 609 | this.r_v_1.Orientation = System.Windows.Forms.Orientation.Vertical; 610 | this.r_v_1.Size = new System.Drawing.Size(45, 230); 611 | this.r_v_1.TabIndex = 18; 612 | this.r_v_1.ValueChanged += new System.EventHandler(this.r_v_1_Scroll); 613 | // 614 | // comboRightMode 615 | // 616 | this.comboRightMode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 617 | this.comboRightMode.FormattingEnabled = true; 618 | this.comboRightMode.Location = new System.Drawing.Point(3, 29); 619 | this.comboRightMode.Name = "comboRightMode"; 620 | this.comboRightMode.Size = new System.Drawing.Size(213, 21); 621 | this.comboRightMode.TabIndex = 16; 622 | this.comboRightMode.SelectedIndexChanged += new System.EventHandler(this.comboRightMode_SelectedIndexChanged); 623 | // 624 | // label14 625 | // 626 | this.label14.Location = new System.Drawing.Point(3, 3); 627 | this.label14.Name = "label14"; 628 | this.label14.Size = new System.Drawing.Size(100, 23); 629 | this.label14.TabIndex = 17; 630 | this.label14.Text = "Mode"; 631 | // 632 | // label7 633 | // 634 | this.label7.Location = new System.Drawing.Point(16, 584); 635 | this.label7.Name = "label7"; 636 | this.label7.Size = new System.Drawing.Size(100, 23); 637 | this.label7.TabIndex = 17; 638 | this.label7.Text = "Overal motors"; 639 | // 640 | // trackBar3 641 | // 642 | this.trackBar3.Location = new System.Drawing.Point(18, 608); 643 | this.trackBar3.Maximum = 7; 644 | this.trackBar3.Name = "trackBar3"; 645 | this.trackBar3.Size = new System.Drawing.Size(268, 45); 646 | this.trackBar3.TabIndex = 18; 647 | this.trackBar3.Scroll += new System.EventHandler(this.trackBar3_Scroll_1); 648 | // 649 | // Form1 650 | // 651 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 652 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 653 | this.ClientSize = new System.Drawing.Size(800, 665); 654 | this.Controls.Add(this.trackBar3); 655 | this.Controls.Add(this.label7); 656 | this.Controls.Add(this.tabControl1); 657 | this.Controls.Add(this.comboBox2); 658 | this.Controls.Add(this.label5); 659 | this.Controls.Add(this.label4); 660 | this.Controls.Add(this.comboBox1); 661 | this.Controls.Add(this.trackBar2); 662 | this.Controls.Add(this.label3); 663 | this.Controls.Add(this.trackBar1); 664 | this.Controls.Add(this.labelPlayerNumber); 665 | this.Controls.Add(this.label2); 666 | this.Controls.Add(this.trackB); 667 | this.Controls.Add(this.trackG); 668 | this.Controls.Add(this.trackR); 669 | this.Controls.Add(this.pictureBox1); 670 | this.Controls.Add(this.button1); 671 | this.Controls.Add(this.label1); 672 | this.Controls.Add(this.ComboIndex); 673 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; 674 | this.MaximizeBox = false; 675 | this.Name = "Form1"; 676 | this.Text = "Form1"; 677 | this.Load += new System.EventHandler(this.Form1_Load); 678 | ((System.ComponentModel.ISupportInitialize) (this.pictureBox1)).EndInit(); 679 | ((System.ComponentModel.ISupportInitialize) (this.trackR)).EndInit(); 680 | ((System.ComponentModel.ISupportInitialize) (this.trackG)).EndInit(); 681 | ((System.ComponentModel.ISupportInitialize) (this.trackB)).EndInit(); 682 | ((System.ComponentModel.ISupportInitialize) (this.trackBar1)).EndInit(); 683 | ((System.ComponentModel.ISupportInitialize) (this.trackBar2)).EndInit(); 684 | this.tabControl1.ResumeLayout(false); 685 | this.tabPage1.ResumeLayout(false); 686 | this.tabPage1.PerformLayout(); 687 | ((System.ComponentModel.ISupportInitialize) (this.l_n_7)).EndInit(); 688 | ((System.ComponentModel.ISupportInitialize) (this.l_n_6)).EndInit(); 689 | ((System.ComponentModel.ISupportInitialize) (this.l_n_5)).EndInit(); 690 | ((System.ComponentModel.ISupportInitialize) (this.l_n_4)).EndInit(); 691 | ((System.ComponentModel.ISupportInitialize) (this.l_n_3)).EndInit(); 692 | ((System.ComponentModel.ISupportInitialize) (this.l_n_2)).EndInit(); 693 | ((System.ComponentModel.ISupportInitialize) (this.l_n_1)).EndInit(); 694 | ((System.ComponentModel.ISupportInitialize) (this.l_v_7)).EndInit(); 695 | ((System.ComponentModel.ISupportInitialize) (this.l_v_6)).EndInit(); 696 | ((System.ComponentModel.ISupportInitialize) (this.l_v_5)).EndInit(); 697 | ((System.ComponentModel.ISupportInitialize) (this.l_v_4)).EndInit(); 698 | ((System.ComponentModel.ISupportInitialize) (this.l_v_3)).EndInit(); 699 | ((System.ComponentModel.ISupportInitialize) (this.l_v_2)).EndInit(); 700 | ((System.ComponentModel.ISupportInitialize) (this.l_v_1)).EndInit(); 701 | this.tabPage2.ResumeLayout(false); 702 | this.tabPage2.PerformLayout(); 703 | ((System.ComponentModel.ISupportInitialize) (this.r_n_7)).EndInit(); 704 | ((System.ComponentModel.ISupportInitialize) (this.r_n_6)).EndInit(); 705 | ((System.ComponentModel.ISupportInitialize) (this.r_n_5)).EndInit(); 706 | ((System.ComponentModel.ISupportInitialize) (this.r_n_4)).EndInit(); 707 | ((System.ComponentModel.ISupportInitialize) (this.r_n_3)).EndInit(); 708 | ((System.ComponentModel.ISupportInitialize) (this.r_n_2)).EndInit(); 709 | ((System.ComponentModel.ISupportInitialize) (this.r_n_1)).EndInit(); 710 | ((System.ComponentModel.ISupportInitialize) (this.r_v_7)).EndInit(); 711 | ((System.ComponentModel.ISupportInitialize) (this.r_v_6)).EndInit(); 712 | ((System.ComponentModel.ISupportInitialize) (this.r_v_5)).EndInit(); 713 | ((System.ComponentModel.ISupportInitialize) (this.r_v_4)).EndInit(); 714 | ((System.ComponentModel.ISupportInitialize) (this.r_v_3)).EndInit(); 715 | ((System.ComponentModel.ISupportInitialize) (this.r_v_2)).EndInit(); 716 | ((System.ComponentModel.ISupportInitialize) (this.r_v_1)).EndInit(); 717 | ((System.ComponentModel.ISupportInitialize) (this.trackBar3)).EndInit(); 718 | this.ResumeLayout(false); 719 | this.PerformLayout(); 720 | } 721 | 722 | private System.Windows.Forms.Button button1; 723 | private System.Windows.Forms.ColorDialog colorDialog1; 724 | private System.Windows.Forms.ComboBox comboBox1; 725 | private System.Windows.Forms.ComboBox comboBox2; 726 | private System.Windows.Forms.ComboBox ComboIndex; 727 | private System.Windows.Forms.ComboBox comboLeftMode; 728 | private System.Windows.Forms.ComboBox comboRightMode; 729 | private System.Windows.Forms.NumericUpDown l_n_1; 730 | private System.Windows.Forms.NumericUpDown l_n_2; 731 | private System.Windows.Forms.NumericUpDown l_n_3; 732 | private System.Windows.Forms.NumericUpDown l_n_4; 733 | private System.Windows.Forms.NumericUpDown l_n_5; 734 | private System.Windows.Forms.NumericUpDown l_n_6; 735 | private System.Windows.Forms.NumericUpDown l_n_7; 736 | private System.Windows.Forms.TrackBar l_v_1; 737 | private System.Windows.Forms.TrackBar l_v_2; 738 | private System.Windows.Forms.TrackBar l_v_3; 739 | private System.Windows.Forms.TrackBar l_v_4; 740 | private System.Windows.Forms.TrackBar l_v_5; 741 | private System.Windows.Forms.TrackBar l_v_6; 742 | private System.Windows.Forms.TrackBar l_v_7; 743 | private System.Windows.Forms.Label label1; 744 | private System.Windows.Forms.Label label14; 745 | private System.Windows.Forms.Label label2; 746 | private System.Windows.Forms.Label label3; 747 | private System.Windows.Forms.Label label4; 748 | private System.Windows.Forms.Label label5; 749 | private System.Windows.Forms.Label label6; 750 | private System.Windows.Forms.Label label7; 751 | private System.Windows.Forms.Label labelPlayerNumber; 752 | private System.Windows.Forms.PictureBox pictureBox1; 753 | private System.Windows.Forms.NumericUpDown r_n_1; 754 | private System.Windows.Forms.NumericUpDown r_n_2; 755 | private System.Windows.Forms.NumericUpDown r_n_3; 756 | private System.Windows.Forms.NumericUpDown r_n_4; 757 | private System.Windows.Forms.NumericUpDown r_n_5; 758 | private System.Windows.Forms.NumericUpDown r_n_6; 759 | private System.Windows.Forms.NumericUpDown r_n_7; 760 | private System.Windows.Forms.TrackBar r_v_1; 761 | private System.Windows.Forms.TrackBar r_v_2; 762 | private System.Windows.Forms.TrackBar r_v_3; 763 | private System.Windows.Forms.TrackBar r_v_4; 764 | private System.Windows.Forms.TrackBar r_v_5; 765 | private System.Windows.Forms.TrackBar r_v_6; 766 | private System.Windows.Forms.TrackBar r_v_7; 767 | private System.Windows.Forms.TabControl tabControl1; 768 | private System.Windows.Forms.TabPage tabPage1; 769 | private System.Windows.Forms.TabPage tabPage2; 770 | private System.Windows.Forms.TrackBar trackB; 771 | private System.Windows.Forms.TrackBar trackBar1; 772 | private System.Windows.Forms.TrackBar trackBar2; 773 | private System.Windows.Forms.TrackBar trackBar3; 774 | private System.Windows.Forms.TrackBar trackG; 775 | private System.Windows.Forms.TrackBar trackR; 776 | 777 | #endregion 778 | } 779 | } -------------------------------------------------------------------------------- /Testing/Form1.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.Net; 9 | using System.Runtime.InteropServices; 10 | using System.Text; 11 | using System.Threading.Tasks; 12 | using System.Windows.Forms; 13 | using DSProject; 14 | using DualSenseSupport; 15 | using Microsoft.SqlServer.Server; 16 | 17 | namespace Testing 18 | { 19 | public partial class Form1 : Form 20 | { 21 | public Form1() 22 | { 23 | InitializeComponent(); 24 | } 25 | 26 | private void Form1_Load(object sender, EventArgs e) 27 | { 28 | // AllocConsole(); 29 | 30 | DualSenseSupport.Devices.Init(); 31 | 32 | 33 | ComboIndex.DisplayMember = "Text"; 34 | ComboIndex.ValueMember = "Value"; 35 | var list = new List(); 36 | for (int i = 0; i < DualSenseSupport.Devices.GetDeviceCount(); i++) 37 | { 38 | list.Add(new {Text = $"Input #{i}", Value = i}); 39 | } 40 | 41 | ComboIndex.DataSource = list; 42 | comboBox1.SelectedIndex = 0; 43 | comboBox2.SelectedIndex = 0; 44 | 45 | var listModes = new List(); 46 | listModes.Add(new {Text = "Off", Value = DsTrigger.Modes.Off}); 47 | listModes.Add(new {Text = "Rigid", Value = DsTrigger.Modes.Rigid}); 48 | listModes.Add(new {Text = "Pulse", Value = DsTrigger.Modes.Pulse}); 49 | listModes.Add(new {Text = "Rigid + Extra1", Value = DsTrigger.Modes.Rigid_A}); 50 | listModes.Add(new {Text = "Rigid + Extra2", Value = DsTrigger.Modes.Rigid_B}); 51 | listModes.Add(new {Text = "Rigid + Extra1 + Extra 2", Value = DsTrigger.Modes.Rigid_AB}); 52 | listModes.Add(new {Text = "Pulse + Extra1 ", Value = DsTrigger.Modes.Pulse_A}); 53 | listModes.Add(new {Text = "Pulse + Extra2 ", Value = DsTrigger.Modes.Pulse_B}); 54 | listModes.Add(new {Text = "Pulse + Extra1 + Extra 2 ", Value = DsTrigger.Modes.Pulse_AB}); 55 | listModes.Add(new {Text = "GameCube ", Value = DsTrigger.Modes.GameCube}); 56 | listModes.Add(new {Text = "Calibration ", Value = DsTrigger.Modes.Calibration}); 57 | var listModes2 = new List(); 58 | listModes2.Add(new {Text = "Off", Value = DsTrigger.Modes.Off}); 59 | listModes2.Add(new {Text = "Rigid", Value = DsTrigger.Modes.Rigid}); 60 | listModes2.Add(new {Text = "Pulse", Value = DsTrigger.Modes.Pulse}); 61 | listModes2.Add(new {Text = "Rigid + Extra1", Value = DsTrigger.Modes.Rigid_A}); 62 | listModes2.Add(new {Text = "Rigid + Extra2", Value = DsTrigger.Modes.Rigid_B}); 63 | listModes2.Add(new {Text = "Rigid + Extra1 + Extra 2", Value = DsTrigger.Modes.Rigid_AB}); 64 | listModes2.Add(new {Text = "Pulse + Extra1 ", Value = DsTrigger.Modes.Pulse_A}); 65 | listModes2.Add(new {Text = "Pulse + Extra2 ", Value = DsTrigger.Modes.Pulse_B}); 66 | listModes2.Add(new {Text = "Pulse + Extra1 + Extra 2 ", Value = DsTrigger.Modes.Pulse_AB}); 67 | listModes2.Add(new {Text = "GameCube ", Value = DsTrigger.Modes.GameCube}); 68 | listModes2.Add(new {Text = "Calibration ", Value = DsTrigger.Modes.Calibration}); 69 | comboLeftMode.DisplayMember = "Text"; 70 | comboLeftMode.ValueMember = "Value"; 71 | comboLeftMode.DataSource = listModes; 72 | comboRightMode.DisplayMember = "Text"; 73 | comboRightMode.ValueMember = "Value"; 74 | comboRightMode.DataSource = listModes2; 75 | } 76 | 77 | [DllImport("kernel32.dll", SetLastError = true)] 78 | [return: MarshalAs(UnmanagedType.Bool)] 79 | static extern bool AllocConsole(); 80 | 81 | private void button1_Click(object sender, EventArgs e) 82 | { 83 | var result = colorDialog1.ShowDialog(); 84 | if (result == DialogResult.OK) 85 | { 86 | if (SelectedDevice().HasValue) 87 | Devices.GetDevice(SelectedDevice().Value) 88 | .SetColor(colorDialog1.Color); 89 | } 90 | } 91 | 92 | private int? SelectedDevice() 93 | { 94 | return (int?) ComboIndex.SelectedValue; 95 | } 96 | 97 | private void trackR_Scroll(object sender, EventArgs e) 98 | { 99 | var color = Color.FromArgb(trackR.Value, 0, 0); 100 | 101 | trackR.BackColor = color; 102 | ChangeImage(); 103 | } 104 | 105 | private void ChangeImage() 106 | { 107 | pictureBox1.BackColor = Color.FromArgb(trackR.Value, trackG.Value, trackB.Value); 108 | if (SelectedDevice().HasValue) 109 | Devices.GetDevice(SelectedDevice().Value) 110 | .SetColor(pictureBox1.BackColor); 111 | } 112 | 113 | private void trackG_Scroll(object sender, EventArgs e) 114 | { 115 | var color = Color.FromArgb(0, trackG.Value, 0); 116 | 117 | trackG.BackColor = color; 118 | ChangeImage(); 119 | } 120 | 121 | private void trackB_Scroll(object sender, EventArgs e) 122 | { 123 | var color = Color.FromArgb(0, 0, trackB.Value); 124 | 125 | trackB.BackColor = color; 126 | ChangeImage(); 127 | } 128 | 129 | private void trackBar1_Scroll(object sender, EventArgs e) 130 | { 131 | labelPlayerNumber.Text = trackBar1.Value.ToString(); 132 | if (SelectedDevice().HasValue) 133 | Devices.GetDevice(SelectedDevice().Value) 134 | .SetPlayerNumber(trackBar1.Value); 135 | } 136 | 137 | private void trackBar2_Scroll(object sender, EventArgs e) 138 | { 139 | if (SelectedDevice().HasValue) 140 | Devices.GetDevice(SelectedDevice().Value) 141 | .SetLightBrightness(trackBar2.Value); 142 | } 143 | 144 | 145 | private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 146 | { 147 | if (comboBox1.SelectedIndex == 0) 148 | { 149 | if (SelectedDevice().HasValue) 150 | Devices.GetDevice(SelectedDevice().Value) 151 | .SetLedMode(DSLight.LedOptions.None); 152 | } 153 | 154 | if (comboBox1.SelectedIndex == 1) 155 | { 156 | if (SelectedDevice().HasValue) 157 | Devices.GetDevice(SelectedDevice().Value) 158 | .SetLedMode(DSLight.LedOptions.PlayerLedBrightnes); 159 | } 160 | 161 | if (comboBox1.SelectedIndex == 2) 162 | { 163 | if (SelectedDevice().HasValue) 164 | Devices.GetDevice(SelectedDevice().Value) 165 | .SetLedMode(DSLight.LedOptions.UninterrumpableLed); 166 | } 167 | 168 | if (comboBox1.SelectedIndex == 3) 169 | { 170 | if (SelectedDevice().HasValue) 171 | Devices.GetDevice(SelectedDevice().Value) 172 | .SetLedMode(DSLight.LedOptions.Both); 173 | } 174 | } 175 | 176 | private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) 177 | { 178 | if (comboBox1.SelectedIndex == 0) 179 | { 180 | if (SelectedDevice().HasValue) 181 | Devices.GetDevice(SelectedDevice().Value) 182 | .SetPulseMode(DSLight.PulseOptions.None); 183 | } 184 | 185 | if (comboBox1.SelectedIndex == 1) 186 | { 187 | trackB.Value=0; 188 | trackR.Value=0; 189 | trackG.Value=0; 190 | if (SelectedDevice().HasValue) 191 | Devices.GetDevice(SelectedDevice().Value) 192 | .SetPulseMode(DSLight.PulseOptions.FadeBlue); 193 | } 194 | 195 | if (comboBox1.SelectedIndex == 2) 196 | { 197 | trackB.Value=0; 198 | trackR.Value=0; 199 | trackG.Value=0; 200 | if (SelectedDevice().HasValue) 201 | Devices.GetDevice(SelectedDevice().Value) 202 | .SetPulseMode(DSLight.PulseOptions.FadeOut); 203 | } 204 | } 205 | 206 | private void comboLeftMode_SelectedIndexChanged(object sender, EventArgs e) 207 | { 208 | UpdateLeftTrigger(); 209 | } 210 | 211 | private void l_v_1_Scroll(object sender, EventArgs e) 212 | { 213 | UpdateLeftTrigger(); 214 | } 215 | 216 | private void UpdateLeftTrigger() 217 | { 218 | onChangeTrigger = true; 219 | l_n_1.Value = l_v_1.Value; 220 | l_n_2.Value = l_v_2.Value; 221 | l_n_3.Value = l_v_3.Value; 222 | l_n_4.Value = l_v_4.Value; 223 | l_n_5.Value = l_v_5.Value; 224 | l_n_6.Value = l_v_6.Value; 225 | l_n_7.Value = l_v_7.Value; 226 | onChangeTrigger = false; 227 | /*l_l_1.Text = l_v_1.Value.ToString(); 228 | l_l_2.Text = l_v_2.Value.ToString(); 229 | l_l_3.Text = l_v_3.Value.ToString(); 230 | l_l_4.Text = l_v_4.Value.ToString(); 231 | l_l_5.Text = l_v_5.Value.ToString(); 232 | l_l_6.Text = l_v_6.Value.ToString(); 233 | l_l_7.Text = l_v_7.Value.ToString();*/ 234 | 235 | if (SelectedDevice().HasValue) 236 | Devices.GetDevice(SelectedDevice().Value) 237 | .SetTriggerLeft( 238 | new DsTrigger( 239 | (DsTrigger.Modes) comboLeftMode.SelectedValue, 240 | l_v_1.Value, 241 | l_v_2.Value, 242 | l_v_3.Value, 243 | l_v_4.Value, 244 | l_v_5.Value, 245 | l_v_6.Value, 246 | l_v_7.Value 247 | )); 248 | } 249 | 250 | private void l_v_2_Scroll(object sender, EventArgs e) 251 | { 252 | UpdateLeftTrigger(); 253 | } 254 | 255 | 256 | private void l_v_4_Scroll(object sender, EventArgs e) 257 | { 258 | UpdateLeftTrigger(); 259 | } 260 | 261 | private void l_v_5_Scroll(object sender, EventArgs e) 262 | { 263 | UpdateLeftTrigger(); 264 | } 265 | 266 | private void l_v_7_Scroll(object sender, EventArgs e) 267 | { 268 | UpdateLeftTrigger(); 269 | } 270 | 271 | private void l_v_6_Scroll(object sender, EventArgs e) 272 | { 273 | UpdateLeftTrigger(); 274 | } 275 | 276 | private void l_v_3_Scroll(object sender, EventArgs e) 277 | { 278 | UpdateLeftTrigger(); 279 | } 280 | 281 | private void comboRightMode_SelectedIndexChanged(object sender, EventArgs e) 282 | { 283 | UpdateRightTrigger(); 284 | } 285 | 286 | public void UpdateRightTrigger() 287 | { 288 | onChangeTrigger = true; 289 | r_n_1.Value = r_v_1.Value; 290 | r_n_2.Value = r_v_2.Value; 291 | r_n_3.Value = r_v_3.Value; 292 | r_n_4.Value = r_v_4.Value; 293 | r_n_5.Value = r_v_5.Value; 294 | r_n_6.Value = r_v_6.Value; 295 | r_n_7.Value = r_v_7.Value; 296 | onChangeTrigger = false; 297 | /*r_l_1.Text = r_v_1.Value.ToString(); 298 | r_l_2.Text = r_v_2.Value.ToString(); 299 | r_l_3.Text = r_v_3.Value.ToString(); 300 | r_l_4.Text = r_v_4.Value.ToString(); 301 | r_l_5.Text = r_v_5.Value.ToString(); 302 | r_l_6.Text = r_v_6.Value.ToString(); 303 | r_l_7.Text = r_v_7.Value.ToString();*/ 304 | 305 | if (SelectedDevice().HasValue) 306 | Devices.GetDevice(SelectedDevice().Value) 307 | .SetTriggerRight( 308 | new DsTrigger( 309 | (DsTrigger.Modes) comboRightMode.SelectedValue, 310 | r_v_1.Value, 311 | r_v_2.Value, 312 | r_v_3.Value, 313 | r_v_4.Value, 314 | r_v_5.Value, 315 | r_v_6.Value, 316 | r_v_7.Value 317 | )); 318 | } 319 | 320 | private void r_v_1_Scroll(object sender, EventArgs e) 321 | { 322 | UpdateRightTrigger(); 323 | } 324 | 325 | private void r_v_2_Scroll(object sender, EventArgs e) 326 | { 327 | UpdateRightTrigger(); 328 | } 329 | 330 | private void r_v_3_Scroll(object sender, EventArgs e) 331 | { 332 | UpdateRightTrigger(); 333 | } 334 | 335 | private void r_v_4_Scroll(object sender, EventArgs e) 336 | { 337 | UpdateRightTrigger(); 338 | } 339 | 340 | 341 | private void r_v_5_Scroll(object sender, EventArgs e) 342 | { 343 | UpdateRightTrigger(); 344 | } 345 | 346 | private void r_v_6_Scroll(object sender, EventArgs e) 347 | { 348 | UpdateRightTrigger(); 349 | } 350 | 351 | private void r_v_7_Scroll(object sender, EventArgs e) 352 | { 353 | UpdateRightTrigger(); 354 | } 355 | 356 | private void trackBar3_Scroll(object sender, EventArgs e) 357 | { 358 | } 359 | 360 | private void trackBar3_Scroll_1(object sender, EventArgs e) 361 | { 362 | if (SelectedDevice().HasValue) 363 | Devices.GetDevice(SelectedDevice().Value) 364 | .SetOveralMotors(trackBar3.Value); 365 | } 366 | 367 | private bool onChangeTrigger = false; 368 | 369 | private void numericUpDown1_ValueChanged(object sender, EventArgs e) 370 | { 371 | if (onChangeTrigger) return; 372 | l_v_1.Value = (int) l_n_1.Value; 373 | } 374 | 375 | private void l_n_2_ValueChanged(object sender, EventArgs e) 376 | { 377 | if (onChangeTrigger) return; 378 | l_v_2.Value = (int) l_n_2.Value; 379 | } 380 | 381 | private void l_n_3_ValueChanged(object sender, EventArgs e) 382 | { 383 | if (onChangeTrigger) return; 384 | l_v_3.Value = (int) l_n_3.Value; 385 | } 386 | 387 | private void l_n_4_ValueChanged(object sender, EventArgs e) 388 | { 389 | if (onChangeTrigger) return; 390 | l_v_4.Value = (int) l_n_4.Value; 391 | } 392 | 393 | private void l_n_5_ValueChanged(object sender, EventArgs e) 394 | { 395 | if (onChangeTrigger) return; 396 | l_v_5.Value = (int) l_n_5.Value; 397 | } 398 | 399 | private void l_n_6_ValueChanged(object sender, EventArgs e) 400 | { 401 | if (onChangeTrigger) return; 402 | l_v_6.Value = (int) l_n_6.Value; 403 | } 404 | 405 | private void l_n_7_ValueChanged(object sender, EventArgs e) 406 | { 407 | if (onChangeTrigger) return; 408 | l_v_7.Value = (int) l_n_7.Value; 409 | } 410 | 411 | private void numericUpDown1_ValueChanged_1(object sender, EventArgs e) 412 | { 413 | if (onChangeTrigger) return; 414 | r_v_1.Value = (int) r_n_1.Value; 415 | } 416 | 417 | private void numericUpDown2_ValueChanged(object sender, EventArgs e) 418 | { 419 | if (onChangeTrigger) return; 420 | r_v_2.Value = (int) r_n_2.Value; 421 | } 422 | 423 | private void numericUpDown3_ValueChanged(object sender, EventArgs e) 424 | { 425 | if (onChangeTrigger) return; 426 | r_v_3.Value = (int) r_n_3.Value; 427 | } 428 | 429 | private void numericUpDown4_ValueChanged(object sender, EventArgs e) 430 | { 431 | if (onChangeTrigger) return; 432 | r_v_4.Value =(int) r_n_4.Value; 433 | } 434 | 435 | private void numericUpDown5_ValueChanged(object sender, EventArgs e) 436 | { 437 | if (onChangeTrigger) return; 438 | r_v_5.Value =(int) r_n_5.Value; 439 | } 440 | 441 | private void numericUpDown6_ValueChanged(object sender, EventArgs e) 442 | { 443 | if (onChangeTrigger) return; 444 | r_v_6.Value =(int) r_n_6.Value; 445 | } 446 | 447 | private void numericUpDown7_ValueChanged(object sender, EventArgs e) 448 | { 449 | if (onChangeTrigger) return; 450 | r_v_7.Value =(int) r_n_7.Value; 451 | } 452 | } 453 | } -------------------------------------------------------------------------------- /Testing/Form1.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 | 121 | 17, 17 122 | 123 | -------------------------------------------------------------------------------- /Testing/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Testing 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new Form1()); 20 | 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /Testing/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("Testing")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Testing")] 13 | [assembly: AssemblyCopyright("Copyright © 2020")] 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("8C7DE764-9106-421A-A70E-1651A824873C")] 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.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] -------------------------------------------------------------------------------- /Testing/Properties/Resources.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 Testing.Properties 12 | { 13 | /// 14 | /// A strongly-typed resource class, for looking up localized strings, etc. 15 | /// 16 | // This class was auto-generated by the StronglyTypedResourceBuilder 17 | // class via a tool like ResGen or Visual Studio. 18 | // To add or remove a member, edit your .ResX file then rerun ResGen 19 | // with the /str option, or rebuild your VS project. 20 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", 21 | "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources 25 | { 26 | private static global::System.Resources.ResourceManager resourceMan; 27 | 28 | private static global::System.Globalization.CultureInfo resourceCulture; 29 | 30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", 31 | "CA1811:AvoidUncalledPrivateCode")] 32 | internal Resources() 33 | { 34 | } 35 | 36 | /// 37 | /// Returns the cached ResourceManager instance used by this class. 38 | /// 39 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState 40 | .Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = 48 | new global::System.Resources.ResourceManager("Testing.Properties.Resources", 49 | typeof(Resources).Assembly); 50 | resourceMan = temp; 51 | } 52 | 53 | return resourceMan; 54 | } 55 | } 56 | 57 | /// 58 | /// Overrides the current thread's CurrentUICulture property for all 59 | /// resource lookups using this strongly typed resource class. 60 | /// 61 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState 62 | .Advanced)] 63 | internal static global::System.Globalization.CultureInfo Culture 64 | { 65 | get { return resourceCulture; } 66 | set { resourceCulture = value; } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Testing/Properties/Resources.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 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Testing/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 Testing.Properties 12 | { 13 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 14 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute( 15 | "Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 17 | { 18 | private static Settings defaultInstance = 19 | ((Settings) (global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 20 | 21 | public static Settings Default 22 | { 23 | get { return defaultInstance; } 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Testing/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Testing/Testing.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {8C7DE764-9106-421A-A70E-1651A824873C} 8 | WinExe 9 | Testing 10 | Testing 11 | v4.7.2 12 | 512 13 | true 14 | true 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | bin\x64\Debug\ 37 | x64 38 | DEBUG;TRACE 39 | full 40 | 41 | 42 | bin\x64\Release\ 43 | x64 44 | TRACE 45 | true 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | Form 63 | 64 | 65 | Form1.cs 66 | 67 | 68 | 69 | 70 | Form1.cs 71 | 72 | 73 | ResXFileCodeGenerator 74 | Resources.Designer.cs 75 | Designer 76 | 77 | 78 | True 79 | Resources.resx 80 | 81 | 82 | SettingsSingleFileGenerator 83 | Settings.Designer.cs 84 | 85 | 86 | True 87 | Settings.settings 88 | True 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | {6703b03f-e152-446f-a56e-5c226d169848} 97 | DualSenseSupport 98 | 99 | 100 | 101 | --------------------------------------------------------------------------------