mirror of
https://github.com/cemu-project/DS4Windows.git
synced 2025-01-13 16:49:08 +01:00
Merge branch 'jay' of https://github.com/Ryochan7/DS4Windows into jay
This commit is contained in:
commit
eaae76b48e
@ -1,17 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
using System.Media;
|
||||
using System.Threading.Tasks;
|
||||
using static DS4Windows.Global;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
using static DS4Windows.Global;
|
||||
using Nefarius.ViGEm.Client;
|
||||
using Nefarius.ViGEm.Client.Targets;
|
||||
using Nefarius.ViGEm.Client.Targets.Xbox360;
|
||||
using Nefarius.ViGEm.Client.Targets.DualShock4;
|
||||
|
||||
namespace DS4Windows
|
||||
{
|
||||
@ -40,6 +34,7 @@ namespace DS4Windows
|
||||
};
|
||||
*/
|
||||
Thread tempThread;
|
||||
Thread tempBusThread;
|
||||
public List<string> affectedDevs = new List<string>()
|
||||
{
|
||||
@"HID\VID_054C&PID_05C4",
|
||||
@ -154,7 +149,7 @@ namespace DS4Windows
|
||||
|
||||
//sp.Stream = DS4WinWPF.Properties.Resources.EE;
|
||||
// Cause thread affinity to not be tied to main GUI thread
|
||||
tempThread = new Thread(() => {
|
||||
tempBusThread = new Thread(() => {
|
||||
//_udpServer = new UdpServer(GetPadDetailForIdx);
|
||||
busThrRunning = true;
|
||||
|
||||
@ -174,9 +169,9 @@ namespace DS4Windows
|
||||
Monitor.Wait(busThrLck);
|
||||
}
|
||||
});
|
||||
tempThread.Priority = ThreadPriority.Normal;
|
||||
tempThread.IsBackground = true;
|
||||
tempThread.Start();
|
||||
tempBusThread.Priority = ThreadPriority.Normal;
|
||||
tempBusThread.IsBackground = true;
|
||||
tempBusThread.Start();
|
||||
//while (_udpServer == null)
|
||||
//{
|
||||
// Thread.SpinWait(500);
|
||||
@ -353,17 +348,12 @@ namespace DS4Windows
|
||||
{
|
||||
Thread.SpinWait(500);
|
||||
}
|
||||
|
||||
tempThread = null;
|
||||
}
|
||||
|
||||
private void stopViGEm()
|
||||
{
|
||||
if (tempThread != null)
|
||||
{
|
||||
tempThread.Interrupt();
|
||||
tempThread.Join();
|
||||
tempThread = null;
|
||||
}
|
||||
|
||||
if (vigemTestClient != null)
|
||||
{
|
||||
vigemTestClient.Dispose();
|
||||
|
@ -47,9 +47,8 @@ Scan Code: Keys are interpreted differently. May be needed for certain games
|
||||
</StackPanel>
|
||||
<Label Content="Translators:" Margin="0,20,0,0" />
|
||||
</StackPanel>
|
||||
<TextBox DockPanel.Dock="Bottom" VerticalScrollBarVisibility="Auto" Margin="10,0,10,10">
|
||||
|
||||
</TextBox>
|
||||
<TextBox TextWrapping="Wrap" xml:space="preserve" IsReadOnly="True"
|
||||
DockPanel.Dock="Bottom" VerticalScrollBarVisibility="Auto" Margin="10,0,10,10">Ryochan7 - Japanese</TextBox>
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="Tip">
|
||||
|
@ -252,6 +252,7 @@ Properties.Resources.DS4Update, MessageBoxButton.YesNo, MessageBoxImage.Question
|
||||
trayIconVM.ProfileSelected += TrayIconVM_ProfileSelected;
|
||||
trayIconVM.RequestMinimize += TrayIconVM_RequestMinimize;
|
||||
trayIconVM.RequestOpen += TrayIconVM_RequestOpen;
|
||||
trayIconVM.RequestServiceChange += TrayIconVM_RequestServiceChange;
|
||||
autoProfControl.AutoDebugChanged += AutoProfControl_AutoDebugChanged;
|
||||
autoprofileChecker.RequestServiceChange += AutoprofileChecker_RequestServiceChange;
|
||||
autoProfileHolder.AutoProfileColl.CollectionChanged += AutoProfileColl_CollectionChanged;
|
||||
@ -287,6 +288,11 @@ Suspend support not enabled.", true);
|
||||
}
|
||||
}
|
||||
|
||||
private void TrayIconVM_RequestServiceChange(object sender, EventArgs e)
|
||||
{
|
||||
ChangeService();
|
||||
}
|
||||
|
||||
private void LogItems_CollectionChanged(object sender,
|
||||
System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using DS4Windows;
|
||||
|
||||
@ -15,6 +17,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
public const string ballonTitle = "DS4Windows";
|
||||
public static string trayTitle = $"DS4Windows v{Global.exeversion}";
|
||||
private ContextMenu contextMenu;
|
||||
private MenuItem changeServiceItem;
|
||||
|
||||
public string TooltipText { get => tooltipText;
|
||||
set
|
||||
@ -43,6 +46,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
public event EventHandler RequestShutdown;
|
||||
public event EventHandler RequestOpen;
|
||||
public event EventHandler RequestMinimize;
|
||||
public event EventHandler RequestServiceChange;
|
||||
|
||||
private ReaderWriterLockSlim _colLocker = new ReaderWriterLockSlim();
|
||||
private List<ControllerHolder> controllerList = new List<ControllerHolder>();
|
||||
@ -59,8 +63,11 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
this.profileListHolder = profileListHolder;
|
||||
this.controlService = service;
|
||||
contextMenu = new ContextMenu();
|
||||
iconSource = Global.UseWhiteIcon ? "/DS4Windows;component/Resources/DS4W - White.ico" :
|
||||
"/DS4Windows;component/Resources/DS4W.ico";
|
||||
iconSource = Global.UseWhiteIcon ? ICON_WHITE : ICON_COLOR;
|
||||
changeServiceItem = new MenuItem() { Header = "Start",
|
||||
FontWeight = FontWeights.Bold };
|
||||
changeServiceItem.Click += ChangeControlServiceItem_Click;
|
||||
changeServiceItem.IsEnabled = false;
|
||||
|
||||
PopulateControllerList();
|
||||
PopulateToolText();
|
||||
@ -74,6 +81,7 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
service.PreServiceStop += ClearToolText;
|
||||
service.PreServiceStop += UnhookEvents;
|
||||
service.PreServiceStop += ClearControllerList;
|
||||
service.RunningChanged += Service_RunningChanged;
|
||||
service.HotplugController += Service_HotplugController;
|
||||
/*tester.StartControllers += HookBatteryUpdate;
|
||||
tester.StartControllers += StartPopulateText;
|
||||
@ -83,6 +91,16 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
*/
|
||||
}
|
||||
|
||||
private void Service_RunningChanged(object sender, EventArgs e)
|
||||
{
|
||||
string temp = controlService.running ? "Stop" : "Start";
|
||||
App.Current.Dispatcher.BeginInvoke((Action)(() =>
|
||||
{
|
||||
changeServiceItem.Header = temp;
|
||||
changeServiceItem.IsEnabled = true;
|
||||
}));
|
||||
}
|
||||
|
||||
private void ClearControllerList(object sender, EventArgs e)
|
||||
{
|
||||
_colLocker.EnterWriteLock();
|
||||
@ -173,18 +191,34 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
|
||||
items.Add(item);
|
||||
items.Add(new Separator());
|
||||
item = changeServiceItem;
|
||||
items.Add(item);
|
||||
item = new MenuItem() { Header = "Open" };
|
||||
item.Click += OpenMenuItem_Click;
|
||||
items.Add(item);
|
||||
item = new MenuItem() { Header = "Minimize" };
|
||||
item.Click += MinimizeMenuItem_Click;
|
||||
items.Add(item);
|
||||
item = new MenuItem() { Header = "Open Program Folder" };
|
||||
item.Click += OpenProgramFolderItem_Click;
|
||||
items.Add(item);
|
||||
items.Add(new Separator());
|
||||
item = new MenuItem() { Header = "Exit (Middle Mouse)" };
|
||||
item.Click += ExitMenuItem_Click;
|
||||
items.Add(item);
|
||||
}
|
||||
|
||||
private void ChangeControlServiceItem_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
changeServiceItem.IsEnabled = false;
|
||||
RequestServiceChange?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
private void OpenProgramFolderItem_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
Process.Start(Global.exedirpath);
|
||||
}
|
||||
|
||||
private void OpenMenuItem_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
RequestOpen?.Invoke(this, EventArgs.Empty);
|
||||
@ -340,7 +374,10 @@ namespace DS4WinWPF.DS4Forms.ViewModels
|
||||
{
|
||||
contextMenu.Items.Clear();
|
||||
ItemCollection items = contextMenu.Items;
|
||||
MenuItem item = new MenuItem() { Header = "Open" };
|
||||
MenuItem item;
|
||||
item = changeServiceItem;
|
||||
items.Add(item);
|
||||
item = new MenuItem() { Header = "Open" };
|
||||
item.Click += OpenMenuItem_Click;
|
||||
items.Add(item);
|
||||
item = new MenuItem() { Header = "Minimize" };
|
||||
|
@ -16,6 +16,7 @@ namespace DS4WinWPF.DS4Forms
|
||||
private const string InstallerDL =
|
||||
"https://github.com/ViGEm/ViGEmBus/releases/download/v1.16.112/ViGEmBus_Setup_1.16.115.exe";
|
||||
private const string InstFileName = "ViGEmBus_Setup_1.16.115.exe";
|
||||
private string tempInstFileName;
|
||||
|
||||
Process monitorProc;
|
||||
NonFormTimer monitorTimer;
|
||||
@ -30,6 +31,8 @@ namespace DS4WinWPF.DS4Forms
|
||||
}
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
tempInstFileName = DS4Windows.Global.exedirpath + $"\\{InstFileName}.tmp";
|
||||
}
|
||||
|
||||
private void FinishedBtn_Click(object sender, RoutedEventArgs e)
|
||||
@ -44,6 +47,11 @@ namespace DS4WinWPF.DS4Forms
|
||||
File.Delete(DS4Windows.Global.exedirpath + $"\\{InstFileName}");
|
||||
}
|
||||
|
||||
if (File.Exists(tempInstFileName))
|
||||
{
|
||||
File.Delete(tempInstFileName);
|
||||
}
|
||||
|
||||
ViGEmDownloadLaunch();
|
||||
|
||||
/*WebClient wb = new WebClient();
|
||||
@ -67,9 +75,17 @@ namespace DS4WinWPF.DS4Forms
|
||||
});
|
||||
|
||||
string filename = DS4Windows.Global.exedirpath + $"\\{InstFileName}";
|
||||
using (var downloadStream = new FileStream(filename, FileMode.CreateNew))
|
||||
bool success = false;
|
||||
using (var downloadStream = new FileStream(tempInstFileName, FileMode.CreateNew))
|
||||
{
|
||||
HttpResponseMessage response = await App.requestClient.GetAsync(InstallerDL, downloadStream, progress);
|
||||
HttpResponseMessage response = await App.requestClient.GetAsync(InstallerDL,
|
||||
downloadStream, progress);
|
||||
success = response.IsSuccessStatusCode;
|
||||
}
|
||||
|
||||
if (success)
|
||||
{
|
||||
File.Move(tempInstFileName, filename);
|
||||
}
|
||||
|
||||
if (File.Exists(DS4Windows.Global.exedirpath + $"\\{InstFileName}"))
|
||||
|
@ -474,7 +474,7 @@
|
||||
<PostBuildEvent>rem Copy compiled l18n assemblies to alt folder
|
||||
GOTO END
|
||||
if not exist $(TargetDir)Lang mkdir $(TargetDir)Lang
|
||||
set langs=ja
|
||||
set langs=ja ru
|
||||
|
||||
for %25%25l in (%25langs%25) do (
|
||||
xcopy $(TargetDir)%25%25l $(TargetDir)Lang\%25%25l\ /s /y
|
||||
|
@ -51,7 +51,7 @@ using System.Windows;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("2.0.0")]
|
||||
[assembly: AssemblyFileVersion("2.0.0")]
|
||||
[assembly: AssemblyVersion("2.0.1")]
|
||||
[assembly: AssemblyFileVersion("2.0.1")]
|
||||
[assembly: NeutralResourcesLanguage("")]
|
||||
[assembly: Guid("a52b5b20-d9ee-4f32-8518-307fa14aa0c6")]
|
||||
|
@ -1 +1 @@
|
||||
2.0.0
|
||||
2.0.1
|
||||
|
12
TODO.md
12
TODO.md
@ -1,16 +1,6 @@
|
||||
# TODO
|
||||
|
||||
* Add maximum stick output limit in some way
|
||||
* ~~Check Options save~~
|
||||
* ~~Check TouchpadInvert setting~~
|
||||
* Add cross dead zone (per axis) for sticks
|
||||
* ~~Add more curve options~~
|
||||
* ~~Transition to use Visual Studio 2019~~
|
||||
* ~~Re-evaluate HidGuardian~~
|
||||
* ~~Move forms to new namespace~~
|
||||
* ~~Finalize DS4 Emulation~~
|
||||
* ~~Raise Sixaxis default dead zones~~
|
||||
* ~~Evaluate latest ViGEmBus driver and update download URL~~
|
||||
* ~~Remove old welcome dialog and make new driver installer executable.
|
||||
Use newer standards (WPF) and bundle app with DS4Windows~~
|
||||
* Add some preset context menus back (sticks, dpad)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user