Merge pull request #8 from Ryochan7/jay

Merge changes from Ryochan7/DS4Windows
This commit is contained in:
Yuki-nyan 2018-06-23 21:09:39 +01:00 committed by GitHub
commit cf5ea7a5f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
198 changed files with 39322 additions and 24357 deletions

5
.gitignore vendored
View File

@ -97,7 +97,7 @@ publish/
# NuGet Packages Directory # NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/ packages/
# Windows Azure Build Output # Windows Azure Build Output
csx csx
@ -154,3 +154,6 @@ $RECYCLE.BIN/
# Mac desktop service store files # Mac desktop service store files
.DS_Store .DS_Store
.vs/

File diff suppressed because it is too large Load Diff

View File

@ -9,18 +9,24 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64 Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64 Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.Build.0 = Debug|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.ActiveCfg = Debug|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.ActiveCfg = Debug|x64
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.Build.0 = Debug|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x64.Build.0 = Debug|x64
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x86.ActiveCfg = Debug|x86
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Debug|x86.Build.0 = Debug|x86
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.Build.0 = Release|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|Any CPU.Build.0 = Release|Any CPU
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.ActiveCfg = Release|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.ActiveCfg = Release|x64
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.Build.0 = Release|Any CPU {7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x64.Build.0 = Release|x64
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x86.ActiveCfg = Release|x86
{7B9354BF-AF82-4CCB-A83D-4BEB1E9D8C96}.Release|x86.Build.0 = Release|x86
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,851 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
using System.Media;
using System.Threading.Tasks;
using static DS4Windows.Global;
namespace DS4Windows
{
public class ControlService
{
public X360Device x360Bus;
public DS4Device[] DS4Controllers = new DS4Device[4];
public Mouse[] touchPad = new Mouse[4];
private bool running = false;
private DS4State[] MappedState = new DS4State[4];
private DS4State[] CurrentState = new DS4State[4];
private DS4State[] PreviousState = new DS4State[4];
public DS4StateExposed[] ExposedState = new DS4StateExposed[4];
public bool recordingMacro = false;
public event EventHandler<DebugEventArgs> Debug = null;
public bool eastertime = false;
private int eCode = 0;
bool[] buttonsdown = { false, false, false, false };
List<DS4Controls> dcs = new List<DS4Controls>();
bool[] held = new bool[4];
int[] oldmouse = new int[4] { -1, -1, -1, -1 };
SoundPlayer sp = new SoundPlayer();
private class X360Data
{
public byte[] Report = new byte[28];
public byte[] Rumble = new byte[8];
}
private X360Data[] processingData = new X360Data[4];
public ControlService()
{
sp.Stream = Properties.Resources.EE;
x360Bus = new X360Device();
AddtoDS4List();
for (int i = 0; i < DS4Controllers.Length; i++)
{
processingData[i] = new X360Data();
MappedState[i] = new DS4State();
CurrentState[i] = new DS4State();
PreviousState[i] = new DS4State();
ExposedState[i] = new DS4StateExposed(CurrentState[i]);
}
}
void AddtoDS4List()
{
dcs.Add(DS4Controls.Cross);
dcs.Add(DS4Controls.Cross);
dcs.Add(DS4Controls.Circle);
dcs.Add(DS4Controls.Square);
dcs.Add(DS4Controls.Triangle);
dcs.Add(DS4Controls.Options);
dcs.Add(DS4Controls.Share);
dcs.Add(DS4Controls.DpadUp);
dcs.Add(DS4Controls.DpadDown);
dcs.Add(DS4Controls.DpadLeft);
dcs.Add(DS4Controls.DpadRight);
dcs.Add(DS4Controls.PS);
dcs.Add(DS4Controls.L1);
dcs.Add(DS4Controls.R1);
dcs.Add(DS4Controls.L2);
dcs.Add(DS4Controls.R2);
dcs.Add(DS4Controls.L3);
dcs.Add(DS4Controls.R3);
dcs.Add(DS4Controls.LXPos);
dcs.Add(DS4Controls.LXNeg);
dcs.Add(DS4Controls.LYPos);
dcs.Add(DS4Controls.LYNeg);
dcs.Add(DS4Controls.RXPos);
dcs.Add(DS4Controls.RXNeg);
dcs.Add(DS4Controls.RYPos);
dcs.Add(DS4Controls.RYNeg);
dcs.Add(DS4Controls.SwipeUp);
dcs.Add(DS4Controls.SwipeDown);
dcs.Add(DS4Controls.SwipeLeft);
dcs.Add(DS4Controls.SwipeRight);
}
private async void WarnExclusiveModeFailure(DS4Device device)
{
if (DS4Devices.isExclusiveMode && !device.IsExclusive)
{
await System.Threading.Tasks.Task.Delay(5);
String message = Properties.Resources.CouldNotOpenDS4.Replace("*Mac address*", device.MacAddress) + " " + Properties.Resources.QuitOtherPrograms;
LogDebug(message, true);
Log.LogToTray(message, true);
}
}
public bool Start(bool showlog = true)
{
if (x360Bus.Open() && x360Bus.Start())
{
if (showlog)
LogDebug(Properties.Resources.Starting);
DS4Devices.isExclusiveMode = UseExclusiveMode;
if (showlog)
{
LogDebug(Properties.Resources.SearchingController);
LogDebug(DS4Devices.isExclusiveMode ? Properties.Resources.UsingExclusive: Properties.Resources.UsingShared);
}
try
{
DS4Devices.findControllers();
IEnumerable<DS4Device> devices = DS4Devices.getDS4Controllers();
int ind = 0;
DS4LightBar.defualtLight = false;
foreach (DS4Device device in devices)
{
if (showlog)
LogDebug(Properties.Resources.FoundController + device.MacAddress + " (" + device.ConnectionType + ")");
WarnExclusiveModeFailure(device);
DS4Controllers[ind] = device;
device.Removal -= DS4Devices.On_Removal;
device.Removal += this.On_DS4Removal;
device.Removal += DS4Devices.On_Removal;
touchPad[ind] = new Mouse(ind, device);
device.LightBarColor = MainColor[ind];
if (!DinputOnly[ind])
x360Bus.Plugin(ind);
device.Report += this.On_Report;
TouchPadOn(ind, device);
//string filename = ProfilePath[ind];
ind++;
if (showlog)
if (System.IO.File.Exists(appdatapath + "\\Profiles\\" + ProfilePath[ind-1] + ".xml"))
{
string prolog = Properties.Resources.UsingProfile.Replace("*number*", ind.ToString()).Replace("*Profile name*", ProfilePath[ind-1]);
LogDebug(prolog);
Log.LogToTray(prolog);
}
else
{
string prolog = Properties.Resources.NotUsingProfile.Replace("*number*", (ind).ToString());
LogDebug(prolog);
Log.LogToTray(prolog);
}
if (ind >= 4) // out of Xinput devices!
break;
}
}
catch (Exception e)
{
LogDebug(e.Message);
Log.LogToTray(e.Message);
}
running = true;
}
return true;
}
public bool Stop(bool showlog = true)
{
if (running)
{
running = false;
if (showlog)
LogDebug(Properties.Resources.StoppingX360);
bool anyUnplugged = false;
for (int i = 0; i < DS4Controllers.Length; i++)
{
if (DS4Controllers[i] != null)
{
if (DCBTatStop && !DS4Controllers[i].Charging && showlog)
DS4Controllers[i].DisconnectBT();
else
{
DS4LightBar.forcelight[i] = false;
DS4LightBar.forcedFlash[i] = 0;
DS4LightBar.defualtLight = true;
DS4LightBar.updateLightBar(DS4Controllers[i], i, CurrentState[i], ExposedState[i], touchPad[i]);
System.Threading.Thread.Sleep(50);
}
CurrentState[i].Battery = PreviousState[i].Battery = 0; // Reset for the next connection's initial status change.
x360Bus.Unplug(i);
anyUnplugged = true;
DS4Controllers[i] = null;
touchPad[i] = null;
}
}
if (anyUnplugged)
System.Threading.Thread.Sleep(XINPUT_UNPLUG_SETTLE_TIME);
x360Bus.UnplugAll();
x360Bus.Stop();
if (showlog)
LogDebug(Properties.Resources.StoppingDS4);
DS4Devices.stopControllers();
if (showlog)
LogDebug(Properties.Resources.StoppedDS4Windows);
ControllerStatusChanged(this);
}
return true;
}
public bool HotPlug()
{
if (running)
{
DS4Devices.findControllers();
IEnumerable<DS4Device> devices = DS4Devices.getDS4Controllers();
foreach (DS4Device device in devices)
{
if (device.IsDisconnecting)
continue;
if (((Func<bool>)delegate
{
for (Int32 Index = 0; Index < DS4Controllers.Length; Index++)
if (DS4Controllers[Index] != null && DS4Controllers[Index].MacAddress == device.MacAddress)
return true;
return false;
})())
continue;
for (Int32 Index = 0; Index < DS4Controllers.Length; Index++)
if (DS4Controllers[Index] == null)
{
LogDebug(Properties.Resources.FoundController + device.MacAddress + " (" + device.ConnectionType + ")");
WarnExclusiveModeFailure(device);
DS4Controllers[Index] = device;
device.Removal -= DS4Devices.On_Removal;
device.Removal += this.On_DS4Removal;
device.Removal += DS4Devices.On_Removal;
touchPad[Index] = new Mouse(Index, device);
device.LightBarColor = MainColor[Index];
device.Report += this.On_Report;
if (!DinputOnly[Index])
x360Bus.Plugin(Index);
TouchPadOn(Index, device);
//string filename = Path.GetFileName(ProfilePath[Index]);
if (System.IO.File.Exists(appdatapath + "\\Profiles\\" + ProfilePath[Index] + ".xml"))
{
string prolog = Properties.Resources.UsingProfile.Replace("*number*", (Index + 1).ToString()).Replace("*Profile name*", ProfilePath[Index]);
LogDebug(prolog);
Log.LogToTray(prolog);
}
else
{
string prolog = Properties.Resources.NotUsingProfile.Replace("*number*", (Index + 1).ToString());
LogDebug(prolog);
Log.LogToTray(prolog);
}
break;
}
}
}
return true;
}
public void TouchPadOn(int ind, DS4Device device)
{
ITouchpadBehaviour tPad = touchPad[ind];
device.Touchpad.TouchButtonDown += tPad.touchButtonDown;
device.Touchpad.TouchButtonUp += tPad.touchButtonUp;
device.Touchpad.TouchesBegan += tPad.touchesBegan;
device.Touchpad.TouchesMoved += tPad.touchesMoved;
device.Touchpad.TouchesEnded += tPad.touchesEnded;
device.Touchpad.TouchUnchanged += tPad.touchUnchanged;
device.SixAxis.SixAccelMoved += tPad.sixaxisMoved;
//LogDebug("Touchpad mode for " + device.MacAddress + " is now " + tmode.ToString());
//Log.LogToTray("Touchpad mode for " + device.MacAddress + " is now " + tmode.ToString());
ControllerStatusChanged(this);
}
public void TimeoutConnection(DS4Device d)
{
try
{
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
while (!d.IsAlive())
{
if (sw.ElapsedMilliseconds < 1000)
System.Threading.Thread.SpinWait(500);
//If weve been waiting less than 1 second let the thread keep its processing chunk
else
System.Threading.Thread.Sleep(500);
//If weve been waiting more than 1 second give up some resources
if (sw.ElapsedMilliseconds > 5000) throw new TimeoutException(); //Weve waited long enough
}
sw.Reset();
}
catch (TimeoutException)
{
Stop(false);
Start(false);
}
}
public string getDS4ControllerInfo(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
if (!d.IsAlive())
//return "Connecting..."; // awaiting the first battery charge indication
{
var TimeoutThread = new System.Threading.Thread(() => TimeoutConnection(d));
TimeoutThread.IsBackground = true;
TimeoutThread.Name = "TimeoutFor" + d.MacAddress.ToString();
TimeoutThread.Start();
return Properties.Resources.Connecting;
}
String battery;
if (d.Charging)
{
if (d.Battery >= 100)
battery = Properties.Resources.Charged;
else
battery = Properties.Resources.Charging.Replace("*number*", d.Battery.ToString());
}
else
{
battery = Properties.Resources.Battery.Replace("*number*", d.Battery.ToString());
}
return d.MacAddress + " (" + d.ConnectionType + "), " + battery;
//return d.MacAddress + " (" + d.ConnectionType + "), Battery is " + battery + ", Touchpad in " + modeSwitcher[index].ToString();
}
else
return String.Empty;
}
public string getDS4MacAddress(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
if (!d.IsAlive())
//return "Connecting..."; // awaiting the first battery charge indication
{
var TimeoutThread = new System.Threading.Thread(() => TimeoutConnection(d));
TimeoutThread.IsBackground = true;
TimeoutThread.Name = "TimeoutFor" + d.MacAddress.ToString();
TimeoutThread.Start();
return Properties.Resources.Connecting;
}
return d.MacAddress;
}
else
return String.Empty;
}
public string getShortDS4ControllerInfo(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
String battery;
if (!d.IsAlive())
battery = "...";
if (d.Charging)
{
if (d.Battery >= 100)
battery = Properties.Resources.Full;
else
battery = d.Battery + "%+";
}
else
{
battery = d.Battery + "%";
}
return (d.ConnectionType + " " + battery);
}
else
return Properties.Resources.NoneText;
}
public string getDS4Battery(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
String battery;
if (!d.IsAlive())
battery = "...";
if (d.Charging)
{
if (d.Battery >= 100)
battery = Properties.Resources.Full;
else
battery = d.Battery + "%+";
}
else
{
battery = d.Battery + "%";
}
return battery;
}
else
return Properties.Resources.NA;
}
public string getDS4Status(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
return d.ConnectionType+"";
}
else
return Properties.Resources.NoneText;
}
private int XINPUT_UNPLUG_SETTLE_TIME = 250; // Inhibit races that occur with the asynchronous teardown of ScpVBus -> X360 driver instance.
//Called when DS4 is disconnected or timed out
protected virtual void On_DS4Removal(object sender, EventArgs e)
{
DS4Device device = (DS4Device)sender;
int ind = -1;
for (int i = 0; i < DS4Controllers.Length; i++)
if (DS4Controllers[i] != null && device.MacAddress == DS4Controllers[i].MacAddress)
ind = i;
if (ind != -1)
{
CurrentState[ind].Battery = PreviousState[ind].Battery = 0; // Reset for the next connection's initial status change.
x360Bus.Unplug(ind);
string removed = Properties.Resources.ControllerWasRemoved.Replace("*Mac address*", (ind +1).ToString());
if (DS4Controllers[ind].Battery <= 20 &&
DS4Controllers[ind].ConnectionType == ConnectionType.BT && !DS4Controllers[ind].Charging)
removed += ". " + Properties.Resources.ChargeController;
LogDebug(removed);
Log.LogToTray(removed);
System.Threading.Thread.Sleep(XINPUT_UNPLUG_SETTLE_TIME);
DS4Controllers[ind] = null;
touchPad[ind] = null;
ControllerStatusChanged(this);
}
}
public bool[] lag = { false, false, false, false };
//Called every time the new input report has arrived
protected virtual void On_Report(object sender, EventArgs e)
{
DS4Device device = (DS4Device)sender;
int ind = -1;
for (int i = 0; i < DS4Controllers.Length; i++)
if (device == DS4Controllers[i])
ind = i;
if (ind != -1)
{
if (FlushHIDQueue[ind])
device.FlushHID();
if (!string.IsNullOrEmpty(device.error))
{
LogDebug(device.error);
}
if (DateTime.UtcNow - device.firstActive > TimeSpan.FromSeconds(5))
{
if (device.Latency >= FlashWhenLateAt && !lag[ind])
LagFlashWarning(ind, true);
else if (device.Latency < FlashWhenLateAt && lag[ind])
LagFlashWarning(ind, false);
}
device.getExposedState(ExposedState[ind], CurrentState[ind]);
DS4State cState = CurrentState[ind];
device.getPreviousState(PreviousState[ind]);
DS4State pState = PreviousState[ind];
if (pState.Battery != cState.Battery)
ControllerStatusChanged(this);
CheckForHotkeys(ind, cState, pState);
if (eastertime)
EasterTime(ind);
GetInputkeys(ind);
if (LSCurve[ind] != 0 || RSCurve[ind] != 0 || LSDeadzone[ind] != 0 || RSDeadzone[ind] != 0 ||
L2Deadzone[ind] != 0 || R2Deadzone[ind] != 0 || LSSens[ind] != 0 || RSSens[ind] != 0 ||
L2Sens[ind] != 0 || R2Sens[ind] != 0) //if a curve or deadzone is in place
cState = Mapping.SetCurveAndDeadzone(ind, cState);
if (!recordingMacro && (!string.IsNullOrEmpty(tempprofilename[ind]) ||
HasCustomAction(ind) || HasCustomExtras(ind) || ProfileActions[ind].Count > 0))
{
Mapping.MapCustom(ind, cState, MappedState[ind], ExposedState[ind], touchPad[ind], this);
cState = MappedState[ind];
}
//if (HasCustomExtras(ind))
// DoExtras(ind);
// Update the GUI/whatever.
DS4LightBar.updateLightBar(device, ind, cState, ExposedState[ind], touchPad[ind]);
x360Bus.Parse(cState, processingData[ind].Report, ind);
// We push the translated Xinput state, and simultaneously we
// pull back any possible rumble data coming from Xinput consumers.
if (x360Bus.Report(processingData[ind].Report, processingData[ind].Rumble))
{
Byte Big = (Byte)(processingData[ind].Rumble[3]);
Byte Small = (Byte)(processingData[ind].Rumble[4]);
if (processingData[ind].Rumble[1] == 0x08)
{
setRumble(Big, Small, ind);
}
}
// Output any synthetic events.
Mapping.Commit(ind);
// Pull settings updates.
device.IdleTimeout = IdleDisconnectTimeout[ind];
}
}
public void LagFlashWarning(int ind, bool on)
{
if (on)
{
lag[ind] = true;
LogDebug(Properties.Resources.LatencyOverTen.Replace("*number*", (ind + 1).ToString()), true);
if (FlashWhenLate)
{
DS4Color color = new DS4Color { red = 50, green = 0, blue = 0 };
DS4LightBar.forcedColor[ind] = color;
DS4LightBar.forcedFlash[ind] = 2;
DS4LightBar.forcelight[ind] = true;
}
}
else
{
lag[ind] = false;
LogDebug(Properties.Resources.LatencyNotOverTen.Replace("*number*", (ind + 1).ToString()));
DS4LightBar.forcelight[ind] = false;
DS4LightBar.forcedFlash[ind] = 0;
}
}
/* private void DoExtras(int ind)
{
DS4State cState = CurrentState[ind];
DS4StateExposed eState = ExposedState[ind];
Mouse tp = touchPad[ind];
DS4Controls helddown = DS4Controls.None;
foreach (KeyValuePair<DS4Controls, string> p in getCustomExtras(ind))
{
if (Mapping.getBoolMapping(ind, p.Key, cState, eState, tp))
{
helddown = p.Key;
break;
}
}
if (helddown != DS4Controls.None)
{
string p = getCustomExtras(ind)[helddown];
string[] extraS = p.Split(',');
int[] extras = new int[extraS.Length];
for (int i = 0; i < extraS.Length; i++)
{
int b;
if (int.TryParse(extraS[i], out b))
extras[i] = b;
}
held[ind] = true;
try
{
if (!(extras[0] == extras[1] && extras[1] == 0))
setRumble((byte)extras[0], (byte)extras[1], ind);
if (extras[2] == 1)
{
DS4Color color = new DS4Color { red = (byte)extras[3], green = (byte)extras[4], blue = (byte)extras[5] };
DS4LightBar.forcedColor[ind] = color;
DS4LightBar.forcedFlash[ind] = (byte)extras[6];
DS4LightBar.forcelight[ind] = true;
}
if (extras[7] == 1)
{
if (oldmouse[ind] == -1)
oldmouse[ind] = ButtonMouseSensitivity[ind];
ButtonMouseSensitivity[ind] = extras[8];
}
}
catch { }
}
else if (held[ind])
{
DS4LightBar.forcelight[ind] = false;
DS4LightBar.forcedFlash[ind] = 0;
ButtonMouseSensitivity[ind] = oldmouse[ind];
oldmouse[ind] = -1;
setRumble(0, 0, ind);
held[ind] = false;
}
}*/
public void EasterTime(int ind)
{
DS4State cState = CurrentState[ind];
DS4StateExposed eState = ExposedState[ind];
Mouse tp = touchPad[ind];
bool pb = false;
foreach (DS4Controls dc in dcs)
{
if (Mapping.getBoolMapping(ind, dc, cState, eState, tp))
{
pb = true;
break;
}
}
int temp = eCode;
//Looks like you found the easter egg code, since you're already cheating,
//I scrambled the code for you :)
if (pb && !buttonsdown[ind])
{
if (cState.Cross && eCode == 9)
eCode++;
else if (!cState.Cross && eCode == 9)
eCode = 0;
else if (cState.DpadLeft && eCode == 6)
eCode++;
else if (!cState.DpadLeft && eCode == 6)
eCode = 0;
else if (cState.DpadRight && eCode == 7)
eCode++;
else if (!cState.DpadRight && eCode == 7)
eCode = 0;
else if (cState.DpadLeft && eCode == 4)
eCode++;
else if (!cState.DpadLeft && eCode == 4)
eCode = 0;
else if (cState.DpadDown && eCode == 2)
eCode++;
else if (!cState.DpadDown && eCode == 2)
eCode = 0;
else if (cState.DpadRight && eCode == 5)
eCode++;
else if (!cState.DpadRight && eCode == 5)
eCode = 0;
else if (cState.DpadUp && eCode == 1)
eCode++;
else if (!cState.DpadUp && eCode == 1)
eCode = 0;
else if (cState.DpadDown && eCode == 3)
eCode++;
else if (!cState.DpadDown && eCode == 3)
eCode = 0;
else if (cState.Circle && eCode == 8)
eCode++;
else if (!cState.Circle && eCode == 8)
eCode = 0;
if (cState.DpadUp && eCode == 0)
eCode++;
if (eCode == 10)
{
string message = "(!)";
sp.Play();
LogDebug(message, true);
eCode = 0;
}
if (temp != eCode)
Console.WriteLine(eCode);
buttonsdown[ind] = true;
}
else if (!pb)
buttonsdown[ind] = false;
}
public string GetInputkeys(int ind)
{
DS4State cState = CurrentState[ind];
DS4StateExposed eState = ExposedState[ind];
Mouse tp = touchPad[ind];
if (DS4Controllers[ind] != null)
if (Mapping.getBoolMapping(ind, DS4Controls.Cross, cState, eState, tp)) return "Cross";
else if (Mapping.getBoolMapping(ind, DS4Controls.Circle, cState, eState, tp)) return "Circle";
else if (Mapping.getBoolMapping(ind, DS4Controls.Triangle, cState, eState, tp)) return "Triangle";
else if (Mapping.getBoolMapping(ind, DS4Controls.Square, cState, eState, tp)) return "Square";
else if (Mapping.getBoolMapping(ind, DS4Controls.L1, cState, eState, tp)) return "L1";
else if (Mapping.getBoolMapping(ind, DS4Controls.R1, cState, eState, tp)) return "R1";
else if (Mapping.getBoolMapping(ind, DS4Controls.L2, cState, eState, tp)) return "L2";
else if (Mapping.getBoolMapping(ind, DS4Controls.R2, cState, eState, tp)) return "R2";
else if (Mapping.getBoolMapping(ind, DS4Controls.L3, cState, eState, tp)) return "L3";
else if (Mapping.getBoolMapping(ind, DS4Controls.R3, cState, eState, tp)) return "R3";
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadUp, cState, eState, tp)) return "Up";
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadDown, cState, eState, tp)) return "Down";
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadLeft, cState, eState, tp)) return "Left";
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadRight, cState, eState, tp)) return "Right";
else if (Mapping.getBoolMapping(ind, DS4Controls.Share, cState, eState, tp)) return "Share";
else if (Mapping.getBoolMapping(ind, DS4Controls.Options, cState, eState, tp)) return "Options";
else if (Mapping.getBoolMapping(ind, DS4Controls.PS, cState, eState, tp)) return "PS";
else if (Mapping.getBoolMapping(ind, DS4Controls.LXPos, cState, eState, tp)) return "LS Right";
else if (Mapping.getBoolMapping(ind, DS4Controls.LXNeg, cState, eState, tp)) return "LS Left";
else if (Mapping.getBoolMapping(ind, DS4Controls.LYPos, cState, eState, tp)) return "LS Down";
else if (Mapping.getBoolMapping(ind, DS4Controls.LYNeg, cState, eState, tp)) return "LS Up";
else if (Mapping.getBoolMapping(ind, DS4Controls.RXPos, cState, eState, tp)) return "RS Right";
else if (Mapping.getBoolMapping(ind, DS4Controls.RXNeg, cState, eState, tp)) return "RS Left";
else if (Mapping.getBoolMapping(ind, DS4Controls.RYPos, cState, eState, tp)) return "RS Down";
else if (Mapping.getBoolMapping(ind, DS4Controls.RYNeg, cState, eState, tp)) return "RS Up";
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchLeft, cState, eState, tp)) return "Touch Left";
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchRight, cState, eState, tp)) return "Touch Right";
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchMulti, cState, eState, tp)) return "Touch Multi";
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchUpper, cState, eState, tp)) return "Touch Upper";
return "nothing";
}
public DS4Controls GetInputkeysDS4(int ind)
{
DS4State cState = CurrentState[ind];
DS4StateExposed eState = ExposedState[ind];
Mouse tp = touchPad[ind];
if (DS4Controllers[ind] != null)
if (Mapping.getBoolMapping(ind, DS4Controls.Cross, cState, eState, tp)) return DS4Controls.Cross;
else if (Mapping.getBoolMapping(ind, DS4Controls.Circle, cState, eState, tp)) return DS4Controls.Circle;
else if (Mapping.getBoolMapping(ind, DS4Controls.Triangle, cState, eState, tp)) return DS4Controls.Triangle;
else if (Mapping.getBoolMapping(ind, DS4Controls.Square, cState, eState, tp)) return DS4Controls.Square;
else if (Mapping.getBoolMapping(ind, DS4Controls.L1, cState, eState, tp)) return DS4Controls.L1;
else if (Mapping.getBoolMapping(ind, DS4Controls.R1, cState, eState, tp)) return DS4Controls.R1;
else if (Mapping.getBoolMapping(ind, DS4Controls.L2, cState, eState, tp)) return DS4Controls.L2;
else if (Mapping.getBoolMapping(ind, DS4Controls.R2, cState, eState, tp)) return DS4Controls.R2;
else if (Mapping.getBoolMapping(ind, DS4Controls.L3, cState, eState, tp)) return DS4Controls.L3;
else if (Mapping.getBoolMapping(ind, DS4Controls.R3, cState, eState, tp)) return DS4Controls.R3;
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadUp, cState, eState, tp)) return DS4Controls.DpadUp;
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadDown, cState, eState, tp)) return DS4Controls.DpadDown;
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadLeft, cState, eState, tp)) return DS4Controls.DpadLeft;
else if (Mapping.getBoolMapping(ind, DS4Controls.DpadRight, cState, eState, tp)) return DS4Controls.DpadRight;
else if (Mapping.getBoolMapping(ind, DS4Controls.Share, cState, eState, tp)) return DS4Controls.Share;
else if (Mapping.getBoolMapping(ind, DS4Controls.Options, cState, eState, tp)) return DS4Controls.Options;
else if (Mapping.getBoolMapping(ind, DS4Controls.PS, cState, eState, tp)) return DS4Controls.PS;
else if (Mapping.getBoolMapping(ind, DS4Controls.LXPos, cState, eState, tp)) return DS4Controls.LXPos;
else if (Mapping.getBoolMapping(ind, DS4Controls.LXNeg, cState, eState, tp)) return DS4Controls.LXNeg;
else if (Mapping.getBoolMapping(ind, DS4Controls.LYPos, cState, eState, tp)) return DS4Controls.LYPos;
else if (Mapping.getBoolMapping(ind, DS4Controls.LYNeg, cState, eState, tp)) return DS4Controls.LYNeg;
else if (Mapping.getBoolMapping(ind, DS4Controls.RXPos, cState, eState, tp)) return DS4Controls.RXPos;
else if (Mapping.getBoolMapping(ind, DS4Controls.RXNeg, cState, eState, tp)) return DS4Controls.RXNeg;
else if (Mapping.getBoolMapping(ind, DS4Controls.RYPos, cState, eState, tp)) return DS4Controls.RYPos;
else if (Mapping.getBoolMapping(ind, DS4Controls.RYNeg, cState, eState, tp)) return DS4Controls.RYNeg;
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchLeft, cState, eState, tp)) return DS4Controls.TouchLeft;
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchRight, cState, eState, tp)) return DS4Controls.TouchRight;
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchMulti, cState, eState, tp)) return DS4Controls.TouchMulti;
else if (Mapping.getBoolMapping(ind, DS4Controls.TouchUpper, cState, eState, tp)) return DS4Controls.TouchUpper;
return DS4Controls.None;
}
public bool[] touchreleased = { true, true, true, true }, touchslid = { false, false, false, false };
public byte[] oldtouchvalue = { 0, 0, 0, 0 };
public int[] oldscrollvalue = { 0, 0, 0, 0 };
protected virtual void CheckForHotkeys(int deviceID, DS4State cState, DS4State pState)
{
if (!UseTPforControls[deviceID] && cState.Touch1 && pState.PS)
{
if (TouchSensitivity[deviceID] > 0 && touchreleased[deviceID])
{
oldtouchvalue[deviceID] = TouchSensitivity[deviceID];
oldscrollvalue[deviceID] = ScrollSensitivity[deviceID];
TouchSensitivity[deviceID] = 0;
ScrollSensitivity[deviceID] = 0;
LogDebug(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
Log.LogToTray(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
touchreleased[deviceID] = false;
}
else if (touchreleased[deviceID])
{
TouchSensitivity[deviceID] = oldtouchvalue[deviceID];
ScrollSensitivity[deviceID] = oldscrollvalue[deviceID];
LogDebug(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
Log.LogToTray(TouchSensitivity[deviceID] > 0 ? Properties.Resources.TouchpadMovementOn : Properties.Resources.TouchpadMovementOff);
touchreleased[deviceID] = false;
}
}
else
touchreleased[deviceID] = true;
}
public virtual void StartTPOff(int deviceID)
{
if (deviceID < 4)
{
oldtouchvalue[deviceID] = TouchSensitivity[deviceID];
oldscrollvalue[deviceID] = ScrollSensitivity[deviceID];
TouchSensitivity[deviceID] = 0;
ScrollSensitivity[deviceID] = 0;
}
}
public virtual string TouchpadSlide(int ind)
{
DS4State cState = CurrentState[ind];
string slidedir = "none";
if (DS4Controllers[ind] != null && cState.Touch2 && !(touchPad[ind].dragging || touchPad[ind].dragging2))
if (touchPad[ind].slideright && !touchslid[ind])
{
slidedir = "right";
touchslid[ind] = true;
}
else if (touchPad[ind].slideleft && !touchslid[ind])
{
slidedir = "left";
touchslid[ind] = true;
}
else if (!touchPad[ind].slideleft && !touchPad[ind].slideright)
{
slidedir = "";
touchslid[ind] = false;
}
return slidedir;
}
public virtual void LogDebug(String Data, bool warning = false)
{
Console.WriteLine(System.DateTime.Now.ToString("G") + "> " + Data);
if (Debug != null)
{
DebugEventArgs args = new DebugEventArgs(Data, warning);
OnDebug(this, args);
}
}
public virtual void OnDebug(object sender, DebugEventArgs args)
{
if (Debug != null)
Debug(this, args);
}
//sets the rumble adjusted with rumble boost
public virtual void setRumble(byte heavyMotor, byte lightMotor, int deviceNum)
{
byte boost = RumbleBoost[deviceNum];
uint lightBoosted = ((uint)lightMotor * (uint)boost) / 100;
if (lightBoosted > 255)
lightBoosted = 255;
uint heavyBoosted = ((uint)heavyMotor * (uint)boost) / 100;
if (heavyBoosted > 255)
heavyBoosted = 255;
if (deviceNum < 4)
if (DS4Controllers[deviceNum] != null)
DS4Controllers[deviceNum].setRumble((byte)lightBoosted, (byte)heavyBoosted);
}
public DS4State getDS4State(int ind)
{
return CurrentState[ind];
}
public DS4State getDS4StateMapped(int ind)
{
return MappedState[ind];
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,9 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing; using System.Drawing;
using static System.Math; using static System.Math;
using static DS4Windows.Global; using static DS4Windows.Global;
using System.Diagnostics;
namespace DS4Windows namespace DS4Windows
{ {
public class DS4LightBar public class DS4LightBar
@ -22,125 +21,219 @@ namespace DS4Windows
{ 224, 56 }, // on 80% of the time at 80, etc. { 224, 56 }, // on 80% of the time at 80, etc.
{ 252, 28 } // on 90% of the time at 90 { 252, 28 } // on 90% of the time at 90
}; };
static double[] counters = new double[4] { 0, 0, 0, 0 }; static double[] counters = new double[4] { 0, 0, 0, 0 };
public static double[] fadetimer = new double[4] { 0, 0, 0, 0 }; public static Stopwatch[] fadewatches = new Stopwatch[4]
{ new Stopwatch(), new Stopwatch(), new Stopwatch(), new Stopwatch() };
static bool[] fadedirection = new bool[4] { false, false, false, false }; static bool[] fadedirection = new bool[4] { false, false, false, false };
static DateTime oldnow = DateTime.UtcNow; static DateTime[] oldnow = new DateTime[4]
{ DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow };
public static bool[] forcelight = new bool[4] { false, false, false, false }; public static bool[] forcelight = new bool[4] { false, false, false, false };
public static DS4Color[] forcedColor = new DS4Color[4]; public static DS4Color[] forcedColor = new DS4Color[4];
public static byte[] forcedFlash = new byte[4]; public static byte[] forcedFlash = new byte[4];
public static void updateLightBar(DS4Device device, int deviceNum, DS4State cState, DS4StateExposed eState, Mouse tp) internal const int PULSE_FLASH_DURATION = 2000;
internal const double PULSE_FLASH_SEGMENTS = PULSE_FLASH_DURATION / 40;
internal const int PULSE_CHARGING_DURATION = 4000;
internal const double PULSE_CHARGING_SEGMENTS = (PULSE_CHARGING_DURATION / 40) - 2;
public static void updateLightBar(DS4Device device, int deviceNum)
{ {
DS4Color color; DS4Color color;
if (!defualtLight && !forcelight[deviceNum]) if (!defaultLight && !forcelight[deviceNum])
{ {
if (UseCustomLed[deviceNum]) if (getUseCustomLed(deviceNum))
{ {
if (LedAsBatteryIndicator[deviceNum]) if (getLedAsBatteryIndicator(deviceNum))
{ {
DS4Color fullColor = CustomColor[deviceNum]; DS4Color fullColor = getCustomColor(deviceNum);
DS4Color lowColor = LowColor[deviceNum]; DS4Color lowColor = getLowColor(deviceNum);
color = getTransitionedColor(lowColor, fullColor, device.getBattery());
color = getTransitionedColor(lowColor, fullColor, device.Battery);
} }
else else
color = CustomColor[deviceNum]; color = getCustomColor(deviceNum);
} }
else else
{ {
if (Rainbow[deviceNum] > 0) double rainbow = getRainbow(deviceNum);
{// Display rainbow if (rainbow > 0)
{
// Display rainbow
DateTime now = DateTime.UtcNow; DateTime now = DateTime.UtcNow;
if (now >= oldnow + TimeSpan.FromMilliseconds(10)) //update by the millisecond that way it's a smooth transtion if (now >= oldnow[deviceNum] + TimeSpan.FromMilliseconds(10)) //update by the millisecond that way it's a smooth transtion
{ {
oldnow = now; oldnow[deviceNum] = now;
if (device.Charging) if (device.isCharging())
counters[deviceNum] -= 1.5 * 3 / Rainbow[deviceNum]; counters[deviceNum] -= 1.5 * 3 / rainbow;
else else
counters[deviceNum] += 1.5 * 3 / Rainbow[deviceNum]; counters[deviceNum] += 1.5 * 3 / rainbow;
} }
if (counters[deviceNum] < 0) if (counters[deviceNum] < 0)
counters[deviceNum] = 180000; counters[deviceNum] = 180000;
if (counters[deviceNum] > 180000) else if (counters[deviceNum] > 180000)
counters[deviceNum] = 0; counters[deviceNum] = 0;
if (LedAsBatteryIndicator[deviceNum])
color = HuetoRGB((float)counters[deviceNum] % 360, (byte)(2.55 * device.Battery)); if (getLedAsBatteryIndicator(deviceNum))
color = HuetoRGB((float)counters[deviceNum] % 360, (byte)(device.getBattery() * 2.55));
else else
color = HuetoRGB((float)counters[deviceNum] % 360, 255); color = HuetoRGB((float)counters[deviceNum] % 360, 255);
} }
else if (LedAsBatteryIndicator[deviceNum]) else if (getLedAsBatteryIndicator(deviceNum))
{ {
//if (device.Charging == false || device.Battery >= 100) // when charged, don't show the charging animation DS4Color fullColor = getMainColor(deviceNum);
{ DS4Color lowColor = getLowColor(deviceNum);
DS4Color fullColor = MainColor[deviceNum]; color = getTransitionedColor(lowColor, fullColor, device.getBattery());
DS4Color lowColor = LowColor[deviceNum];
color = getTransitionedColor(lowColor, fullColor, (uint)device.Battery);
}
} }
else else
{ {
color = MainColor[deviceNum]; color = getMainColor(deviceNum);
}
} }
} if (device.getBattery() <= getFlashAt(deviceNum) && !defaultLight && !device.isCharging())
{
DS4Color flashColor = getFlashColor(deviceNum);
if (!(flashColor.red == 0 &&
flashColor.green == 0 &&
flashColor.blue == 0))
color = flashColor;
if (device.Battery <= FlashAt[deviceNum] && !defualtLight && !device.Charging) if (getFlashType(deviceNum) == 1)
{ {
if (!(FlashColor[deviceNum].red == 0 && double ratio = 0.0;
FlashColor[deviceNum].green == 0 &&
FlashColor[deviceNum].blue == 0)) if (!fadewatches[deviceNum].IsRunning)
color = FlashColor[deviceNum];
if (FlashType[deviceNum] == 1)
{ {
if (fadetimer[deviceNum] <= 0) bool temp = fadedirection[deviceNum];
fadedirection[deviceNum] = true; fadedirection[deviceNum] = !temp;
else if (fadetimer[deviceNum] >= 100) fadewatches[deviceNum].Restart();
fadedirection[deviceNum] = false; ratio = temp ? 100.0 : 0.0;
}
else
{
long elapsed = fadewatches[deviceNum].ElapsedMilliseconds;
if (fadedirection[deviceNum]) if (fadedirection[deviceNum])
fadetimer[deviceNum] += 1; {
if (elapsed < PULSE_FLASH_DURATION)
{
elapsed = elapsed / 40;
ratio = 100.0 * (elapsed / PULSE_FLASH_SEGMENTS);
}
else else
fadetimer[deviceNum] -= 1; {
color = getTransitionedColor(color, new DS4Color(0, 0, 0), fadetimer[deviceNum]); ratio = 100.0;
fadewatches[deviceNum].Stop();
}
}
else
{
if (elapsed < PULSE_FLASH_DURATION)
{
elapsed = elapsed / 40;
ratio = (0 - 100.0) * (elapsed / PULSE_FLASH_SEGMENTS) + 100.0;
}
else
{
ratio = 0.0;
fadewatches[deviceNum].Stop();
}
} }
} }
if (IdleDisconnectTimeout[deviceNum] > 0 && LedAsBatteryIndicator[deviceNum] && (!device.Charging || device.Battery >= 100)) color = getTransitionedColor(color, new DS4Color(0, 0, 0), ratio);
{//Fade lightbar by idle time }
}
int idleDisconnectTimeout = getIdleDisconnectTimeout(deviceNum);
if (idleDisconnectTimeout > 0 && getLedAsBatteryIndicator(deviceNum) &&
(!device.isCharging() || device.getBattery() >= 100))
{
//Fade lightbar by idle time
TimeSpan timeratio = new TimeSpan(DateTime.UtcNow.Ticks - device.lastActive.Ticks); TimeSpan timeratio = new TimeSpan(DateTime.UtcNow.Ticks - device.lastActive.Ticks);
double botratio = timeratio.TotalMilliseconds; double botratio = timeratio.TotalMilliseconds;
double topratio = TimeSpan.FromSeconds(IdleDisconnectTimeout[deviceNum]).TotalMilliseconds; double topratio = TimeSpan.FromSeconds(idleDisconnectTimeout).TotalMilliseconds;
double ratio = ((botratio / topratio) * 100); double ratio = 100.0 * (botratio / topratio), elapsed = ratio;
if (ratio >= 50 && ratio <= 100) if (ratio >= 50.0 && ratio < 100.0)
color = getTransitionedColor(color, new DS4Color(0, 0, 0), (uint)((ratio - 50) * 2)); {
else if (ratio >= 100) color = getTransitionedColor(color, new DS4Color(0, 0, 0),
color = getTransitionedColor(color, new DS4Color(0, 0, 0), 100); (uint)(-100.0 * (elapsed = 0.02 * (ratio - 50.0)) * (elapsed - 2.0)));
} }
if (device.Charging && device.Battery < 100) else if (ratio >= 100.0)
switch (ChargingType[deviceNum]) color = getTransitionedColor(color, new DS4Color(0, 0, 0), 100.0);
}
if (device.isCharging() && device.getBattery() < 100)
{
switch (getChargingType(deviceNum))
{ {
case 1: case 1:
if (fadetimer[deviceNum] <= 0) {
fadedirection[deviceNum] = true; double ratio = 0.0;
else if (fadetimer[deviceNum] >= 105)
fadedirection[deviceNum] = false; if (!fadewatches[deviceNum].IsRunning)
if (fadedirection[deviceNum]) {
fadetimer[deviceNum] += .1; bool temp = fadedirection[deviceNum];
fadedirection[deviceNum] = !temp;
fadewatches[deviceNum].Restart();
ratio = temp ? 100.0 : 0.0;
}
else else
fadetimer[deviceNum] -= .1; {
color = getTransitionedColor(color, new DS4Color(0, 0, 0), fadetimer[deviceNum]); long elapsed = fadewatches[deviceNum].ElapsedMilliseconds;
if (fadedirection[deviceNum])
{
if (elapsed < PULSE_CHARGING_DURATION)
{
elapsed = elapsed / 40;
if (elapsed > PULSE_CHARGING_SEGMENTS)
elapsed = (long)PULSE_CHARGING_SEGMENTS;
ratio = 100.0 * (elapsed / PULSE_CHARGING_SEGMENTS);
}
else
{
ratio = 100.0;
fadewatches[deviceNum].Stop();
}
}
else
{
if (elapsed < PULSE_CHARGING_DURATION)
{
elapsed = elapsed / 40;
if (elapsed > PULSE_CHARGING_SEGMENTS)
elapsed = (long)PULSE_CHARGING_SEGMENTS;
ratio = (0 - 100.0) * (elapsed / PULSE_CHARGING_SEGMENTS) + 100.0;
}
else
{
ratio = 0.0;
fadewatches[deviceNum].Stop();
}
}
}
color = getTransitionedColor(color, new DS4Color(0, 0, 0), ratio);
break; break;
}
case 2: case 2:
counters[deviceNum] += .167; {
counters[deviceNum] += 0.167;
color = HuetoRGB((float)counters[deviceNum] % 360, 255); color = HuetoRGB((float)counters[deviceNum] % 360, 255);
break; break;
}
case 3: case 3:
color = ChargingColor[deviceNum]; {
break; color = getChargingColor(deviceNum);
default:
break; break;
} }
default: break;
}
}
} }
else if (forcelight[deviceNum]) else if (forcelight[deviceNum])
{ {
@ -150,25 +243,30 @@ namespace DS4Windows
color = new DS4Color(0, 0, 0); color = new DS4Color(0, 0, 0);
else else
{ {
if (device.ConnectionType == ConnectionType.BT) if (device.getConnectionType() == ConnectionType.BT)
color = new DS4Color(32, 64, 64); color = new DS4Color(32, 64, 64);
else else
color = new DS4Color(0, 0, 0); color = new DS4Color(0, 0, 0);
} }
bool distanceprofile = (ProfilePath[deviceNum].ToLower().Contains("distance") || tempprofilename[deviceNum].ToLower().Contains("distance"));
if (distanceprofile && !defualtLight) bool distanceprofile = DistanceProfiles[deviceNum] || tempprofileDistance[deviceNum];
{ //Thing I did for Distance //distanceprofile = (ProfilePath[deviceNum].ToLower().Contains("distance") || tempprofilename[deviceNum].ToLower().Contains("distance"));
float rumble = device.LeftHeavySlowRumble / 2.55f; if (distanceprofile && !defaultLight)
{
// Thing I did for Distance
float rumble = device.getLeftHeavySlowRumble() / 2.55f;
byte max = Max(color.red, Max(color.green, color.blue)); byte max = Max(color.red, Max(color.green, color.blue));
if (device.LeftHeavySlowRumble > 100) if (device.getLeftHeavySlowRumble() > 100)
color = getTransitionedColor(new DS4Color(max, max, 0), new DS4Color(255, 0, 0), rumble); color = getTransitionedColor(new DS4Color(max, max, 0), new DS4Color(255, 0, 0), rumble);
else else
color = getTransitionedColor(color, getTransitionedColor(new DS4Color(max, max, 0), new DS4Color(255, 0, 0), 39.6078f), device.LeftHeavySlowRumble); color = getTransitionedColor(color, getTransitionedColor(new DS4Color(max, max, 0), new DS4Color(255, 0, 0), 39.6078f), device.getLeftHeavySlowRumble());
} }
DS4HapticState haptics = new DS4HapticState DS4HapticState haptics = new DS4HapticState
{ {
LightBarColor = color LightBarColor = color
}; };
if (haptics.IsLightBarSet()) if (haptics.IsLightBarSet())
{ {
if (forcelight[deviceNum] && forcedFlash[deviceNum] > 0) if (forcelight[deviceNum] && forcedFlash[deviceNum] > 0)
@ -176,17 +274,18 @@ namespace DS4Windows
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = (byte)(25 - forcedFlash[deviceNum]); haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = (byte)(25 - forcedFlash[deviceNum]);
haptics.LightBarExplicitlyOff = true; haptics.LightBarExplicitlyOff = true;
} }
else if (device.Battery <= FlashAt[deviceNum] && FlashType[deviceNum] == 0 && !defualtLight && !device.Charging) else if (device.getBattery() <= getFlashAt(deviceNum) && getFlashType(deviceNum) == 0 && !defaultLight && !device.isCharging())
{ {
int level = device.Battery / 10; int level = device.getBattery() / 10;
//if (level >= 10) if (level >= 10)
//level = 0; // all values of ~0% or >~100% are rendered the same level = 0; // all values of ~0% or >~100% are rendered the same
haptics.LightBarFlashDurationOn = BatteryIndicatorDurations[level, 0]; haptics.LightBarFlashDurationOn = BatteryIndicatorDurations[level, 0];
haptics.LightBarFlashDurationOff = BatteryIndicatorDurations[level, 1]; haptics.LightBarFlashDurationOff = BatteryIndicatorDurations[level, 1];
} }
else if (distanceprofile && device.LeftHeavySlowRumble > 155) //also part of Distance else if (distanceprofile && device.getLeftHeavySlowRumble() > 155) //also part of Distance
{ {
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = (byte)((-device.LeftHeavySlowRumble + 265)); haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = (byte)((-device.getLeftHeavySlowRumble() + 265));
haptics.LightBarExplicitlyOff = true; haptics.LightBarExplicitlyOff = true;
} }
else else
@ -200,14 +299,15 @@ namespace DS4Windows
{ {
haptics.LightBarExplicitlyOff = true; haptics.LightBarExplicitlyOff = true;
} }
if (device.LightBarOnDuration != haptics.LightBarFlashDurationOn && device.LightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0)
byte tempLightBarOnDuration = device.getLightBarOnDuration();
if (tempLightBarOnDuration != haptics.LightBarFlashDurationOn && tempLightBarOnDuration != 1 && haptics.LightBarFlashDurationOn == 0)
haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1; haptics.LightBarFlashDurationOff = haptics.LightBarFlashDurationOn = 1;
if (device.LightBarOnDuration == 1) //helps better reset the color
System.Threading.Thread.Sleep(5); device.pushHapticState(ref haptics);
device.pushHapticState(haptics);
} }
public static bool defualtLight = false, shuttingdown = false; public static bool defaultLight = false, shuttingdown = false;
public static DS4Color HuetoRGB(float hue, byte sat) public static DS4Color HuetoRGB(float hue, byte sat)
{ {

View File

@ -0,0 +1,155 @@

namespace DS4Windows
{
public class DS4StateFieldMapping
{
public enum ControlType: int { Unknown = 0, Button, AxisDir, Trigger, Touch, GyroDir, SwipeDir }
public bool[] buttons = new bool[(int)DS4Controls.SwipeDown + 1];
public byte[] axisdirs = new byte[(int)DS4Controls.SwipeDown + 1];
public byte[] triggers = new byte[(int)DS4Controls.SwipeDown + 1];
public int[] gryodirs = new int[(int)DS4Controls.SwipeDown + 1];
public byte[] swipedirs = new byte[(int)DS4Controls.SwipeDown + 1];
public bool[] swipedirbools = new bool[(int)DS4Controls.SwipeDown + 1];
public static ControlType[] mappedType = new ControlType[38] { ControlType.Unknown, // DS4Controls.None
ControlType.AxisDir, // DS4Controls.LXNeg
ControlType.AxisDir, // DS4Controls.LXPos
ControlType.AxisDir, // DS4Controls.LYNeg
ControlType.AxisDir, // DS4Controls.LYPos
ControlType.AxisDir, // DS4Controls.RXNeg
ControlType.AxisDir, // DS4Controls.RXPos
ControlType.AxisDir, // DS4Controls.RYNeg
ControlType.AxisDir, // DS4Controls.RYPos
ControlType.Button, // DS4Controls.L1
ControlType.Trigger, // DS4Controls.L2
ControlType.Button, // DS4Controls.L3
ControlType.Button, // DS4Controls.R1
ControlType.Trigger, // DS4Controls.R2
ControlType.Button, // DS4Controls.R3
ControlType.Button, // DS4Controls.Square
ControlType.Button, // DS4Controls.Triangle
ControlType.Button, // DS4Controls.Circle
ControlType.Button, // DS4Controls.Cross
ControlType.Button, // DS4Controls.DpadUp
ControlType.Button, // DS4Controls.DpadRight
ControlType.Button, // DS4Controls.DpadDown
ControlType.Button, // DS4Controls.DpadLeft
ControlType.Button, // DS4Controls.PS
ControlType.Touch, // DS4Controls.TouchLeft
ControlType.Touch, // DS4Controls.TouchUpper
ControlType.Touch, // DS4Controls.TouchMulti
ControlType.Touch, // DS4Controls.TouchRight
ControlType.Button, // DS4Controls.Share
ControlType.Button, // DS4Controls.Options
ControlType.GyroDir, // DS4Controls.GyroXPos
ControlType.GyroDir, // DS4Controls.GyroXNeg
ControlType.GyroDir, // DS4Controls.GyroZPos
ControlType.GyroDir, // DS4Controls.GyroZNeg
ControlType.SwipeDir, // DS4Controls.SwipeLeft
ControlType.SwipeDir, // DS4Controls.SwipeRight
ControlType.SwipeDir, // DS4Controls.SwipeUp
ControlType.SwipeDir, // DS4Controls.SwipeDown
};
public DS4StateFieldMapping()
{
}
public DS4StateFieldMapping(DS4State cState, DS4StateExposed exposeState, Mouse tp, bool priorMouse=false)
{
populateFieldMapping(cState, exposeState, tp, priorMouse);
}
public void populateFieldMapping(DS4State cState, DS4StateExposed exposeState, Mouse tp, bool priorMouse = false)
{
axisdirs[(int)DS4Controls.LXNeg] = cState.LX;
axisdirs[(int)DS4Controls.LXPos] = cState.LX;
axisdirs[(int)DS4Controls.LYNeg] = cState.LY;
axisdirs[(int)DS4Controls.LYPos] = cState.LY;
axisdirs[(int)DS4Controls.RXNeg] = cState.RX;
axisdirs[(int)DS4Controls.RXPos] = cState.RX;
axisdirs[(int)DS4Controls.RYNeg] = cState.RY;
axisdirs[(int)DS4Controls.RYPos] = cState.RY;
triggers[(int)DS4Controls.L2] = cState.L2;
triggers[(int)DS4Controls.R2] = cState.R2;
buttons[(int)DS4Controls.L1] = cState.L1;
buttons[(int)DS4Controls.L3] = cState.L3;
buttons[(int)DS4Controls.R1] = cState.R1;
buttons[(int)DS4Controls.R3] = cState.R3;
buttons[(int)DS4Controls.Cross] = cState.Cross;
buttons[(int)DS4Controls.Triangle] = cState.Triangle;
buttons[(int)DS4Controls.Circle] = cState.Circle;
buttons[(int)DS4Controls.Square] = cState.Square;
buttons[(int)DS4Controls.PS] = cState.PS;
buttons[(int)DS4Controls.Options] = cState.Options;
buttons[(int)DS4Controls.Share] = cState.Share;
buttons[(int)DS4Controls.DpadUp] = cState.DpadUp;
buttons[(int)DS4Controls.DpadRight] = cState.DpadRight;
buttons[(int)DS4Controls.DpadDown] = cState.DpadDown;
buttons[(int)DS4Controls.DpadLeft] = cState.DpadLeft;
buttons[(int)DS4Controls.TouchLeft] = tp != null ? (!priorMouse ? tp.leftDown : tp.priorLeftDown) : false;
buttons[(int)DS4Controls.TouchRight] = tp != null ? (!priorMouse ? tp.rightDown : tp.priorRightDown) : false;
buttons[(int)DS4Controls.TouchUpper] = tp != null ? (!priorMouse ? tp.upperDown : tp.priorUpperDown) : false;
buttons[(int)DS4Controls.TouchMulti] = tp != null ? (!priorMouse ? tp.multiDown : tp.priorMultiDown) : false;
int sixAxisX = -exposeState.getOutputAccelX();
gryodirs[(int)DS4Controls.GyroXPos] = sixAxisX > 0 ? sixAxisX : 0;
gryodirs[(int)DS4Controls.GyroXNeg] = sixAxisX < 0 ? sixAxisX : 0;
int sixAxisZ = exposeState.getOutputAccelZ();
gryodirs[(int)DS4Controls.GyroZPos] = sixAxisZ > 0 ? sixAxisZ : 0;
gryodirs[(int)DS4Controls.GyroZNeg] = sixAxisZ < 0 ? sixAxisZ : 0;
swipedirs[(int)DS4Controls.SwipeLeft] = tp != null ? (!priorMouse ? tp.swipeLeftB : tp.priorSwipeLeftB) : (byte)0;
swipedirs[(int)DS4Controls.SwipeRight] = tp != null ? (!priorMouse ? tp.swipeRightB : tp.priorSwipeRightB) : (byte)0;
swipedirs[(int)DS4Controls.SwipeUp] = tp != null ? (!priorMouse ? tp.swipeUpB : tp.priorSwipeUpB) : (byte)0;
swipedirs[(int)DS4Controls.SwipeDown] = tp != null ? (!priorMouse ? tp.swipeDownB : tp.priorSwipeDownB) : (byte)0;
swipedirbools[(int)DS4Controls.SwipeLeft] = tp != null ? (!priorMouse ? tp.swipeLeft : tp.priorSwipeLeft) : false;
swipedirbools[(int)DS4Controls.SwipeRight] = tp != null ? (!priorMouse ? tp.swipeRight : tp.priorSwipeRight) : false;
swipedirbools[(int)DS4Controls.SwipeUp] = tp != null ? (!priorMouse ? tp.swipeUp : tp.priorSwipeUp) : false;
swipedirbools[(int)DS4Controls.SwipeDown] = tp != null ? (!priorMouse ? tp.swipeDown : tp.priorSwipeDown) : false;
}
public void populateState(DS4State state)
{
state.LX = axisdirs[(int)DS4Controls.LXNeg];
state.LX = axisdirs[(int)DS4Controls.LXPos];
state.LY = axisdirs[(int)DS4Controls.LYNeg];
state.LY = axisdirs[(int)DS4Controls.LYPos];
state.RX = axisdirs[(int)DS4Controls.RXNeg];
state.RX = axisdirs[(int)DS4Controls.RXPos];
state.RY = axisdirs[(int)DS4Controls.RYNeg];
state.RY = axisdirs[(int)DS4Controls.RYPos];
state.L2 = triggers[(int)DS4Controls.L2];
state.R2 = triggers[(int)DS4Controls.R2];
state.L1 = buttons[(int)DS4Controls.L1];
state.L3 = buttons[(int)DS4Controls.L3];
state.R1 = buttons[(int)DS4Controls.R1];
state.R3 = buttons[(int)DS4Controls.R3];
state.Cross = buttons[(int)DS4Controls.Cross];
state.Triangle = buttons[(int)DS4Controls.Triangle];
state.Circle = buttons[(int)DS4Controls.Circle];
state.Square = buttons[(int)DS4Controls.Square];
state.PS = buttons[(int)DS4Controls.PS];
state.Options = buttons[(int)DS4Controls.Options];
state.Share = buttons[(int)DS4Controls.Share];
state.DpadUp = buttons[(int)DS4Controls.DpadUp];
state.DpadRight = buttons[(int)DS4Controls.DpadRight];
state.DpadDown = buttons[(int)DS4Controls.DpadDown];
state.DpadLeft = buttons[(int)DS4Controls.DpadLeft];
}
}
}

View File

@ -1,7 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {

View File

@ -1,14 +1,13 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
namespace DS4Windows namespace DS4Windows
{ {
class InputMethods class InputMethods
{ {
private static INPUT[] sendInputs = new INPUT[2]; // will allow for keyboard + mouse/tablet input within one SendInput call, or two mouse events private static INPUT[] sendInputs = new INPUT[2]; // will allow for keyboard + mouse/tablet input within one SendInput call, or two mouse events
private static object lockob = new object(); private static object lockob = new object();
public static void MoveCursorBy(int x, int y) public static void MoveCursorBy(int x, int y)
{ {
lock (lockob) lock (lockob)
@ -43,6 +42,7 @@ namespace DS4Windows
sendInputs[inputs].Data.Mouse.Y = 0; sendInputs[inputs].Data.Mouse.Y = 0;
inputs++; inputs++;
} }
if (horizontal != 0) if (horizontal != 0)
{ {
sendInputs[inputs].Type = INPUT_MOUSE; sendInputs[inputs].Type = INPUT_MOUSE;
@ -54,6 +54,7 @@ namespace DS4Windows
sendInputs[inputs].Data.Mouse.Y = 0; sendInputs[inputs].Data.Mouse.Y = 0;
inputs++; inputs++;
} }
SendInput(inputs, sendInputs, (int)inputs * Marshal.SizeOf(sendInputs[0])); SendInput(inputs, sendInputs, (int)inputs * Marshal.SizeOf(sendInputs[0]));
} }
} }
@ -88,69 +89,6 @@ namespace DS4Windows
} }
} }
public static void performLeftClick()
{
lock (lockob)
{
sendInputs[0].Type = INPUT_MOUSE;
sendInputs[0].Data.Mouse.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Mouse.Flags = 0;
sendInputs[0].Data.Mouse.Flags |= MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP;
sendInputs[0].Data.Mouse.MouseData = 0;
sendInputs[0].Data.Mouse.Time = 0;
sendInputs[0].Data.Mouse.X = 0;
sendInputs[0].Data.Mouse.Y = 0;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
}
}
public static void performRightClick()
{
lock (lockob)
{
sendInputs[0].Type = INPUT_MOUSE;
sendInputs[0].Data.Mouse.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Mouse.Flags = 0;
sendInputs[0].Data.Mouse.Flags |= MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP;
sendInputs[0].Data.Mouse.MouseData = 0;
sendInputs[0].Data.Mouse.Time = 0;
sendInputs[0].Data.Mouse.X = 0;
sendInputs[0].Data.Mouse.Y = 0;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
}
}
public static void performMiddleClick()
{
lock (lockob)
{
sendInputs[0].Type = INPUT_MOUSE;
sendInputs[0].Data.Mouse.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Mouse.Flags = 0;
sendInputs[0].Data.Mouse.Flags |= MOUSEEVENTF_MIDDLEDOWN | MOUSEEVENTF_MIDDLEUP;
sendInputs[0].Data.Mouse.MouseData = 0;
sendInputs[0].Data.Mouse.Time = 0;
sendInputs[0].Data.Mouse.X = 0;
sendInputs[0].Data.Mouse.Y = 0;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
}
}
public static void performFourthClick()
{
lock (lockob)
{
sendInputs[0].Type = INPUT_MOUSE;
sendInputs[0].Data.Mouse.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Mouse.Flags = 0;
sendInputs[0].Data.Mouse.Flags |= MOUSEEVENTF_XBUTTONDOWN | MOUSEEVENTF_XBUTTONUP;
sendInputs[0].Data.Mouse.MouseData = 1;
sendInputs[0].Data.Mouse.Time = 0;
sendInputs[0].Data.Mouse.X = 0;
sendInputs[0].Data.Mouse.Y = 0;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
}
}
public static void performSCKeyPress(ushort key) public static void performSCKeyPress(ushort key)
{ {
lock (lockob) lock (lockob)
@ -169,10 +107,16 @@ namespace DS4Windows
{ {
lock (lockob) lock (lockob)
{ {
ushort scancode = scancodeFromVK(key);
bool extended = (scancode & 0x100) != 0;
uint curflags = extended ? KEYEVENTF_EXTENDEDKEY : 0;
sendInputs[0].Type = INPUT_KEYBOARD; sendInputs[0].Type = INPUT_KEYBOARD;
sendInputs[0].Data.Keyboard.ExtraInfo = IntPtr.Zero; sendInputs[0].Data.Keyboard.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Keyboard.Flags = 1; sendInputs[0].Data.Keyboard.Flags = curflags;
sendInputs[0].Data.Keyboard.Scan = 0; sendInputs[0].Data.Keyboard.Scan = scancode;
//sendInputs[0].Data.Keyboard.Flags = 1;
//sendInputs[0].Data.Keyboard.Scan = 0;
sendInputs[0].Data.Keyboard.Time = 0; sendInputs[0].Data.Keyboard.Time = 0;
sendInputs[0].Data.Keyboard.Vk = key; sendInputs[0].Data.Keyboard.Vk = key;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0])); uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
@ -197,16 +141,71 @@ namespace DS4Windows
{ {
lock (lockob) lock (lockob)
{ {
ushort scancode = scancodeFromVK(key);
bool extended = (scancode & 0x100) != 0;
uint curflags = extended ? KEYEVENTF_EXTENDEDKEY : 0;
sendInputs[0].Type = INPUT_KEYBOARD; sendInputs[0].Type = INPUT_KEYBOARD;
sendInputs[0].Data.Keyboard.ExtraInfo = IntPtr.Zero; sendInputs[0].Data.Keyboard.ExtraInfo = IntPtr.Zero;
sendInputs[0].Data.Keyboard.Flags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP; sendInputs[0].Data.Keyboard.Flags = curflags | KEYEVENTF_KEYUP;
sendInputs[0].Data.Keyboard.Scan = 0; sendInputs[0].Data.Keyboard.Scan = scancode;
//sendInputs[0].Data.Keyboard.Flags = KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP;
//sendInputs[0].Data.Keyboard.Scan = 0;
sendInputs[0].Data.Keyboard.Time = 0; sendInputs[0].Data.Keyboard.Time = 0;
sendInputs[0].Data.Keyboard.Vk = key; sendInputs[0].Data.Keyboard.Vk = key;
uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0])); uint result = SendInput(1, sendInputs, Marshal.SizeOf(sendInputs[0]));
} }
} }
private static ushort scancodeFromVK(uint vkey)
{
ushort scancode = 0;
if (vkey == VK_PAUSE)
{
// MapVirtualKey does not work with VK_PAUSE
scancode = 0x45;
}
else
{
scancode = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
}
switch (vkey)
{
case VK_LEFT:
case VK_UP:
case VK_RIGHT:
case VK_DOWN:
case VK_PRIOR:
case VK_NEXT:
case VK_END:
case VK_HOME:
case VK_INSERT:
case VK_DELETE:
case VK_DIVIDE:
case VK_NUMLOCK:
case VK_RCONTROL:
case VK_RMENU:
case VK_VOLUME_MUTE:
case VK_VOLUME_DOWN:
case VK_VOLUME_UP:
case VK_MEDIA_NEXT_TRACK:
case VK_MEDIA_PREV_TRACK:
case VK_LAUNCH_MEDIA_SELECT:
case VK_BROWSER_HOME:
case VK_LAUNCH_MAIL:
case VK_LAUNCH_APP1:
case VK_LAUNCH_APP2:
case VK_APPS:
{
scancode |= (ushort)EXTENDED_FLAG; // set extended bit
break;
}
}
return scancode;
}
/// <summary> /// <summary>
/// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx /// http://msdn.microsoft.com/en-us/library/windows/desktop/ms646270(v=vs.85).aspx
/// </summary> /// </summary>
@ -277,7 +276,14 @@ namespace DS4Windows
MOUSEEVENTF_XBUTTONDOWN = 128, MOUSEEVENTF_XBUTTONUP = 256, MOUSEEVENTF_XBUTTONDOWN = 128, MOUSEEVENTF_XBUTTONUP = 256,
KEYEVENTF_EXTENDEDKEY = 1, KEYEVENTF_KEYUP = 2, MOUSEEVENTF_WHEEL = 0x0800, MOUSEEVENTF_HWHEEL = 0x1000, KEYEVENTF_EXTENDEDKEY = 1, KEYEVENTF_KEYUP = 2, MOUSEEVENTF_WHEEL = 0x0800, MOUSEEVENTF_HWHEEL = 0x1000,
MOUSEEVENTF_MIDDLEWDOWN = 0x0020, MOUSEEVENTF_MIDDLEWUP = 0x0040, MOUSEEVENTF_MIDDLEWDOWN = 0x0020, MOUSEEVENTF_MIDDLEWUP = 0x0040,
KEYEVENTF_SCANCODE = 0x0008, MAPVK_VK_TO_VSC = 0, KEYEVENTF_UNICODE = 0x0004; KEYEVENTF_SCANCODE = 0x0008, MAPVK_VK_TO_VSC = 0, KEYEVENTF_UNICODE = 0x0004, EXTENDED_FLAG = 0x100;
internal const uint VK_PAUSE = 0x13, VK_LEFT = 0x25, VK_UP = 0x26, VK_RIGHT = 0x27, VK_DOWN = 0x28,
VK_PRIOR = 0x21, VK_NEXT = 0x22, VK_END = 0x23, VK_HOME = 0x24, VK_INSERT = 0x2D, VK_DELETE = 0x2E, VK_APPS = 0x5D,
VK_DIVIDE = 0x6F, VK_NUMLOCK = 0x90, VK_RCONTROL = 0xA3, VK_RMENU = 0xA5, VK_BROWSER_HOME = 0xAC,
VK_VOLUME_MUTE = 0xAD, VK_VOLUME_DOWN = 0xAE, VK_VOLUME_UP = 0xAF,
VK_MEDIA_NEXT_TRACK = 0xB0, VK_MEDIA_PREV_TRACK = 0xB1, VK_MEDIA_STOP = 0xB2, VK_MEDIA_PLAY_PAUSE = 0xB3,
VK_LAUNCH_MAIL = 0xB4, VK_LAUNCH_MEDIA_SELECT = 0xB5, VK_LAUNCH_APP1 = 0xB6, VK_LAUNCH_APP2 = 0xB7;
[DllImport("user32.dll", SetLastError = true)] [DllImport("user32.dll", SetLastError = true)]
private static extern uint SendInput(uint numberOfInputs, INPUT[] inputs, int sizeOfInputs); private static extern uint SendInput(uint numberOfInputs, INPUT[] inputs, int sizeOfInputs);
@ -285,6 +291,7 @@ namespace DS4Windows
private static extern ushort MapVirtualKey(uint uCode, uint uMapType); private static extern ushort MapVirtualKey(uint uCode, uint uMapType);
[DllImport("user32.dll", SetLastError = true)] [DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
//Not used, just here //Not used, just here
public static void DownKeys(ushort key) public static void DownKeys(ushort key)
{ {
@ -301,5 +308,5 @@ namespace DS4Windows
keybd_event((byte)key, 0, (int)KEYEVENTF_KEYUP, 0); keybd_event((byte)key, 0, (int)KEYEVENTF_KEYUP, 0);
} }
} }
} }

View File

@ -1,7 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace DS4Windows namespace DS4Windows
{ {
@ -17,35 +13,83 @@ namespace DS4Windows
private readonly MouseWheel wheel; private readonly MouseWheel wheel;
private bool tappedOnce = false, secondtouchbegin = false; private bool tappedOnce = false, secondtouchbegin = false;
public bool swipeLeft, swipeRight, swipeUp, swipeDown; public bool swipeLeft, swipeRight, swipeUp, swipeDown;
public bool priorSwipeLeft, priorSwipeRight, priorSwipeUp, priorSwipeDown;
public byte swipeLeftB, swipeRightB, swipeUpB, swipeDownB, swipedB; public byte swipeLeftB, swipeRightB, swipeUpB, swipeDownB, swipedB;
public byte priorSwipeLeftB, priorSwipeRightB, priorSwipeUpB, priorSwipeDownB, priorSwipedB;
public bool slideleft, slideright; public bool slideleft, slideright;
public bool priorSlideLeft, priorSlideright;
// touch area stuff // touch area stuff
public bool leftDown, rightDown, upperDown, multiDown; public bool leftDown, rightDown, upperDown, multiDown;
public bool priorLeftDown, priorRightDown, priorUpperDown, priorMultiDown;
protected DS4Controls pushed = DS4Controls.None; protected DS4Controls pushed = DS4Controls.None;
protected Mapping.Click clicked = Mapping.Click.None; protected Mapping.Click clicked = Mapping.Click.None;
internal const int TRACKBALL_INIT_FICTION = 10;
internal const int TRACKBALL_MASS = 45;
internal const double TRACKBALL_RADIUS = 0.0245;
private double TRACKBALL_INERTIA = 2.0 * (TRACKBALL_MASS * TRACKBALL_RADIUS * TRACKBALL_RADIUS) / 5.0;
private double TRACKBALL_SCALE = 0.004;
private const int TRACKBALL_BUFFER_LEN = 8;
private double[] trackballXBuffer = new double[TRACKBALL_BUFFER_LEN];
private double[] trackballYBuffer = new double[TRACKBALL_BUFFER_LEN];
private int trackballBufferTail = 0;
private int trackballBufferHead = 0;
private double trackballAccel = 0.0;
private double trackballXVel = 0.0;
private double trackballYVel = 0.0;
private bool trackballActive = false;
private double trackballDXRemain = 0.0;
private double trackballDYRemain = 0.0;
public Mouse(int deviceID, DS4Device d) public Mouse(int deviceID, DS4Device d)
{ {
deviceNum = deviceID; deviceNum = deviceID;
dev = d; dev = d;
cursor = new MouseCursor(deviceNum); cursor = new MouseCursor(deviceNum);
wheel = new MouseWheel(deviceNum); wheel = new MouseWheel(deviceNum);
trackballAccel = TRACKBALL_RADIUS * TRACKBALL_INIT_FICTION / TRACKBALL_INERTIA;
firstTouch = new Touch(0, 0, 0, null);
} }
public void ResetTrackAccel(double friction)
{
trackballAccel = TRACKBALL_RADIUS * friction / TRACKBALL_INERTIA;
}
bool triggeractivated = false;
bool useReverseRatchet = false;
public virtual void sixaxisMoved(object sender, SixAxisEventArgs arg) public virtual void sixaxisMoved(object sender, SixAxisEventArgs arg)
{ {
if (Global.UseSAforMouse[deviceNum] && Global.GyroSensitivity[deviceNum] > 0) if (Global.isUsingSAforMouse(deviceNum) && Global.getGyroSensitivity(deviceNum) > 0)
{ {
bool triggeractivated = true; s = dev.getCurrentStateRef();
triggeractivated = true;
useReverseRatchet = Global.getGyroTriggerTurns(deviceNum);
int i = 0; int i = 0;
string[] ss = Global.SATriggers[deviceNum].Split(','); string[] ss = Global.getSATriggers(deviceNum).Split(',');
if (!string.IsNullOrEmpty(ss[0])) if (!string.IsNullOrEmpty(ss[0]))
foreach (string s in ss) {
string s = string.Empty;
for (int index = 0, arlen = ss.Length;
triggeractivated && index < arlen; index++)
{
s = ss[index];
if (!(int.TryParse(s, out i) && getDS4ControlsByName(i))) if (!(int.TryParse(s, out i) && getDS4ControlsByName(i)))
{
triggeractivated = false; triggeractivated = false;
if (triggeractivated) }
}
}
if (useReverseRatchet && triggeractivated)
cursor.sixaxisMoved(arg); cursor.sixaxisMoved(arg);
dev.getCurrentState(s); else if (!useReverseRatchet && !triggeractivated)
cursor.sixaxisMoved(arg);
else
cursor.mouseRemainderReset();
} }
} }
@ -68,20 +112,43 @@ namespace DS4Windows
case 11: return s.DpadRight; case 11: return s.DpadRight;
case 12: return s.L3; case 12: return s.L3;
case 13: return s.R3; case 13: return s.R3;
case 14: return s.Touch1; case 14: return s.Touch1Finger;
case 15: return s.Touch2; case 15: return s.Touch2Fingers;
case 16: return s.Options; case 16: return s.Options;
case 17: return s.Share; case 17: return s.Share;
case 18: return s.PS; case 18: return s.PS;
default: break;
} }
return false; return false;
} }
private bool tempBool = false;
public virtual void touchesMoved(object sender, TouchpadEventArgs arg) public virtual void touchesMoved(object sender, TouchpadEventArgs arg)
{ {
if (!Global.UseTPforControls[deviceNum]) s = dev.getCurrentStateRef();
if (Global.getUseTPforControls(deviceNum) == false)
{ {
cursor.touchesMoved(arg, dragging || dragging2); int[] disArray = Global.getTouchDisInvertTriggers(deviceNum);
tempBool = true;
for (int i = 0, arlen = disArray.Length; tempBool && i < arlen; i++)
{
if (getDS4ControlsByName(disArray[i]) == false)
tempBool = false;
}
if (Global.getTrackballMode(deviceNum))
{
int iIndex = trackballBufferTail;
trackballXBuffer[iIndex] = (arg.touches[0].deltaX * TRACKBALL_SCALE) / dev.getCurrentStateRef().elapsedTime;
trackballYBuffer[iIndex] = (arg.touches[0].deltaY * TRACKBALL_SCALE) / dev.getCurrentStateRef().elapsedTime;
trackballBufferTail = (iIndex + 1) % TRACKBALL_BUFFER_LEN;
if (trackballBufferHead == trackballBufferTail)
trackballBufferHead = (trackballBufferHead + 1) % TRACKBALL_BUFFER_LEN;
}
cursor.touchesMoved(arg, dragging || dragging2, tempBool);
wheel.touchesMoved(arg, dragging || dragging2); wheel.touchesMoved(arg, dragging || dragging2);
} }
else else
@ -93,54 +160,78 @@ namespace DS4Windows
if (arg.touches[0].hwY - firstTouch.hwY > 300) swipeDown = true; if (arg.touches[0].hwY - firstTouch.hwY > 300) swipeDown = true;
if (arg.touches[0].hwY - firstTouch.hwY < -300) swipeUp = true; if (arg.touches[0].hwY - firstTouch.hwY < -300) swipeUp = true;
} }
swipeUpB = (byte)Math.Min(255, Math.Max(0, (firstTouch.hwY - arg.touches[0].hwY) * 1.5f)); swipeUpB = (byte)Math.Min(255, Math.Max(0, (firstTouch.hwY - arg.touches[0].hwY) * 1.5f));
swipeDownB = (byte)Math.Min(255, Math.Max(0, (arg.touches[0].hwY - firstTouch.hwY) * 1.5f)); swipeDownB = (byte)Math.Min(255, Math.Max(0, (arg.touches[0].hwY - firstTouch.hwY) * 1.5f));
swipeLeftB = (byte)Math.Min(255, Math.Max(0, firstTouch.hwX - arg.touches[0].hwX)); swipeLeftB = (byte)Math.Min(255, Math.Max(0, firstTouch.hwX - arg.touches[0].hwX));
swipeRightB = (byte)Math.Min(255, Math.Max(0, arg.touches[0].hwX - firstTouch.hwX)); swipeRightB = (byte)Math.Min(255, Math.Max(0, arg.touches[0].hwX - firstTouch.hwX));
} }
if (Math.Abs(firstTouch.hwY - arg.touches[0].hwY) < 50 && arg.touches.Length == 2) if (Math.Abs(firstTouch.hwY - arg.touches[0].hwY) < 50 && arg.touches.Length == 2)
{
if (arg.touches[0].hwX - firstTouch.hwX > 200 && !slideleft) if (arg.touches[0].hwX - firstTouch.hwX > 200 && !slideleft)
slideright = true; slideright = true;
else if (firstTouch.hwX - arg.touches[0].hwX > 200 && !slideright) else if (firstTouch.hwX - arg.touches[0].hwX > 200 && !slideright)
slideleft = true; slideleft = true;
dev.getCurrentState(s); }
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
public virtual void touchesBegan(object sender, TouchpadEventArgs arg) public virtual void touchesBegan(object sender, TouchpadEventArgs arg)
{ {
if (!Global.UseTPforControls[deviceNum]) if (!Global.UseTPforControls[deviceNum])
{ {
Array.Clear(trackballXBuffer, 0, TRACKBALL_BUFFER_LEN);
Array.Clear(trackballXBuffer, 0, TRACKBALL_BUFFER_LEN);
trackballXVel = 0.0;
trackballYVel = 0.0;
trackballActive = false;
trackballBufferTail = 0;
trackballBufferHead = 0;
trackballDXRemain = 0.0;
trackballDYRemain = 0.0;
cursor.touchesBegan(arg); cursor.touchesBegan(arg);
wheel.touchesBegan(arg); wheel.touchesBegan(arg);
} }
pastTime = arg.timeStamp; pastTime = arg.timeStamp;
firstTouch = arg.touches[0]; firstTouch.populate(arg.touches[0].hwX, arg.touches[0].hwY, arg.touches[0].touchID,
if (Global.DoubleTap[deviceNum]) arg.touches[0].previousTouch);
if (Global.getDoubleTap(deviceNum))
{ {
DateTime test = arg.timeStamp; DateTime test = arg.timeStamp;
if (test <= (firstTap + TimeSpan.FromMilliseconds((double)Global.TapSensitivity[deviceNum] * 1.5)) && !arg.touchButtonPressed) if (test <= (firstTap + TimeSpan.FromMilliseconds((double)Global.TapSensitivity[deviceNum] * 1.5)) && !arg.touchButtonPressed)
secondtouchbegin = true; secondtouchbegin = true;
} }
dev.getCurrentState(s);
s = dev.getCurrentStateRef();
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
public virtual void touchesEnded(object sender, TouchpadEventArgs arg) public virtual void touchesEnded(object sender, TouchpadEventArgs arg)
{ {
s = dev.getCurrentStateRef();
slideright = slideleft = false; slideright = slideleft = false;
swipeUp = swipeDown = swipeLeft = swipeRight = false; swipeUp = swipeDown = swipeLeft = swipeRight = false;
swipeUpB = swipeDownB = swipeLeftB = swipeRightB = 0; swipeUpB = swipeDownB = swipeLeftB = swipeRightB = 0;
if (Global.TapSensitivity[deviceNum] != 0 && !Global.UseTPforControls[deviceNum]) byte tapSensitivity = Global.getTapSensitivity(deviceNum);
if (tapSensitivity != 0 && !Global.getUseTPforControls(deviceNum))
{ {
if (secondtouchbegin) if (secondtouchbegin)
{ {
tappedOnce = false; tappedOnce = false;
secondtouchbegin = false; secondtouchbegin = false;
} }
DateTime test = arg.timeStamp; DateTime test = arg.timeStamp;
if (test <= (pastTime + TimeSpan.FromMilliseconds((double)Global.TapSensitivity[deviceNum] * 2)) && !arg.touchButtonPressed && !tappedOnce) if (test <= (pastTime + TimeSpan.FromMilliseconds((double)tapSensitivity * 2)) && !arg.touchButtonPressed && !tappedOnce)
{
if (Math.Abs(firstTouch.hwX - arg.touches[0].hwX) < 10 && Math.Abs(firstTouch.hwY - arg.touches[0].hwY) < 10) if (Math.Abs(firstTouch.hwX - arg.touches[0].hwX) < 10 && Math.Abs(firstTouch.hwY - arg.touches[0].hwY) < 10)
if (Global.DoubleTap[deviceNum]) {
if (Global.getDoubleTap(deviceNum))
{ {
tappedOnce = true; tappedOnce = true;
firstTap = arg.timeStamp; firstTap = arg.timeStamp;
@ -149,7 +240,96 @@ namespace DS4Windows
else else
Mapping.MapClick(deviceNum, Mapping.Click.Left); //this way no delay if disabled Mapping.MapClick(deviceNum, Mapping.Click.Left); //this way no delay if disabled
} }
dev.getCurrentState(s); }
}
else
{
if (Global.getUseTPforControls(deviceNum) == false)
{
int[] disArray = Global.getTouchDisInvertTriggers(deviceNum);
tempBool = true;
for (int i = 0, arlen = disArray.Length; tempBool && i < arlen; i++)
{
if (getDS4ControlsByName(disArray[i]) == false)
tempBool = false;
}
if (Global.getTrackballMode(deviceNum))
{
if (!trackballActive)
{
double currentWeight = 1.0;
double finalWeight = 0.0;
double x_out = 0.0, y_out = 0.0;
int idx = -1;
for (int i = 0; i < TRACKBALL_BUFFER_LEN && idx != trackballBufferHead; i++)
{
idx = (trackballBufferTail - i - 1 + TRACKBALL_BUFFER_LEN) % TRACKBALL_BUFFER_LEN;
x_out += trackballXBuffer[idx] * currentWeight;
y_out += trackballYBuffer[idx] * currentWeight;
finalWeight += currentWeight;
currentWeight *= 1.0;
}
x_out /= finalWeight;
trackballXVel = x_out;
y_out /= finalWeight;
trackballYVel = y_out;
trackballActive = true;
}
double tempAngle = Math.Atan2(-trackballYVel, trackballXVel);
double normX = Math.Abs(Math.Cos(tempAngle));
double normY = Math.Abs(Math.Sin(tempAngle));
int signX = Math.Sign(trackballXVel);
int signY = Math.Sign(trackballYVel);
double trackXvDecay = Math.Min(Math.Abs(trackballXVel), trackballAccel * s.elapsedTime * normX);
double trackYvDecay = Math.Min(Math.Abs(trackballYVel), trackballAccel * s.elapsedTime * normY);
double xVNew = trackballXVel - (trackXvDecay * signX);
double yVNew = trackballYVel - (trackYvDecay * signY);
double xMotion = (xVNew * s.elapsedTime) / TRACKBALL_SCALE;
double yMotion = (yVNew * s.elapsedTime) / TRACKBALL_SCALE;
if (xMotion != 0.0)
{
xMotion += trackballDXRemain;
}
else
{
trackballDXRemain = 0.0;
}
int dx = (int)xMotion;
trackballDXRemain = xMotion - dx;
if (yMotion != 0.0)
{
yMotion += trackballDYRemain;
}
else
{
trackballDYRemain = 0.0;
}
int dy = (int)yMotion;
trackballDYRemain = yMotion - dy;
trackballXVel = xVNew;
trackballYVel = yVNew;
if (dx == 0 && dy == 0)
{
trackballActive = false;
}
else
{
cursor.TouchMoveCursor(dx, dy, tempBool);
}
}
}
}
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
@ -165,28 +345,95 @@ namespace DS4Windows
public virtual void touchUnchanged(object sender, EventArgs unused) public virtual void touchUnchanged(object sender, EventArgs unused)
{ {
dev.getCurrentState(s); s = dev.getCurrentStateRef();
//if (s.Touch1 || s.Touch2 || s.TouchButton)
if (trackballActive)
{
if (Global.getUseTPforControls(deviceNum) == false)
{
int[] disArray = Global.getTouchDisInvertTriggers(deviceNum);
tempBool = true;
for (int i = 0, arlen = disArray.Length; tempBool && i < arlen; i++)
{
if (getDS4ControlsByName(disArray[i]) == false)
tempBool = false;
}
double tempAngle = Math.Atan2(-trackballYVel, trackballXVel);
double normX = Math.Abs(Math.Cos(tempAngle));
double normY = Math.Abs(Math.Sin(tempAngle));
int signX = Math.Sign(trackballXVel);
int signY = Math.Sign(trackballYVel);
double trackXvDecay = Math.Min(Math.Abs(trackballXVel), trackballAccel * s.elapsedTime * normX);
double trackYvDecay = Math.Min(Math.Abs(trackballYVel), trackballAccel * s.elapsedTime * normY);
double xVNew = trackballXVel - (trackXvDecay * signX);
double yVNew = trackballYVel - (trackYvDecay * signY);
double xMotion = (xVNew * s.elapsedTime) / TRACKBALL_SCALE;
double yMotion = (yVNew * s.elapsedTime) / TRACKBALL_SCALE;
if (xMotion != 0.0)
{
xMotion += trackballDXRemain;
}
else
{
trackballDXRemain = 0.0;
}
int dx = (int)xMotion;
trackballDXRemain = xMotion - dx;
if (yMotion != 0.0)
{
yMotion += trackballDYRemain;
}
else
{
trackballDYRemain = 0.0;
}
int dy = (int)yMotion;
trackballDYRemain = yMotion - dy;
trackballXVel = xVNew;
trackballYVel = yVNew;
if (dx == 0 && dy == 0)
{
trackballActive = false;
}
else
{
cursor.TouchMoveCursor(dx, dy, tempBool);
}
}
}
if (s.TouchButton)
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
private DS4State remapped = new DS4State();
public bool dragging, dragging2; public bool dragging, dragging2;
private void synthesizeMouseButtons() private void synthesizeMouseButtons()
{ {
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchLeft.ToString(), false) == null && leftDown) if (Global.GetDS4Action(deviceNum, DS4Controls.TouchLeft, false) == null && leftDown)
{ {
Mapping.MapClick(deviceNum, Mapping.Click.Left); Mapping.MapClick(deviceNum, Mapping.Click.Left);
dragging2 = true; dragging2 = true;
} }
else else
{
dragging2 = false; dragging2 = false;
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchUpper.ToString(), false) == null && upperDown) }
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchUpper, false) == null && upperDown)
Mapping.MapClick(deviceNum, Mapping.Click.Middle); Mapping.MapClick(deviceNum, Mapping.Click.Middle);
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchRight.ToString(), false) == null && rightDown)
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchRight, false) == null && rightDown)
Mapping.MapClick(deviceNum, Mapping.Click.Left); Mapping.MapClick(deviceNum, Mapping.Click.Left);
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchMulti.ToString(), false) == null && multiDown)
if (Global.GetDS4Action(deviceNum, DS4Controls.TouchMulti, false) == null && multiDown)
Mapping.MapClick(deviceNum, Mapping.Click.Right); Mapping.MapClick(deviceNum, Mapping.Click.Right);
if (!Global.UseTPforControls[deviceNum]) if (!Global.UseTPforControls[deviceNum])
{ {
if (tappedOnce) if (tappedOnce)
@ -205,10 +452,10 @@ namespace DS4Windows
dragging = true; dragging = true;
} }
else else
{
dragging = false; dragging = false;
} }
s = remapped; }
//remapped.CopyTo(s);
} }
public virtual void touchButtonUp(object sender, TouchpadEventArgs arg) public virtual void touchButtonUp(object sender, TouchpadEventArgs arg)
@ -216,7 +463,7 @@ namespace DS4Windows
pushed = DS4Controls.None; pushed = DS4Controls.None;
upperDown = leftDown = rightDown = multiDown = false; upperDown = leftDown = rightDown = multiDown = false;
dev.setRumble(0, 0); dev.setRumble(0, 0);
dev.getCurrentState(s); s = dev.getCurrentStateRef();
if (s.Touch1 || s.Touch2) if (s.Touch1 || s.Touch2)
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
@ -231,15 +478,30 @@ namespace DS4Windows
{ {
if ((Global.LowerRCOn[deviceNum] && arg.touches[0].hwX > (1920 * 3) / 4 && arg.touches[0].hwY > (960 * 3) / 4)) if ((Global.LowerRCOn[deviceNum] && arg.touches[0].hwX > (1920 * 3) / 4 && arg.touches[0].hwY > (960 * 3) / 4))
Mapping.MapClick(deviceNum, Mapping.Click.Right); Mapping.MapClick(deviceNum, Mapping.Click.Right);
if (isLeft(arg.touches[0])) if (isLeft(arg.touches[0]))
leftDown = true; leftDown = true;
else if (isRight(arg.touches[0])) else if (isRight(arg.touches[0]))
rightDown = true; rightDown = true;
} }
dev.getCurrentState(s);
s = dev.getCurrentStateRef();
synthesizeMouseButtons(); synthesizeMouseButtons();
} }
public void populatePriorButtonStates()
{
priorUpperDown = upperDown;
priorLeftDown = leftDown;
priorRightDown = rightDown;
priorMultiDown = multiDown;
priorSwipeLeft = swipeLeft; priorSwipeRight = swipeRight;
priorSwipeUp = swipeUp; priorSwipeDown = swipeDown;
priorSwipeLeftB = swipeLeftB; priorSwipeRightB = swipeRightB; priorSwipeUpB = swipeUpB;
priorSwipeDownB = swipeDownB; priorSwipedB = swipedB;
}
public DS4State getDS4State() public DS4State getDS4State()
{ {
return s; return s;

View File

@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {
@ -20,32 +16,164 @@ namespace DS4Windows
/** Indicate x/y direction for doing jitter compensation, etc. */ /** Indicate x/y direction for doing jitter compensation, etc. */
public enum Direction { Negative, Neutral, Positive } public enum Direction { Negative, Neutral, Positive }
// Track direction vector separately and very trivially for now. // Track direction vector separately and very trivially for now.
private Direction horizontalDirection = Direction.Neutral, verticalDirection = Direction.Neutral; private Direction horizontalDirection = Direction.Neutral,
verticalDirection = Direction.Neutral;
private Direction hDirection = Direction.Neutral, vDirection = Direction.Neutral; private Direction hDirection = Direction.Neutral, vDirection = Direction.Neutral;
private const double GYRO_MOUSE_COEFFICIENT = 0.0095;
private const int GYRO_MOUSE_DEADZONE = 10;
private const double GYRO_MOUSE_OFFSET = 0.1463;
private const double GYRO_SMOOTH_MOUSE_OFFSET = 0.14698;
private const double TOUCHPAD_MOUSE_OFFSET = 0.015;
private const int SMOOTH_BUFFER_LEN = 3;
private double[] xSmoothBuffer = new double[SMOOTH_BUFFER_LEN];
private double[] ySmoothBuffer = new double[SMOOTH_BUFFER_LEN];
private int smoothBufferTail = 0;
double coefficient = 0.0;
double verticalScale = 0.0;
bool gyroSmooth = false;
int tempInt = 0;
double tempDouble = 0.0;
bool tempBool = false;
public virtual void sixaxisMoved(SixAxisEventArgs arg) public virtual void sixaxisMoved(SixAxisEventArgs arg)
{ {
int deltaX = 0, deltaY = 0; int deltaX = 0, deltaY = 0;
deltaX = -arg.sixAxis.accelX; deltaX = Global.getGyroMouseHorizontalAxis(deviceNumber) == 0 ? arg.sixAxis.gyroYawFull :
deltaY = -arg.sixAxis.accelY; arg.sixAxis.gyroRollFull;
//Console.WriteLine(arg.sixAxis.deltaX); deltaY = -arg.sixAxis.gyroPitchFull;
//tempDouble = arg.sixAxis.elapsed * 0.001 * 200.0; // Base default speed on 5 ms
tempDouble = arg.sixAxis.elapsed * 200.0; // Base default speed on 5 ms
double coefficient = Global.GyroSensitivity[deviceNumber] / 100f; gyroSmooth = Global.getGyroSmoothing(deviceNumber);
//Collect rounding errors instead of losing motion. double gyroSmoothWeight = 0.0;
double xMotion = coefficient * deltaX;
coefficient = (Global.getGyroSensitivity(deviceNumber) * 0.01) * GYRO_MOUSE_COEFFICIENT;
double offset = GYRO_MOUSE_OFFSET;
if (gyroSmooth)
{
gyroSmoothWeight = Global.getGyroSmoothingWeight(deviceNumber);
if (gyroSmoothWeight > 0.0)
{
offset = GYRO_SMOOTH_MOUSE_OFFSET;
}
}
double tempAngle = Math.Atan2(-deltaY, deltaX);
double normX = Math.Abs(Math.Cos(tempAngle));
double normY = Math.Abs(Math.Sin(tempAngle));
int signX = Math.Sign(deltaX);
int signY = Math.Sign(deltaY);
if (deltaX == 0 || (hRemainder > 0 != deltaX > 0))
{
hRemainder = 0.0;
}
if (deltaY == 0 || (vRemainder > 0 != deltaY > 0))
{
vRemainder = 0.0;
}
int deadzoneX = (int)Math.Abs(normX * GYRO_MOUSE_DEADZONE);
int deadzoneY = (int)Math.Abs(normY * GYRO_MOUSE_DEADZONE);
if (Math.Abs(deltaX) > deadzoneX)
{
deltaX -= signX * deadzoneX;
}
else
{
deltaX = 0;
}
if (Math.Abs(deltaY) > deadzoneY)
{
deltaY -= signY * deadzoneY;
}
else
{
deltaY = 0;
}
double xMotion = deltaX != 0 ? coefficient * (deltaX * tempDouble)
+ (normX * (offset * signX)) : 0;
int xAction = 0;
if (xMotion != 0.0)
{
xMotion += hRemainder; xMotion += hRemainder;
int xAction = (int)xMotion; }
hRemainder += xMotion - xAction; else
hRemainder -= (int)hRemainder; {
double yMotion = coefficient * deltaY; hRemainder = 0.0;
}
verticalScale = Global.getGyroSensVerticalScale(deviceNumber) * 0.01;
double yMotion = deltaY != 0 ? (coefficient * verticalScale) * (deltaY * tempDouble)
+ (normY * (offset * signY)) : 0;
int yAction = 0;
if (yMotion != 0.0)
{
yMotion += vRemainder; yMotion += vRemainder;
int yAction = (int)yMotion; }
vRemainder += yMotion - yAction; else
vRemainder -= (int)vRemainder; {
if (Global.GyroInvert[deviceNumber] == 2 || Global.GyroInvert[deviceNumber] == 3) vRemainder = 0.0;
}
if (gyroSmooth)
{
int iIndex = smoothBufferTail % SMOOTH_BUFFER_LEN;
xSmoothBuffer[iIndex] = xMotion;
ySmoothBuffer[iIndex] = yMotion;
smoothBufferTail = iIndex + 1;
double currentWeight = 1.0;
double finalWeight = 0.0;
double x_out = 0.0, y_out = 0.0;
int idx = 0;
for (int i = 0; i < SMOOTH_BUFFER_LEN; i++)
{
idx = (smoothBufferTail - i - 1 + SMOOTH_BUFFER_LEN) % SMOOTH_BUFFER_LEN;
x_out += xSmoothBuffer[idx] * currentWeight;
y_out += ySmoothBuffer[idx] * currentWeight;
finalWeight += currentWeight;
currentWeight *= gyroSmoothWeight;
}
x_out /= finalWeight;
xMotion = x_out;
y_out /= finalWeight;
yMotion = y_out;
}
hRemainder = vRemainder = 0.0;
if (xMotion != 0.0)
{
xAction = (int)xMotion;
hRemainder = xMotion - xAction;
}
if (yMotion != 0.0)
{
yAction = (int)yMotion;
vRemainder = yMotion - yAction;
}
int gyroInvert = Global.getGyroInvert(deviceNumber);
if ((gyroInvert & 0x02) == 2)
xAction *= -1; xAction *= -1;
if (Global.GyroInvert[deviceNumber] == 1 || Global.GyroInvert[deviceNumber] == 3)
if ((gyroInvert & 0x01) == 1)
yAction *= -1; yAction *= -1;
if (yAction != 0 || xAction != 0) if (yAction != 0 || xAction != 0)
InputMethods.MoveCursorBy(xAction, yAction); InputMethods.MoveCursorBy(xAction, yAction);
@ -53,21 +181,33 @@ namespace DS4Windows
vDirection = yMotion > 0.0 ? Direction.Positive : yMotion < 0.0 ? Direction.Negative : Direction.Neutral; vDirection = yMotion > 0.0 ? Direction.Positive : yMotion < 0.0 ? Direction.Negative : Direction.Neutral;
} }
public void mouseRemainderReset()
{
hRemainder = vRemainder = 0.0;
int iIndex = smoothBufferTail % SMOOTH_BUFFER_LEN;
xSmoothBuffer[iIndex] = 0.0;
ySmoothBuffer[iIndex] = 0.0;
smoothBufferTail = iIndex + 1;
}
public void touchesBegan(TouchpadEventArgs arg) public void touchesBegan(TouchpadEventArgs arg)
{ {
if (arg.touches.Length == 1) if (arg.touches.Length == 1)
{ {
horizontalRemainder = verticalRemainder = 0.0; horizontalRemainder = verticalRemainder = 0.0;
horizontalDirection = verticalDirection = Direction.Neutral; horizontalDirection = verticalDirection = Direction.Neutral;
} }
} }
private byte lastTouchID; private byte lastTouchID;
public void touchesMoved(TouchpadEventArgs arg, bool dragging) public void touchesMoved(TouchpadEventArgs arg, bool dragging, bool disableInvert = false)
{ {
if ((!dragging && arg.touches.Length != 1) || (dragging && arg.touches.Length < 1)) int touchesLen = arg.touches.Length;
if ((!dragging && touchesLen != 1) || (dragging && touchesLen < 1))
return; return;
int deltaX, deltaY;
int deltaX = 0, deltaY = 0;
if (arg.touches[0].touchID != lastTouchID) if (arg.touches[0].touchID != lastTouchID)
{ {
deltaX = deltaY = 0; deltaX = deltaY = 0;
@ -75,59 +215,9 @@ namespace DS4Windows
horizontalDirection = verticalDirection = Direction.Neutral; horizontalDirection = verticalDirection = Direction.Neutral;
lastTouchID = arg.touches[0].touchID; lastTouchID = arg.touches[0].touchID;
} }
else if (Global.TouchpadJitterCompensation[deviceNumber])
{
// Often the DS4's internal jitter compensation kicks in and starts hiding changes, ironically creating jitter...
if (dragging && arg.touches.Length > 1)
{
deltaX = arg.touches[1].deltaX;
deltaY = arg.touches[1].deltaY;
}
else else
{ {
deltaX = arg.touches[0].deltaX; if (dragging && touchesLen > 1)
deltaY = arg.touches[0].deltaY;
}
// allow only very fine, slow motions, when changing direction, even from neutral
// TODO maybe just consume it completely?
if (deltaX <= -1)
{
if (horizontalDirection != Direction.Negative)
{
deltaX = -1;
horizontalRemainder = 0.0;
}
}
else if (deltaX >= 1)
{
if (horizontalDirection != Direction.Positive)
{
deltaX = 1;
horizontalRemainder = 0.0;
}
}
if (deltaY <= -1)
{
if (verticalDirection != Direction.Negative)
{
deltaY = -1;
verticalRemainder = 0.0;
}
}
else if (deltaY >= 1)
{
if (verticalDirection != Direction.Positive)
{
deltaY = 1;
verticalRemainder = 0.0;
}
}
}
else
{
if (dragging && arg.touches.Length > 1)
{ {
deltaX = arg.touches[1].deltaX; deltaX = arg.touches[1].deltaX;
deltaY = arg.touches[1].deltaY; deltaY = arg.touches[1].deltaY;
@ -139,36 +229,73 @@ namespace DS4Windows
} }
} }
double coefficient = Global.TouchSensitivity[deviceNumber] / 100.0; TouchMoveCursor(deltaX, deltaY, disableInvert);
}
public void TouchMoveCursor(int dx, int dy, bool disableInvert = false)
{
double tempAngle = Math.Atan2(-dy, dx);
double normX = Math.Abs(Math.Cos(tempAngle));
double normY = Math.Abs(Math.Sin(tempAngle));
int signX = Math.Sign(dx);
int signY = Math.Sign(dy);
double coefficient = Global.getTouchSensitivity(deviceNumber) * 0.01;
bool jitterCompenstation = Global.getTouchpadJitterCompensation(deviceNumber);
double xMotion = dx != 0 ?
coefficient * dx + (normX * (TOUCHPAD_MOUSE_OFFSET * signX)) : 0.0;
double yMotion = dy != 0 ?
coefficient * dy + (normY * (TOUCHPAD_MOUSE_OFFSET * signY)) : 0.0;
if (jitterCompenstation)
{
double absX = Math.Abs(xMotion);
if (absX <= normX * 0.15)
{
xMotion = signX * Math.Pow(absX / 0.15f, 1.408) * 0.15;
}
double absY = Math.Abs(yMotion);
if (absY <= normY * 0.15)
{
yMotion = signY * Math.Pow(absY / 0.15f, 1.408) * 0.15;
}
}
// Collect rounding errors instead of losing motion. // Collect rounding errors instead of losing motion.
double xMotion = coefficient * deltaX; if (xMotion > 0.0 && horizontalRemainder > 0.0)
if (xMotion > 0.0)
{ {
if (horizontalRemainder > 0.0)
xMotion += horizontalRemainder; xMotion += horizontalRemainder;
} }
else if (xMotion < 0.0) else if (xMotion < 0.0 && horizontalRemainder < 0.0)
{ {
if (horizontalRemainder < 0.0)
xMotion += horizontalRemainder; xMotion += horizontalRemainder;
} }
int xAction = (int)xMotion; int xAction = (int)xMotion;
horizontalRemainder = xMotion - xAction; horizontalRemainder = xMotion - xAction;
double yMotion = coefficient * deltaY; if (yMotion > 0.0 && verticalRemainder > 0.0)
if (yMotion > 0.0)
{ {
if (verticalRemainder > 0.0)
yMotion += verticalRemainder; yMotion += verticalRemainder;
} }
else if (yMotion < 0.0) else if (yMotion < 0.0 && verticalRemainder < 0.0)
{ {
if (verticalRemainder < 0.0)
yMotion += verticalRemainder; yMotion += verticalRemainder;
} }
int yAction = (int)yMotion; int yAction = (int)yMotion;
verticalRemainder = yMotion - yAction; verticalRemainder = yMotion - yAction;
if (disableInvert == false)
{
int touchpadInvert = tempInt = Global.getTouchpadInvert(deviceNumber);
if ((touchpadInvert & 0x02) == 2)
xAction *= -1;
if ((touchpadInvert & 0x01) == 1)
yAction *= -1;
}
if (yAction != 0 || xAction != 0) if (yAction != 0 || xAction != 0)
InputMethods.MoveCursorBy(xAction, yAction); InputMethods.MoveCursorBy(xAction, yAction);

View File

@ -1,8 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {
@ -27,6 +23,7 @@ namespace DS4Windows
{ {
if (arg.touches.Length != 2 || dragging) if (arg.touches.Length != 2 || dragging)
return; return;
Touch lastT0 = arg.touches[0].previousTouch; Touch lastT0 = arg.touches[0].previousTouch;
Touch lastT1 = arg.touches[1].previousTouch; Touch lastT1 = arg.touches[1].previousTouch;
Touch T0 = arg.touches[0]; Touch T0 = arg.touches[0];

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles; using Microsoft.Win32.SafeHandles;
@ -522,7 +521,7 @@ namespace DS4Windows
protected virtual Boolean GetDeviceHandle(String Path) protected virtual Boolean GetDeviceHandle(String Path)
{ {
m_FileHandle = CreateFile(Path, (GENERIC_WRITE | GENERIC_READ), FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, 0); m_FileHandle = CreateFile(Path, (GENERIC_WRITE | GENERIC_READ), FILE_SHARE_READ | FILE_SHARE_WRITE, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | 0x20000000 | 0x80000000, 0);
return !m_FileHandle.IsInvalid; return !m_FileHandle.IsInvalid;
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles; using Microsoft.Win32.SafeHandles;
@ -12,6 +11,9 @@ namespace DS4Windows
{ {
private const String DS3_BUS_CLASS_GUID = "{F679F562-3164-42CE-A4DB-E7DDBE723909}"; private const String DS3_BUS_CLASS_GUID = "{F679F562-3164-42CE-A4DB-E7DDBE723909}";
private const int CONTROLLER_OFFSET = 1; // Device 0 is the virtual USB hub itself, and we leave devices 1-10 available for other software (like the Scarlet.Crush DualShock driver itself) private const int CONTROLLER_OFFSET = 1; // Device 0 is the virtual USB hub itself, and we leave devices 1-10 available for other software (like the Scarlet.Crush DualShock driver itself)
private const int inputResolution = 127 - (-128);
private const float reciprocalInputResolution = 1 / (float)inputResolution;
private const int outputResolution = 32767 - (-32768);
private int firstController = 1; private int firstController = 1;
// Device 0 is the virtual USB hub itself, and we can leave more available for other software (like the Scarlet.Crush DualShock driver) // Device 0 is the virtual USB hub itself, and we can leave more available for other software (like the Scarlet.Crush DualShock driver)
@ -25,10 +27,11 @@ namespace DS4Windows
{ {
Value -= 0x80; Value -= 0x80;
if (Value == -128) Value = -127; //float temp = (Value - (-128)) / (float)inputResolution;
if (Flip) Value *= -1; float temp = (Value - (-128)) * reciprocalInputResolution;
if (Flip) temp = (temp - 0.5f) * -1.0f + 0.5f;
return (Int32)((float)Value * 258.00787401574803149606299212599f); return (Int32)(temp * outputResolution + (-32768));
} }
@ -105,10 +108,11 @@ namespace DS4Windows
Output[4] = (Byte)(device + firstController); Output[4] = (Byte)(device + firstController);
Output[9] = 0x14; Output[9] = 0x14;
for (int i = 10; i < Output.Length; i++) for (int i = 10, outLen = Output.Length; i < outLen; i++)
{ {
Output[i] = 0; Output[i] = 0;
} }
if (state.Share) Output[10] |= (Byte)(1 << 5); // Back if (state.Share) Output[10] |= (Byte)(1 << 5); // Back
if (state.L3) Output[10] |= (Byte)(1 << 6); // Left Thumb if (state.L3) Output[10] |= (Byte)(1 << 6); // Left Thumb
if (state.R3) Output[10] |= (Byte)(1 << 7); // Right Thumb if (state.R3) Output[10] |= (Byte)(1 << 7); // Right Thumb
@ -133,9 +137,9 @@ namespace DS4Windows
Output[13] = state.R2; // Right Trigger Output[13] = state.R2; // Right Trigger
Int32 ThumbLX = Scale(state.LX, false); Int32 ThumbLX = Scale(state.LX, false);
Int32 ThumbLY = -Scale(state.LY, false); Int32 ThumbLY = Scale(state.LY, true);
Int32 ThumbRX = Scale(state.RX, false); Int32 ThumbRX = Scale(state.RX, false);
Int32 ThumbRY = -Scale(state.RY, false); Int32 ThumbRY = Scale(state.RY, true);
Output[14] = (Byte)((ThumbLX >> 0) & 0xFF); // LX Output[14] = (Byte)((ThumbLX >> 0) & 0xFF); // LX
Output[15] = (Byte)((ThumbLX >> 8) & 0xFF); Output[15] = (Byte)((ThumbLX >> 8) & 0xFF);
Output[16] = (Byte)((ThumbLY >> 0) & 0xFF); // LY Output[16] = (Byte)((ThumbLY >> 0) & 0xFF); // LY

View File

@ -19,26 +19,26 @@ namespace DS4Windows
internal class WindowsEnumerator internal class WindowsEnumerator
{ {
private delegate int EnumCallBackDelegate(IntPtr hwnd, int lParam); private delegate int EnumCallBackDelegate(IntPtr hwnd, int lParam);
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int EnumWindows(EnumCallBackDelegate lpEnumFunc, int lParam); private static extern int EnumWindows(EnumCallBackDelegate lpEnumFunc, int lParam);
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int EnumChildWindows(IntPtr hWndParent, EnumCallBackDelegate lpEnumFunc, int lParam); private static extern int EnumChildWindows(IntPtr hWndParent, EnumCallBackDelegate lpEnumFunc, int lParam);
[DllImport("user32", EntryPoint = "GetClassNameA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] [DllImport("user32", EntryPoint = "GetClassNameA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int GetClassName(IntPtr hwnd, System.Text.StringBuilder lpClassName, int nMaxCount); private static extern int GetClassName(IntPtr hwnd, System.Text.StringBuilder lpClassName, int nMaxCount);
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int IsWindowVisible(IntPtr hwnd); private static extern int IsWindowVisible(IntPtr hwnd);
[DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] [DllImport("user32", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int GetParent(IntPtr hwnd); private static extern int GetParent(IntPtr hwnd);
[DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
[DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
[DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
[DllImport("user32", EntryPoint = "SendMessageA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, System.Text.StringBuilder lParam); private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, System.Text.StringBuilder lParam);
private List<ApiWindow> _listChildren = new List<ApiWindow>(); private List<ApiWindow> _listChildren = new List<ApiWindow>();
@ -160,7 +160,7 @@ namespace DS4Windows
if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[3].hWnd), out red)) if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[3].hWnd), out red))
if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[4].hWnd), out green)) if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[4].hWnd), out green))
if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[5].hWnd), out blue)) if (Byte.TryParse(WindowsEnumerator.WindowText(EditWindows[5].hWnd), out blue))
OnUpdateColor(Color.FromArgb(red, green, blue), EventArgs.Empty); OnUpdateColor?.Invoke(Color.FromArgb(red, green, blue), EventArgs.Empty);
} }
} }
// Always call the base class hook procedure. // Always call the base class hook procedure.

View File

@ -1,48 +0,0 @@
namespace DS4Windows
{
partial class Alreadyrunning
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// Alreadyrunning
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(226, 43);
this.Name = "Alreadyrunning";
this.ShowInTaskbar = false;
this.Text = "Alreadyrunning";
this.ResumeLayout(false);
}
#endregion
}
}

View File

@ -1,36 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DS4Windows
{
public partial class Alreadyrunning : Form
{
Stopwatch sw;
public Alreadyrunning()
{
InitializeComponent();
this.WindowState = FormWindowState.Minimized;
Hide();
Timer t = new Timer();
t.Start();
t.Tick += t_Tick;
sw = new Stopwatch();
sw.Start();
}
void t_Tick(object sender, EventArgs e)
{
if (sw.ElapsedMilliseconds >= 10)
this.Close();
}
}
}

View File

@ -33,28 +33,32 @@
this.lvDebug = new System.Windows.Forms.ListView(); this.lvDebug = new System.Windows.Forms.ListView();
this.chTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.chData = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.chData = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.tmrUpdate = new System.Windows.Forms.Timer(this.components);
this.pnlButton = new System.Windows.Forms.Panel(); this.pnlButton = new System.Windows.Forms.Panel();
this.llbHelp = new System.Windows.Forms.LinkLabel(); this.llbHelp = new System.Windows.Forms.LinkLabel();
this.lbTest = new System.Windows.Forms.Label(); this.lbTest = new System.Windows.Forms.Label();
this.btnStartStop = new System.Windows.Forms.Button(); this.btnStartStop = new System.Windows.Forms.Button();
this.lbLastMessage = new System.Windows.Forms.Label(); this.lbLastMessage = new System.Windows.Forms.Label();
this.btnClear = new System.Windows.Forms.Button();
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.cMTaskbar = new System.Windows.Forms.ContextMenuStrip(this.components); this.cMTaskbar = new System.Windows.Forms.ContextMenuStrip(this.components);
this.editProfileForController1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editProfileForController1ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editProfileForController2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editProfileForController2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editProfileForController3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editProfileForController3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editProfileForController4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.editProfileForController4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this.disconToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.discon1toolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.discon2ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.discon3ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.discon4ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.startToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.startToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openProgramFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.openProfiles = new System.Windows.Forms.OpenFileDialog(); this.openProfiles = new System.Windows.Forms.OpenFileDialog();
this.tabMain = new System.Windows.Forms.TabControl(); this.tabMain = new System.Windows.Forms.TabControl();
this.tabControllers = new System.Windows.Forms.TabPage(); this.tabControllers = new System.Windows.Forms.TabPage();
this.btnConnectDS4Win10 = new System.Windows.Forms.Button();
this.tLPControllers = new System.Windows.Forms.TableLayoutPanel(); this.tLPControllers = new System.Windows.Forms.TableLayoutPanel();
this.bnLight3 = new System.Windows.Forms.Button(); this.bnLight3 = new System.Windows.Forms.Button();
this.pBStatus1 = new System.Windows.Forms.PictureBox(); this.pBStatus1 = new System.Windows.Forms.PictureBox();
@ -84,6 +88,11 @@
this.bnLight1 = new System.Windows.Forms.Button(); this.bnLight1 = new System.Windows.Forms.Button();
this.bnLight2 = new System.Windows.Forms.Button(); this.bnLight2 = new System.Windows.Forms.Button();
this.bnLight4 = new System.Windows.Forms.Button(); this.bnLight4 = new System.Windows.Forms.Button();
this.lbLinkProfile = new System.Windows.Forms.Label();
this.linkCB1 = new System.Windows.Forms.CheckBox();
this.linkCB2 = new System.Windows.Forms.CheckBox();
this.linkCB3 = new System.Windows.Forms.CheckBox();
this.linkCB4 = new System.Windows.Forms.CheckBox();
this.lbNoControllers = new System.Windows.Forms.Label(); this.lbNoControllers = new System.Windows.Forms.Label();
this.tabProfiles = new System.Windows.Forms.TabPage(); this.tabProfiles = new System.Windows.Forms.TabPage();
this.lBProfiles = new System.Windows.Forms.ListBox(); this.lBProfiles = new System.Windows.Forms.ListBox();
@ -118,7 +127,11 @@
this.hideDS4CheckBox = new System.Windows.Forms.CheckBox(); this.hideDS4CheckBox = new System.Windows.Forms.CheckBox();
this.cBSwipeProfiles = new System.Windows.Forms.CheckBox(); this.cBSwipeProfiles = new System.Windows.Forms.CheckBox();
this.StartWindowsCheckBox = new System.Windows.Forms.CheckBox(); this.StartWindowsCheckBox = new System.Windows.Forms.CheckBox();
this.startMinimizedCheckBox = new System.Windows.Forms.CheckBox(); this.runStartupPanel = new System.Windows.Forms.Panel();
this.uacPictureBox = new System.Windows.Forms.PictureBox();
this.runStartTaskRadio = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label();
this.runStartProgRadio = new System.Windows.Forms.RadioButton();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.lbNotifications = new System.Windows.Forms.Label(); this.lbNotifications = new System.Windows.Forms.Label();
this.cBoxNotifications = new System.Windows.Forms.ComboBox(); this.cBoxNotifications = new System.Windows.Forms.ComboBox();
@ -127,9 +140,11 @@
this.nUDLatency = new System.Windows.Forms.NumericUpDown(); this.nUDLatency = new System.Windows.Forms.NumericUpDown();
this.lbMsLatency = new System.Windows.Forms.Label(); this.lbMsLatency = new System.Windows.Forms.Label();
this.cBFlashWhenLate = new System.Windows.Forms.CheckBox(); this.cBFlashWhenLate = new System.Windows.Forms.CheckBox();
this.startMinimizedCheckBox = new System.Windows.Forms.CheckBox();
this.mintoTaskCheckBox = new System.Windows.Forms.CheckBox();
this.cBCloseMini = new System.Windows.Forms.CheckBox(); this.cBCloseMini = new System.Windows.Forms.CheckBox();
this.cBQuickCharge = new System.Windows.Forms.CheckBox(); this.cBQuickCharge = new System.Windows.Forms.CheckBox();
this.cBDownloadLangauge = new System.Windows.Forms.CheckBox(); this.cBUseWhiteIcon = new System.Windows.Forms.CheckBox();
this.cBUpdate = new System.Windows.Forms.CheckBox(); this.cBUpdate = new System.Windows.Forms.CheckBox();
this.pNUpdate = new System.Windows.Forms.Panel(); this.pNUpdate = new System.Windows.Forms.Panel();
this.cBUpdateTime = new System.Windows.Forms.ComboBox(); this.cBUpdateTime = new System.Windows.Forms.ComboBox();
@ -139,14 +154,21 @@
this.lbUseXIPorts = new System.Windows.Forms.Label(); this.lbUseXIPorts = new System.Windows.Forms.Label();
this.nUDXIPorts = new System.Windows.Forms.NumericUpDown(); this.nUDXIPorts = new System.Windows.Forms.NumericUpDown();
this.lbLastXIPort = new System.Windows.Forms.Label(); this.lbLastXIPort = new System.Windows.Forms.Label();
this.cBUseWhiteIcon = new System.Windows.Forms.CheckBox(); this.languagePackComboBox1 = new DS4Windows.DS4Forms.LanguagePackComboBox();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.linkProfiles = new System.Windows.Forms.LinkLabel(); this.linkProfiles = new System.Windows.Forms.LinkLabel();
this.lnkControllers = new System.Windows.Forms.LinkLabel(); this.lnkControllers = new System.Windows.Forms.LinkLabel();
this.linkUninstall = new System.Windows.Forms.LinkLabel(); this.linkUninstall = new System.Windows.Forms.LinkLabel();
this.linkSetup = new System.Windows.Forms.LinkLabel(); this.linkSetup = new System.Windows.Forms.LinkLabel();
this.lLBUpdate = new System.Windows.Forms.LinkLabel(); this.lLBUpdate = new System.Windows.Forms.LinkLabel();
this.linkSplitLabel = new System.Windows.Forms.Label();
this.hidGuardWhiteList = new System.Windows.Forms.LinkLabel();
this.clrHidGuardWlistLinkLabel = new System.Windows.Forms.LinkLabel();
this.hidGuardRegLinkLabel = new System.Windows.Forms.LinkLabel();
this.tabLog = new System.Windows.Forms.TabPage(); this.tabLog = new System.Windows.Forms.TabPage();
this.panel3 = new System.Windows.Forms.Panel();
this.exportLogTxtBtn = new System.Windows.Forms.Button();
this.btnClear = new System.Windows.Forms.Button();
this.saveProfiles = new System.Windows.Forms.SaveFileDialog(); this.saveProfiles = new System.Windows.Forms.SaveFileDialog();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.cMCustomLed = new System.Windows.Forms.ContextMenuStrip(this.components); this.cMCustomLed = new System.Windows.Forms.ContextMenuStrip(this.components);
@ -168,6 +190,8 @@
this.toolStrip1.SuspendLayout(); this.toolStrip1.SuspendLayout();
this.tabSettings.SuspendLayout(); this.tabSettings.SuspendLayout();
this.fLPSettings.SuspendLayout(); this.fLPSettings.SuspendLayout();
this.runStartupPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.uacPictureBox)).BeginInit();
this.panel1.SuspendLayout(); this.panel1.SuspendLayout();
this.panel2.SuspendLayout(); this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDLatency)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDLatency)).BeginInit();
@ -177,6 +201,7 @@
((System.ComponentModel.ISupportInitialize)(this.nUDXIPorts)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nUDXIPorts)).BeginInit();
this.flowLayoutPanel1.SuspendLayout(); this.flowLayoutPanel1.SuspendLayout();
this.tabLog.SuspendLayout(); this.tabLog.SuspendLayout();
this.panel3.SuspendLayout();
this.cMCustomLed.SuspendLayout(); this.cMCustomLed.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
@ -200,11 +225,6 @@
// //
resources.ApplyResources(this.chData, "chData"); resources.ApplyResources(this.chData, "chData");
// //
// tmrUpdate
//
this.tmrUpdate.Interval = 1;
this.tmrUpdate.Tick += new System.EventHandler(this.ControllerStatusChange);
//
// pnlButton // pnlButton
// //
this.pnlButton.BackColor = System.Drawing.SystemColors.Control; this.pnlButton.BackColor = System.Drawing.SystemColors.Control;
@ -233,7 +253,7 @@
resources.ApplyResources(this.btnStartStop, "btnStartStop"); resources.ApplyResources(this.btnStartStop, "btnStartStop");
this.btnStartStop.Name = "btnStartStop"; this.btnStartStop.Name = "btnStartStop";
this.btnStartStop.UseVisualStyleBackColor = true; this.btnStartStop.UseVisualStyleBackColor = true;
this.btnStartStop.Click += new System.EventHandler(this.btnStartStop_Click); this.btnStartStop.Click += new System.EventHandler(this.BtnStartStop_Click);
// //
// lbLastMessage // lbLastMessage
// //
@ -242,13 +262,6 @@
this.lbLastMessage.Name = "lbLastMessage"; this.lbLastMessage.Name = "lbLastMessage";
this.lbLastMessage.MouseHover += new System.EventHandler(this.lbLastMessage_MouseHover); this.lbLastMessage.MouseHover += new System.EventHandler(this.lbLastMessage_MouseHover);
// //
// btnClear
//
resources.ApplyResources(this.btnClear, "btnClear");
this.btnClear.Name = "btnClear";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
//
// notifyIcon1 // notifyIcon1
// //
this.notifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; this.notifyIcon1.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info;
@ -266,9 +279,12 @@
this.editProfileForController2ToolStripMenuItem, this.editProfileForController2ToolStripMenuItem,
this.editProfileForController3ToolStripMenuItem, this.editProfileForController3ToolStripMenuItem,
this.editProfileForController4ToolStripMenuItem, this.editProfileForController4ToolStripMenuItem,
this.toolStripSeparator4,
this.disconToolStripMenuItem,
this.toolStripSeparator1, this.toolStripSeparator1,
this.startToolStripMenuItem, this.startToolStripMenuItem,
this.openToolStripMenuItem, this.openToolStripMenuItem,
this.openProgramFolderToolStripMenuItem,
this.exitToolStripMenuItem}); this.exitToolStripMenuItem});
this.cMTaskbar.Name = "cMTaskbar"; this.cMTaskbar.Name = "cMTaskbar";
resources.ApplyResources(this.cMTaskbar, "cMTaskbar"); resources.ApplyResources(this.cMTaskbar, "cMTaskbar");
@ -302,6 +318,49 @@
this.editProfileForController4ToolStripMenuItem.Tag = "4"; this.editProfileForController4ToolStripMenuItem.Tag = "4";
this.editProfileForController4ToolStripMenuItem.Click += new System.EventHandler(this.editMenu_Click); this.editProfileForController4ToolStripMenuItem.Click += new System.EventHandler(this.editMenu_Click);
// //
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
resources.ApplyResources(this.toolStripSeparator4, "toolStripSeparator4");
//
// disconToolStripMenuItem
//
this.disconToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.discon1toolStripMenuItem,
this.discon2ToolStripMenuItem,
this.discon3ToolStripMenuItem,
this.discon4ToolStripMenuItem});
this.disconToolStripMenuItem.Name = "disconToolStripMenuItem";
resources.ApplyResources(this.disconToolStripMenuItem, "disconToolStripMenuItem");
//
// discon1toolStripMenuItem
//
this.discon1toolStripMenuItem.Name = "discon1toolStripMenuItem";
resources.ApplyResources(this.discon1toolStripMenuItem, "discon1toolStripMenuItem");
this.discon1toolStripMenuItem.Tag = "0";
this.discon1toolStripMenuItem.Click += new System.EventHandler(this.DiscontoolStripMenuItem_Click);
//
// discon2ToolStripMenuItem
//
this.discon2ToolStripMenuItem.Name = "discon2ToolStripMenuItem";
resources.ApplyResources(this.discon2ToolStripMenuItem, "discon2ToolStripMenuItem");
this.discon2ToolStripMenuItem.Tag = "1";
this.discon2ToolStripMenuItem.Click += new System.EventHandler(this.DiscontoolStripMenuItem_Click);
//
// discon3ToolStripMenuItem
//
this.discon3ToolStripMenuItem.Name = "discon3ToolStripMenuItem";
resources.ApplyResources(this.discon3ToolStripMenuItem, "discon3ToolStripMenuItem");
this.discon3ToolStripMenuItem.Tag = "2";
this.discon3ToolStripMenuItem.Click += new System.EventHandler(this.DiscontoolStripMenuItem_Click);
//
// discon4ToolStripMenuItem
//
this.discon4ToolStripMenuItem.Name = "discon4ToolStripMenuItem";
resources.ApplyResources(this.discon4ToolStripMenuItem, "discon4ToolStripMenuItem");
this.discon4ToolStripMenuItem.Tag = "3";
this.discon4ToolStripMenuItem.Click += new System.EventHandler(this.DiscontoolStripMenuItem_Click);
//
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
@ -319,6 +378,12 @@
this.openToolStripMenuItem.Name = "openToolStripMenuItem"; this.openToolStripMenuItem.Name = "openToolStripMenuItem";
this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click); this.openToolStripMenuItem.Click += new System.EventHandler(this.openToolStripMenuItem_Click);
// //
// openProgramFolderToolStripMenuItem
//
this.openProgramFolderToolStripMenuItem.Name = "openProgramFolderToolStripMenuItem";
resources.ApplyResources(this.openProgramFolderToolStripMenuItem, "openProgramFolderToolStripMenuItem");
this.openProgramFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenProgramFolderToolStripMenuItem_Click);
//
// exitToolStripMenuItem // exitToolStripMenuItem
// //
this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
@ -349,38 +414,30 @@
// //
// tabControllers // tabControllers
// //
this.tabControllers.Controls.Add(this.btnConnectDS4Win10);
this.tabControllers.Controls.Add(this.tLPControllers); this.tabControllers.Controls.Add(this.tLPControllers);
this.tabControllers.Controls.Add(this.lbNoControllers); this.tabControllers.Controls.Add(this.lbNoControllers);
resources.ApplyResources(this.tabControllers, "tabControllers"); resources.ApplyResources(this.tabControllers, "tabControllers");
this.tabControllers.Name = "tabControllers"; this.tabControllers.Name = "tabControllers";
this.tabControllers.UseVisualStyleBackColor = true; this.tabControllers.UseVisualStyleBackColor = true;
// //
// btnConnectDS4Win10
//
resources.ApplyResources(this.btnConnectDS4Win10, "btnConnectDS4Win10");
this.btnConnectDS4Win10.Name = "btnConnectDS4Win10";
this.btnConnectDS4Win10.UseVisualStyleBackColor = true;
this.btnConnectDS4Win10.Click += new System.EventHandler(this.btnConnectDS4Win10_Click);
//
// tLPControllers // tLPControllers
// //
resources.ApplyResources(this.tLPControllers, "tLPControllers"); resources.ApplyResources(this.tLPControllers, "tLPControllers");
this.tLPControllers.Controls.Add(this.bnLight3, 5, 3); this.tLPControllers.Controls.Add(this.bnLight3, 6, 3);
this.tLPControllers.Controls.Add(this.pBStatus1, 1, 1); this.tLPControllers.Controls.Add(this.pBStatus1, 1, 1);
this.tLPControllers.Controls.Add(this.lbPad1, 0, 1); this.tLPControllers.Controls.Add(this.lbPad1, 0, 1);
this.tLPControllers.Controls.Add(this.lbPad2, 0, 2); this.tLPControllers.Controls.Add(this.lbPad2, 0, 2);
this.tLPControllers.Controls.Add(this.bnEditC3, 4, 3); this.tLPControllers.Controls.Add(this.bnEditC3, 5, 3);
this.tLPControllers.Controls.Add(this.bnEditC4, 4, 4); this.tLPControllers.Controls.Add(this.bnEditC4, 5, 4);
this.tLPControllers.Controls.Add(this.lbPad3, 0, 3); this.tLPControllers.Controls.Add(this.lbPad3, 0, 3);
this.tLPControllers.Controls.Add(this.lbPad4, 0, 4); this.tLPControllers.Controls.Add(this.lbPad4, 0, 4);
this.tLPControllers.Controls.Add(this.cBController1, 3, 1); this.tLPControllers.Controls.Add(this.cBController1, 4, 1);
this.tLPControllers.Controls.Add(this.bnEditC2, 4, 2); this.tLPControllers.Controls.Add(this.bnEditC2, 5, 2);
this.tLPControllers.Controls.Add(this.cBController2, 3, 2); this.tLPControllers.Controls.Add(this.cBController2, 4, 2);
this.tLPControllers.Controls.Add(this.cBController3, 3, 3); this.tLPControllers.Controls.Add(this.cBController3, 4, 3);
this.tLPControllers.Controls.Add(this.bnEditC1, 4, 1); this.tLPControllers.Controls.Add(this.bnEditC1, 5, 1);
this.tLPControllers.Controls.Add(this.cBController4, 3, 4); this.tLPControllers.Controls.Add(this.cBController4, 4, 4);
this.tLPControllers.Controls.Add(this.lbSelectedProfile, 3, 0); this.tLPControllers.Controls.Add(this.lbSelectedProfile, 4, 0);
this.tLPControllers.Controls.Add(this.lbID, 0, 0); this.tLPControllers.Controls.Add(this.lbID, 0, 0);
this.tLPControllers.Controls.Add(this.lbStatus, 1, 0); this.tLPControllers.Controls.Add(this.lbStatus, 1, 0);
this.tLPControllers.Controls.Add(this.lbBattery, 2, 0); this.tLPControllers.Controls.Add(this.lbBattery, 2, 0);
@ -391,9 +448,14 @@
this.tLPControllers.Controls.Add(this.pBStatus2, 1, 2); this.tLPControllers.Controls.Add(this.pBStatus2, 1, 2);
this.tLPControllers.Controls.Add(this.pBStatus3, 1, 3); this.tLPControllers.Controls.Add(this.pBStatus3, 1, 3);
this.tLPControllers.Controls.Add(this.pBStatus4, 1, 4); this.tLPControllers.Controls.Add(this.pBStatus4, 1, 4);
this.tLPControllers.Controls.Add(this.bnLight1, 5, 1); this.tLPControllers.Controls.Add(this.bnLight1, 6, 1);
this.tLPControllers.Controls.Add(this.bnLight2, 5, 2); this.tLPControllers.Controls.Add(this.bnLight2, 6, 2);
this.tLPControllers.Controls.Add(this.bnLight4, 5, 4); this.tLPControllers.Controls.Add(this.bnLight4, 6, 4);
this.tLPControllers.Controls.Add(this.lbLinkProfile, 3, 0);
this.tLPControllers.Controls.Add(this.linkCB1, 3, 1);
this.tLPControllers.Controls.Add(this.linkCB2, 3, 2);
this.tLPControllers.Controls.Add(this.linkCB3, 3, 3);
this.tLPControllers.Controls.Add(this.linkCB4, 3, 4);
this.tLPControllers.Name = "tLPControllers"; this.tLPControllers.Name = "tLPControllers";
// //
// bnLight3 // bnLight3
@ -435,7 +497,7 @@
// //
resources.ApplyResources(this.bnEditC3, "bnEditC3"); resources.ApplyResources(this.bnEditC3, "bnEditC3");
this.bnEditC3.Name = "bnEditC3"; this.bnEditC3.Name = "bnEditC3";
this.bnEditC3.Tag = "2"; this.bnEditC3.Tag = "";
this.bnEditC3.UseVisualStyleBackColor = true; this.bnEditC3.UseVisualStyleBackColor = true;
this.bnEditC3.Click += new System.EventHandler(this.editButtons_Click); this.bnEditC3.Click += new System.EventHandler(this.editButtons_Click);
// //
@ -443,7 +505,7 @@
// //
resources.ApplyResources(this.bnEditC4, "bnEditC4"); resources.ApplyResources(this.bnEditC4, "bnEditC4");
this.bnEditC4.Name = "bnEditC4"; this.bnEditC4.Name = "bnEditC4";
this.bnEditC4.Tag = "3"; this.bnEditC4.Tag = "";
this.bnEditC4.UseVisualStyleBackColor = true; this.bnEditC4.UseVisualStyleBackColor = true;
this.bnEditC4.Click += new System.EventHandler(this.editButtons_Click); this.bnEditC4.Click += new System.EventHandler(this.editButtons_Click);
// //
@ -476,7 +538,7 @@
// //
resources.ApplyResources(this.bnEditC2, "bnEditC2"); resources.ApplyResources(this.bnEditC2, "bnEditC2");
this.bnEditC2.Name = "bnEditC2"; this.bnEditC2.Name = "bnEditC2";
this.bnEditC2.Tag = "1"; this.bnEditC2.Tag = "";
this.bnEditC2.UseVisualStyleBackColor = true; this.bnEditC2.UseVisualStyleBackColor = true;
this.bnEditC2.Click += new System.EventHandler(this.editButtons_Click); this.bnEditC2.Click += new System.EventHandler(this.editButtons_Click);
// //
@ -502,7 +564,7 @@
// //
resources.ApplyResources(this.bnEditC1, "bnEditC1"); resources.ApplyResources(this.bnEditC1, "bnEditC1");
this.bnEditC1.Name = "bnEditC1"; this.bnEditC1.Name = "bnEditC1";
this.bnEditC1.Tag = "0"; this.bnEditC1.Tag = "";
this.bnEditC1.UseVisualStyleBackColor = true; this.bnEditC1.UseVisualStyleBackColor = true;
this.bnEditC1.Click += new System.EventHandler(this.editButtons_Click); this.bnEditC1.Click += new System.EventHandler(this.editButtons_Click);
// //
@ -612,6 +674,43 @@
this.bnLight4.UseVisualStyleBackColor = false; this.bnLight4.UseVisualStyleBackColor = false;
this.bnLight4.Click += new System.EventHandler(this.EditCustomLed); this.bnLight4.Click += new System.EventHandler(this.EditCustomLed);
// //
// lbLinkProfile
//
resources.ApplyResources(this.lbLinkProfile, "lbLinkProfile");
this.lbLinkProfile.Name = "lbLinkProfile";
//
// linkCB1
//
resources.ApplyResources(this.linkCB1, "linkCB1");
this.linkCB1.Name = "linkCB1";
this.linkCB1.Tag = "0";
this.linkCB1.UseVisualStyleBackColor = true;
this.linkCB1.CheckedChanged += new System.EventHandler(this.linkCB_CheckedChanged);
//
// linkCB2
//
resources.ApplyResources(this.linkCB2, "linkCB2");
this.linkCB2.Name = "linkCB2";
this.linkCB2.Tag = "1";
this.linkCB2.UseVisualStyleBackColor = true;
this.linkCB2.CheckedChanged += new System.EventHandler(this.linkCB_CheckedChanged);
//
// linkCB3
//
resources.ApplyResources(this.linkCB3, "linkCB3");
this.linkCB3.Name = "linkCB3";
this.linkCB3.Tag = "2";
this.linkCB3.UseVisualStyleBackColor = true;
this.linkCB3.CheckedChanged += new System.EventHandler(this.linkCB_CheckedChanged);
//
// linkCB4
//
resources.ApplyResources(this.linkCB4, "linkCB4");
this.linkCB4.Name = "linkCB4";
this.linkCB4.Tag = "3";
this.linkCB4.UseVisualStyleBackColor = true;
this.linkCB4.CheckedChanged += new System.EventHandler(this.linkCB_CheckedChanged);
//
// lbNoControllers // lbNoControllers
// //
resources.ApplyResources(this.lbNoControllers, "lbNoControllers"); resources.ApplyResources(this.lbNoControllers, "lbNoControllers");
@ -632,8 +731,8 @@
this.lBProfiles.ContextMenuStrip = this.cMProfile; this.lBProfiles.ContextMenuStrip = this.cMProfile;
resources.ApplyResources(this.lBProfiles, "lBProfiles"); resources.ApplyResources(this.lBProfiles, "lBProfiles");
this.lBProfiles.FormattingEnabled = true; this.lBProfiles.FormattingEnabled = true;
this.lBProfiles.MultiColumn = true;
this.lBProfiles.Name = "lBProfiles"; this.lBProfiles.Name = "lBProfiles";
this.lBProfiles.SelectedIndexChanged += new System.EventHandler(this.lBProfiles_SelectedIndexChanged);
this.lBProfiles.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lBProfiles_KeyDown); this.lBProfiles.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lBProfiles_KeyDown);
this.lBProfiles.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lBProfiles_MouseDoubleClick); this.lBProfiles.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lBProfiles_MouseDoubleClick);
this.lBProfiles.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lBProfiles_MouseDown); this.lBProfiles.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lBProfiles_MouseDown);
@ -795,22 +894,22 @@
// //
// tsBEditProfile // tsBEditProfile
// //
this.tsBEditProfile.Image = global::DS4Windows.Properties.Resources.edit;
resources.ApplyResources(this.tsBEditProfile, "tsBEditProfile"); resources.ApplyResources(this.tsBEditProfile, "tsBEditProfile");
this.tsBEditProfile.Image = global::DS4Windows.Properties.Resources.edit;
this.tsBEditProfile.Name = "tsBEditProfile"; this.tsBEditProfile.Name = "tsBEditProfile";
this.tsBEditProfile.Click += new System.EventHandler(this.tsBNEditProfile_Click); this.tsBEditProfile.Click += new System.EventHandler(this.tsBNEditProfile_Click);
// //
// tsBDeleteProfile // tsBDeleteProfile
// //
this.tsBDeleteProfile.Image = global::DS4Windows.Properties.Resources.delete;
resources.ApplyResources(this.tsBDeleteProfile, "tsBDeleteProfile"); resources.ApplyResources(this.tsBDeleteProfile, "tsBDeleteProfile");
this.tsBDeleteProfile.Image = global::DS4Windows.Properties.Resources.delete;
this.tsBDeleteProfile.Name = "tsBDeleteProfile"; this.tsBDeleteProfile.Name = "tsBDeleteProfile";
this.tsBDeleteProfile.Click += new System.EventHandler(this.tsBDeleteProfle_Click); this.tsBDeleteProfile.Click += new System.EventHandler(this.tsBDeleteProfle_Click);
// //
// tSBDupProfile // tSBDupProfile
// //
this.tSBDupProfile.Image = global::DS4Windows.Properties.Resources.copy;
resources.ApplyResources(this.tSBDupProfile, "tSBDupProfile"); resources.ApplyResources(this.tSBDupProfile, "tSBDupProfile");
this.tSBDupProfile.Image = global::DS4Windows.Properties.Resources.copy;
this.tSBDupProfile.Name = "tSBDupProfile"; this.tSBDupProfile.Name = "tSBDupProfile";
this.tSBDupProfile.Click += new System.EventHandler(this.tSBDupProfile_Click); this.tSBDupProfile.Click += new System.EventHandler(this.tSBDupProfile_Click);
// //
@ -823,8 +922,8 @@
// //
// tSBExportProfile // tSBExportProfile
// //
this.tSBExportProfile.Image = global::DS4Windows.Properties.Resources.export;
resources.ApplyResources(this.tSBExportProfile, "tSBExportProfile"); resources.ApplyResources(this.tSBExportProfile, "tSBExportProfile");
this.tSBExportProfile.Image = global::DS4Windows.Properties.Resources.export;
this.tSBExportProfile.Name = "tSBExportProfile"; this.tSBExportProfile.Name = "tSBExportProfile";
this.tSBExportProfile.Click += new System.EventHandler(this.tSBExportProfile_Click); this.tSBExportProfile.Click += new System.EventHandler(this.tSBExportProfile_Click);
// //
@ -847,17 +946,19 @@
this.fLPSettings.Controls.Add(this.hideDS4CheckBox); this.fLPSettings.Controls.Add(this.hideDS4CheckBox);
this.fLPSettings.Controls.Add(this.cBSwipeProfiles); this.fLPSettings.Controls.Add(this.cBSwipeProfiles);
this.fLPSettings.Controls.Add(this.StartWindowsCheckBox); this.fLPSettings.Controls.Add(this.StartWindowsCheckBox);
this.fLPSettings.Controls.Add(this.startMinimizedCheckBox); this.fLPSettings.Controls.Add(this.runStartupPanel);
this.fLPSettings.Controls.Add(this.panel1); this.fLPSettings.Controls.Add(this.panel1);
this.fLPSettings.Controls.Add(this.cBDisconnectBT); this.fLPSettings.Controls.Add(this.cBDisconnectBT);
this.fLPSettings.Controls.Add(this.panel2); this.fLPSettings.Controls.Add(this.panel2);
this.fLPSettings.Controls.Add(this.startMinimizedCheckBox);
this.fLPSettings.Controls.Add(this.mintoTaskCheckBox);
this.fLPSettings.Controls.Add(this.cBCloseMini); this.fLPSettings.Controls.Add(this.cBCloseMini);
this.fLPSettings.Controls.Add(this.cBQuickCharge); this.fLPSettings.Controls.Add(this.cBQuickCharge);
this.fLPSettings.Controls.Add(this.cBUseWhiteIcon); this.fLPSettings.Controls.Add(this.cBUseWhiteIcon);
this.fLPSettings.Controls.Add(this.cBDownloadLangauge);
this.fLPSettings.Controls.Add(this.cBUpdate); this.fLPSettings.Controls.Add(this.cBUpdate);
this.fLPSettings.Controls.Add(this.pNUpdate); this.fLPSettings.Controls.Add(this.pNUpdate);
this.fLPSettings.Controls.Add(this.pnlXIPorts); this.fLPSettings.Controls.Add(this.pnlXIPorts);
this.fLPSettings.Controls.Add(this.languagePackComboBox1);
this.fLPSettings.Controls.Add(this.flowLayoutPanel1); this.fLPSettings.Controls.Add(this.flowLayoutPanel1);
this.fLPSettings.Name = "fLPSettings"; this.fLPSettings.Name = "fLPSettings";
// //
@ -865,7 +966,7 @@
// //
resources.ApplyResources(this.hideDS4CheckBox, "hideDS4CheckBox"); resources.ApplyResources(this.hideDS4CheckBox, "hideDS4CheckBox");
this.hideDS4CheckBox.Name = "hideDS4CheckBox"; this.hideDS4CheckBox.Name = "hideDS4CheckBox";
this.hideDS4CheckBox.UseVisualStyleBackColor = true; this.hideDS4CheckBox.UseVisualStyleBackColor = false;
this.hideDS4CheckBox.CheckedChanged += new System.EventHandler(this.hideDS4CheckBox_CheckedChanged); this.hideDS4CheckBox.CheckedChanged += new System.EventHandler(this.hideDS4CheckBox_CheckedChanged);
// //
// cBSwipeProfiles // cBSwipeProfiles
@ -874,7 +975,7 @@
this.cBSwipeProfiles.Checked = true; this.cBSwipeProfiles.Checked = true;
this.cBSwipeProfiles.CheckState = System.Windows.Forms.CheckState.Checked; this.cBSwipeProfiles.CheckState = System.Windows.Forms.CheckState.Checked;
this.cBSwipeProfiles.Name = "cBSwipeProfiles"; this.cBSwipeProfiles.Name = "cBSwipeProfiles";
this.cBSwipeProfiles.UseVisualStyleBackColor = true; this.cBSwipeProfiles.UseVisualStyleBackColor = false;
this.cBSwipeProfiles.CheckedChanged += new System.EventHandler(this.cBSwipeProfiles_CheckedChanged); this.cBSwipeProfiles.CheckedChanged += new System.EventHandler(this.cBSwipeProfiles_CheckedChanged);
// //
// StartWindowsCheckBox // StartWindowsCheckBox
@ -884,12 +985,43 @@
this.StartWindowsCheckBox.UseVisualStyleBackColor = true; this.StartWindowsCheckBox.UseVisualStyleBackColor = true;
this.StartWindowsCheckBox.CheckedChanged += new System.EventHandler(this.StartWindowsCheckBox_CheckedChanged); this.StartWindowsCheckBox.CheckedChanged += new System.EventHandler(this.StartWindowsCheckBox_CheckedChanged);
// //
// startMinimizedCheckBox // runStartupPanel
// //
resources.ApplyResources(this.startMinimizedCheckBox, "startMinimizedCheckBox"); this.runStartupPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.startMinimizedCheckBox.Name = "startMinimizedCheckBox"; this.runStartupPanel.Controls.Add(this.uacPictureBox);
this.startMinimizedCheckBox.UseVisualStyleBackColor = true; this.runStartupPanel.Controls.Add(this.runStartTaskRadio);
this.startMinimizedCheckBox.CheckedChanged += new System.EventHandler(this.startMinimizedCheckBox_CheckedChanged); this.runStartupPanel.Controls.Add(this.label1);
this.runStartupPanel.Controls.Add(this.runStartProgRadio);
resources.ApplyResources(this.runStartupPanel, "runStartupPanel");
this.runStartupPanel.Name = "runStartupPanel";
//
// uacPictureBox
//
resources.ApplyResources(this.uacPictureBox, "uacPictureBox");
this.uacPictureBox.Name = "uacPictureBox";
this.uacPictureBox.TabStop = false;
//
// runStartTaskRadio
//
resources.ApplyResources(this.runStartTaskRadio, "runStartTaskRadio");
this.runStartTaskRadio.Name = "runStartTaskRadio";
this.runStartTaskRadio.TabStop = true;
this.runStartTaskRadio.UseVisualStyleBackColor = false;
this.runStartTaskRadio.Click += new System.EventHandler(this.runStartTaskRadio_Click);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// runStartProgRadio
//
resources.ApplyResources(this.runStartProgRadio, "runStartProgRadio");
this.runStartProgRadio.Checked = true;
this.runStartProgRadio.Name = "runStartProgRadio";
this.runStartProgRadio.TabStop = true;
this.runStartProgRadio.UseVisualStyleBackColor = false;
this.runStartProgRadio.Click += new System.EventHandler(this.runStartProgRadio_Click);
// //
// panel1 // panel1
// //
@ -940,7 +1072,7 @@
0}); 0});
this.nUDLatency.Name = "nUDLatency"; this.nUDLatency.Name = "nUDLatency";
this.nUDLatency.Value = new decimal(new int[] { this.nUDLatency.Value = new decimal(new int[] {
10, 20,
0, 0,
0, 0,
0}); 0});
@ -957,9 +1089,22 @@
this.cBFlashWhenLate.Checked = true; this.cBFlashWhenLate.Checked = true;
this.cBFlashWhenLate.CheckState = System.Windows.Forms.CheckState.Checked; this.cBFlashWhenLate.CheckState = System.Windows.Forms.CheckState.Checked;
this.cBFlashWhenLate.Name = "cBFlashWhenLate"; this.cBFlashWhenLate.Name = "cBFlashWhenLate";
this.cBFlashWhenLate.UseVisualStyleBackColor = true; this.cBFlashWhenLate.UseVisualStyleBackColor = false;
this.cBFlashWhenLate.CheckedChanged += new System.EventHandler(this.cBFlashWhenLate_CheckedChanged); this.cBFlashWhenLate.CheckedChanged += new System.EventHandler(this.cBFlashWhenLate_CheckedChanged);
// //
// startMinimizedCheckBox
//
resources.ApplyResources(this.startMinimizedCheckBox, "startMinimizedCheckBox");
this.startMinimizedCheckBox.Name = "startMinimizedCheckBox";
this.startMinimizedCheckBox.UseVisualStyleBackColor = true;
this.startMinimizedCheckBox.CheckedChanged += new System.EventHandler(this.startMinimizedCheckBox_CheckedChanged);
//
// mintoTaskCheckBox
//
resources.ApplyResources(this.mintoTaskCheckBox, "mintoTaskCheckBox");
this.mintoTaskCheckBox.Name = "mintoTaskCheckBox";
this.mintoTaskCheckBox.UseVisualStyleBackColor = true;
//
// cBCloseMini // cBCloseMini
// //
resources.ApplyResources(this.cBCloseMini, "cBCloseMini"); resources.ApplyResources(this.cBCloseMini, "cBCloseMini");
@ -974,20 +1119,18 @@
this.cBQuickCharge.UseVisualStyleBackColor = true; this.cBQuickCharge.UseVisualStyleBackColor = true;
this.cBQuickCharge.CheckedChanged += new System.EventHandler(this.cBQuickCharge_CheckedChanged); this.cBQuickCharge.CheckedChanged += new System.EventHandler(this.cBQuickCharge_CheckedChanged);
// //
// cBDownloadLangauge // cBUseWhiteIcon
// //
resources.ApplyResources(this.cBDownloadLangauge, "cBDownloadLangauge"); resources.ApplyResources(this.cBUseWhiteIcon, "cBUseWhiteIcon");
this.cBDownloadLangauge.Checked = true; this.cBUseWhiteIcon.Name = "cBUseWhiteIcon";
this.cBDownloadLangauge.CheckState = System.Windows.Forms.CheckState.Checked; this.cBUseWhiteIcon.UseVisualStyleBackColor = true;
this.cBDownloadLangauge.Name = "cBDownloadLangauge"; this.cBUseWhiteIcon.CheckedChanged += new System.EventHandler(this.cBUseWhiteIcon_CheckedChanged);
this.cBDownloadLangauge.UseVisualStyleBackColor = true;
this.cBDownloadLangauge.CheckedChanged += new System.EventHandler(this.cBDownloadLangauge_CheckedChanged);
// //
// cBUpdate // cBUpdate
// //
resources.ApplyResources(this.cBUpdate, "cBUpdate"); resources.ApplyResources(this.cBUpdate, "cBUpdate");
this.cBUpdate.Name = "cBUpdate"; this.cBUpdate.Name = "cBUpdate";
this.cBUpdate.UseVisualStyleBackColor = true; this.cBUpdate.UseVisualStyleBackColor = false;
this.cBUpdate.CheckedChanged += new System.EventHandler(this.cBUpdate_CheckedChanged); this.cBUpdate.CheckedChanged += new System.EventHandler(this.cBUpdate_CheckedChanged);
// //
// pNUpdate // pNUpdate
@ -1032,8 +1175,6 @@
this.pnlXIPorts.Controls.Add(this.lbLastXIPort); this.pnlXIPorts.Controls.Add(this.lbLastXIPort);
resources.ApplyResources(this.pnlXIPorts, "pnlXIPorts"); resources.ApplyResources(this.pnlXIPorts, "pnlXIPorts");
this.pnlXIPorts.Name = "pnlXIPorts"; this.pnlXIPorts.Name = "pnlXIPorts";
this.pnlXIPorts.MouseEnter += new System.EventHandler(this.pnlXIPorts_MouseEnter);
this.pnlXIPorts.MouseLeave += new System.EventHandler(this.pnlXIPorts_MouseLeave);
// //
// lbUseXIPorts // lbUseXIPorts
// //
@ -1068,21 +1209,26 @@
resources.ApplyResources(this.lbLastXIPort, "lbLastXIPort"); resources.ApplyResources(this.lbLastXIPort, "lbLastXIPort");
this.lbLastXIPort.Name = "lbLastXIPort"; this.lbLastXIPort.Name = "lbLastXIPort";
// //
// cBUseWhiteIcon // languagePackComboBox1
// //
resources.ApplyResources(this.cBUseWhiteIcon, "cBUseWhiteIcon"); resources.ApplyResources(this.languagePackComboBox1, "languagePackComboBox1");
this.cBUseWhiteIcon.Name = "cBUseWhiteIcon"; this.languagePackComboBox1.Name = "languagePackComboBox1";
this.cBUseWhiteIcon.UseVisualStyleBackColor = true; this.languagePackComboBox1.SelectedValueChanged += new System.EventHandler(this.languagePackComboBox1_SelectedValueChanged);
this.cBUseWhiteIcon.CheckedChanged += new System.EventHandler(this.cBUseWhiteIcon_CheckedChanged);
// //
// flowLayoutPanel1 // flowLayoutPanel1
// //
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1"); resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.flowLayoutPanel1.Controls.Add(this.linkProfiles); this.flowLayoutPanel1.Controls.Add(this.linkProfiles);
this.flowLayoutPanel1.Controls.Add(this.lnkControllers); this.flowLayoutPanel1.Controls.Add(this.lnkControllers);
this.flowLayoutPanel1.Controls.Add(this.linkUninstall); this.flowLayoutPanel1.Controls.Add(this.linkUninstall);
this.flowLayoutPanel1.Controls.Add(this.linkSetup); this.flowLayoutPanel1.Controls.Add(this.linkSetup);
this.flowLayoutPanel1.Controls.Add(this.lLBUpdate); this.flowLayoutPanel1.Controls.Add(this.lLBUpdate);
this.flowLayoutPanel1.Controls.Add(this.linkSplitLabel);
this.flowLayoutPanel1.Controls.Add(this.hidGuardWhiteList);
this.flowLayoutPanel1.Controls.Add(this.clrHidGuardWlistLinkLabel);
this.flowLayoutPanel1.Controls.Add(this.hidGuardRegLinkLabel);
this.flowLayoutPanel1.ForeColor = System.Drawing.SystemColors.ControlText;
this.flowLayoutPanel1.Name = "flowLayoutPanel1"; this.flowLayoutPanel1.Name = "flowLayoutPanel1";
// //
// linkProfiles // linkProfiles
@ -1120,14 +1266,64 @@
this.lLBUpdate.TabStop = true; this.lLBUpdate.TabStop = true;
this.lLBUpdate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLBUpdate_LinkClicked); this.lLBUpdate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLBUpdate_LinkClicked);
// //
// linkSplitLabel
//
resources.ApplyResources(this.linkSplitLabel, "linkSplitLabel");
this.linkSplitLabel.BackColor = System.Drawing.SystemColors.ActiveBorder;
this.linkSplitLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.linkSplitLabel.ForeColor = System.Drawing.SystemColors.ControlText;
this.linkSplitLabel.Name = "linkSplitLabel";
//
// hidGuardWhiteList
//
resources.ApplyResources(this.hidGuardWhiteList, "hidGuardWhiteList");
this.hidGuardWhiteList.Name = "hidGuardWhiteList";
this.hidGuardWhiteList.TabStop = true;
this.hidGuardWhiteList.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.HidGuardWhiteList_LinkClicked);
//
// clrHidGuardWlistLinkLabel
//
resources.ApplyResources(this.clrHidGuardWlistLinkLabel, "clrHidGuardWlistLinkLabel");
this.clrHidGuardWlistLinkLabel.Name = "clrHidGuardWlistLinkLabel";
this.clrHidGuardWlistLinkLabel.TabStop = true;
this.clrHidGuardWlistLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.ClrHidGuardWlistLinkLabel_LinkClicked);
//
// hidGuardRegLinkLabel
//
resources.ApplyResources(this.hidGuardRegLinkLabel, "hidGuardRegLinkLabel");
this.hidGuardRegLinkLabel.Name = "hidGuardRegLinkLabel";
this.hidGuardRegLinkLabel.TabStop = true;
this.hidGuardRegLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.HidGuardRegLinkLabel_LinkClicked);
//
// tabLog // tabLog
// //
this.tabLog.Controls.Add(this.lvDebug); this.tabLog.Controls.Add(this.lvDebug);
this.tabLog.Controls.Add(this.btnClear); this.tabLog.Controls.Add(this.panel3);
resources.ApplyResources(this.tabLog, "tabLog"); resources.ApplyResources(this.tabLog, "tabLog");
this.tabLog.Name = "tabLog"; this.tabLog.Name = "tabLog";
this.tabLog.UseVisualStyleBackColor = true; this.tabLog.UseVisualStyleBackColor = true;
// //
// panel3
//
this.panel3.Controls.Add(this.exportLogTxtBtn);
this.panel3.Controls.Add(this.btnClear);
resources.ApplyResources(this.panel3, "panel3");
this.panel3.Name = "panel3";
//
// exportLogTxtBtn
//
resources.ApplyResources(this.exportLogTxtBtn, "exportLogTxtBtn");
this.exportLogTxtBtn.Name = "exportLogTxtBtn";
this.exportLogTxtBtn.UseVisualStyleBackColor = true;
this.exportLogTxtBtn.Click += new System.EventHandler(this.exportLogTxtBtn_Click);
//
// btnClear
//
resources.ApplyResources(this.btnClear, "btnClear");
this.btnClear.Name = "btnClear";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.BtnClear_Click);
//
// saveProfiles // saveProfiles
// //
resources.ApplyResources(this.saveProfiles, "saveProfiles"); resources.ApplyResources(this.saveProfiles, "saveProfiles");
@ -1157,16 +1353,12 @@
resources.ApplyResources(this.useCustomColorToolStripMenuItem, "useCustomColorToolStripMenuItem"); resources.ApplyResources(this.useCustomColorToolStripMenuItem, "useCustomColorToolStripMenuItem");
this.useCustomColorToolStripMenuItem.Click += new System.EventHandler(this.useCustomColorToolStripMenuItem_Click); this.useCustomColorToolStripMenuItem.Click += new System.EventHandler(this.useCustomColorToolStripMenuItem_Click);
// //
// advColorDialog
//
this.advColorDialog.OnUpdateColor += new DS4Windows.AdvancedColorDialog.ColorUpdateHandler(this.advColorDialog_OnUpdateColor);
//
// DS4Form // DS4Form
// //
this.AllowDrop = true; this.AllowDrop = true;
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.Color.White; this.BackColor = System.Drawing.SystemColors.Window;
this.Controls.Add(this.tabMain); this.Controls.Add(this.tabMain);
this.Controls.Add(this.pnlButton); this.Controls.Add(this.pnlButton);
this.Name = "DS4Form"; this.Name = "DS4Form";
@ -1179,7 +1371,6 @@
this.cMTaskbar.ResumeLayout(false); this.cMTaskbar.ResumeLayout(false);
this.tabMain.ResumeLayout(false); this.tabMain.ResumeLayout(false);
this.tabControllers.ResumeLayout(false); this.tabControllers.ResumeLayout(false);
this.tabControllers.PerformLayout();
this.tLPControllers.ResumeLayout(false); this.tLPControllers.ResumeLayout(false);
this.tLPControllers.PerformLayout(); this.tLPControllers.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pBStatus1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pBStatus1)).EndInit();
@ -1196,6 +1387,9 @@
this.tabSettings.ResumeLayout(false); this.tabSettings.ResumeLayout(false);
this.fLPSettings.ResumeLayout(false); this.fLPSettings.ResumeLayout(false);
this.fLPSettings.PerformLayout(); this.fLPSettings.PerformLayout();
this.runStartupPanel.ResumeLayout(false);
this.runStartupPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.uacPictureBox)).EndInit();
this.panel1.ResumeLayout(false); this.panel1.ResumeLayout(false);
this.panel1.PerformLayout(); this.panel1.PerformLayout();
this.panel2.ResumeLayout(false); this.panel2.ResumeLayout(false);
@ -1210,6 +1404,7 @@
this.flowLayoutPanel1.ResumeLayout(false); this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout(); this.flowLayoutPanel1.PerformLayout();
this.tabLog.ResumeLayout(false); this.tabLog.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.cMCustomLed.ResumeLayout(false); this.cMCustomLed.ResumeLayout(false);
this.ResumeLayout(false); this.ResumeLayout(false);
@ -1220,10 +1415,8 @@
private System.Windows.Forms.ListView lvDebug; private System.Windows.Forms.ListView lvDebug;
private System.Windows.Forms.ColumnHeader chTime; private System.Windows.Forms.ColumnHeader chTime;
private System.Windows.Forms.ColumnHeader chData; private System.Windows.Forms.ColumnHeader chData;
private System.Windows.Forms.Timer tmrUpdate;
private System.Windows.Forms.Panel pnlButton; private System.Windows.Forms.Panel pnlButton;
private System.Windows.Forms.Button btnStartStop; private System.Windows.Forms.Button btnStartStop;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.NotifyIcon notifyIcon1; private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.ContextMenuStrip cMTaskbar; private System.Windows.Forms.ContextMenuStrip cMTaskbar;
private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem;
@ -1264,7 +1457,6 @@
private System.Windows.Forms.Label lbSelectedProfile; private System.Windows.Forms.Label lbSelectedProfile;
private System.Windows.Forms.Label lbID; private System.Windows.Forms.Label lbID;
private System.Windows.Forms.Label lbStatus; private System.Windows.Forms.Label lbStatus;
private System.Windows.Forms.Label lbBattery;
private System.Windows.Forms.Label lbBatt1; private System.Windows.Forms.Label lbBatt1;
private System.Windows.Forms.Label lbBatt2; private System.Windows.Forms.Label lbBatt2;
private System.Windows.Forms.Label lbBatt3; private System.Windows.Forms.Label lbBatt3;
@ -1322,7 +1514,6 @@
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.Label lbNoControllers; private System.Windows.Forms.Label lbNoControllers;
private System.Windows.Forms.ToolTip toolTip1; private System.Windows.Forms.ToolTip toolTip1;
private System.Windows.Forms.CheckBox cBDownloadLangauge;
private System.Windows.Forms.CheckBox cBFlashWhenLate; private System.Windows.Forms.CheckBox cBFlashWhenLate;
private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lbNotifications; private System.Windows.Forms.Label lbNotifications;
@ -1330,7 +1521,6 @@
private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.NumericUpDown nUDLatency; private System.Windows.Forms.NumericUpDown nUDLatency;
private System.Windows.Forms.Label lbMsLatency; private System.Windows.Forms.Label lbMsLatency;
private System.Windows.Forms.Button btnConnectDS4Win10;
private System.Windows.Forms.Button bnLight3; private System.Windows.Forms.Button bnLight3;
private System.Windows.Forms.Button bnLight1; private System.Windows.Forms.Button bnLight1;
private System.Windows.Forms.Button bnLight2; private System.Windows.Forms.Button bnLight2;
@ -1340,6 +1530,33 @@
private System.Windows.Forms.ToolStripMenuItem useCustomColorToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem useCustomColorToolStripMenuItem;
private AdvancedColorDialog advColorDialog; private AdvancedColorDialog advColorDialog;
private System.Windows.Forms.CheckBox cBUseWhiteIcon; private System.Windows.Forms.CheckBox cBUseWhiteIcon;
private System.Windows.Forms.Panel runStartupPanel;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.RadioButton runStartProgRadio;
private System.Windows.Forms.RadioButton runStartTaskRadio;
private System.Windows.Forms.PictureBox uacPictureBox;
private System.Windows.Forms.Label lbBattery;
private System.Windows.Forms.Label lbLinkProfile;
private System.Windows.Forms.CheckBox linkCB1;
private System.Windows.Forms.CheckBox linkCB2;
private System.Windows.Forms.CheckBox linkCB3;
private System.Windows.Forms.CheckBox linkCB4;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Button exportLogTxtBtn;
private System.Windows.Forms.Button btnClear;
private DS4Forms.LanguagePackComboBox languagePackComboBox1;
private System.Windows.Forms.LinkLabel hidGuardWhiteList;
private System.Windows.Forms.LinkLabel clrHidGuardWlistLinkLabel;
private System.Windows.Forms.LinkLabel hidGuardRegLinkLabel;
private System.Windows.Forms.Label linkSplitLabel;
private System.Windows.Forms.ToolStripMenuItem openProgramFolderToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
private System.Windows.Forms.ToolStripMenuItem disconToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem discon1toolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem discon2ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem discon3ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem discon4ToolStripMenuItem;
private System.Windows.Forms.CheckBox mintoTaskCheckBox;
//private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2; //private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
} }
} }

View File

@ -196,9 +196,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>الأيادي</value> <value>الأيادي</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>وصل اليد بشكل حصري (تجريبي)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1046, 94</value> <value>1046, 94</value>
</data> </data>

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
@ -117,28 +117,184 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="chTime.Text" xml:space="preserve">
<value>Čas</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lbLastMessage.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>861, 22</value> <value>214, 26</value>
</data> </data>
<data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing"> <data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve">
<value>874, 11</value> <value>Přiřadit ovladači č.1</value>
</data> </data>
<data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 17</value> <value>214, 26</value>
</data> </data>
<data name="llbHelp.Text" xml:space="preserve"> <data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve">
<value>Kláv. zkratky/O programu</value> <value>Přiřadit ovladači č.2</value>
</data>
<data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.3</value>
</data>
<data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.4</value>
</data>
<data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 22</value>
</data>
<data name="bnEditC1.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 58</value>
</data>
<data name="bnEditC2.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 94</value>
</data>
<data name="bnEditC3.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 130</value>
</data>
<data name="bnEditC4.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing">
<value>1072, 22</value>
</data>
<data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value>
</data>
<data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing">
<value>1072, 58</value>
</data>
<data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1072, 94</value>
</data>
<data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value>
</data>
<data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing">
<value>1072, 130</value>
</data>
<data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value>
</data> </data>
<data name="btnClear.Text" xml:space="preserve"> <data name="btnClear.Text" xml:space="preserve">
<value>Vymazat</value> <value>Vymazat</value>
</data> </data>
<data name="btnStartStop.Text" xml:space="preserve">
<value>Start</value>
</data>
<data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 21</value>
</data>
<data name="cBCloseMini.Text" xml:space="preserve">
<value>Zavřít při minimalizování</value>
</data>
<data name="cBController1.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 23</value>
</data>
<data name="cBController2.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 59</value>
</data>
<data name="cBController3.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 95</value>
</data>
<data name="cBController4.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 131</value>
</data>
<data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing">
<value>201, 21</value>
</data>
<data name="cBDisconnectBT.Text" xml:space="preserve">
<value>Odpojit od BT při zastavení</value>
</data>
<data name="cBDownloadLangauge.Size" type="System.Drawing.Size, System.Drawing">
<value>348, 21</value>
</data>
<data name="cBDownloadLangauge.Text" xml:space="preserve">
<value>Při aktualizaci stáhnout také nové jazykové balíčky</value>
</data>
<data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 21</value>
</data>
<data name="cBFlashWhenLate.Text" xml:space="preserve">
<value>Blikat při vysoké latenci</value>
</data>
<data name="cBoxNotifications.Items" xml:space="preserve">
<value>Žádný</value>
</data>
<data name="cBoxNotifications.Items1" xml:space="preserve">
<value>Pouze varování</value>
</data>
<data name="cBoxNotifications.Items2" xml:space="preserve">
<value>Vše</value>
</data>
<data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing">
<value>126, 21</value>
</data>
<data name="cBQuickCharge.Text" xml:space="preserve">
<value>Rychlé nabíjení</value>
</data>
<data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>289, 21</value>
</data>
<data name="cBSwipeProfiles.Text" xml:space="preserve">
<value>Pro změnu profilu přejeďte po touchpadu</value>
</data>
<data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>253, 21</value>
</data>
<data name="cBUpdate.Text" xml:space="preserve">
<value>Při spuštění kontrolovat aktualizace</value>
</data>
<data name="cBUpdateTime.Items" xml:space="preserve">
<value>hodin</value>
</data>
<data name="cBUpdateTime.Items1" xml:space="preserve">
<value>dní</value>
</data>
<data name="cBUpdateTime.Location" type="System.Drawing.Point, System.Drawing">
<value>211, 0</value>
</data>
<data name="chData.Text" xml:space="preserve">
<value>Data</value>
</data>
<data name="chTime.Text" xml:space="preserve">
<value>Čas</value>
</data>
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 56</value>
</data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>215, 264</value>
</data>
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>304, 192</value> <value>304, 192</value>
</data> </data>
<data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="deleteToolStripMenuItem.Text" xml:space="preserve">
<value>Odstranit (Del)</value>
</data>
<data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="duplicateToolStripMenuItem.Text" xml:space="preserve">
<value>Duplikovat (Ctrl+D)</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>303, 26</value> <value>303, 26</value>
</data> </data>
@ -163,17 +319,11 @@
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve"> <data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>Upravit profil ovladače č. 4</value> <value>Upravit profil ovladače č. 4</value>
</data> </data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing"> <data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>300, 6</value> <value>214, 26</value>
</data> </data>
<data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>303, 26</value> <value>Změnit</value>
</data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>303, 26</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>Otevřít</value>
</data> </data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>303, 26</value> <value>303, 26</value>
@ -181,56 +331,80 @@
<data name="exitToolStripMenuItem.Text" xml:space="preserve"> <data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>Ukončit (prostřední tlačítko myši)</value> <value>Ukončit (prostřední tlačítko myši)</value>
</data> </data>
<data name="tabControllers.Text" xml:space="preserve"> <data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>Ovladače</value> <value>214, 26</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve"> <data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>Připojit výhradně k DS4 (experimentální funkce)</value> <value>Exportovat</value>
</data> </data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>1072, 94</value> <value>369, 13</value>
</data> </data>
<data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing"> <data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value> <value>185, 85</value>
</data> </data>
<data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing"> <data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>522, 26</value> <value>146, 21</value>
</data> </data>
<data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing"> <data name="hideDS4CheckBox.Text" xml:space="preserve">
<value>1018, 94</value> <value>Skrýt DS4 ovladač</value>
</data> </data>
<data name="bnEditC3.Text" xml:space="preserve"> <data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>Změnit</value> <value>214, 26</value>
</data> </data>
<data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing"> <data name="importToolStripMenuItem.Text" xml:space="preserve">
<value>1018, 130</value> <value>Importovat</value>
</data> </data>
<data name="bnEditC4.Text" xml:space="preserve"> <data name="languagePackComboBox1.InvariantCultureText" xml:space="preserve">
<value>Změnit</value> <value>Ne (anglické UI)</value>
</data> </data>
<data name="cBController1.Location" type="System.Drawing.Point, System.Drawing"> <data name="languagePackComboBox1.LabelText" xml:space="preserve">
<value>872, 23</value> <value>Použít jazykový balíček</value>
</data> </data>
<data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 58</value> <value>740, 27</value>
</data> </data>
<data name="bnEditC2.Text" xml:space="preserve"> <data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing">
<value>Změnit</value> <value>740, 63</value>
</data> </data>
<data name="cBController2.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 59</value> <value>740, 99</value>
</data> </data>
<data name="cBController3.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing">
<value>872, 95</value> <value>740, 135</value>
</data> </data>
<data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing">
<value>1018, 22</value> <value>732, 0</value>
</data> </data>
<data name="bnEditC1.Text" xml:space="preserve"> <data name="lbBattery.Text" xml:space="preserve">
<value>Změnit</value> <value>Baterie</value>
</data> </data>
<data name="cBController4.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing">
<value>872, 131</value> <value>128, 17</value>
</data>
<data name="lbCheckEvery.Text" xml:space="preserve">
<value>Kontrolovat kažých</value>
</data>
<data name="lbID.Text" xml:space="preserve">
<value>ID</value>
</data>
<data name="lbLastMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>861, 22</value>
</data>
<data name="lbLastXIPort.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 4</value>
</data>
<data name="lbMsLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 5</value>
</data>
<data name="lbNoControllers.Text" xml:space="preserve">
<value>Žádné připojené ovladače (max. 4)</value>
</data>
<data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 17</value>
</data>
<data name="lbNotifications.Text" xml:space="preserve">
<value>Zobrazit oznámení</value>
</data> </data>
<data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>886, 0</value> <value>886, 0</value>
@ -250,23 +424,77 @@
<data name="lbStatus.Text" xml:space="preserve"> <data name="lbStatus.Text" xml:space="preserve">
<value>Stav</value> <value>Stav</value>
</data> </data>
<data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>732, 0</value> <value>127, 17</value>
</data> </data>
<data name="lbBattery.Text" xml:space="preserve"> <data name="lbUseXIPorts.Text" xml:space="preserve">
<value>Baterie</value> <value>Použít Xinput porty</value>
</data> </data>
<data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>740, 27</value> <value>93, 17</value>
</data> </data>
<data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkProfiles.Text" xml:space="preserve">
<value>740, 63</value> <value>Složka profilu</value>
</data> </data>
<data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing">
<value>740, 99</value> <value>132, 17</value>
</data> </data>
<data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkSetup.Text" xml:space="preserve">
<value>740, 135</value> <value>Nastavení ovladače</value>
</data>
<data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 17</value>
</data>
<data name="linkUninstall.Text" xml:space="preserve">
<value>Odinstalovat VBus ovladač</value>
</data>
<data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>874, 11</value>
</data>
<data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 17</value>
</data>
<data name="llbHelp.Text" xml:space="preserve">
<value>Kláv. zkratky/O programu</value>
</data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 17</value>
</data>
<data name="lLBUpdate.Text" xml:space="preserve">
<value>Zkontrolovat aktualizace</value>
</data>
<data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 17</value>
</data>
<data name="lnkControllers.Text" xml:space="preserve">
<value>Ovládací panel</value>
</data>
<data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="newProfileToolStripMenuItem.Text" xml:space="preserve">
<value>Nový profil</value>
</data>
<data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>174, 2</value>
</data>
<data name="nUDUpdateTime.Location" type="System.Drawing.Point, System.Drawing">
<value>148, 1</value>
</data>
<data name="nUDXIPorts.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 1</value>
</data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>303, 26</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>Otevřít</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>266, 28</value>
</data>
<data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 26</value>
</data> </data>
<data name="pBStatus2.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus2.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 62</value> <value>522, 62</value>
@ -277,95 +505,44 @@
<data name="pBStatus4.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus4.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 134</value> <value>522, 134</value>
</data> </data>
<data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing"> <data name="pnlXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 22</value> <value>253, 28</value>
</data> </data>
<data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing"> <data name="pNUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>46, 28</value> <value>289, 28</value>
</data> </data>
<data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing"> <data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 58</value> <value>173, 21</value>
</data> </data>
<data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing"> <data name="startMinimizedCheckBox.Text" xml:space="preserve">
<value>46, 28</value> <value>Spustit minimalizovaně</value>
</data> </data>
<data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing"> <data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>1072, 130</value> <value>303, 26</value>
</data> </data>
<data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing"> <data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>46, 28</value> <value>Start</value>
</data> </data>
<data name="lbNoControllers.Text" xml:space="preserve"> <data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>Žádné připojené ovladače (max. 4)</value> <value>189, 21</value>
</data>
<data name="StartWindowsCheckBox.Text" xml:space="preserve">
<value>Spustit při startu systému</value>
</data>
<data name="tabAutoProfiles.Text" xml:space="preserve">
<value>Automatické profily</value>
</data>
<data name="tabControllers.Text" xml:space="preserve">
<value>Ovladače</value>
</data>
<data name="tabLog.Text" xml:space="preserve">
<value>Protokol</value>
</data> </data>
<data name="tabProfiles.Text" xml:space="preserve"> <data name="tabProfiles.Text" xml:space="preserve">
<value>Profily</value> <value>Profily</value>
</data> </data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tabSettings.Text" xml:space="preserve">
<value>215, 264</value> <value>Nastavení</value>
</data>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.1</value>
</data>
<data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.2</value>
</data>
<data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.3</value>
</data>
<data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve">
<value>Přiřadit ovladači č.4</value>
</data>
<data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="deleteToolStripMenuItem.Text" xml:space="preserve">
<value>Odstranit (Del)</value>
</data>
<data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="duplicateToolStripMenuItem.Text" xml:space="preserve">
<value>Duplikovat (Ctrl+D)</value>
</data>
<data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="newProfileToolStripMenuItem.Text" xml:space="preserve">
<value>Nový profil</value>
</data>
<data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="importToolStripMenuItem.Text" xml:space="preserve">
<value>Importovat</value>
</data>
<data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 26</value>
</data>
<data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>Exportovat</value>
</data>
<data name="tSOptions.Text" xml:space="preserve">
<value>Možnosti profilu</value>
</data> </data>
<data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 24</value> <value>98, 24</value>
@ -373,14 +550,8 @@
<data name="toolStripLabel1.Text" xml:space="preserve"> <data name="toolStripLabel1.Text" xml:space="preserve">
<value>Název profilu</value> <value>Název profilu</value>
</data> </data>
<data name="tSTBProfile.Text" xml:space="preserve"> <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>&lt;zadejte název profilu&gt;</value> <value>300, 6</value>
</data>
<data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 24</value>
</data>
<data name="tSBSaveProfile.Text" xml:space="preserve">
<value>Uložit profil</value>
</data> </data>
<data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 24</value> <value>70, 24</value>
@ -388,30 +559,6 @@
<data name="tSBCancel.Text" xml:space="preserve"> <data name="tSBCancel.Text" xml:space="preserve">
<value>Zrušit</value> <value>Zrušit</value>
</data> </data>
<data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing">
<value>207, 24</value>
</data>
<data name="tSBKeepSize.Text" xml:space="preserve">
<value>Pamatovat si velikost okna</value>
</data>
<data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 24</value>
</data>
<data name="tsBNewProfle.Text" xml:space="preserve">
<value>Nový</value>
</data>
<data name="tsBNewProfle.ToolTipText" xml:space="preserve">
<value>Vytvořit nový profil</value>
</data>
<data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 24</value>
</data>
<data name="tsBEditProfile.Text" xml:space="preserve">
<value>Změnit</value>
</data>
<data name="tsBEditProfile.ToolTipText" xml:space="preserve">
<value>Upravit vybraný profil (Enter)</value>
</data>
<data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 24</value> <value>94, 24</value>
</data> </data>
@ -430,14 +577,14 @@
<data name="tSBDupProfile.ToolTipText" xml:space="preserve"> <data name="tSBDupProfile.ToolTipText" xml:space="preserve">
<value>Duplikovat vybraný profil (Ctrl+D)</value> <value>Duplikovat vybraný profil (Ctrl+D)</value>
</data> </data>
<data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 24</value> <value>80, 24</value>
</data> </data>
<data name="tSBImportProfile.Text" xml:space="preserve"> <data name="tsBEditProfile.Text" xml:space="preserve">
<value>Importovat</value> <value>Změnit</value>
</data> </data>
<data name="tSBImportProfile.ToolTipText" xml:space="preserve"> <data name="tsBEditProfile.ToolTipText" xml:space="preserve">
<value>Importovat profil</value> <value>Upravit vybraný profil (Enter)</value>
</data> </data>
<data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 24</value> <value>105, 24</value>
@ -448,179 +595,41 @@
<data name="tSBExportProfile.ToolTipText" xml:space="preserve"> <data name="tSBExportProfile.ToolTipText" xml:space="preserve">
<value>Exportovat vybraný profil</value> <value>Exportovat vybraný profil</value>
</data> </data>
<data name="tabAutoProfiles.Text" xml:space="preserve"> <data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>Automatické profily</value> <value>107, 24</value>
</data> </data>
<data name="tabSettings.Text" xml:space="preserve"> <data name="tSBImportProfile.Text" xml:space="preserve">
<value>Nastavení</value> <value>Importovat</value>
</data> </data>
<data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBImportProfile.ToolTipText" xml:space="preserve">
<value>146, 21</value> <value>Importovat profil</value>
</data> </data>
<data name="hideDS4CheckBox.Text" xml:space="preserve"> <data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing">
<value>Skrýt DS4 ovladač</value> <value>207, 24</value>
</data> </data>
<data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBKeepSize.Text" xml:space="preserve">
<value>289, 21</value> <value>Pamatovat si velikost okna</value>
</data> </data>
<data name="cBSwipeProfiles.Text" xml:space="preserve"> <data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing">
<value>Pro změnu profilu přejeďte po touchpadu</value> <value>67, 24</value>
</data> </data>
<data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBNewProfle.Text" xml:space="preserve">
<value>189, 21</value> <value>Nový</value>
</data> </data>
<data name="StartWindowsCheckBox.Text" xml:space="preserve"> <data name="tsBNewProfle.ToolTipText" xml:space="preserve">
<value>Spustit při startu systému</value> <value>Vytvořit nový profil</value>
</data> </data>
<data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 21</value> <value>112, 24</value>
</data> </data>
<data name="startMinimizedCheckBox.Text" xml:space="preserve"> <data name="tSBSaveProfile.Text" xml:space="preserve">
<value>Spustit minimalizovaně</value> <value>Uložit profil</value>
</data> </data>
<data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSOptions.Text" xml:space="preserve">
<value>125, 17</value> <value>Možnosti profilu</value>
</data> </data>
<data name="lbNotifications.Text" xml:space="preserve"> <data name="tSTBProfile.Text" xml:space="preserve">
<value>Zobrazit oznámení</value> <value>&lt;zadejte název profilu&gt;</value>
</data>
<data name="cBoxNotifications.Items" xml:space="preserve">
<value>Žádný</value>
</data>
<data name="cBoxNotifications.Items1" xml:space="preserve">
<value>Pouze varování</value>
</data>
<data name="cBoxNotifications.Items2" xml:space="preserve">
<value>Vše</value>
</data>
<data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing">
<value>201, 21</value>
</data>
<data name="cBDisconnectBT.Text" xml:space="preserve">
<value>Odpojit od BT při zastavení</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>266, 28</value>
</data>
<data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>174, 2</value>
</data>
<data name="lbMsLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 5</value>
</data>
<data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 21</value>
</data>
<data name="cBFlashWhenLate.Text" xml:space="preserve">
<value>Blikat při vysoké latenci</value>
</data>
<data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 21</value>
</data>
<data name="cBCloseMini.Text" xml:space="preserve">
<value>Zavřít při minimalizování</value>
</data>
<data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing">
<value>126, 21</value>
</data>
<data name="cBQuickCharge.Text" xml:space="preserve">
<value>Rychlé nabíjení</value>
</data>
<data name="cBDownloadLangauge.Size" type="System.Drawing.Size, System.Drawing">
<value>348, 21</value>
</data>
<data name="cBDownloadLangauge.Text" xml:space="preserve">
<value>Při aktualizaci stáhnout také nové jazykové balíčky</value>
</data>
<data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>253, 21</value>
</data>
<data name="cBUpdate.Text" xml:space="preserve">
<value>Při spuštění kontrolovat aktualizace</value>
</data>
<data name="pNUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>289, 28</value>
</data>
<data name="cBUpdateTime.Items" xml:space="preserve">
<value>hodin</value>
</data>
<data name="cBUpdateTime.Items1" xml:space="preserve">
<value>dní</value>
</data>
<data name="cBUpdateTime.Location" type="System.Drawing.Point, System.Drawing">
<value>211, 0</value>
</data>
<data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 17</value>
</data>
<data name="lbCheckEvery.Text" xml:space="preserve">
<value>Kontrolovat kažých</value>
</data>
<data name="nUDUpdateTime.Location" type="System.Drawing.Point, System.Drawing">
<value>148, 1</value>
</data>
<data name="pnlXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>253, 28</value>
</data>
<data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>127, 17</value>
</data>
<data name="lbUseXIPorts.Text" xml:space="preserve">
<value>Použít Xinput porty</value>
</data>
<data name="nUDXIPorts.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 1</value>
</data>
<data name="lbLastXIPort.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 4</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>369, 13</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>185, 85</value>
</data>
<data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 17</value>
</data>
<data name="linkProfiles.Text" xml:space="preserve">
<value>Složka profilu</value>
</data>
<data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 17</value>
</data>
<data name="lnkControllers.Text" xml:space="preserve">
<value>Ovládací panel</value>
</data>
<data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 17</value>
</data>
<data name="linkUninstall.Text" xml:space="preserve">
<value>Odinstalovat VBus ovladač</value>
</data>
<data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 17</value>
</data>
<data name="linkSetup.Text" xml:space="preserve">
<value>Nastavení ovladače</value>
</data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 17</value>
</data>
<data name="lLBUpdate.Text" xml:space="preserve">
<value>Zkontrolovat aktualizace</value>
</data>
<data name="tabLog.Text" xml:space="preserve">
<value>Protokol</value>
</data>
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 56</value>
</data>
<data name="useProfileColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value>
</data>
<data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve">
<value>Použít barvu profilu</value>
</data> </data>
<data name="useCustomColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="useCustomColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>213, 26</value>
@ -628,16 +637,10 @@
<data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve"> <data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve">
<value>Použít vlastní barvu</value> <value>Použít vlastní barvu</value>
</data> </data>
<data name="btnStartStop.Text" xml:space="preserve"> <data name="useProfileColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>Start</value> <value>213, 26</value>
</data> </data>
<data name="chData.Text" xml:space="preserve"> <data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve">
<value>Data</value> <value>Použít barvu profilu</value>
</data>
<data name="lbID.Text" xml:space="preserve">
<value>ID</value>
</data>
<data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>Start</value>
</data> </data>
</root> </root>

View File

@ -184,9 +184,6 @@
<data name="exitToolStripMenuItem.Text" xml:space="preserve"> <data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>Beenden (Mittlere Maustaste)</value> <value>Beenden (Mittlere Maustaste)</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Verbinde den DS4 exklusiv (experimentell)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1071, 94</value> <value>1071, 94</value>
</data> </data>

View File

@ -181,9 +181,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Χειριστήρια</value> <value>Χειριστήρια</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Σύνδεσε το DS4 αποκλειστικά(δοκιμαστικό)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1076, 94</value> <value>1076, 94</value>
</data> </data>

View File

@ -149,25 +149,25 @@
<value>280, 24</value> <value>280, 24</value>
</data> </data>
<data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve"> <data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve">
<value>Editar perfil del Controlador 1</value> <value>Editar perfil del Control 1</value>
</data> </data>
<data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 24</value> <value>280, 24</value>
</data> </data>
<data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve"> <data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve">
<value>Editar perfil del Controlador 2</value> <value>Editar perfil del Control 2</value>
</data> </data>
<data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 24</value> <value>280, 24</value>
</data> </data>
<data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve"> <data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve">
<value>Editar perfil del Controlador 3</value> <value>Editar perfil del Control 3</value>
</data> </data>
<data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>280, 24</value> <value>280, 24</value>
</data> </data>
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve"> <data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>Editar perfil del Controlador 4</value> <value>Editar perfil del Control 4</value>
</data> </data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>277, 6</value> <value>277, 6</value>
@ -302,10 +302,10 @@
<value>34, 28</value> <value>34, 28</value>
</data> </data>
<data name="lbNoControllers.Text" xml:space="preserve"> <data name="lbNoControllers.Text" xml:space="preserve">
<value>Ningún controlador conectado (Máx 4)</value> <value>Ningún control conectado (Máx 4)</value>
</data> </data>
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Controladores</value> <value>Control</value>
</data> </data>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 24</value> <value>240, 24</value>
@ -317,25 +317,25 @@
<value>240, 24</value> <value>240, 24</value>
</data> </data>
<data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve">
<value>Asignar al Controlador 1</value> <value>Asignar al Control 1</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 24</value> <value>240, 24</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve">
<value>Asignar al Controlador 2</value> <value>Asignar al Control 2</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 24</value> <value>240, 24</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve">
<value>Asignar al Controlador 3</value> <value>Asignar al Control 3</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 24</value> <value>240, 24</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve">
<value>Asignar al Controlador 4</value> <value>Asignar al Control 4</value>
</data> </data>
<data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>240, 24</value> <value>240, 24</value>
@ -464,13 +464,13 @@
<value>185, 21</value> <value>185, 21</value>
</data> </data>
<data name="hideDS4CheckBox.Text" xml:space="preserve"> <data name="hideDS4CheckBox.Text" xml:space="preserve">
<value>Ocultar Controlador DS4</value> <value>Ocultar Control DS4</value>
</data> </data>
<data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>305, 21</value> <value>305, 21</value>
</data> </data>
<data name="cBSwipeProfiles.Text" xml:space="preserve"> <data name="cBSwipeProfiles.Text" xml:space="preserve">
<value>Deslizar el panel táctil para cambiar de perfil</value> <value>Deslice el panel táctil para cambiar de perfil</value>
</data> </data>
<data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>198, 21</value> <value>198, 21</value>
@ -599,7 +599,7 @@
<value>235, 17</value> <value>235, 17</value>
</data> </data>
<data name="linkSetup.Text" xml:space="preserve"> <data name="linkSetup.Text" xml:space="preserve">
<value>Controlador/Configuración de Driver</value> <value>Control/Configuración de Driver</value>
</data> </data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing"> <data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>261, 17</value> <value>261, 17</value>
@ -628,9 +628,6 @@
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 56</value> <value>197, 56</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Conectar DS4 exclusivamente (experimental)</value>
</data>
<data name="cBoxNotifications.Items" xml:space="preserve"> <data name="cBoxNotifications.Items" xml:space="preserve">
<value>Ninguna</value> <value>Ninguna</value>
</data> </data>

View File

@ -190,9 +190,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Ohjaimet</value> <value>Ohjaimet</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Liitä vain DS4-ohjain (exclusive mode) (kokeellinen)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1074, 94</value> <value>1074, 94</value>
</data> </data>

View File

@ -199,9 +199,6 @@
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>287, 192</value> <value>287, 192</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Connecter DS4 exclusivement (expérimental)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1077, 94</value> <value>1077, 94</value>
</data> </data>

View File

@ -193,9 +193,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>בקרים</value> <value>בקרים</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>התחבר ל-DS4 בלעדית (ניסיוני)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1084, 94</value> <value>1084, 94</value>
</data> </data>

View File

@ -181,9 +181,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Vezérlők</value> <value>Vezérlők</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>DS4 exkluzív csatlakoztatása (kísérleti)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1077, 94</value> <value>1077, 94</value>
</data> </data>

View File

@ -190,9 +190,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Controller</value> <value>Controller</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Sambung secara khusus (eksperimental)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1070, 94</value> <value>1070, 94</value>
</data> </data>

View File

@ -604,9 +604,6 @@
<data name="tabLog.Text" xml:space="preserve"> <data name="tabLog.Text" xml:space="preserve">
<value>Registro</value> <value>Registro</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Connetti Solo DS4 (sperimentale)</value>
</data>
<data name="cBoxNotifications.Items" xml:space="preserve"> <data name="cBoxNotifications.Items" xml:space="preserve">
<value>Nessuno</value> <value>Nessuno</value>
</data> </data>

View File

@ -144,9 +144,6 @@
<data name="btnClear.Text" xml:space="preserve"> <data name="btnClear.Text" xml:space="preserve">
<value>삭제</value> <value>삭제</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>DS4 만 연결하기 ( 실험버전 )</value>
</data>
<data name="btnStartStop.Text" xml:space="preserve"> <data name="btnStartStop.Text" xml:space="preserve">
<value>시작</value> <value>시작</value>
</data> </data>

View File

@ -187,9 +187,6 @@
<data name="exitToolStripMenuItem.Text" xml:space="preserve"> <data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>Sluiten (Scroll klik)</value> <value>Sluiten (Scroll klik)</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Alleen de DS4 Controller Aansluiten (experimenteel)</value>
</data>
<data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing">
<value>483, 26</value> <value>483, 26</value>
</data> </data>

View File

@ -190,9 +190,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Kontrolery</value> <value>Kontrolery</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Podłącz kontroler DS4 na wyłączność (eksperymentalne)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1085, 94</value> <value>1085, 94</value>
</data> </data>

View File

@ -187,9 +187,6 @@
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>256, 192</value> <value>256, 192</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Conectar exclusivamente o DS4 (experimental)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1038, 94</value> <value>1038, 94</value>
</data> </data>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -196,9 +196,6 @@
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabControllers.Text" xml:space="preserve">
<value>Krmilniki</value> <value>Krmilniki</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Poveži izključno z DS4</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1079, 94</value> <value>1079, 94</value>
</data> </data>

View File

@ -141,9 +141,6 @@
<data name="cMTaskbar.ToolTip" xml:space="preserve"> <data name="cMTaskbar.ToolTip" xml:space="preserve">
<value /> <value />
</data> </data>
<data name="btnConnectDS4Win10.ToolTip" xml:space="preserve">
<value />
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1083, 94</value> <value>1083, 94</value>

View File

@ -196,9 +196,6 @@
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>322, 192</value> <value>322, 192</value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Ексклюзивне підключення DS4 (експерементальне)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1069, 94</value> <value>1069, 94</value>
</data> </data>

View File

@ -6362,9 +6362,6 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>Kết nối DS4 qua cmd (thử nghiệm)</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1083, 94</value> <value>1083, 94</value>
</data> </data>

View File

@ -123,69 +123,21 @@
<data name="chData.Text" xml:space="preserve"> <data name="chData.Text" xml:space="preserve">
<value>数据</value> <value>数据</value>
</data> </data>
<data name="btnStartStop.Text" xml:space="preserve">
<value>开始</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing"> <data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>980, 11</value> <value>774, 9</value>
</data> </data>
<data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing"> <data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>62, 17</value> <value>60, 13</value>
</data> </data>
<data name="llbHelp.Text" xml:space="preserve"> <data name="llbHelp.Text" xml:space="preserve">
<value>热键/关于</value> <value>热键/关于</value>
</data> </data>
<data name="btnClear.Text" xml:space="preserve"> <data name="btnStartStop.Text" xml:space="preserve">
<value>清空</value> <value>开始</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄1 配置文件</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄2 配置文件</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄3 配置文件</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄4 配置文件</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>225, 6</value>
</data>
<data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>启动</value>
</data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>打开</value>
</data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>退出(鼠标中键)</value>
</data> </data>
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>229, 192</value> <value>191, 186</value>
</data> </data>
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@ -6359,188 +6311,245 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄1 配置文件</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄2 配置文件</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄3 配置文件</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>编辑 手柄4 配置文件</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 6</value>
</data>
<data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>启动</value>
</data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>打开</value>
</data>
<data name="openProgramFolderToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>退出(鼠标中键)</value>
</data>
<data name="tabControllers.Text" xml:space="preserve">
<value>手柄</value>
</data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1053, 94</value> <value>797, 89</value>
</data> </data>
<data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 28</value> <value>96, 22</value>
</data>
<data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing">
<value>493, 26</value>
</data> </data>
<data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing">
<value>999, 94</value> <value>757, 89</value>
</data> </data>
<data name="bnEditC3.Text" xml:space="preserve"> <data name="bnEditC3.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
</data> </data>
<data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing">
<value>999, 130</value> <value>757, 117</value>
</data> </data>
<data name="bnEditC4.Text" xml:space="preserve"> <data name="bnEditC4.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
</data> </data>
<data name="cBController1.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController1.Location" type="System.Drawing.Point, System.Drawing">
<value>853, 24</value> <value>640, 33</value>
</data> </data>
<data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing">
<value>999, 58</value> <value>757, 61</value>
</data> </data>
<data name="bnEditC2.Text" xml:space="preserve"> <data name="bnEditC2.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
</data> </data>
<data name="cBController2.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController2.Location" type="System.Drawing.Point, System.Drawing">
<value>853, 60</value> <value>640, 61</value>
</data> </data>
<data name="cBController3.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController3.Location" type="System.Drawing.Point, System.Drawing">
<value>853, 96</value> <value>640, 89</value>
</data> </data>
<data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing">
<value>999, 22</value> <value>757, 33</value>
</data> </data>
<data name="bnEditC1.Text" xml:space="preserve"> <data name="bnEditC1.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
</data> </data>
<data name="cBController4.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController4.Location" type="System.Drawing.Point, System.Drawing">
<value>853, 132</value> <value>640, 117</value>
</data> </data>
<data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>880, 0</value> <value>653, 7</value>
</data> </data>
<data name="lbSelectedProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbSelectedProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 18</value> <value>85, 15</value>
</data> </data>
<data name="lbSelectedProfile.Text" xml:space="preserve"> <data name="lbSelectedProfile.Text" xml:space="preserve">
<value>已选配置文件</value> <value>已选配置文件</value>
</data> </data>
<data name="lbStatus.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>495, 0</value> <value>387, 7</value>
</data> </data>
<data name="lbStatus.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 18</value> <value>33, 15</value>
</data> </data>
<data name="lbStatus.Text" xml:space="preserve"> <data name="lbStatus.Text" xml:space="preserve">
<value>状态</value> <value>状态</value>
</data> </data>
<data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing">
<value>723, 0</value> <value>491, 7</value>
</data> </data>
<data name="lbBattery.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbBattery.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 18</value> <value>33, 15</value>
</data> </data>
<data name="lbBattery.Text" xml:space="preserve"> <data name="lbBattery.Text" xml:space="preserve">
<value>电池</value> <value>电池</value>
</data> </data>
<data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing">
<value>718, 27</value> <value>488, 36</value>
</data> </data>
<data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing">
<value>718, 63</value> <value>488, 64</value>
</data> </data>
<data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing">
<value>718, 99</value> <value>488, 92</value>
</data> </data>
<data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing">
<value>718, 135</value> <value>488, 120</value>
</data>
<data name="pBStatus2.Location" type="System.Drawing.Point, System.Drawing">
<value>493, 62</value>
</data>
<data name="pBStatus3.Location" type="System.Drawing.Point, System.Drawing">
<value>493, 98</value>
</data>
<data name="pBStatus4.Location" type="System.Drawing.Point, System.Drawing">
<value>493, 134</value>
</data> </data>
<data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing">
<value>1053, 22</value> <value>797, 33</value>
</data> </data>
<data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 28</value> <value>96, 22</value>
</data> </data>
<data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing">
<value>1053, 58</value> <value>797, 61</value>
</data> </data>
<data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 28</value> <value>96, 22</value>
</data> </data>
<data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing">
<value>1053, 130</value> <value>797, 117</value>
</data> </data>
<data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 28</value> <value>96, 22</value>
</data>
<data name="lbLinkProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>563, 0</value>
</data>
<data name="linkCB1.Location" type="System.Drawing.Point, System.Drawing">
<value>589, 37</value>
</data>
<data name="linkCB2.Location" type="System.Drawing.Point, System.Drawing">
<value>589, 65</value>
</data>
<data name="linkCB3.Location" type="System.Drawing.Point, System.Drawing">
<value>589, 93</value>
</data>
<data name="linkCB4.Location" type="System.Drawing.Point, System.Drawing">
<value>589, 121</value>
</data> </data>
<data name="lbNoControllers.Text" xml:space="preserve"> <data name="lbNoControllers.Text" xml:space="preserve">
<value>没有连接的手柄最多4个</value> <value>没有连接的手柄最多4个</value>
</data> </data>
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabProfiles.Text" xml:space="preserve">
<value>手柄</value> <value>配置文件</value>
</data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 224</value>
</data> </data>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="editToolStripMenuItem.Text" xml:space="preserve"> <data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
</data> </data>
<data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve">
<value>指定至 手柄1</value> <value>指定至 手柄1</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve">
<value>指定至 手柄2</value> <value>指定至 手柄2</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve">
<value>指定至 手柄3</value> <value>指定至 手柄3</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve">
<value>指定至 手柄4</value> <value>指定至 手柄4</value>
</data> </data>
<data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="deleteToolStripMenuItem.Text" xml:space="preserve"> <data name="deleteToolStripMenuItem.Text" xml:space="preserve">
<value>删除Del</value> <value>删除Del</value>
</data> </data>
<data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="duplicateToolStripMenuItem.Text" xml:space="preserve"> <data name="duplicateToolStripMenuItem.Text" xml:space="preserve">
<value>复制Ctrl+D</value> <value>复制Ctrl+D</value>
</data> </data>
<data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="newProfileToolStripMenuItem.Text" xml:space="preserve"> <data name="newProfileToolStripMenuItem.Text" xml:space="preserve">
<value>新建配置文件</value> <value>新建配置文件</value>
</data> </data>
<data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="importToolStripMenuItem.Text" xml:space="preserve"> <data name="importToolStripMenuItem.Text" xml:space="preserve">
<value>导入</value> <value>导入</value>
</data> </data>
<data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 26</value> <value>161, 22</value>
</data> </data>
<data name="exportToolStripMenuItem.Text" xml:space="preserve"> <data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>导出</value> <value>导出</value>
</data> </data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSOptions.Text" xml:space="preserve">
<value>191, 264</value> <value>配置选项</value>
</data> </data>
<data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 24</value> <value>72, 24</value>
</data> </data>
<data name="toolStripLabel1.Text" xml:space="preserve"> <data name="toolStripLabel1.Text" xml:space="preserve">
<value>配置名称:</value> <value>配置名称:</value>
@ -6549,28 +6558,25 @@
<value>&lt;输入配置名称&gt;</value> <value>&lt;输入配置名称&gt;</value>
</data> </data>
<data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>97, 24</value> <value>83, 24</value>
</data> </data>
<data name="tSBSaveProfile.Text" xml:space="preserve"> <data name="tSBSaveProfile.Text" xml:space="preserve">
<value>保存配置</value> <value>保存配置</value>
</data> </data>
<data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBCancel.Text" xml:space="preserve"> <data name="tSBCancel.Text" xml:space="preserve">
<value>取消</value> <value>取消</value>
</data> </data>
<data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 24</value> <value>148, 24</value>
</data> </data>
<data name="tSBKeepSize.Text" xml:space="preserve"> <data name="tSBKeepSize.Text" xml:space="preserve">
<value>关闭后保存窗口大小</value> <value>关闭后保存窗口大小</value>
</data> </data>
<data name="tSOptions.Text" xml:space="preserve">
<value>配置选项</value>
</data>
<data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBNewProfle.Text" xml:space="preserve"> <data name="tsBNewProfle.Text" xml:space="preserve">
<value>新建</value> <value>新建</value>
@ -6579,7 +6585,7 @@
<value>新建配置文件</value> <value>新建配置文件</value>
</data> </data>
<data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBEditProfile.Text" xml:space="preserve"> <data name="tsBEditProfile.Text" xml:space="preserve">
<value>编辑</value> <value>编辑</value>
@ -6588,7 +6594,7 @@
<value>编辑选定的配置Enter</value> <value>编辑选定的配置Enter</value>
</data> </data>
<data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBDeleteProfile.Text" xml:space="preserve"> <data name="tsBDeleteProfile.Text" xml:space="preserve">
<value>删除</value> <value>删除</value>
@ -6597,7 +6603,7 @@
<value>删除选定的配置Delete</value> <value>删除选定的配置Delete</value>
</data> </data>
<data name="tSBDupProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBDupProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBDupProfile.Text" xml:space="preserve"> <data name="tSBDupProfile.Text" xml:space="preserve">
<value>复制</value> <value>复制</value>
@ -6606,7 +6612,7 @@
<value>复制选定的配置Ctrl+D</value> <value>复制选定的配置Ctrl+D</value>
</data> </data>
<data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBImportProfile.Text" xml:space="preserve"> <data name="tSBImportProfile.Text" xml:space="preserve">
<value>导入</value> <value>导入</value>
@ -6615,7 +6621,7 @@
<value>导入选定的配置</value> <value>导入选定的配置</value>
</data> </data>
<data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBExportProfile.Text" xml:space="preserve"> <data name="tSBExportProfile.Text" xml:space="preserve">
<value>导出</value> <value>导出</value>
@ -6623,150 +6629,42 @@
<data name="tSBExportProfile.ToolTipText" xml:space="preserve"> <data name="tSBExportProfile.ToolTipText" xml:space="preserve">
<value>导出选定的配置</value> <value>导出选定的配置</value>
</data> </data>
<data name="tabProfiles.Text" xml:space="preserve">
<value>配置文件</value>
</data>
<data name="tabAutoProfiles.Text" xml:space="preserve"> <data name="tabAutoProfiles.Text" xml:space="preserve">
<value>自动配置</value> <value>自动配置</value>
</data> </data>
<data name="tabSettings.Text" xml:space="preserve">
<value>设置</value>
</data>
<data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 21</value> <value>101, 17</value>
</data> </data>
<data name="hideDS4CheckBox.Text" xml:space="preserve"> <data name="hideDS4CheckBox.Text" xml:space="preserve">
<value>隐藏 DS4 手柄</value> <value>隐藏 DS4 手柄</value>
</data> </data>
<data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 21</value> <value>158, 17</value>
</data> </data>
<data name="cBSwipeProfiles.Text" xml:space="preserve"> <data name="cBSwipeProfiles.Text" xml:space="preserve">
<value>滑动触摸板更换配置文件</value> <value>滑动触摸板更换配置文件</value>
</data> </data>
<data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 21</value> <value>86, 17</value>
</data> </data>
<data name="StartWindowsCheckBox.Text" xml:space="preserve"> <data name="StartWindowsCheckBox.Text" xml:space="preserve">
<value>开机自启动</value> <value>开机自启动</value>
</data> </data>
<data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 21</value> <value>98, 17</value>
</data> </data>
<data name="startMinimizedCheckBox.Text" xml:space="preserve"> <data name="startMinimizedCheckBox.Text" xml:space="preserve">
<value>以最小化启动</value> <value>以最小化启动</value>
</data> </data>
<data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value> <value>55, 13</value>
</data> </data>
<data name="lbNotifications.Text" xml:space="preserve"> <data name="lbNotifications.Text" xml:space="preserve">
<value>显示通知</value> <value>显示通知</value>
</data> </data>
<data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
</data>
<data name="cBDisconnectBT.Text" xml:space="preserve">
<value>停止时断开蓝牙</value>
</data>
<data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>140, 2</value>
</data>
<data name="lbMsLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>203, 5</value>
</data>
<data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 21</value>
</data>
<data name="cBFlashWhenLate.Text" xml:space="preserve">
<value>高延迟时闪烁灯条</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 28</value>
</data>
<data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 21</value>
</data>
<data name="cBCloseMini.Text" xml:space="preserve">
<value>关闭时最小化</value>
</data>
<data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 21</value>
</data>
<data name="cBQuickCharge.Text" xml:space="preserve">
<value>快速充电</value>
</data>
<data name="cBDownloadLangauge.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value>
</data>
<data name="cBDownloadLangauge.Text" xml:space="preserve">
<value>下载更新语言包</value>
</data>
<data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 21</value>
</data>
<data name="cBUpdate.Text" xml:space="preserve">
<value>启动时检查更新</value>
</data>
<data name="cBUpdateTime.Items" xml:space="preserve">
<value>小时</value>
</data>
<data name="cBUpdateTime.Items1" xml:space="preserve">
<value>天</value>
</data>
<data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing">
<value>76, 17</value>
</data>
<data name="lbCheckEvery.Text" xml:space="preserve">
<value>检查频率 每</value>
</data>
<data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>92, 17</value>
</data>
<data name="lbUseXIPorts.Text" xml:space="preserve">
<value>使用Xinput接口</value>
</data>
<data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 17</value>
</data>
<data name="linkProfiles.Text" xml:space="preserve">
<value>配置文件目录</value>
</data>
<data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value>
</data>
<data name="lnkControllers.Text" xml:space="preserve">
<value>控制面板</value>
</data>
<data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing">
<value>102, 17</value>
</data>
<data name="linkUninstall.Text" xml:space="preserve">
<value>卸载 VBus 驱动</value>
</data>
<data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing">
<value>88, 17</value>
</data>
<data name="linkSetup.Text" xml:space="preserve">
<value>手柄/驱动 安装</value>
</data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 17</value>
</data>
<data name="lLBUpdate.Text" xml:space="preserve">
<value>立即检查更新</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>287, 13</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 85</value>
</data>
<data name="tabSettings.Text" xml:space="preserve">
<value>设置</value>
</data>
<data name="tabLog.Text" xml:space="preserve">
<value>日志</value>
</data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve">
<value>仅连接DS4 (实验性功能)</value>
</data>
<data name="cBoxNotifications.Items" xml:space="preserve"> <data name="cBoxNotifications.Items" xml:space="preserve">
<value>不显示</value> <value>不显示</value>
</data> </data>
@ -6776,13 +6674,136 @@
<data name="cBoxNotifications.Items2" xml:space="preserve"> <data name="cBoxNotifications.Items2" xml:space="preserve">
<value>显示全部</value> <value>显示全部</value>
</data> </data>
<data name="lbID.Text" xml:space="preserve"> <data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing">
<value>ID</value> <value>110, 17</value>
</data> </data>
<data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve"> <data name="cBDisconnectBT.Text" xml:space="preserve">
<value>使用自定义颜色</value> <value>停止时断开蓝牙</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 28</value>
</data>
<data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>140, 2</value>
</data>
<data name="lbMsLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>203, 5</value>
</data>
<data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 17</value>
</data>
<data name="cBFlashWhenLate.Text" xml:space="preserve">
<value>高延迟时闪烁灯条</value>
</data>
<data name="cBCloseMini.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 273</value>
</data>
<data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 17</value>
</data>
<data name="cBCloseMini.Text" xml:space="preserve">
<value>关闭时最小化</value>
</data>
<data name="cBQuickCharge.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 296</value>
</data>
<data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value>
</data>
<data name="cBQuickCharge.Text" xml:space="preserve">
<value>快速充电</value>
</data>
<data name="cBUseWhiteIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 318</value>
</data>
<data name="cBUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 10</value>
</data>
<data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 17</value>
</data>
<data name="cBUpdate.Text" xml:space="preserve">
<value>启动时检查更新</value>
</data>
<data name="pNUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 33</value>
</data>
<data name="cBUpdateTime.Items" xml:space="preserve">
<value>小时</value>
</data>
<data name="cBUpdateTime.Items1" xml:space="preserve">
<value>天</value>
</data>
<data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 13</value>
</data>
<data name="lbCheckEvery.Text" xml:space="preserve">
<value>检查频率 每</value>
</data>
<data name="pnlXIPorts.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 61</value>
</data>
<data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 13</value>
</data>
<data name="lbUseXIPorts.Text" xml:space="preserve">
<value>使用Xinput接口</value>
</data>
<data name="languagePackComboBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 89</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 122</value>
</data>
<data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="linkProfiles.Text" xml:space="preserve">
<value>配置文件目录</value>
</data>
<data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 13</value>
</data>
<data name="lnkControllers.Text" xml:space="preserve">
<value>控制面板</value>
</data>
<data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 13</value>
</data>
<data name="linkUninstall.Text" xml:space="preserve">
<value>卸载 VBus 驱动</value>
</data>
<data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing">
<value>87, 13</value>
</data>
<data name="linkSetup.Text" xml:space="preserve">
<value>手柄/驱动 安装</value>
</data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 13</value>
</data>
<data name="lLBUpdate.Text" xml:space="preserve">
<value>立即检查更新</value>
</data>
<data name="tabLog.Text" xml:space="preserve">
<value>日志</value>
</data>
<data name="btnClear.Text" xml:space="preserve">
<value>清空</value>
</data>
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>166, 48</value>
</data>
<data name="useProfileColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 22</value>
</data> </data>
<data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve"> <data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve">
<value>使用配置颜色</value> <value>使用配置颜色</value>
</data> </data>
<data name="useCustomColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 22</value>
</data>
<data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve">
<value>使用自定义颜色</value>
</data>
</root> </root>

View File

@ -123,72 +123,24 @@
<data name="chData.Text" xml:space="preserve"> <data name="chData.Text" xml:space="preserve">
<value>資料</value> <value>資料</value>
</data> </data>
<data name="btnStartStop.Text" xml:space="preserve">
<value>開始</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lbLastMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>973, 22</value>
</data>
<data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing"> <data name="llbHelp.Location" type="System.Drawing.Point, System.Drawing">
<value>986, 11</value> <value>774, 9</value>
</data> </data>
<data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing"> <data name="llbHelp.Size" type="System.Drawing.Size, System.Drawing">
<value>56, 17</value> <value>60, 13</value>
</data> </data>
<data name="llbHelp.Text" xml:space="preserve"> <data name="llbHelp.Text" xml:space="preserve">
<value>熱鍵/關於</value> <value>熱鍵/關於</value>
</data> </data>
<data name="btnClear.Text" xml:space="preserve"> <data name="btnStartStop.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 1 設定檔</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 2 設定檔</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 3 設定檔</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 4 設定檔</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>225, 6</value>
</data>
<data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>開始</value> <value>開始</value>
</data> </data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLastMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value> <value>973, 22</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>開啟</value>
</data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>228, 26</value>
</data>
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>離開 (滑鼠中鍵)</value>
</data> </data>
<data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMTaskbar.Size" type="System.Drawing.Size, System.Drawing">
<value>229, 192</value> <value>191, 186</value>
</data> </data>
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@ -6362,191 +6314,257 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value> </value>
</data> </data>
<data name="btnConnectDS4Win10.Text" xml:space="preserve"> <data name="editProfileForController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>獨佔地連接 DS4 (實驗功能)</value> <value>190, 22</value>
</data>
<data name="editProfileForController1ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 1 設定檔</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController2ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 2 設定檔</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController3ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 3 設定檔</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="editProfileForController4ToolStripMenuItem.Text" xml:space="preserve">
<value>編輯控制器 4 設定檔</value>
</data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 6</value>
</data>
<data name="startToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="startToolStripMenuItem.Text" xml:space="preserve">
<value>開始</value>
</data>
<data name="openToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="openToolStripMenuItem.Text" xml:space="preserve">
<value>開啟</value>
</data>
<data name="openProgramFolderToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="exitToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>190, 22</value>
</data>
<data name="exitToolStripMenuItem.Text" xml:space="preserve">
<value>離開 (滑鼠中鍵)</value>
</data>
<data name="tabControllers.Text" xml:space="preserve">
<value>控制器</value>
</data> </data>
<data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight3.Location" type="System.Drawing.Point, System.Drawing">
<value>1082, 94</value> <value>795, 89</value>
</data> </data>
<data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight3.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 28</value> <value>98, 22</value>
</data> </data>
<data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus1.Location" type="System.Drawing.Point, System.Drawing">
<value>510, 26</value> <value>382, 34</value>
</data> </data>
<data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC3.Location" type="System.Drawing.Point, System.Drawing">
<value>1028, 94</value> <value>755, 89</value>
</data> </data>
<data name="bnEditC3.Text" xml:space="preserve"> <data name="bnEditC3.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
</data> </data>
<data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC4.Location" type="System.Drawing.Point, System.Drawing">
<value>1028, 130</value> <value>755, 117</value>
</data> </data>
<data name="bnEditC4.Text" xml:space="preserve"> <data name="bnEditC4.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
</data> </data>
<data name="cBController1.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController1.Location" type="System.Drawing.Point, System.Drawing">
<value>882, 23</value> <value>638, 33</value>
</data> </data>
<data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC2.Location" type="System.Drawing.Point, System.Drawing">
<value>1028, 58</value> <value>755, 61</value>
</data> </data>
<data name="bnEditC2.Text" xml:space="preserve"> <data name="bnEditC2.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
</data> </data>
<data name="cBController2.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController2.Location" type="System.Drawing.Point, System.Drawing">
<value>882, 59</value> <value>638, 61</value>
</data> </data>
<data name="cBController3.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController3.Location" type="System.Drawing.Point, System.Drawing">
<value>882, 95</value> <value>638, 89</value>
</data> </data>
<data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnEditC1.Location" type="System.Drawing.Point, System.Drawing">
<value>1028, 22</value> <value>755, 33</value>
</data> </data>
<data name="bnEditC1.Text" xml:space="preserve"> <data name="bnEditC1.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
</data> </data>
<data name="cBController4.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBController4.Location" type="System.Drawing.Point, System.Drawing">
<value>882, 131</value> <value>638, 117</value>
</data> </data>
<data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbSelectedProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>929, 0</value> <value>670, 7</value>
</data> </data>
<data name="lbSelectedProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbSelectedProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 18</value> <value>46, 15</value>
</data> </data>
<data name="lbSelectedProfile.Text" xml:space="preserve"> <data name="lbSelectedProfile.Text" xml:space="preserve">
<value>設定檔</value> <value>設定檔</value>
</data> </data>
<data name="lbStatus.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbStatus.Location" type="System.Drawing.Point, System.Drawing">
<value>514, 0</value> <value>385, 7</value>
</data> </data>
<data name="lbStatus.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbStatus.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 18</value> <value>33, 15</value>
</data> </data>
<data name="lbStatus.Text" xml:space="preserve"> <data name="lbStatus.Text" xml:space="preserve">
<value>狀態</value> <value>狀態</value>
</data> </data>
<data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBattery.Location" type="System.Drawing.Point, System.Drawing">
<value>750, 0</value> <value>489, 7</value>
</data> </data>
<data name="lbBattery.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbBattery.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 18</value> <value>33, 15</value>
</data> </data>
<data name="lbBattery.Text" xml:space="preserve"> <data name="lbBattery.Text" xml:space="preserve">
<value>電池</value> <value>電池</value>
</data> </data>
<data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt1.Location" type="System.Drawing.Point, System.Drawing">
<value>743, 27</value> <value>486, 36</value>
</data> </data>
<data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt2.Location" type="System.Drawing.Point, System.Drawing">
<value>743, 63</value> <value>486, 64</value>
</data> </data>
<data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt3.Location" type="System.Drawing.Point, System.Drawing">
<value>743, 99</value> <value>486, 92</value>
</data> </data>
<data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbBatt4.Location" type="System.Drawing.Point, System.Drawing">
<value>743, 135</value> <value>486, 120</value>
</data> </data>
<data name="pBStatus2.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus2.Location" type="System.Drawing.Point, System.Drawing">
<value>510, 62</value> <value>382, 62</value>
</data> </data>
<data name="pBStatus3.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus3.Location" type="System.Drawing.Point, System.Drawing">
<value>510, 98</value> <value>382, 90</value>
</data> </data>
<data name="pBStatus4.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBStatus4.Location" type="System.Drawing.Point, System.Drawing">
<value>510, 134</value> <value>382, 118</value>
</data> </data>
<data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight1.Location" type="System.Drawing.Point, System.Drawing">
<value>1082, 22</value> <value>795, 33</value>
</data> </data>
<data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight1.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 28</value> <value>98, 22</value>
</data> </data>
<data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight2.Location" type="System.Drawing.Point, System.Drawing">
<value>1082, 58</value> <value>795, 61</value>
</data> </data>
<data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight2.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 28</value> <value>98, 22</value>
</data> </data>
<data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnLight4.Location" type="System.Drawing.Point, System.Drawing">
<value>1082, 130</value> <value>795, 117</value>
</data> </data>
<data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnLight4.Size" type="System.Drawing.Size, System.Drawing">
<value>36, 28</value> <value>98, 22</value>
</data>
<data name="lbLinkProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>561, 0</value>
</data>
<data name="linkCB1.Location" type="System.Drawing.Point, System.Drawing">
<value>587, 37</value>
</data>
<data name="linkCB2.Location" type="System.Drawing.Point, System.Drawing">
<value>587, 65</value>
</data>
<data name="linkCB3.Location" type="System.Drawing.Point, System.Drawing">
<value>587, 93</value>
</data>
<data name="linkCB4.Location" type="System.Drawing.Point, System.Drawing">
<value>587, 121</value>
</data> </data>
<data name="lbNoControllers.Text" xml:space="preserve"> <data name="lbNoControllers.Text" xml:space="preserve">
<value>沒有連接的控制器 (最多 4 個)</value> <value>沒有連接的控制器 (最多 4 個)</value>
</data> </data>
<data name="tabControllers.Text" xml:space="preserve"> <data name="tabProfiles.Text" xml:space="preserve">
<value>控制器</value> <value>設定檔</value>
</data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 224</value>
</data> </data>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="editToolStripMenuItem.Text" xml:space="preserve"> <data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
</data> </data>
<data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController1ToolStripMenuItem.Text" xml:space="preserve">
<value>指定給控制器 1</value> <value>指定給控制器 1</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController2ToolStripMenuItem.Text" xml:space="preserve">
<value>指定給控制器 2</value> <value>指定給控制器 2</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController3ToolStripMenuItem.Text" xml:space="preserve">
<value>指定給控制器 3</value> <value>指定給控制器 3</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="assignToController4ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve"> <data name="assignToController4ToolStripMenuItem.Text" xml:space="preserve">
<value>指定給控制器 4</value> <value>指定給控制器 4</value>
</data> </data>
<data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="deleteToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="deleteToolStripMenuItem.Text" xml:space="preserve"> <data name="deleteToolStripMenuItem.Text" xml:space="preserve">
<value>刪除 (Del)</value> <value>刪除 (Del)</value>
</data> </data>
<data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="duplicateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="duplicateToolStripMenuItem.Text" xml:space="preserve"> <data name="duplicateToolStripMenuItem.Text" xml:space="preserve">
<value>複製 (Ctrl+D)</value> <value>複製 (Ctrl+D)</value>
</data> </data>
<data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="newProfileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="newProfileToolStripMenuItem.Text" xml:space="preserve"> <data name="newProfileToolStripMenuItem.Text" xml:space="preserve">
<value>新設定檔</value> <value>新設定檔</value>
</data> </data>
<data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="importToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="importToolStripMenuItem.Text" xml:space="preserve"> <data name="importToolStripMenuItem.Text" xml:space="preserve">
<value>匯入</value> <value>匯入</value>
</data> </data>
<data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>192, 26</value> <value>161, 22</value>
</data> </data>
<data name="exportToolStripMenuItem.Text" xml:space="preserve"> <data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>匯出</value> <value>匯出</value>
</data> </data>
<data name="cMProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSOptions.Text" xml:space="preserve">
<value>193, 264</value> <value>設定檔選項</value>
</data> </data>
<data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 24</value> <value>85, 24</value>
</data> </data>
<data name="toolStripLabel1.Text" xml:space="preserve"> <data name="toolStripLabel1.Text" xml:space="preserve">
<value>設定檔名稱:</value> <value>設定檔名稱:</value>
@ -6555,28 +6573,25 @@
<value>&lt;輸入設定檔名稱&gt;</value> <value>&lt;輸入設定檔名稱&gt;</value>
</data> </data>
<data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBSaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 24</value> <value>96, 24</value>
</data> </data>
<data name="tSBSaveProfile.Text" xml:space="preserve"> <data name="tSBSaveProfile.Text" xml:space="preserve">
<value>儲存設定檔</value> <value>儲存設定檔</value>
</data> </data>
<data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBCancel.Text" xml:space="preserve"> <data name="tSBCancel.Text" xml:space="preserve">
<value>取消</value> <value>取消</value>
</data> </data>
<data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBKeepSize.Size" type="System.Drawing.Size, System.Drawing">
<value>225, 24</value> <value>187, 24</value>
</data> </data>
<data name="tSBKeepSize.Text" xml:space="preserve"> <data name="tSBKeepSize.Text" xml:space="preserve">
<value>關閉後保留現在的視窗大小</value> <value>關閉後保留現在的視窗大小</value>
</data> </data>
<data name="tSOptions.Text" xml:space="preserve">
<value>設定檔選項</value>
</data>
<data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBNewProfle.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBNewProfle.Text" xml:space="preserve"> <data name="tsBNewProfle.Text" xml:space="preserve">
<value>新增</value> <value>新增</value>
@ -6585,7 +6600,7 @@
<value>新增設定檔</value> <value>新增設定檔</value>
</data> </data>
<data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBEditProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBEditProfile.Text" xml:space="preserve"> <data name="tsBEditProfile.Text" xml:space="preserve">
<value>編輯</value> <value>編輯</value>
@ -6594,7 +6609,7 @@
<value>編輯選擇的設定檔 (Enter)</value> <value>編輯選擇的設定檔 (Enter)</value>
</data> </data>
<data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tsBDeleteProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tsBDeleteProfile.Text" xml:space="preserve"> <data name="tsBDeleteProfile.Text" xml:space="preserve">
<value>刪除</value> <value>刪除</value>
@ -6603,7 +6618,7 @@
<value>刪除選擇的設定檔 (Delete)</value> <value>刪除選擇的設定檔 (Delete)</value>
</data> </data>
<data name="tSBDupProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBDupProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBDupProfile.Text" xml:space="preserve"> <data name="tSBDupProfile.Text" xml:space="preserve">
<value>複製</value> <value>複製</value>
@ -6612,7 +6627,7 @@
<value>複製選擇的設定檔 (Ctrl+D)</value> <value>複製選擇的設定檔 (Ctrl+D)</value>
</data> </data>
<data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBImportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBImportProfile.Text" xml:space="preserve"> <data name="tSBImportProfile.Text" xml:space="preserve">
<value>匯入</value> <value>匯入</value>
@ -6621,7 +6636,7 @@
<value>匯入一個或多個設定檔</value> <value>匯入一個或多個設定檔</value>
</data> </data>
<data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSBExportProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 24</value> <value>57, 24</value>
</data> </data>
<data name="tSBExportProfile.Text" xml:space="preserve"> <data name="tSBExportProfile.Text" xml:space="preserve">
<value>匯出</value> <value>匯出</value>
@ -6629,38 +6644,41 @@
<data name="tSBExportProfile.ToolTipText" xml:space="preserve"> <data name="tSBExportProfile.ToolTipText" xml:space="preserve">
<value>匯出選擇的設定檔</value> <value>匯出選擇的設定檔</value>
</data> </data>
<data name="tabProfiles.Text" xml:space="preserve">
<value>設定檔</value>
</data>
<data name="tabAutoProfiles.Text" xml:space="preserve"> <data name="tabAutoProfiles.Text" xml:space="preserve">
<value>自動設定檔</value> <value>自動設定檔</value>
</data> </data>
<data name="tabSettings.Text" xml:space="preserve">
<value>設定</value>
</data>
<data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="hideDS4CheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 21</value> <value>113, 17</value>
</data> </data>
<data name="hideDS4CheckBox.Text" xml:space="preserve"> <data name="hideDS4CheckBox.Text" xml:space="preserve">
<value>隱藏 DS4 控制器</value> <value>隱藏 DS4 控制器</value>
</data> </data>
<data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSwipeProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>151, 21</value> <value>158, 17</value>
</data> </data>
<data name="cBSwipeProfiles.Text" xml:space="preserve"> <data name="cBSwipeProfiles.Text" xml:space="preserve">
<value>滑動觸控板以更換設定檔</value> <value>滑動觸控板以更換設定檔</value>
</data> </data>
<data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="StartWindowsCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 21</value> <value>122, 17</value>
</data> </data>
<data name="StartWindowsCheckBox.Text" xml:space="preserve"> <data name="StartWindowsCheckBox.Text" xml:space="preserve">
<value>開機自動執行程式</value> <value>開機自動執行程式</value>
</data> </data>
<data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing"> <data name="startMinimizedCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>99, 21</value> <value>98, 17</value>
</data> </data>
<data name="startMinimizedCheckBox.Text" xml:space="preserve"> <data name="startMinimizedCheckBox.Text" xml:space="preserve">
<value>開啟時最小化</value> <value>開啟時最小化</value>
</data> </data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 28</value>
</data>
<data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbNotifications.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value> <value>55, 13</value>
</data> </data>
<data name="lbNotifications.Text" xml:space="preserve"> <data name="lbNotifications.Text" xml:space="preserve">
<value>顯示通知</value> <value>顯示通知</value>
@ -6677,15 +6695,21 @@
<data name="cBoxNotifications.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBoxNotifications.Location" type="System.Drawing.Point, System.Drawing">
<value>68, 1</value> <value>68, 1</value>
</data> </data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDisconnectBT.Location" type="System.Drawing.Point, System.Drawing">
<value>204, 28</value> <value>10, 222</value>
</data> </data>
<data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDisconnectBT.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBDisconnectBT.Text" xml:space="preserve"> <data name="cBDisconnectBT.Text" xml:space="preserve">
<value>停止時中斷藍牙</value> <value>停止時中斷藍牙</value>
</data> </data>
<data name="panel2.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 245</value>
</data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 28</value>
</data>
<data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDLatency.Location" type="System.Drawing.Point, System.Drawing">
<value>140, 2</value> <value>140, 2</value>
</data> </data>
@ -6693,38 +6717,47 @@
<value>203, 5</value> <value>203, 5</value>
</data> </data>
<data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBFlashWhenLate.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 21</value> <value>134, 17</value>
</data> </data>
<data name="cBFlashWhenLate.Text" xml:space="preserve"> <data name="cBFlashWhenLate.Text" xml:space="preserve">
<value>在高延遲時閃爍光條</value> <value>在高延遲時閃爍光條</value>
</data> </data>
<data name="panel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBCloseMini.Location" type="System.Drawing.Point, System.Drawing">
<value>232, 28</value> <value>10, 279</value>
</data> </data>
<data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBCloseMini.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 21</value> <value>98, 17</value>
</data> </data>
<data name="cBCloseMini.Text" xml:space="preserve"> <data name="cBCloseMini.Text" xml:space="preserve">
<value>關閉時最小化</value> <value>關閉時最小化</value>
</data> </data>
<data name="cBQuickCharge.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 302</value>
</data>
<data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBQuickCharge.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value> <value>74, 17</value>
</data> </data>
<data name="cBQuickCharge.Text" xml:space="preserve"> <data name="cBQuickCharge.Text" xml:space="preserve">
<value>快速充電</value> <value>快速充電</value>
</data> </data>
<data name="cBDownloadLangauge.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBUseWhiteIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>118, 21</value> <value>9, 324</value>
</data> </data>
<data name="cBDownloadLangauge.Text" xml:space="preserve"> <data name="cBUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>更新時下載語言包</value> <value>248, 10</value>
</data> </data>
<data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>113, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBUpdate.Text" xml:space="preserve"> <data name="cBUpdate.Text" xml:space="preserve">
<value>啟動時檢查更新</value> <value>啟動時檢查更新</value>
</data> </data>
<data name="pNUpdate.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 33</value>
</data>
<data name="pNUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 28</value>
</data>
<data name="cBUpdateTime.Items" xml:space="preserve"> <data name="cBUpdateTime.Items" xml:space="preserve">
<value>小時</value> <value>小時</value>
</data> </data>
@ -6735,7 +6768,7 @@
<value>117, 0</value> <value>117, 0</value>
</data> </data>
<data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbCheckEvery.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value> <value>43, 13</value>
</data> </data>
<data name="lbCheckEvery.Text" xml:space="preserve"> <data name="lbCheckEvery.Text" xml:space="preserve">
<value>檢查每</value> <value>檢查每</value>
@ -6743,11 +6776,14 @@
<data name="nUDUpdateTime.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDUpdateTime.Location" type="System.Drawing.Point, System.Drawing">
<value>54, 1</value> <value>54, 1</value>
</data> </data>
<data name="pNUpdate.Size" type="System.Drawing.Size, System.Drawing"> <data name="pnlXIPorts.Location" type="System.Drawing.Point, System.Drawing">
<value>195, 28</value> <value>248, 67</value>
</data>
<data name="pnlXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>229, 28</value>
</data> </data>
<data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbUseXIPorts.Size" type="System.Drawing.Size, System.Drawing">
<value>89, 17</value> <value>79, 13</value>
</data> </data>
<data name="lbUseXIPorts.Text" xml:space="preserve"> <data name="lbUseXIPorts.Text" xml:space="preserve">
<value>使用 Xinput 埠</value> <value>使用 Xinput 埠</value>
@ -6758,67 +6794,61 @@
<data name="lbLastXIPort.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbLastXIPort.Location" type="System.Drawing.Point, System.Drawing">
<value>176, 4</value> <value>176, 4</value>
</data> </data>
<data name="pnlXIPorts.Size" type="System.Drawing.Size, System.Drawing"> <data name="languagePackComboBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>229, 28</value> <value>248, 101</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>248, 134</value>
</data> </data>
<data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkProfiles.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value> <value>79, 13</value>
</data> </data>
<data name="linkProfiles.Text" xml:space="preserve"> <data name="linkProfiles.Text" xml:space="preserve">
<value>設定檔資料夾</value> <value>設定檔資料夾</value>
</data> </data>
<data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing"> <data name="lnkControllers.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 17</value> <value>55, 13</value>
</data> </data>
<data name="lnkControllers.Text" xml:space="preserve"> <data name="lnkControllers.Text" xml:space="preserve">
<value>控制面版</value> <value>控制面版</value>
</data> </data>
<data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkUninstall.Size" type="System.Drawing.Size, System.Drawing">
<value>93, 17</value> <value>86, 13</value>
</data> </data>
<data name="linkUninstall.Text" xml:space="preserve"> <data name="linkUninstall.Text" xml:space="preserve">
<value>移除 VBus 驅動</value> <value>移除 VBus 驅動</value>
</data> </data>
<data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkSetup.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value> <value>123, 13</value>
</data> </data>
<data name="linkSetup.Text" xml:space="preserve"> <data name="linkSetup.Text" xml:space="preserve">
<value>控制器/驅動程式 設定</value> <value>控制器/驅動程式 設定</value>
</data> </data>
<data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing"> <data name="lLBUpdate.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value> <value>55, 13</value>
</data> </data>
<data name="lLBUpdate.Text" xml:space="preserve"> <data name="lLBUpdate.Text" xml:space="preserve">
<value>檢查更新</value> <value>檢查更新</value>
</data> </data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>253, 13</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 85</value>
</data>
<data name="tabSettings.Text" xml:space="preserve">
<value>設定</value>
</data>
<data name="tabLog.Text" xml:space="preserve"> <data name="tabLog.Text" xml:space="preserve">
<value>紀錄</value> <value>紀錄</value>
</data> </data>
<data name="btnClear.Text" xml:space="preserve">
<value>清除</value>
</data>
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>166, 48</value>
</data>
<data name="useProfileColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="useProfileColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 26</value> <value>165, 22</value>
</data> </data>
<data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve"> <data name="useProfileColorToolStripMenuItem.Text" xml:space="preserve">
<value>使用設定檔顏色</value> <value>使用設定檔顏色</value>
</data> </data>
<data name="useCustomColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="useCustomColorToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 26</value> <value>165, 22</value>
</data> </data>
<data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve"> <data name="useCustomColorToolStripMenuItem.Text" xml:space="preserve">
<value>使用自訂顏色</value> <value>使用自訂顏色</value>
</data> </data>
<data name="cMCustomLed.Size" type="System.Drawing.Size, System.Drawing">
<value>197, 56</value>
</data>
<data name="lbID.Text" xml:space="preserve">
<value>ID</value>
</data>
</root> </root>

View File

@ -121,7 +121,7 @@
<value>Guardar</value> <value>Guardar</value>
</data> </data>
<data name="tBProfile.Text" xml:space="preserve"> <data name="tBProfile.Text" xml:space="preserve">
<value>&lt;Escribe nuevo nombre aqui&gt;</value> <value>&lt;Escribe el nuevo nombre aqui&gt;</value>
</data> </data>
<data name="btnCancel.Text" xml:space="preserve"> <data name="btnCancel.Text" xml:space="preserve">
<value>Cancelar</value> <value>Cancelar</value>

View File

@ -218,14 +218,11 @@
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Type name of New Profile</value> <value>Type name of New Profile</value>
<comment>@Invariant</comment></data> </data>
<data name="&gt;&gt;tBProfile.Name" xml:space="preserve"> <data name="&gt;&gt;tBProfile.Name" xml:space="preserve">
<value>tBProfile</value> <value>tBProfile</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>vi</value>
</metadata>
</root> </root>

View File

@ -117,13 +117,13 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy</value>
</data>
<data name="btnSave.Text" xml:space="preserve"> <data name="btnSave.Text" xml:space="preserve">
<value>Lưu</value> <value>Lưu</value>
</data> </data>
<data name="tBProfile.Text" xml:space="preserve"> <data name="tBProfile.Text" xml:space="preserve">
<value>&lt;gõ tên Profile mới&gt;</value> <value>&lt;gõ tên Profile mới&gt;</value>
</data> </data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Hủy</value>
</data>
</root> </root>

View File

@ -40,6 +40,8 @@
this.tPHotkeys = new System.Windows.Forms.TabPage(); this.tPHotkeys = new System.Windows.Forms.TabPage();
this.lbHotkeys = new System.Windows.Forms.Label(); this.lbHotkeys = new System.Windows.Forms.Label();
this.tPCredits = new System.Windows.Forms.TabPage(); this.tPCredits = new System.Windows.Forms.TabPage();
this.linkCurrentSite = new System.Windows.Forms.LinkLabel();
this.linkTeokp = new System.Windows.Forms.LinkLabel();
this.linkKiliansch = new System.Windows.Forms.LinkLabel(); this.linkKiliansch = new System.Windows.Forms.LinkLabel();
this.linkChamilsaan = new System.Windows.Forms.LinkLabel(); this.linkChamilsaan = new System.Windows.Forms.LinkLabel();
this.linkBoganhobo = new System.Windows.Forms.LinkLabel(); this.linkBoganhobo = new System.Windows.Forms.LinkLabel();
@ -85,11 +87,15 @@
this.lbTranslators = new System.Windows.Forms.Label(); this.lbTranslators = new System.Windows.Forms.Label();
this.linkSourceCode = new System.Windows.Forms.LinkLabel(); this.linkSourceCode = new System.Windows.Forms.LinkLabel();
this.lbLinkText = new System.Windows.Forms.Label(); this.lbLinkText = new System.Windows.Forms.Label();
this.linkTeokp = new System.Windows.Forms.LinkLabel(); this.coinTP = new System.Windows.Forms.TabPage();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.textBox2 = new System.Windows.Forms.TextBox();
this.tCAbout.SuspendLayout(); this.tCAbout.SuspendLayout();
this.tPHotkeys.SuspendLayout(); this.tPHotkeys.SuspendLayout();
this.tPCredits.SuspendLayout(); this.tPCredits.SuspendLayout();
this.tLPTranslators.SuspendLayout(); this.tLPTranslators.SuspendLayout();
this.coinTP.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// linkElectro // linkElectro
@ -104,7 +110,7 @@
resources.ApplyResources(this.linkJays2Kings, "linkJays2Kings"); resources.ApplyResources(this.linkJays2Kings, "linkJays2Kings");
this.linkJays2Kings.Name = "linkJays2Kings"; this.linkJays2Kings.Name = "linkJays2Kings";
this.linkJays2Kings.TabStop = true; this.linkJays2Kings.TabStop = true;
this.linkJays2Kings.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkJays2Kings_LinkClicked); this.linkJays2Kings.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkJays2Kings_LinkClicked);
// //
// lbAbout // lbAbout
// //
@ -130,19 +136,20 @@
resources.ApplyResources(this.lLChangelog, "lLChangelog"); resources.ApplyResources(this.lLChangelog, "lLChangelog");
this.lLChangelog.Name = "lLChangelog"; this.lLChangelog.Name = "lLChangelog";
this.lLChangelog.TabStop = true; this.lLChangelog.TabStop = true;
this.lLChangelog.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLChangelog_LinkClicked); this.lLChangelog.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LLChangelog_LinkClicked);
// //
// linkDonate // linkDonate
// //
resources.ApplyResources(this.linkDonate, "linkDonate"); resources.ApplyResources(this.linkDonate, "linkDonate");
this.linkDonate.Name = "linkDonate"; this.linkDonate.Name = "linkDonate";
this.linkDonate.TabStop = true; this.linkDonate.TabStop = true;
this.linkDonate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkDonate_LinkClicked); this.linkDonate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkDonate_LinkClicked);
// //
// tCAbout // tCAbout
// //
this.tCAbout.Controls.Add(this.tPHotkeys); this.tCAbout.Controls.Add(this.tPHotkeys);
this.tCAbout.Controls.Add(this.tPCredits); this.tCAbout.Controls.Add(this.tPCredits);
this.tCAbout.Controls.Add(this.coinTP);
resources.ApplyResources(this.tCAbout, "tCAbout"); resources.ApplyResources(this.tCAbout, "tCAbout");
this.tCAbout.Name = "tCAbout"; this.tCAbout.Name = "tCAbout";
this.tCAbout.SelectedIndex = 0; this.tCAbout.SelectedIndex = 0;
@ -161,6 +168,7 @@
// //
// tPCredits // tPCredits
// //
this.tPCredits.Controls.Add(this.linkCurrentSite);
this.tPCredits.Controls.Add(this.linkTeokp); this.tPCredits.Controls.Add(this.linkTeokp);
this.tPCredits.Controls.Add(this.linkKiliansch); this.tPCredits.Controls.Add(this.linkKiliansch);
this.tPCredits.Controls.Add(this.linkChamilsaan); this.tPCredits.Controls.Add(this.linkChamilsaan);
@ -177,6 +185,20 @@
this.tPCredits.Name = "tPCredits"; this.tPCredits.Name = "tPCredits";
this.tPCredits.UseVisualStyleBackColor = true; this.tPCredits.UseVisualStyleBackColor = true;
// //
// linkCurrentSite
//
resources.ApplyResources(this.linkCurrentSite, "linkCurrentSite");
this.linkCurrentSite.Name = "linkCurrentSite";
this.linkCurrentSite.TabStop = true;
this.linkCurrentSite.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkCurrentSite_LinkClicked);
//
// linkTeokp
//
resources.ApplyResources(this.linkTeokp, "linkTeokp");
this.linkTeokp.Name = "linkTeokp";
this.linkTeokp.TabStop = true;
this.linkTeokp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkTeokp_LinkClicked);
//
// linkKiliansch // linkKiliansch
// //
resources.ApplyResources(this.linkKiliansch, "linkKiliansch"); resources.ApplyResources(this.linkKiliansch, "linkKiliansch");
@ -441,25 +463,38 @@
resources.ApplyResources(this.linkSourceCode, "linkSourceCode"); resources.ApplyResources(this.linkSourceCode, "linkSourceCode");
this.linkSourceCode.Name = "linkSourceCode"; this.linkSourceCode.Name = "linkSourceCode";
this.linkSourceCode.TabStop = true; this.linkSourceCode.TabStop = true;
this.linkSourceCode.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkSourceCode_LinkClicked); this.linkSourceCode.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LinkSourceCode_LinkClicked);
// //
// lbLinkText // lbLinkText
// //
resources.ApplyResources(this.lbLinkText, "lbLinkText"); resources.ApplyResources(this.lbLinkText, "lbLinkText");
this.lbLinkText.Name = "lbLinkText"; this.lbLinkText.Name = "lbLinkText";
// //
// linkTeokp // coinTP
// //
resources.ApplyResources(this.linkTeokp, "linkTeokp"); this.coinTP.Controls.Add(this.flowLayoutPanel1);
this.linkTeokp.Name = "linkTeokp"; resources.ApplyResources(this.coinTP, "coinTP");
this.linkTeokp.TabStop = true; this.coinTP.Name = "coinTP";
this.linkTeokp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkTeokp_LinkClicked); this.coinTP.UseVisualStyleBackColor = true;
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.textBox2);
this.flowLayoutPanel1.Controls.Add(this.linkDonate);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// textBox2
//
this.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None;
resources.ApplyResources(this.textBox2, "textBox2");
this.textBox2.Name = "textBox2";
this.textBox2.ReadOnly = true;
// //
// Hotkeys // Hotkeys
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.linkDonate);
this.Controls.Add(this.lLChangelog); this.Controls.Add(this.lLChangelog);
this.Controls.Add(this.tCAbout); this.Controls.Add(this.tCAbout);
this.Controls.Add(this.lbAbout); this.Controls.Add(this.lbAbout);
@ -472,8 +507,11 @@
this.tPCredits.PerformLayout(); this.tPCredits.PerformLayout();
this.tLPTranslators.ResumeLayout(false); this.tLPTranslators.ResumeLayout(false);
this.tLPTranslators.PerformLayout(); this.tLPTranslators.PerformLayout();
this.coinTP.ResumeLayout(false);
this.coinTP.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.flowLayoutPanel1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout();
} }
@ -536,5 +574,9 @@
private System.Windows.Forms.Label lbpt; private System.Windows.Forms.Label lbpt;
private System.Windows.Forms.Label lbPortugueseT; private System.Windows.Forms.Label lbPortugueseT;
private System.Windows.Forms.LinkLabel linkTeokp; private System.Windows.Forms.LinkLabel linkTeokp;
private System.Windows.Forms.TabPage coinTP;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.LinkLabel linkCurrentSite;
} }
} }

View File

@ -22,31 +22,38 @@ namespace DS4Windows
int ind = tLPTranslators.Controls.IndexOf(ctrls[0]) + 1; int ind = tLPTranslators.Controls.IndexOf(ctrls[0]) + 1;
((Label)tLPTranslators.Controls[ind]).ForeColor = Color.DarkGreen; ((Label)tLPTranslators.Controls[ind]).ForeColor = Color.DarkGreen;
} }
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location);
string version = fvi.FileVersion; string version = fvi.FileVersion;
lbAbout.Text += version + ")"; lbAbout.Text += version + ")";
if (tPCredits.HasChildren) if (tPCredits.HasChildren)
foreach (System.Windows.Forms.Control ctrl in tPCredits.Controls) {
foreach (Control ctrl in tPCredits.Controls)
{ {
if (ctrl.HasChildren) if (ctrl.HasChildren)
foreach (System.Windows.Forms.Control ctrl2 in ctrl.Controls) {
foreach (Control ctrl2 in ctrl.Controls)
ctrl2.MouseHover += Items_MouseHover; ctrl2.MouseHover += Items_MouseHover;
}
ctrl.MouseHover += Items_MouseHover; ctrl.MouseHover += Items_MouseHover;
} }
}
tPCredits.MouseHover += Items_MouseHover; tPCredits.MouseHover += Items_MouseHover;
lbLinkText.Text = string.Empty; lbLinkText.Text = string.Empty;
} }
private void Items_MouseHover(object sender, EventArgs e) private void Items_MouseHover(object sender, EventArgs e)
{ {
switch (((System.Windows.Forms.Control)sender).Name) switch (((Control)sender).Name)
{ {
//if (File.Exists(appdatapath + "\\Auto Profiles.xml"))
case "linkJays2Kings": lbLinkText.Text = "http://ds4windows.com"; break; case "linkJays2Kings": lbLinkText.Text = "http://ds4windows.com"; break;
case "linkElectro": lbLinkText.Text = "https://code.google.com/r/brianfundakowskifeldman-ds4windows/"; break; case "linkElectro": lbLinkText.Text = "https://code.google.com/r/brianfundakowskifeldman-ds4windows/"; break;
case "linkInhexSTER": lbLinkText.Text = "https://code.google.com/p/ds4-tool/"; break; case "linkInhexSTER": lbLinkText.Text = "https://code.google.com/p/ds4-tool/"; break;
case "linkJhebbel": lbLinkText.Text = "http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows"; break; case "linkJhebbel": lbLinkText.Text = "http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows"; break;
case "linkSourceCode": lbLinkText.Text = "https://github.com/Jays2Kings/DS4Windows"; break; case "linkCurrentSite": lbLinkText.Text = "https://ryochan7.github.io/ds4windows-site/"; break;
case "linkSourceCode": lbLinkText.Text = "https://github.com/Ryochan7/DS4Windows"; break;
case "linkBoganhobo": lbLinkText.Text = "https://github.com/boganhobo"; break; case "linkBoganhobo": lbLinkText.Text = "https://github.com/boganhobo"; break;
case "linkChamilsaan": lbLinkText.Text = "https://github.com/Chamilsaan"; break; case "linkChamilsaan": lbLinkText.Text = "https://github.com/Chamilsaan"; break;
case "linkKiliansch": lbLinkText.Text = "https://github.com/kiliansch"; break; case "linkKiliansch": lbLinkText.Text = "https://github.com/kiliansch"; break;
@ -55,9 +62,9 @@ namespace DS4Windows
} }
} }
private void linkJays2Kings_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void LinkJays2Kings_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{ {
Process.Start("http://ds4windows.com"); Process.Start("https://github.com/Jays2Kings/");
} }
private void linkElectro_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void linkElectro_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@ -75,19 +82,19 @@ namespace DS4Windows
Process.Start("http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows"); Process.Start("http://dsdcs.com/index.php/portfolio/software-development/4-ds4windows");
} }
private void lLChangelog_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void LLChangelog_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{ {
Process.Start("https://docs.google.com/document/d/1l4xcgVQkGUskc5CQ0p069yW22Cd5WAH_yE3Fz2hXo0E/edit?usp=sharing"); Process.Start("https://docs.google.com/document/d/1CovpH08fbPSXrC6TmEprzgPwCe0tTjQ_HTFfDotpmxk/edit?usp=sharing");
} }
private void linkDonate_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void LinkDonate_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{ {
Process.Start("https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=2FTZ9BZEHSQ8Q&lc=US&item_name=DS4Windows&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"); Process.Start("https://paypal.me/ryochan7");
} }
private void linkSourceCode_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void LinkSourceCode_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{ {
Process.Start("https://github.com/Jays2Kings/DS4Windows"); Process.Start("https://github.com/Ryochan7/DS4Windows");
} }
private void linkBoganhobo_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void linkBoganhobo_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@ -109,5 +116,10 @@ namespace DS4Windows
{ {
Process.Start("https://github.com/teokp"); Process.Start("https://github.com/teokp");
} }
private void LinkCurrentSite_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start("https://ryochan7.github.io/ds4windows-site/");
}
} }
} }

View File

@ -140,23 +140,23 @@
<value>540, 458</value> <value>540, 458</value>
</data> </data>
<data name="lbHotkeys.Text" xml:space="preserve"> <data name="lbHotkeys.Text" xml:space="preserve">
<value>Ocultar Controlador DS4: Hides the DS4's regular input (Dinput) from other programs, check if you are getting double input in games or R2 pauses games <value>Ocultar Control DS4: Oculta la entrada regular del DS4 (Dinput) de otros programas, comprueba si tienes doble entrada en juegos o que R2 pause juegos
Click left side of touchpad: Left Touch Haga clic en el lado izquierdo del panel táctil: Toque izquierdo
Click right side of touchpad: Right Touch Haga clic en el lado derecho del panel táctil: Toque derecho
Click touchpad with 2 fingers: Multitouch Haga clic en el panel táctil con 2 dedos: Multi toque
Click upper part of touchpad: Upper Touch Haga clic en la parte superior del panel táctil: Toque superior
PS + Options o mantener PS por 10 segundos: Desconectar Controlador (Solo Bluetooth) PS + Options o mantener PS por 10 segundos: Desconectar Control (Solo Bluetooth)
Tocar Touchpad + PS: Turn off touchpad movement (clicking still works) Clic en el panel táctil + PS: Desactiva el movimiento del panel táctil (el clic sigue funcionando)
Pad click on lower right: Right click (Best used when right side is used as a mouse button) Clic en la parte inferior derecha del panel: Haga clic derecho (Mejor utilizado cuando el lado derecho se utiliza como un botón del ratón)
Two fingers up/down on touchpad*: Scroll Up/Down Dos dedos arriba / abajo en el panel táctil*: Desplazar hacia arriba / abajo
Tap then hold touchpad*: Left mouse drag Toque y mantenga pulsado el panel táctil*: Arrastrar el ratón hacia la izquierda
2 finger touchpad swipe left or right: Cycle through profiles Deslizar el dedo hacia la izquierda o la derecha: Ciclo a través de perfiles
Shift Modifer: Hold an action to use another set of controls Modificador de cambio: Realizar una acción para utilizar otro conjunto de controles
When mapping keyboard and mouse: Al asignar el teclado y el ratón:
Toggle: The key will remain in a ""held down"" state until pressed again Palanca: La tecla permanecerá en estado "" presionado "" hasta que se vuelva a pulsar
Macro: Assign multiple keys to one input Macro: Asignar varias teclas a una entrada
Scan Code: Keys are interpreted differently. May be needed for certain games Código de exploración: Las claves se interpretan de manera diferente. Puede ser necesario para ciertos juegos
*If enabled</value> *Si está activado</value>
</data> </data>
<data name="tPHotkeys.Size" type="System.Drawing.Size, System.Drawing"> <data name="tPHotkeys.Size" type="System.Drawing.Size, System.Drawing">
<value>563, 386</value> <value>563, 386</value>

File diff suppressed because it is too large Load Diff

View File

@ -229,16 +229,16 @@
// //
// pBHighlight // pBHighlight
// //
resources.ApplyResources(this.pBHighlight, "pBHighlight");
this.pBHighlight.BackColor = System.Drawing.Color.Transparent; this.pBHighlight.BackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.pBHighlight, "pBHighlight");
this.pBHighlight.Image = global::DS4Windows.Properties.Resources._360_highlight; this.pBHighlight.Image = global::DS4Windows.Properties.Resources._360_highlight;
this.pBHighlight.Name = "pBHighlight"; this.pBHighlight.Name = "pBHighlight";
this.pBHighlight.TabStop = false; this.pBHighlight.TabStop = false;
// //
// pBMouse // pBMouse
// //
resources.ApplyResources(this.pBMouse, "pBMouse");
this.pBMouse.Image = global::DS4Windows.Properties.Resources.mouse; this.pBMouse.Image = global::DS4Windows.Properties.Resources.mouse;
resources.ApplyResources(this.pBMouse, "pBMouse");
this.pBMouse.Name = "pBMouse"; this.pBMouse.Name = "pBMouse";
this.pBMouse.TabStop = false; this.pBMouse.TabStop = false;
// //
@ -1078,8 +1078,8 @@
// //
// bnColor // bnColor
// //
resources.ApplyResources(this.bnColor, "bnColor");
this.bnColor.BackColor = System.Drawing.Color.White; this.bnColor.BackColor = System.Drawing.Color.White;
resources.ApplyResources(this.bnColor, "bnColor");
this.bnColor.Name = "bnColor"; this.bnColor.Name = "bnColor";
this.bnColor.UseVisualStyleBackColor = false; this.bnColor.UseVisualStyleBackColor = false;
this.bnColor.Click += new System.EventHandler(this.bnColor_Click); this.bnColor.Click += new System.EventHandler(this.bnColor_Click);
@ -1117,8 +1117,8 @@
// //
// lBTip // lBTip
// //
resources.ApplyResources(this.lBTip, "lBTip");
this.lBTip.ForeColor = System.Drawing.SystemColors.GrayText; this.lBTip.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.lBTip, "lBTip");
this.lBTip.Name = "lBTip"; this.lBTip.Name = "lBTip";
// //
// btnD // btnD
@ -1131,11 +1131,11 @@
// //
// btnAButton // btnAButton
// //
resources.ApplyResources(this.btnAButton, "btnAButton");
this.btnAButton.BackColor = System.Drawing.Color.Transparent; this.btnAButton.BackColor = System.Drawing.Color.Transparent;
this.btnAButton.FlatAppearance.BorderSize = 0; this.btnAButton.FlatAppearance.BorderSize = 0;
this.btnAButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnAButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnAButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnAButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnAButton, "btnAButton");
this.btnAButton.Name = "btnAButton"; this.btnAButton.Name = "btnAButton";
this.btnAButton.TabStop = false; this.btnAButton.TabStop = false;
this.btnAButton.Tag = "X360A Button"; this.btnAButton.Tag = "X360A Button";
@ -1153,11 +1153,11 @@
// //
// btnGuide // btnGuide
// //
resources.ApplyResources(this.btnGuide, "btnGuide");
this.btnGuide.BackColor = System.Drawing.Color.Transparent; this.btnGuide.BackColor = System.Drawing.Color.Transparent;
this.btnGuide.FlatAppearance.BorderSize = 0; this.btnGuide.FlatAppearance.BorderSize = 0;
this.btnGuide.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnGuide.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnGuide.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnGuide.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnGuide, "btnGuide");
this.btnGuide.Name = "btnGuide"; this.btnGuide.Name = "btnGuide";
this.btnGuide.TabStop = false; this.btnGuide.TabStop = false;
this.btnGuide.Tag = "X360Guide"; this.btnGuide.Tag = "X360Guide";
@ -1175,11 +1175,11 @@
// //
// btnStart // btnStart
// //
resources.ApplyResources(this.btnStart, "btnStart");
this.btnStart.BackColor = System.Drawing.Color.Transparent; this.btnStart.BackColor = System.Drawing.Color.Transparent;
this.btnStart.FlatAppearance.BorderSize = 0; this.btnStart.FlatAppearance.BorderSize = 0;
this.btnStart.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnStart.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnStart.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnStart.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnStart, "btnStart");
this.btnStart.Name = "btnStart"; this.btnStart.Name = "btnStart";
this.btnStart.TabStop = false; this.btnStart.TabStop = false;
this.btnStart.Tag = "X360Start"; this.btnStart.Tag = "X360Start";
@ -1197,11 +1197,11 @@
// //
// btnBack // btnBack
// //
resources.ApplyResources(this.btnBack, "btnBack");
this.btnBack.BackColor = System.Drawing.Color.Transparent; this.btnBack.BackColor = System.Drawing.Color.Transparent;
this.btnBack.FlatAppearance.BorderSize = 0; this.btnBack.FlatAppearance.BorderSize = 0;
this.btnBack.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnBack.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnBack.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnBack.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnBack, "btnBack");
this.btnBack.Name = "btnBack"; this.btnBack.Name = "btnBack";
this.btnBack.TabStop = false; this.btnBack.TabStop = false;
this.btnBack.Tag = "X360Back"; this.btnBack.Tag = "X360Back";
@ -1219,11 +1219,11 @@
// //
// btnBButton // btnBButton
// //
resources.ApplyResources(this.btnBButton, "btnBButton");
this.btnBButton.BackColor = System.Drawing.Color.Transparent; this.btnBButton.BackColor = System.Drawing.Color.Transparent;
this.btnBButton.FlatAppearance.BorderSize = 0; this.btnBButton.FlatAppearance.BorderSize = 0;
this.btnBButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnBButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnBButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnBButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnBButton, "btnBButton");
this.btnBButton.Name = "btnBButton"; this.btnBButton.Name = "btnBButton";
this.btnBButton.TabStop = false; this.btnBButton.TabStop = false;
this.btnBButton.Tag = "X360B Button"; this.btnBButton.Tag = "X360B Button";
@ -1241,11 +1241,11 @@
// //
// btnXButton // btnXButton
// //
resources.ApplyResources(this.btnXButton, "btnXButton");
this.btnXButton.BackColor = System.Drawing.Color.Transparent; this.btnXButton.BackColor = System.Drawing.Color.Transparent;
this.btnXButton.FlatAppearance.BorderSize = 0; this.btnXButton.FlatAppearance.BorderSize = 0;
this.btnXButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnXButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnXButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnXButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnXButton, "btnXButton");
this.btnXButton.Name = "btnXButton"; this.btnXButton.Name = "btnXButton";
this.btnXButton.TabStop = false; this.btnXButton.TabStop = false;
this.btnXButton.Tag = "X360X Button"; this.btnXButton.Tag = "X360X Button";
@ -1263,11 +1263,11 @@
// //
// btnYButton // btnYButton
// //
resources.ApplyResources(this.btnYButton, "btnYButton");
this.btnYButton.BackColor = System.Drawing.Color.Transparent; this.btnYButton.BackColor = System.Drawing.Color.Transparent;
this.btnYButton.FlatAppearance.BorderSize = 0; this.btnYButton.FlatAppearance.BorderSize = 0;
this.btnYButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnYButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnYButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnYButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnYButton, "btnYButton");
this.btnYButton.Name = "btnYButton"; this.btnYButton.Name = "btnYButton";
this.btnYButton.TabStop = false; this.btnYButton.TabStop = false;
this.btnYButton.Tag = "X360Y Button"; this.btnYButton.Tag = "X360Y Button";
@ -1285,11 +1285,11 @@
// //
// btnLB // btnLB
// //
resources.ApplyResources(this.btnLB, "btnLB");
this.btnLB.BackColor = System.Drawing.Color.Transparent; this.btnLB.BackColor = System.Drawing.Color.Transparent;
this.btnLB.FlatAppearance.BorderSize = 0; this.btnLB.FlatAppearance.BorderSize = 0;
this.btnLB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLB, "btnLB");
this.btnLB.Name = "btnLB"; this.btnLB.Name = "btnLB";
this.btnLB.TabStop = false; this.btnLB.TabStop = false;
this.btnLB.Tag = "X360Left Bumper"; this.btnLB.Tag = "X360Left Bumper";
@ -1307,11 +1307,11 @@
// //
// btnDpadRight // btnDpadRight
// //
resources.ApplyResources(this.btnDpadRight, "btnDpadRight");
this.btnDpadRight.BackColor = System.Drawing.Color.Transparent; this.btnDpadRight.BackColor = System.Drawing.Color.Transparent;
this.btnDpadRight.FlatAppearance.BorderSize = 0; this.btnDpadRight.FlatAppearance.BorderSize = 0;
this.btnDpadRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnDpadRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnDpadRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnDpadRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnDpadRight, "btnDpadRight");
this.btnDpadRight.Name = "btnDpadRight"; this.btnDpadRight.Name = "btnDpadRight";
this.btnDpadRight.TabStop = false; this.btnDpadRight.TabStop = false;
this.btnDpadRight.Tag = "X360Right Button"; this.btnDpadRight.Tag = "X360Right Button";
@ -1329,11 +1329,11 @@
// //
// btnDpadUp // btnDpadUp
// //
resources.ApplyResources(this.btnDpadUp, "btnDpadUp");
this.btnDpadUp.BackColor = System.Drawing.Color.Transparent; this.btnDpadUp.BackColor = System.Drawing.Color.Transparent;
this.btnDpadUp.FlatAppearance.BorderSize = 0; this.btnDpadUp.FlatAppearance.BorderSize = 0;
this.btnDpadUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnDpadUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnDpadUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnDpadUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnDpadUp, "btnDpadUp");
this.btnDpadUp.Name = "btnDpadUp"; this.btnDpadUp.Name = "btnDpadUp";
this.btnDpadUp.TabStop = false; this.btnDpadUp.TabStop = false;
this.btnDpadUp.Tag = "X360Up Button"; this.btnDpadUp.Tag = "X360Up Button";
@ -1351,11 +1351,11 @@
// //
// btnDpadDown // btnDpadDown
// //
resources.ApplyResources(this.btnDpadDown, "btnDpadDown");
this.btnDpadDown.BackColor = System.Drawing.Color.Transparent; this.btnDpadDown.BackColor = System.Drawing.Color.Transparent;
this.btnDpadDown.FlatAppearance.BorderSize = 0; this.btnDpadDown.FlatAppearance.BorderSize = 0;
this.btnDpadDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnDpadDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnDpadDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnDpadDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnDpadDown, "btnDpadDown");
this.btnDpadDown.Name = "btnDpadDown"; this.btnDpadDown.Name = "btnDpadDown";
this.btnDpadDown.TabStop = false; this.btnDpadDown.TabStop = false;
this.btnDpadDown.Tag = "X360Down Button"; this.btnDpadDown.Tag = "X360Down Button";
@ -1373,11 +1373,11 @@
// //
// btnDpadLeft // btnDpadLeft
// //
resources.ApplyResources(this.btnDpadLeft, "btnDpadLeft");
this.btnDpadLeft.BackColor = System.Drawing.Color.Transparent; this.btnDpadLeft.BackColor = System.Drawing.Color.Transparent;
this.btnDpadLeft.FlatAppearance.BorderSize = 0; this.btnDpadLeft.FlatAppearance.BorderSize = 0;
this.btnDpadLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnDpadLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnDpadLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnDpadLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnDpadLeft, "btnDpadLeft");
this.btnDpadLeft.Name = "btnDpadLeft"; this.btnDpadLeft.Name = "btnDpadLeft";
this.btnDpadLeft.TabStop = false; this.btnDpadLeft.TabStop = false;
this.btnDpadLeft.Tag = "X360Left Button"; this.btnDpadLeft.Tag = "X360Left Button";
@ -1395,11 +1395,11 @@
// //
// btnLT // btnLT
// //
resources.ApplyResources(this.btnLT, "btnLT");
this.btnLT.BackColor = System.Drawing.Color.Transparent; this.btnLT.BackColor = System.Drawing.Color.Transparent;
this.btnLT.FlatAppearance.BorderSize = 0; this.btnLT.FlatAppearance.BorderSize = 0;
this.btnLT.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLT.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLT, "btnLT");
this.btnLT.ForeColor = System.Drawing.Color.Transparent; this.btnLT.ForeColor = System.Drawing.Color.Transparent;
this.btnLT.Name = "btnLT"; this.btnLT.Name = "btnLT";
this.btnLT.TabStop = false; this.btnLT.TabStop = false;
@ -1473,11 +1473,11 @@
// //
// btnRSLeft // btnRSLeft
// //
resources.ApplyResources(this.btnRSLeft, "btnRSLeft");
this.btnRSLeft.BackColor = System.Drawing.Color.Transparent; this.btnRSLeft.BackColor = System.Drawing.Color.Transparent;
this.btnRSLeft.FlatAppearance.BorderSize = 0; this.btnRSLeft.FlatAppearance.BorderSize = 0;
this.btnRSLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRSLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRSLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRSLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRSLeft, "btnRSLeft");
this.btnRSLeft.Name = "btnRSLeft"; this.btnRSLeft.Name = "btnRSLeft";
this.btnRSLeft.TabStop = false; this.btnRSLeft.TabStop = false;
this.btnRSLeft.Tag = "X360Right X-Axis-"; this.btnRSLeft.Tag = "X360Right X-Axis-";
@ -1495,11 +1495,11 @@
// //
// btnRSDown // btnRSDown
// //
resources.ApplyResources(this.btnRSDown, "btnRSDown");
this.btnRSDown.BackColor = System.Drawing.Color.Transparent; this.btnRSDown.BackColor = System.Drawing.Color.Transparent;
this.btnRSDown.FlatAppearance.BorderSize = 0; this.btnRSDown.FlatAppearance.BorderSize = 0;
this.btnRSDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRSDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRSDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRSDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRSDown, "btnRSDown");
this.btnRSDown.Name = "btnRSDown"; this.btnRSDown.Name = "btnRSDown";
this.btnRSDown.TabStop = false; this.btnRSDown.TabStop = false;
this.btnRSDown.Tag = "X360Right Y-Axis+"; this.btnRSDown.Tag = "X360Right Y-Axis+";
@ -1517,11 +1517,11 @@
// //
// btnRSRight // btnRSRight
// //
resources.ApplyResources(this.btnRSRight, "btnRSRight");
this.btnRSRight.BackColor = System.Drawing.Color.Transparent; this.btnRSRight.BackColor = System.Drawing.Color.Transparent;
this.btnRSRight.FlatAppearance.BorderSize = 0; this.btnRSRight.FlatAppearance.BorderSize = 0;
this.btnRSRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRSRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRSRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRSRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRSRight, "btnRSRight");
this.btnRSRight.Name = "btnRSRight"; this.btnRSRight.Name = "btnRSRight";
this.btnRSRight.TabStop = false; this.btnRSRight.TabStop = false;
this.btnRSRight.Tag = "X360Right X-Axis+"; this.btnRSRight.Tag = "X360Right X-Axis+";
@ -1539,11 +1539,11 @@
// //
// btnRB // btnRB
// //
resources.ApplyResources(this.btnRB, "btnRB");
this.btnRB.BackColor = System.Drawing.Color.Transparent; this.btnRB.BackColor = System.Drawing.Color.Transparent;
this.btnRB.FlatAppearance.BorderSize = 0; this.btnRB.FlatAppearance.BorderSize = 0;
this.btnRB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRB.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRB.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRB, "btnRB");
this.btnRB.Name = "btnRB"; this.btnRB.Name = "btnRB";
this.btnRB.TabStop = false; this.btnRB.TabStop = false;
this.btnRB.Tag = "X360Right Bumper"; this.btnRB.Tag = "X360Right Bumper";
@ -1561,11 +1561,11 @@
// //
// btnLSLeft // btnLSLeft
// //
resources.ApplyResources(this.btnLSLeft, "btnLSLeft");
this.btnLSLeft.BackColor = System.Drawing.Color.Transparent; this.btnLSLeft.BackColor = System.Drawing.Color.Transparent;
this.btnLSLeft.FlatAppearance.BorderSize = 0; this.btnLSLeft.FlatAppearance.BorderSize = 0;
this.btnLSLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLSLeft.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLSLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLSLeft.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLSLeft, "btnLSLeft");
this.btnLSLeft.Name = "btnLSLeft"; this.btnLSLeft.Name = "btnLSLeft";
this.btnLSLeft.TabStop = false; this.btnLSLeft.TabStop = false;
this.btnLSLeft.Tag = "X360Left X-Axis-"; this.btnLSLeft.Tag = "X360Left X-Axis-";
@ -1583,11 +1583,11 @@
// //
// btnRSUp // btnRSUp
// //
resources.ApplyResources(this.btnRSUp, "btnRSUp");
this.btnRSUp.BackColor = System.Drawing.Color.Transparent; this.btnRSUp.BackColor = System.Drawing.Color.Transparent;
this.btnRSUp.FlatAppearance.BorderSize = 0; this.btnRSUp.FlatAppearance.BorderSize = 0;
this.btnRSUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRSUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRSUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRSUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRSUp, "btnRSUp");
this.btnRSUp.Name = "btnRSUp"; this.btnRSUp.Name = "btnRSUp";
this.btnRSUp.TabStop = false; this.btnRSUp.TabStop = false;
this.btnRSUp.Tag = "X360Right Y-Axis-"; this.btnRSUp.Tag = "X360Right Y-Axis-";
@ -1605,11 +1605,11 @@
// //
// btnLSDown // btnLSDown
// //
resources.ApplyResources(this.btnLSDown, "btnLSDown");
this.btnLSDown.BackColor = System.Drawing.Color.Transparent; this.btnLSDown.BackColor = System.Drawing.Color.Transparent;
this.btnLSDown.FlatAppearance.BorderSize = 0; this.btnLSDown.FlatAppearance.BorderSize = 0;
this.btnLSDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLSDown.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLSDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLSDown.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLSDown, "btnLSDown");
this.btnLSDown.Name = "btnLSDown"; this.btnLSDown.Name = "btnLSDown";
this.btnLSDown.TabStop = false; this.btnLSDown.TabStop = false;
this.btnLSDown.Tag = "X360Left Y-Axis+"; this.btnLSDown.Tag = "X360Left Y-Axis+";
@ -1627,11 +1627,11 @@
// //
// btnRT // btnRT
// //
resources.ApplyResources(this.btnRT, "btnRT");
this.btnRT.BackColor = System.Drawing.Color.Transparent; this.btnRT.BackColor = System.Drawing.Color.Transparent;
this.btnRT.FlatAppearance.BorderSize = 0; this.btnRT.FlatAppearance.BorderSize = 0;
this.btnRT.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRT.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRT.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRT, "btnRT");
this.btnRT.Name = "btnRT"; this.btnRT.Name = "btnRT";
this.btnRT.TabStop = false; this.btnRT.TabStop = false;
this.btnRT.Tag = "X360Right Trigger"; this.btnRT.Tag = "X360Right Trigger";
@ -1649,11 +1649,11 @@
// //
// btnLSRight // btnLSRight
// //
resources.ApplyResources(this.btnLSRight, "btnLSRight");
this.btnLSRight.BackColor = System.Drawing.Color.Transparent; this.btnLSRight.BackColor = System.Drawing.Color.Transparent;
this.btnLSRight.FlatAppearance.BorderSize = 0; this.btnLSRight.FlatAppearance.BorderSize = 0;
this.btnLSRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLSRight.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLSRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLSRight.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLSRight, "btnLSRight");
this.btnLSRight.Name = "btnLSRight"; this.btnLSRight.Name = "btnLSRight";
this.btnLSRight.TabStop = false; this.btnLSRight.TabStop = false;
this.btnLSRight.Tag = "X360Left X-Axis+"; this.btnLSRight.Tag = "X360Left X-Axis+";
@ -1671,11 +1671,11 @@
// //
// btnRSClick // btnRSClick
// //
resources.ApplyResources(this.btnRSClick, "btnRSClick");
this.btnRSClick.BackColor = System.Drawing.Color.Transparent; this.btnRSClick.BackColor = System.Drawing.Color.Transparent;
this.btnRSClick.FlatAppearance.BorderSize = 0; this.btnRSClick.FlatAppearance.BorderSize = 0;
this.btnRSClick.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnRSClick.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnRSClick.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnRSClick.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnRSClick, "btnRSClick");
this.btnRSClick.Name = "btnRSClick"; this.btnRSClick.Name = "btnRSClick";
this.btnRSClick.TabStop = false; this.btnRSClick.TabStop = false;
this.btnRSClick.Tag = "X360Right Stick"; this.btnRSClick.Tag = "X360Right Stick";
@ -1693,11 +1693,11 @@
// //
// btnLSUp // btnLSUp
// //
resources.ApplyResources(this.btnLSUp, "btnLSUp");
this.btnLSUp.BackColor = System.Drawing.Color.Transparent; this.btnLSUp.BackColor = System.Drawing.Color.Transparent;
this.btnLSUp.FlatAppearance.BorderSize = 0; this.btnLSUp.FlatAppearance.BorderSize = 0;
this.btnLSUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLSUp.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLSUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLSUp.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLSUp, "btnLSUp");
this.btnLSUp.Name = "btnLSUp"; this.btnLSUp.Name = "btnLSUp";
this.btnLSUp.TabStop = false; this.btnLSUp.TabStop = false;
this.btnLSUp.Tag = "X360Left Y-Axis-"; this.btnLSUp.Tag = "X360Left Y-Axis-";
@ -1707,11 +1707,11 @@
// //
// btnLSClick // btnLSClick
// //
resources.ApplyResources(this.btnLSClick, "btnLSClick");
this.btnLSClick.BackColor = System.Drawing.Color.Transparent; this.btnLSClick.BackColor = System.Drawing.Color.Transparent;
this.btnLSClick.FlatAppearance.BorderSize = 0; this.btnLSClick.FlatAppearance.BorderSize = 0;
this.btnLSClick.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent; this.btnLSClick.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.btnLSClick.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent; this.btnLSClick.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
resources.ApplyResources(this.btnLSClick, "btnLSClick");
this.btnLSClick.Name = "btnLSClick"; this.btnLSClick.Name = "btnLSClick";
this.btnLSClick.TabStop = false; this.btnLSClick.TabStop = false;
this.btnLSClick.Tag = "X360Left Stick"; this.btnLSClick.Tag = "X360Left Stick";
@ -1751,7 +1751,6 @@
// //
// gBExtras // gBExtras
// //
resources.ApplyResources(this.gBExtras, "gBExtras");
this.gBExtras.Controls.Add(this.nUDMouse); this.gBExtras.Controls.Add(this.nUDMouse);
this.gBExtras.Controls.Add(this.cBMouse); this.gBExtras.Controls.Add(this.cBMouse);
this.gBExtras.Controls.Add(this.cBLightbar); this.gBExtras.Controls.Add(this.cBLightbar);
@ -1774,6 +1773,7 @@
this.gBExtras.Controls.Add(this.tBGreenBar); this.gBExtras.Controls.Add(this.tBGreenBar);
this.gBExtras.Controls.Add(this.tBRedBar); this.gBExtras.Controls.Add(this.tBRedBar);
this.gBExtras.Controls.Add(this.lBTip); this.gBExtras.Controls.Add(this.lBTip);
resources.ApplyResources(this.gBExtras, "gBExtras");
this.gBExtras.Name = "gBExtras"; this.gBExtras.Name = "gBExtras";
this.gBExtras.TabStop = false; this.gBExtras.TabStop = false;
// //
@ -1824,7 +1824,6 @@
// //
// cBShiftButton // cBShiftButton
// //
resources.ApplyResources(this.cBShiftButton, "cBShiftButton");
this.cBShiftButton.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cBShiftButton.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cBShiftButton.FormattingEnabled = true; this.cBShiftButton.FormattingEnabled = true;
this.cBShiftButton.Items.AddRange(new object[] { this.cBShiftButton.Items.AddRange(new object[] {
@ -1855,12 +1854,13 @@
resources.GetString("cBShiftButton.Items24"), resources.GetString("cBShiftButton.Items24"),
resources.GetString("cBShiftButton.Items25"), resources.GetString("cBShiftButton.Items25"),
resources.GetString("cBShiftButton.Items26")}); resources.GetString("cBShiftButton.Items26")});
resources.ApplyResources(this.cBShiftButton, "cBShiftButton");
this.cBShiftButton.Name = "cBShiftButton"; this.cBShiftButton.Name = "cBShiftButton";
// //
// pnl360Controls // pnl360Controls
// //
resources.ApplyResources(this.pnl360Controls, "pnl360Controls");
this.pnl360Controls.BackgroundImage = global::DS4Windows.Properties.Resources._360_map; this.pnl360Controls.BackgroundImage = global::DS4Windows.Properties.Resources._360_map;
resources.ApplyResources(this.pnl360Controls, "pnl360Controls");
this.pnl360Controls.Controls.Add(this.lb360Tip); this.pnl360Controls.Controls.Add(this.lb360Tip);
this.pnl360Controls.Controls.Add(this.pBHighlight); this.pnl360Controls.Controls.Add(this.pBHighlight);
this.pnl360Controls.Controls.Add(this.btnGuide); this.pnl360Controls.Controls.Add(this.btnGuide);
@ -1890,6 +1890,7 @@
this.pnl360Controls.Controls.Add(this.btnDpadDown); this.pnl360Controls.Controls.Add(this.btnDpadDown);
this.pnl360Controls.Controls.Add(this.btnDpadUp); this.pnl360Controls.Controls.Add(this.btnDpadUp);
this.pnl360Controls.Name = "pnl360Controls"; this.pnl360Controls.Name = "pnl360Controls";
this.pnl360Controls.Paint += new System.Windows.Forms.PaintEventHandler(this.pnl360Controls_Paint);
// //
// lb360Tip // lb360Tip
// //

View File

@ -1,10 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
namespace DS4Windows namespace DS4Windows
@ -27,15 +23,20 @@ namespace DS4Windows
private Color reg, full; private Color reg, full;
int bgc = 240; // Color of the form background, If greyscale color int bgc = 240; // Color of the form background, If greyscale color
private bool extraChanged; private bool extraChanged;
private Bitmap pnl360BgImage;
public KBM360(int deviceNum, Options ooo, Button buton) public KBM360(int deviceNum, Options ooo, Button buton)
{ {
InitializeComponent(); InitializeComponent();
pnl360BgImage = (Bitmap)Properties.Resources._360_map.Clone();
pnl360Controls.BackgroundImage = null;
pnl360Controls.BackgroundImageLayout = ImageLayout.None;
device = deviceNum; device = deviceNum;
ops = ooo; ops = ooo;
button = buton; button = buton;
cBToggle.Checked = button.Font.Italic; DS4ControlSettings dcs = Global.getDS4CSetting(device, button.Name);
cBScanCode.Checked = button.Font.Bold; cBToggle.Checked = dcs.keyType.HasFlag(DS4KeyType.Toggle);
cBScanCode.Checked = dcs.keyType.HasFlag(DS4KeyType.ScanCode);
oldSC = cBScanCode.Location; oldSC = cBScanCode.Location;
defaultText = btnDefault.Text; defaultText = btnDefault.Text;
if (button.Name.StartsWith("bnShift")) if (button.Name.StartsWith("bnShift"))
@ -45,13 +46,22 @@ namespace DS4Windows
btnDefault.Text = Properties.Resources.FallBack; btnDefault.Text = Properties.Resources.FallBack;
} }
else if (button.Name.StartsWith("bn")) else if (button.Name.StartsWith("bn"))
{
Text = Properties.Resources.SelectActionTitle.Replace("*action*", button.Name.Substring(2)); Text = Properties.Resources.SelectActionTitle.Replace("*action*", button.Name.Substring(2));
}
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
((Button)control).Click += anybtn_Click; ((Button)control).Click += anybtn_Click;
}
foreach (Control control in pnl360Controls.Controls) foreach (Control control in pnl360Controls.Controls)
{
if (control is Button) if (control is Button)
((Button)control).Click += anybtn_Click; ((Button)control).Click += anybtn_Click;
}
if (button.Name.Contains("Touch") || button.Name.Contains("Swipe")) if (button.Name.Contains("Touch") || button.Name.Contains("Swipe"))
{ {
btnMOUSEDOWN.Visible = false; btnMOUSEDOWN.Visible = false;
@ -59,6 +69,7 @@ namespace DS4Windows
btnMOUSERIGHT.Visible = false; btnMOUSERIGHT.Visible = false;
btnMOUSEUP.Visible = false; btnMOUSEUP.Visible = false;
} }
ActiveControl = lBMacroOn; ActiveControl = lBMacroOn;
guideText = btnGuide.Text; guideText = btnGuide.Text;
btnGuide.Text = ""; btnGuide.Text = "";
@ -73,7 +84,9 @@ namespace DS4Windows
InitializeComponent(); InitializeComponent();
sA = ooo; sA = ooo;
button = buton; button = buton;
Size = new Size(btnVolUp.Location.X + btnVolUp.Size.Width * 2, btnNUMENTER.Location.Y + btnNUMENTER.Size.Height * 2); Size = new Size(btnVolUp.Location.X + btnVolUp.Size.Width * 2,
btnNUMENTER.Location.Y + btnNUMENTER.Size.Height * 2);
if (extras) if (extras)
{ {
cBScanCode.Checked = button.Text.Contains("(SC)"); cBScanCode.Checked = button.Text.Contains("(SC)");
@ -84,13 +97,17 @@ namespace DS4Windows
cBScanCode.Visible = false; cBScanCode.Visible = false;
cBToggle.Visible = false; cBToggle.Visible = false;
} }
gBExtras.Visible = false; gBExtras.Visible = false;
bnMacro.Visible = false; bnMacro.Visible = false;
X360Label.Visible = false; X360Label.Visible = false;
Text = Properties.Resources.SelectActionTitle.Replace("*action*", "Trigger"); Text = Properties.Resources.SelectActionTitle.Replace("*action*", "Trigger");
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
((Button)control).Click += anybtn_Click; ((Button)control).Click += anybtn_Click;
}
btnMOUSEDOWN.Visible = false; btnMOUSEDOWN.Visible = false;
btnMOUSELEFT.Visible = false; btnMOUSELEFT.Visible = false;
btnMOUSERIGHT.Visible = false; btnMOUSERIGHT.Visible = false;
@ -129,39 +146,61 @@ namespace DS4Windows
keyname = "How did you get here?"; keyname = "How did you get here?";
} }
else */ else */
if (((Button)sender).Tag == null) if (bn.Tag == null)
keyname = ((Button)sender).Text; keyname = bn.Text;
else if (((Button)sender).Tag.ToString().Contains("X360")) else if (bn.Tag.ToString().Contains("X360"))
keyname = ((Button)sender).Tag.ToString().Substring(4); keyname = bn.Tag.ToString().Substring(4);
else if (((Button)sender).Tag != null && ushort.TryParse(((Button)sender).Tag.ToString(), out val)) else if (bn.Tag != null && ushort.TryParse(bn.Tag.ToString(), out val))
keyname = ((Keys)val).ToString(); keyname = ((Keys)val).ToString();
else else
keyname = ((Button)sender).Tag.ToString(); keyname = bn.Tag.ToString();
object keytag; object keytag;
//ushort val; //ushort val;
if (((Button)sender).Tag != null && ((Button)sender).Tag.ToString().Contains("X360")) if (bn.Tag != null && bn.Tag.ToString().Contains("X360"))
keytag = ((Button)sender).Tag.ToString().Substring(4); {
else if (((Button)sender).Tag != null && ushort.TryParse(((Button)sender).Tag.ToString(), out val)) //keytag = ((Button)sender).Tag.ToString().Substring(4);
keytag = Global.getX360ControlsByName(bn.Tag.ToString().Substring(4));
DS4Controls psButton = Global.getDS4ControlsByName(button.Name);
if ((X360Controls)keytag == Global.getDefaultX360ControlBinding(psButton) &&
!cBScanCode.Checked && !cBToggle.Checked && !rBShiftModifer.Checked)
{
// Reset action
keytag = null;
}
}
else if (bn.Tag != null && ushort.TryParse(bn.Tag.ToString(), out val))
keytag = val; keytag = val;
else else
keytag = ((Button)sender).Tag; keytag = bn.Tag;
lBMacroOn.Visible = false; lBMacroOn.Visible = false;
string extras = GetExtras(); string extras = null;
if (IsUsingExtras())
{
extras = GetExtras();
}
KeyValuePair<object, string> tag = new KeyValuePair<object, string>(keytag, extras); KeyValuePair<object, string> tag = new KeyValuePair<object, string>(keytag, extras);
newaction = true; newaction = true;
int value; int value;
bool tagisint = keytag != null && int.TryParse(keytag.ToString(), out value); bool tagisint = keytag != null && int.TryParse(keytag.ToString(), out value);
bool scanavail = tagisint; bool scanavail = tagisint;
bool toggleavil = tagisint; bool toggleavil = tagisint;
if (ops != null) if (ops != null)
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag, (scanavail ? cBScanCode.Checked : false), (toggleavil ? cBToggle.Checked : false), false, false, cBShiftButton.SelectedIndex); {
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag,
(scanavail ? cBScanCode.Checked : false), (toggleavil ? cBToggle.Checked : false),
false, false, cBShiftButton.SelectedIndex);
}
else if (sA != null) else if (sA != null)
{ {
button.Text = keyname; button.Text = keyname;
button.Tag = keytag; button.Tag = keytag;
button.ForeColor = Color.Black; button.ForeColor = Color.Black;
} }
this.Close(); this.Close();
} }
} }
@ -171,9 +210,26 @@ namespace DS4Windows
string t =(byte)nUDHeavy.Value + "," + (byte)nUDLight.Value + "," + string t =(byte)nUDHeavy.Value + "," + (byte)nUDLight.Value + "," +
(cBLightbar.Checked ? "1" + "," + tBRedBar.Value + "," + tBGreenBar.Value + "," + tBBlueBar.Value + "," + nUDLightFlash.Value: "0,0,0,0,0") + "," + (cBLightbar.Checked ? "1" + "," + tBRedBar.Value + "," + tBGreenBar.Value + "," + tBBlueBar.Value + "," + nUDLightFlash.Value: "0,0,0,0,0") + "," +
(cBMouse.Checked ? "1" + "," + (byte)nUDMouse.Value : "0,0"); (cBMouse.Checked ? "1" + "," + (byte)nUDMouse.Value : "0,0");
return t; return t;
} }
private bool IsUsingExtras()
{
bool result = false;
result = result || (nUDHeavy.Value != 0);
result = result || (nUDLight.Value != 0);
result = result || (cBLightbar.Checked);
result = result ||
(tBRedBar.Value != 255 && tBGreenBar.Value != 255 &&
tBBlueBar.Value != 255);
result = result || (nUDLightFlash.Value != 0);
result = result || (cBMouse.Checked);
result = result || (nUDMouse.Value != 25);
return result;
}
private void finalMeasure(object sender, FormClosedEventArgs e) private void finalMeasure(object sender, FormClosedEventArgs e)
{ {
if (ops != null) if (ops != null)
@ -186,13 +242,23 @@ namespace DS4Windows
} }
if (lBMacroOn.Visible) if (lBMacroOn.Visible)
{ {
string extras = GetExtras(); string extras = null;
if (IsUsingExtras())
{
extras = GetExtras();
}
KeyValuePair<object, string> tag = new KeyValuePair<object, string>(macrostag.ToArray(), extras); KeyValuePair<object, string> tag = new KeyValuePair<object, string>(macrostag.ToArray(), extras);
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag, cBScanCode.Checked, false, lBMacroOn.Visible, macrorepeat, cBShiftButton.SelectedIndex); ops.ChangeButtonText(button, rBShiftModifer.Checked, tag, cBScanCode.Checked, false, lBMacroOn.Visible, macrorepeat, cBShiftButton.SelectedIndex);
} }
else if (!newaction) else if (!newaction)
{ {
string extras = GetExtras(); string extras = null;
if (IsUsingExtras())
{
extras = GetExtras();
}
int value; int value;
object tt = Global.GetDS4Action(device, button.Name, rBShiftModifer.Checked); object tt = Global.GetDS4Action(device, button.Name, rBShiftModifer.Checked);
bool tagisint = tt != null bool tagisint = tt != null
@ -228,17 +294,26 @@ namespace DS4Windows
if (rb == null && !(ActiveControl is NumericUpDown) && !(ActiveControl is TrackBar)) if (rb == null && !(ActiveControl is NumericUpDown) && !(ActiveControl is TrackBar))
{ {
lBMacroOn.Visible = false; lBMacroOn.Visible = false;
string extras = GetExtras(); string extras = null;
if (IsUsingExtras())
{
extras = GetExtras();
}
KeyValuePair<object, string> tag = new KeyValuePair<object, string>(e.KeyValue, extras); KeyValuePair<object, string> tag = new KeyValuePair<object, string>(e.KeyValue, extras);
newaction = true; newaction = true;
if (ops != null) if (ops != null)
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag, cBScanCode.Checked, cBToggle.Checked, false, false, cBShiftButton.SelectedIndex); {
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag,
cBScanCode.Checked, cBToggle.Checked, false, false, cBShiftButton.SelectedIndex);
}
else if (sA != null) else if (sA != null)
{ {
button.Text = e.KeyCode.ToString(); button.Text = e.KeyCode.ToString();
button.Tag = e.KeyValue; button.Tag = e.KeyValue;
button.ForeColor = Color.Black; button.ForeColor = Color.Black;
} }
this.Close(); this.Close();
} }
} }
@ -248,26 +323,30 @@ namespace DS4Windows
if (rb == null && !(ActiveControl is NumericUpDown) && !(ActiveControl is TrackBar)) if (rb == null && !(ActiveControl is NumericUpDown) && !(ActiveControl is TrackBar))
{ {
lBMacroOn.Visible = false; lBMacroOn.Visible = false;
string extras = GetExtras(); string extras = null;
if (IsUsingExtras())
{
extras = GetExtras();
}
KeyValuePair<object, string> tag = new KeyValuePair<object, string>(e.KeyValue, extras); KeyValuePair<object, string> tag = new KeyValuePair<object, string>(e.KeyValue, extras);
newaction = true; newaction = true;
if (ops != null) if (ops != null)
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag, cBScanCode.Checked, cBToggle.Checked, false, false, cBShiftButton.SelectedIndex); {
ops.ChangeButtonText(button, rBShiftModifer.Checked, tag,
cBScanCode.Checked, cBToggle.Checked, false, false, cBShiftButton.SelectedIndex);
}
else if (sA != null) else if (sA != null)
{ {
button.Text = e.KeyCode.ToString(); button.Text = e.KeyCode.ToString();
button.Tag = e.KeyValue; button.Tag = e.KeyValue;
button.ForeColor = Color.Black; button.ForeColor = Color.Black;
} }
this.Close(); this.Close();
} }
} }
private void cbToggle_CheckedChanged(object sender, EventArgs e)
{
}
private void btnMacro_Click(object sender, EventArgs e) private void btnMacro_Click(object sender, EventArgs e)
{ {
gBExtras.Controls.Add(cBScanCode); gBExtras.Controls.Add(cBScanCode);
@ -290,11 +369,14 @@ namespace DS4Windows
case Keys.Up: case Keys.Up:
case Keys.Down: case Keys.Down:
return true; return true;
case Keys.Shift | Keys.Right:
case Keys.Shift | Keys.Left: case (Keys.Shift | Keys.Right):
case Keys.Shift | Keys.Up: case (Keys.Shift | Keys.Left):
case Keys.Shift | Keys.Down: case (Keys.Shift | Keys.Up):
case (Keys.Shift | Keys.Down):
return true; return true;
default: break;
} }
return base.IsInputKey(keyData); return base.IsInputKey(keyData);
} }
@ -307,6 +389,7 @@ namespace DS4Windows
case Keys.Right: case Keys.Right:
case Keys.Up: case Keys.Up:
case Keys.Down: case Keys.Down:
{
if (e.Shift) if (e.Shift)
{ {
@ -316,6 +399,8 @@ namespace DS4Windows
} }
break; break;
} }
default: break;
}
} }
private void SetColorToolTip(object sender, EventArgs e) private void SetColorToolTip(object sender, EventArgs e)
@ -329,6 +414,7 @@ namespace DS4Windows
int som = bgc + 11 * (int)(value * 0.0039215); int som = bgc + 11 * (int)(value * 0.0039215);
tb.BackColor = Color.FromArgb(tb.Name.ToLower().Contains("red") ? som : sat, tb.Name.ToLower().Contains("green") ? som : sat, tb.Name.ToLower().Contains("blue") ? som : sat); tb.BackColor = Color.FromArgb(tb.Name.ToLower().Contains("red") ? som : sat, tb.Name.ToLower().Contains("green") ? som : sat, tb.Name.ToLower().Contains("blue") ? som : sat);
} }
alphacolor = Math.Max(tBRedBar.Value, Math.Max(tBGreenBar.Value, tBBlueBar.Value)); alphacolor = Math.Max(tBRedBar.Value, Math.Max(tBGreenBar.Value, tBBlueBar.Value));
reg = Color.FromArgb(tBRedBar.Value, tBGreenBar.Value, tBBlueBar.Value); reg = Color.FromArgb(tBRedBar.Value, tBGreenBar.Value, tBBlueBar.Value);
full = HuetoRGB(reg.GetHue(), reg.GetBrightness(), reg); full = HuetoRGB(reg.GetHue(), reg.GetBrightness(), reg);
@ -367,6 +453,7 @@ namespace DS4Windows
tBBlueBar.Value = advColorDialog.Color.B; tBBlueBar.Value = advColorDialog.Color.B;
extraChanged = true; extraChanged = true;
} }
if (device < 4) if (device < 4)
DS4LightBar.forcelight[device] = false; DS4LightBar.forcelight[device] = false;
} }
@ -405,8 +492,10 @@ namespace DS4Windows
if (s[i] >= 'A' && s[i] <= 'Z') if (s[i] >= 'A' && s[i] <= 'Z')
s = s.Insert(i, " "); s = s.Insert(i, " ");
} }
if (s == "Guide") if (s == "Guide")
s = guideText; s = guideText;
return s; return s;
} }
@ -419,7 +508,16 @@ namespace DS4Windows
private void rBShift_CheckedChanged(object sender, EventArgs e) private void rBShift_CheckedChanged(object sender, EventArgs e)
{ {
if (!loading && extraChanged) if (!loading && extraChanged)
Global.UpdateDS4Extra(device, button.Name, !rBShiftModifer.Checked, GetExtras()); {
string strextras = null;
if (IsUsingExtras())
{
strextras = GetExtras();
}
Global.UpdateDS4Extra(device, button.Name, !rBShiftModifer.Checked, strextras);
}
object tagO = Global.GetDS4Action(device, button.Name, rBShiftModifer.Checked); object tagO = Global.GetDS4Action(device, button.Name, rBShiftModifer.Checked);
if (rBShiftModifer.Checked) if (rBShiftModifer.Checked)
btnDefault.Text = Properties.Resources.FallBack; btnDefault.Text = Properties.Resources.FallBack;
@ -432,8 +530,11 @@ namespace DS4Windows
newaction = false; newaction = false;
Highlight_Leave(null, null); Highlight_Leave(null, null);
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
((Button)control).BackColor = SystemColors.Control; ((Button)control).BackColor = SystemColors.Control;
}
if (tagO != null) if (tagO != null)
{ {
if (tagO is int || tagO is ushort) if (tagO is int || tagO is ushort)
@ -441,40 +542,51 @@ namespace DS4Windows
int tag = int.Parse(tagO.ToString()); int tag = int.Parse(tagO.ToString());
int i; int i;
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
{
if (int.TryParse(control.Tag?.ToString(), out i) && i == tag) if (int.TryParse(control.Tag?.ToString(), out i) && i == tag)
{ {
((Button)control).BackColor = Color.LightGreen; ((Button)control).BackColor = Color.LightGreen;
break; break;
} }
} }
}
}
else if (tagO is int[]) else if (tagO is int[])
{ {
int[] tag = (int[])tagO; int[] tag = (int[])tagO;
lBMacroOn.Visible = true; lBMacroOn.Visible = true;
foreach (int i in tag) foreach (int i in tag)
macrostag.Add(i); macrostag.Add(i);
if (Global.GetDS4KeyType(device, button.Name, rBShiftModifer.Checked).HasFlag(DS4KeyType.RepeatMacro))
if (Global.GetDS4KeyType(device, button.Name, rBShiftModifer.Checked).HasFlag(DS4KeyType.HoldMacro))
macrorepeat = true; macrorepeat = true;
} }
else if (tagO is string || tagO is X360Controls) else if (tagO is string || tagO is X360Controls)
{ {
string tag; string tag;
if (tagO is X360Controls) if (tagO is X360Controls)
{
tag = getX360ControlsByName((X360Controls)tagO); tag = getX360ControlsByName((X360Controls)tagO);
}
else else
tag = tagO.ToString(); tag = tagO.ToString();
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
{
if (control.Tag?.ToString() == tag) if (control.Tag?.ToString() == tag)
{ {
((Button)control).BackColor = Color.LightGreen; ((Button)control).BackColor = Color.LightGreen;
break; break;
} }
}
}
foreach (Control control in pnl360Controls.Controls) foreach (Control control in pnl360Controls.Controls)
{
if (control is Button) if (control is Button)
{
if (control.Tag?.ToString().Substring(4) == tag) if (control.Tag?.ToString().Substring(4) == tag)
{ {
Hightlight_Hover(((Button)control), null); Hightlight_Hover(((Button)control), null);
@ -482,6 +594,8 @@ namespace DS4Windows
} }
} }
} }
}
}
else else
{ {
btnDefault.BackColor = Color.LightGreen; btnDefault.BackColor = Color.LightGreen;
@ -493,15 +607,23 @@ namespace DS4Windows
tag = getX360ControlsByName((X360Controls)tagO); tag = getX360ControlsByName((X360Controls)tagO);
else else
tag = tagO.ToString(); tag = tagO.ToString();
foreach (Control control in Controls) foreach (Control control in Controls)
{
if (control is Button) if (control is Button)
{
if (control.Tag != null && control.Tag.ToString().Contains("X360") ? control.Tag?.ToString().Substring(4) == tag : control.Tag?.ToString() == tag) if (control.Tag != null && control.Tag.ToString().Contains("X360") ? control.Tag?.ToString().Substring(4) == tag : control.Tag?.ToString() == tag)
{ {
((Button)control).BackColor = Color.LightGreen; ((Button)control).BackColor = Color.LightGreen;
break; break;
} }
}
}
foreach (Control control in pnl360Controls.Controls) foreach (Control control in pnl360Controls.Controls)
{
if (control is Button) if (control is Button)
{
if (control.Tag?.ToString().Substring(4) == tag) if (control.Tag?.ToString().Substring(4) == tag)
{ {
Hightlight_Hover(((Button)control), null); Hightlight_Hover(((Button)control), null);
@ -509,13 +631,25 @@ namespace DS4Windows
} }
} }
} }
string[] extras = Global.GetDS4Extra(device, button.Name, rBShiftModifer.Checked).Split(','); }
}
string dcExtras = Global.GetDS4Extra(device, button.Name, rBShiftModifer.Checked);
string[] extras = null;
if (!string.IsNullOrEmpty(dcExtras))
{
extras = dcExtras.Split(',');
}
if (extras != null)
{
int b; int b;
try try
{ {
if (int.TryParse(extras[0], out b)) nUDHeavy.Value = b; if (int.TryParse(extras[0], out b)) nUDHeavy.Value = b;
if (int.TryParse(extras[1], out b)) nUDLight.Value = b; if (int.TryParse(extras[1], out b)) nUDLight.Value = b;
if (int.TryParse(extras[2], out b)) if (int.TryParse(extras[2], out b))
{
if (b == 1) if (b == 1)
{ {
cBLightbar.Checked = true; cBLightbar.Checked = true;
@ -533,7 +667,10 @@ namespace DS4Windows
nUDLightFlash.Value = 0; nUDLightFlash.Value = 0;
cBLightbar.Checked = false; cBLightbar.Checked = false;
} }
}
if (int.TryParse(extras[7], out b)) if (int.TryParse(extras[7], out b))
{
if (b == 1) if (b == 1)
{ {
cBMouse.Checked = true; cBMouse.Checked = true;
@ -544,7 +681,7 @@ namespace DS4Windows
nUDMouse.Value = 25; nUDMouse.Value = 25;
cBMouse.Checked = false; cBMouse.Checked = false;
} }
}
} }
catch catch
{ {
@ -558,6 +695,8 @@ namespace DS4Windows
nUDMouse.Value = 25; nUDMouse.Value = 25;
cBMouse.Checked = false; cBMouse.Checked = false;
} }
}
extraChanged = false; extraChanged = false;
} }
@ -606,33 +745,40 @@ namespace DS4Windows
case X360Controls.MouseLeft: return "Mouse Left"; case X360Controls.MouseLeft: return "Mouse Left";
case X360Controls.MouseRight: return "Mouse Right"; case X360Controls.MouseRight: return "Mouse Right";
case X360Controls.Unbound: return "Unbound"; case X360Controls.Unbound: return "Unbound";
default: break;
} }
return "Unbound"; return "Unbound";
} }
private void bnTest_Click(object sender, EventArgs e) private void bnTest_Click(object sender, EventArgs e)
{ {
Button btn = (Button)sender;
if (device < 4) if (device < 4)
if (((Button)sender).Text == Properties.Resources.TestText) {
if (btn.Text == Properties.Resources.TestText)
{ {
Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, device); Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, device);
((Button)sender).Text = Properties.Resources.StopText; btn.Text = Properties.Resources.StopText;
} }
else else
{ {
Program.rootHub.setRumble(0, 0, device); Program.rootHub.setRumble(0, 0, device);
((Button)sender).Text = Properties.Resources.TestText; btn.Text = Properties.Resources.TestText;
}
} }
else else
if (((Button)sender).Text == Properties.Resources.TestText) {
if (btn.Text == Properties.Resources.TestText)
{ {
Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, 0); Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, 0);
((Button)sender).Text = Properties.Resources.StopText; btn.Text = Properties.Resources.StopText;
} }
else else
{ {
Program.rootHub.setRumble(0, 0, 0); Program.rootHub.setRumble(0, 0, 0);
((Button)sender).Text = Properties.Resources.TestText; btn.Text = Properties.Resources.TestText;
}
} }
} }
@ -641,6 +787,11 @@ namespace DS4Windows
extraChanged = true; extraChanged = true;
} }
private void pnl360Controls_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(pnl360BgImage, new Rectangle(0, 13, Convert.ToInt32(pnl360Controls.Width), Convert.ToInt32(pnl360Controls.Height - 26)), new Rectangle(0, 0, Convert.ToInt32(pnl360BgImage.Width), Convert.ToInt32(pnl360BgImage.Height)), GraphicsUnit.Pixel);
}
private void nUD_ValueChanged(object sender, EventArgs e) private void nUD_ValueChanged(object sender, EventArgs e)
{ {
if (bnTest.Text != Properties.Resources.TestText) if (bnTest.Text != Properties.Resources.TestText)
@ -650,6 +801,7 @@ namespace DS4Windows
else else
Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, 0); Program.rootHub.setRumble((byte)nUDHeavy.Value, (byte)nUDLight.Value, 0);
} }
extraChanged = true; extraChanged = true;
} }

File diff suppressed because it is too large Load Diff

View File

@ -161,7 +161,7 @@
<value>105, 17</value> <value>105, 17</value>
</data> </data>
<data name="X360Label.Text" xml:space="preserve"> <data name="X360Label.Text" xml:space="preserve">
<value>Controles X360</value> <value>Controles Xbox 360</value>
</data> </data>
<data name="KBMlabel.Size" type="System.Drawing.Size, System.Drawing"> <data name="KBMlabel.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 17</value> <value>112, 17</value>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,70 @@
namespace DS4Windows.DS4Forms
{
partial class LanguagePackComboBox
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Код, автоматически созданный конструктором компонентов
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LanguagePackComboBox));
this.cbCulture = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// cbCulture
//
resources.ApplyResources(this.cbCulture, "cbCulture");
this.cbCulture.DisplayMember = "Value";
this.cbCulture.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbCulture.FormattingEnabled = true;
this.cbCulture.Name = "cbCulture";
this.cbCulture.ValueMember = "Key";
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
this.label1.SizeChanged += new System.EventHandler(this.LanguagePackComboBox_SizeChanged);
//
// LanguagePackComboBox
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.cbCulture);
this.Controls.Add(this.label1);
this.Name = "LanguagePackComboBox";
this.SizeChanged += new System.EventHandler(this.LanguagePackComboBox_SizeChanged);
this.Resize += new System.EventHandler(this.LanguagePackComboBox_SizeChanged);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox cbCulture;
private System.Windows.Forms.Label label1;
}
}

View File

@ -0,0 +1,145 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DS4Windows.DS4Forms
{
public partial class LanguagePackComboBox : UserControl
{
private string InvariantCultureTextValue = "No (English UI)";
private TaskCompletionSource<bool> LanguageListInitialized = new TaskCompletionSource<bool>();
// If probing path has been changed in App.config, add the same string here.
private string ProbingPath = "Lang";
// Filter language assembly file names in order to ont include irrelevant assemblies to the combo box.
private string LanguageAssemblyName = "DS4Windows.resources.dll";
[Category("Action")]
[Description("Fires when the combo box selected index is changed.")]
public event EventHandler SelectedIndexChanged;
[Category("Action")]
[Description("Fires when the combo box selected value is changed.")]
public event EventHandler SelectedValueChanged;
[Category("Data")]
[Description("Text used for invariant culture name in the combo box.")]
[Localizable(true)]
public string InvariantCultureText
{
get { return InvariantCultureTextValue; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("InvariantCultureText_Changed call will complete when ready, no need for a warning", "CS4014:Await.Warning")]
set {
InvariantCultureTextValue = value;
InvariantCultureText_Changed(value);
}
}
[Category("Data")]
[Description("Text for label before the combo box.")]
[Localizable(true)]
public string LabelText {
get { return label1.Text; }
set { label1.Text = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public int SelectedIndex
{
get { return cbCulture.SelectedIndex; }
set { cbCulture.SelectedIndex = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string SelectedText
{
get { return cbCulture.SelectedText; }
set { cbCulture.SelectedText = value; }
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public object SelectedValue
{
get { return cbCulture.SelectedValue; }
set { cbCulture.SelectedValue = value; }
}
public LanguagePackComboBox()
{
InitializeComponent();
cbCulture.Enabled = false;
Task.Run(() => {
// Find available language assemblies and bind the list to the combo box.
cbCulture.DataSource = CreateLanguageAssembliesBindingSource();
cbCulture.SelectedValue = Thread.CurrentThread.CurrentUICulture.Name;
// This must be set here instead of Designer or event would fire at initial selected value setting above.
cbCulture.SelectedIndexChanged += new EventHandler(CbCulture_SelectedIndexChanged);
cbCulture.SelectedValueChanged += new EventHandler(CbCulture_SelectedValueChanged);
cbCulture.Enabled = true;
LanguageListInitialized.SetResult(true);
});
}
private BindingSource CreateLanguageAssembliesBindingSource()
{
// Find the location where application installed.
string exeLocation = Path.GetDirectoryName(Uri.UnescapeDataString(new UriBuilder(Assembly.GetExecutingAssembly().CodeBase).Path));
List<string> lookupPaths = ProbingPath.Split(';')
.Select(path => Path.Combine(exeLocation, path))
.Where(path => path != exeLocation)
.ToList();
lookupPaths.Insert(0, exeLocation);
// Get all culture for which satellite folder found with culture code, then insert invariant culture at the beginning.
List<KeyValuePair<string, string>> cultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(c => IsLanguageAssemblyAvailable(lookupPaths, c))
.Select(c => new KeyValuePair<string, string>(c.Name, c.NativeName))
.ToList();
cultures.Insert(0, new KeyValuePair<string, string>("", InvariantCultureText));
return new BindingSource(cultures, null);
}
private bool IsLanguageAssemblyAvailable(List<string> lookupPaths, CultureInfo culture)
{
return lookupPaths.Select(path => Path.Combine(path, culture.Name, LanguageAssemblyName))
.Where(path => File.Exists(path))
.Count() > 0;
}
private async Task InvariantCultureText_Changed(string value)
{
// Normally the completion flag will be long set by the time this method is called.
await LanguageListInitialized.Task;
BindingSource dataSource = ((BindingSource)cbCulture.DataSource);
dataSource[0] = new KeyValuePair<string, string>("", value);
}
private void LanguagePackComboBox_SizeChanged(object sender, EventArgs e)
{
cbCulture.Left = label1.Margin.Left + label1.Width + label1.Margin.Right;
cbCulture.Width = Width - cbCulture.Left - cbCulture.Margin.Right - cbCulture.Margin.Left;
}
private void CbCulture_SelectedIndexChanged(object sender, EventArgs e)
{
SelectedIndexChanged?.Invoke(this, e);
}
private void CbCulture_SelectedValueChanged(object sender, EventArgs e)
{
SelectedValueChanged?.Invoke(this, e);
}
}
}

View File

@ -117,4 +117,79 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cbCulture.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cbCulture.Location" type="System.Drawing.Point, System.Drawing">
<value>112, 3</value>
</data>
<data name="cbCulture.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 21</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cbCulture.TabIndex" type="System.Int32, mscorlib">
<value>61</value>
</data>
<data name="&gt;&gt;cbCulture.Name" xml:space="preserve">
<value>cbCulture</value>
</data>
<data name="&gt;&gt;cbCulture.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cbCulture.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cbCulture.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 6</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 13</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>62</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Use language pack</value>
</data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 27</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LanguagePackComboBox</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root> </root>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -185,7 +185,7 @@
<value>158, 21</value> <value>158, 21</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Text" xml:space="preserve"> <data name="cBTouchpadJitterCompensation.Text" xml:space="preserve">
<value>Compensación Jitter</value> <value>Compensación de nervios</value>
</data> </data>
<data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing">
<value>257, 56</value> <value>257, 56</value>
@ -386,7 +386,7 @@
<value>202, 21</value> <value>202, 21</value>
</data> </data>
<data name="cBLaunchProgram.Text" xml:space="preserve"> <data name="cBLaunchProgram.Text" xml:space="preserve">
<value>Lanzar Programa con perfil</value> <value>Abrir Programa con el perfil</value>
</data> </data>
<data name="btnBrowse.Text" xml:space="preserve"> <data name="btnBrowse.Text" xml:space="preserve">
<value>Explorar...</value> <value>Explorar...</value>
@ -395,7 +395,7 @@
<value>129, 17</value> <value>129, 17</value>
</data> </data>
<data name="lbUseController.Text" xml:space="preserve"> <data name="lbUseController.Text" xml:space="preserve">
<value>Utilizar Controlador</value> <value>Utilizar Control</value>
</data> </data>
<data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing">
<value>227, 11</value> <value>227, 11</value>
@ -413,7 +413,7 @@
<value>164, 21</value> <value>164, 21</value>
</data> </data>
<data name="cBControllerInput.Text" xml:space="preserve"> <data name="cBControllerInput.Text" xml:space="preserve">
<value>para Mapeo y lectura</value> <value>para asignación y lectura</value>
</data> </data>
<data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing">
<value>173, 21</value> <value>173, 21</value>
@ -461,7 +461,7 @@
<value>Barra de luz</value> <value>Barra de luz</value>
</data> </data>
<data name="btnRumbleLightTest.Text" xml:space="preserve"> <data name="btnRumbleLightTest.Text" xml:space="preserve">
<value>Prueba Ligera</value> <value>Prueba Rapida</value>
</data> </data>
<data name="gBRumble.Text" xml:space="preserve"> <data name="gBRumble.Text" xml:space="preserve">
<value>Vibración</value> <value>Vibración</value>
@ -497,7 +497,7 @@
<value>212, 156</value> <value>212, 156</value>
</data> </data>
<data name="tPController.Text" xml:space="preserve"> <data name="tPController.Text" xml:space="preserve">
<value>Lecturas del Controlador</value> <value>Lecturas del Control</value>
</data> </data>
<data name="cBShiftControl.Items" xml:space="preserve"> <data name="cBShiftControl.Items" xml:space="preserve">
<value>(nada)/Shift desactivado</value> <value>(nada)/Shift desactivado</value>
@ -512,7 +512,7 @@
<value>164, 17</value> <value>164, 17</value>
</data> </data>
<data name="lbtoUse.Text" xml:space="preserve"> <data name="lbtoUse.Text" xml:space="preserve">
<value>para usar estos contoles</value> <value>para usar estos controles</value>
</data> </data>
<data name="tPShiftMod.Text" xml:space="preserve"> <data name="tPShiftMod.Text" xml:space="preserve">
<value>Modificador de Shift</value> <value>Modificador de Shift</value>
@ -563,10 +563,10 @@
<value>Dpad</value> <value>Dpad</value>
</data> </data>
<data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>Un dedo en el Touchpad</value> <value>Un dedo en el panel táctil</value>
</data> </data>
<data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>Dos dedos en el Touchpad</value> <value>Dos dedos en el panel táctil</value>
</data> </data>
<data name="gBSensitivity,Text" xml:space="preserve"> <data name="gBSensitivity,Text" xml:space="preserve">
<value>Sensibilidad</value> <value>Sensibilidad</value>

File diff suppressed because it is too large Load Diff

View File

@ -118,8 +118,11 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lowColorChooserButton.Location" type="System.Drawing.Point, System.Drawing">
<value>80, 9</value>
</data>
<data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 21</value> <value>115, 17</value>
</data> </data>
<data name="cBLightbyBattery.Text" xml:space="preserve"> <data name="cBLightbyBattery.Text" xml:space="preserve">
<value>Цвет от % заряда</value> <value>Цвет от % заряда</value>
@ -128,128 +131,149 @@
<value>С</value> <value>С</value>
</data> </data>
<data name="lbGreen.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value> <value>14, 13</value>
</data> </data>
<data name="lbGreen.Text" xml:space="preserve"> <data name="lbGreen.Text" xml:space="preserve">
<value>З</value> <value>З</value>
</data> </data>
<data name="lbspc.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbspc.Size" type="System.Drawing.Size, System.Drawing">
<value>65, 17</value> <value>54, 13</value>
</data> </data>
<data name="lbspc.Text" xml:space="preserve"> <data name="lbspc.Text" xml:space="preserve">
<value>сек/цикл</value> <value>сек/цикл</value>
</data> </data>
<data name="lbRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbRed.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value> <value>14, 13</value>
</data> </data>
<data name="lbRed.Text" xml:space="preserve"> <data name="lbRed.Text" xml:space="preserve">
<value>К</value> <value>К</value>
</data> </data>
<data name="cBDoubleTap.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 34</value>
</data>
<data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing">
<value>146, 21</value> <value>116, 17</value>
</data> </data>
<data name="cBDoubleTap.Text" xml:space="preserve"> <data name="cBDoubleTap.Text" xml:space="preserve">
<value>Двойное касание</value> <value>Двойное касание</value>
</data> </data>
<data name="cBTap.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 34</value>
</data>
<data name="cBTap.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBTap.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 21</value> <value>69, 17</value>
</data> </data>
<data name="cBTap.Text" xml:space="preserve"> <data name="cBTap.Text" xml:space="preserve">
<value>Касание</value> <value>Касание</value>
</data> </data>
<data name="nUDTap.Location" type="System.Drawing.Point, System.Drawing">
<value>98, 31</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cBScroll.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="cBScroll.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBScroll.Location" type="System.Drawing.Point, System.Drawing">
<value>187, 12</value> <value>143, 3</value>
</data> </data>
<data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing">
<value>100, 21</value> <value>75, 21</value>
</data> </data>
<data name="cBScroll.Text" xml:space="preserve"> <data name="cBScroll.Text" xml:space="preserve">
<value>Прокрутка</value> <value>Прокрутка</value>
</data> </data>
<data name="cBSlide.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="cBSlide.Location" type="System.Drawing.Point, System.Drawing">
<value>2, 3</value>
</data>
<data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 21</value> <value>89, 21</value>
</data> </data>
<data name="cBSlide.Text" xml:space="preserve"> <data name="cBSlide.Text" xml:space="preserve">
<value>Скольжение</value> <value>Скольжение</value>
</data> </data>
<data name="nUDScroll.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDScroll.Location" type="System.Drawing.Point, System.Drawing">
<value>290, 11</value> <value>221, 4</value>
</data> </data>
<data name="nUDTouch.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDTouch.Location" type="System.Drawing.Point, System.Drawing">
<value>121, 10</value> <value>98, 3</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lbButtonMouseSens.AutoSize" type="System.Boolean, mscorlib"> <data name="lbButtonMouseSens.AutoSize" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
</data> </data>
<data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 40</value> <value>139, 20</value>
</data> </data>
<data name="lbButtonMouseSens.Text" xml:space="preserve"> <data name="lbButtonMouseSens.Text" xml:space="preserve">
<value>Чувствительность мыши:</value> <value>Чувствительность мыши:</value>
</data> </data>
<data name="cBlowerRCOn.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="cBlowerRCOn.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBlowerRCOn.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 110</value> <value>7, 82</value>
</data> </data>
<data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing">
<value>309, 21</value> <value>143, 30</value>
</data> </data>
<data name="cBlowerRCOn.Text" xml:space="preserve"> <data name="cBlowerRCOn.Text" xml:space="preserve">
<value>Нижняя правая часть тачпада как ПКМ</value> <value>Нижняя правая часть тачпада как ПКМ</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBTouchpadJitterCompensation.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 83</value> <value>7, 59</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 21</value> <value>148, 17</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Text" xml:space="preserve"> <data name="cBTouchpadJitterCompensation.Text" xml:space="preserve">
<value>Компенсация дрожания</value> <value>Компенсация дрожания</value>
</data> </data>
<data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing">
<value>249, 64</value> <value>219, 59</value>
</data> </data>
<data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 17</value> <value>37, 13</value>
</data> </data>
<data name="lbIdleMinutes.Text" xml:space="preserve"> <data name="lbIdleMinutes.Text" xml:space="preserve">
<value>минут</value> <value>минут</value>
</data> </data>
<data name="nUDIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing">
<value>180, 62</value> <value>161, 57</value>
</data> </data>
<data name="cBFlushHIDQueue.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBFlushHIDQueue.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 208</value> <value>14, 209</value>
</data> </data>
<data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 21</value> <value>137, 17</value>
</data> </data>
<data name="cBFlushHIDQueue.Text" xml:space="preserve"> <data name="cBFlushHIDQueue.Text" xml:space="preserve">
<value>Очищать очереди HID</value> <value>Очищать очереди HID</value>
</data> </data>
<data name="btnRumbleHeavyTest.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnRumbleHeavyTest.Location" type="System.Drawing.Point, System.Drawing">
<value>88, 19</value> <value>75, 12</value>
</data> </data>
<data name="btnRumbleHeavyTest.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnRumbleHeavyTest.Size" type="System.Drawing.Size, System.Drawing">
<value>128, 29</value> <value>84, 29</value>
</data> </data>
<data name="btnRumbleHeavyTest.Text" xml:space="preserve"> <data name="btnRumbleHeavyTest.Text" xml:space="preserve">
<value>Тест сильной</value> <value>Тест сильной</value>
</data> </data>
<data name="lbFull.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbFull.Size" type="System.Drawing.Size, System.Drawing">
<value>64, 17</value> <value>61, 13</value>
</data> </data>
<data name="lbFull.Text" xml:space="preserve"> <data name="lbFull.Text" xml:space="preserve">
<value>Заряжена:</value> <value>Заряжена:</value>
</data> </data>
<data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value> <value>14, 13</value>
</data> </data>
<data name="lbLowRed.Text" xml:space="preserve"> <data name="lbLowRed.Text" xml:space="preserve">
<value>К</value> <value>К</value>
</data> </data>
<data name="lbLowGreen.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>17, 17</value> <value>14, 13</value>
</data> </data>
<data name="lbLowGreen.Text" xml:space="preserve"> <data name="lbLowGreen.Text" xml:space="preserve">
<value>З</value> <value>З</value>
@ -257,23 +281,56 @@
<data name="lbLowBlue.Text" xml:space="preserve"> <data name="lbLowBlue.Text" xml:space="preserve">
<value>С</value> <value>С</value>
</data> </data>
<data name="lbEmpty.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 13</value>
</data>
<data name="lbEmpty.Text" xml:space="preserve"> <data name="lbEmpty.Text" xml:space="preserve">
<value>Разряжена:</value> <value>Разряжена:</value>
</data> </data>
<data name="numUDMouseSens.Location" type="System.Drawing.Point, System.Drawing"> <data name="numUDMouseSens.Location" type="System.Drawing.Point, System.Drawing">
<value>120, 26</value> <value>158, 17</value>
</data>
<data name="touchpadDisInvertButton.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 130</value>
</data>
<data name="label25.Location" type="System.Drawing.Point, System.Drawing">
<value>157, 114</value>
</data>
<data name="label15.Location" type="System.Drawing.Point, System.Drawing">
<value>156, 70</value>
</data>
<data name="touchpadInvertComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 88</value>
</data>
<data name="cbStartTouchpadOff.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="cbStartTouchpadOff.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 112</value>
</data>
<data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing">
<value>142, 44</value>
</data>
<data name="cbStartTouchpadOff.Text" xml:space="preserve">
<value>Выключить скольжение и прокрутку тачпада</value>
</data>
<data name="pnlTPMouse.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 43</value>
</data>
<data name="pnlTPMouse.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 169</value>
</data> </data>
<data name="rBTPControls.Location" type="System.Drawing.Point, System.Drawing"> <data name="rBTPControls.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 46</value> <value>151, 18</value>
</data> </data>
<data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>210, 6</value> <value>175, 6</value>
</data> </data>
<data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="defaultToolStripMenuItem.Text" xml:space="preserve"> <data name="defaultToolStripMenuItem.Text" xml:space="preserve">
<value>По умолчанию</value> <value>По умолчанию</value>
@ -288,7 +345,7 @@
<value>Инверт. Y</value> <value>Инверт. Y</value>
</data> </data>
<data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="DpadToolStripMenuItem.Text" xml:space="preserve"> <data name="DpadToolStripMenuItem.Text" xml:space="preserve">
<value>Крестовина</value> <value>Крестовина</value>
@ -303,7 +360,7 @@
<value>Инверт. Y</value> <value>Инверт. Y</value>
</data> </data>
<data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="LSToolStripMenuItem.Text" xml:space="preserve"> <data name="LSToolStripMenuItem.Text" xml:space="preserve">
<value>Левый стик</value> <value>Левый стик</value>
@ -318,37 +375,37 @@
<value>Инверт. Y</value> <value>Инверт. Y</value>
</data> </data>
<data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="RSToolStripMenuItem.Text" xml:space="preserve"> <data name="RSToolStripMenuItem.Text" xml:space="preserve">
<value>Правый стик</value> <value>Правый стик</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Text" xml:space="preserve"> <data name="ABXYToolStripMenuItem.Text" xml:space="preserve">
<value>Лицевые кнопки</value> <value>Лицевые кнопки</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 26</value> <value>142, 22</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve">
<value>w/ Скан-код</value> <value>w/ Скан-код</value>
</data> </data>
<data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="WASDToolStripMenuItem.Text" xml:space="preserve"> <data name="WASDToolStripMenuItem.Text" xml:space="preserve">
<value>Управление WASD</value> <value>Управление WASD</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>168, 26</value> <value>142, 22</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>w/ Скан-код</value> <value>w/ Скан-код</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>Клавиши со стрелками</value> <value>Клавиши со стрелками</value>
@ -363,34 +420,40 @@
<value>Инверт. Y</value> <value>Инверт. Y</value>
</data> </data>
<data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 26</value> <value>178, 22</value>
</data> </data>
<data name="MouseToolStripMenuItem.Text" xml:space="preserve"> <data name="MouseToolStripMenuItem.Text" xml:space="preserve">
<value>Мышь</value> <value>Мышь</value>
</data> </data>
<data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing">
<value>214, 244</value> <value>179, 208</value>
</data> </data>
<data name="cbStartTouchpadOff.Location" type="System.Drawing.Point, System.Drawing"> <data name="fLPTouchSwipe.Size" type="System.Drawing.Size, System.Drawing">
<value>9, 137</value> <value>260, 170</value>
</data> </data>
<data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing"> <data name="gBTouchpad.Location" type="System.Drawing.Point, System.Drawing">
<value>328, 21</value> <value>2, 251</value>
</data>
<data name="cbStartTouchpadOff.Text" xml:space="preserve">
<value>Выключить скольжение и прокрутку тачпада</value>
</data> </data>
<data name="gBTouchpad.Size" type="System.Drawing.Size, System.Drawing"> <data name="gBTouchpad.Size" type="System.Drawing.Size, System.Drawing">
<value>337, 236</value> <value>270, 201</value>
</data> </data>
<data name="gBTouchpad.Text" xml:space="preserve"> <data name="gBTouchpad.Text" xml:space="preserve">
<value>Тачпад</value> <value>Тачпад</value>
</data> </data>
<data name="btPollRateLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 233</value>
</data>
<data name="btPollRateComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>86, 230</value>
</data>
<data name="enableTouchToggleCheckbox.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 186</value>
</data>
<data name="cBDinput.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBDinput.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 181</value> <value>13, 164</value>
</data> </data>
<data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 21</value> <value>172, 17</value>
</data> </data>
<data name="cBDinput.Text" xml:space="preserve"> <data name="cBDinput.Text" xml:space="preserve">
<value>Использовать только DInput</value> <value>Использовать только DInput</value>
@ -399,53 +462,56 @@
<value>287, 144</value> <value>287, 144</value>
</data> </data>
<data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 140</value> <value>8, 131</value>
</data> </data>
<data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 38</value> <value>141, 30</value>
</data> </data>
<data name="cBLaunchProgram.Text" xml:space="preserve"> <data name="cBLaunchProgram.Text" xml:space="preserve">
<value>Запускать программу <value>Запускать программу
с профилем</value> с профилем</value>
</data> </data>
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
<value>193, 144</value> <value>158, 134</value>
</data> </data>
<data name="btnBrowse.Text" xml:space="preserve"> <data name="btnBrowse.Text" xml:space="preserve">
<value>Обзор...</value> <value>Обзор...</value>
</data> </data>
<data name="lbUseController.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 87</value>
</data>
<data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing">
<value>182, 17</value> <value>142, 13</value>
</data> </data>
<data name="lbUseController.Text" xml:space="preserve"> <data name="lbUseController.Text" xml:space="preserve">
<value>Использовать контроллер</value> <value>Использовать контроллер</value>
</data> </data>
<data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing">
<value>189, 26</value> <value>13, 39</value>
</data> </data>
<data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing">
<value>143, 21</value> <value>115, 17</value>
</data> </data>
<data name="cBMouseAccel.Text" xml:space="preserve"> <data name="cBMouseAccel.Text" xml:space="preserve">
<value>Ускорение мыши</value> <value>Ускорение мыши</value>
</data> </data>
<data name="nUDSixaxis.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDSixaxis.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 92</value> <value>164, 85</value>
</data> </data>
<data name="cBControllerInput.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBControllerInput.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 115</value> <value>8, 111</value>
</data> </data>
<data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing">
<value>294, 21</value> <value>234, 17</value>
</data> </data>
<data name="cBControllerInput.Text" xml:space="preserve"> <data name="cBControllerInput.Text" xml:space="preserve">
<value>для назначения клавиш и вывода текста</value> <value>для назначения клавиш и вывода текста</value>
</data> </data>
<data name="cBIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 63</value> <value>8, 60</value>
</data> </data>
<data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 21</value> <value>140, 17</value>
</data> </data>
<data name="cBIdleDisconnect.Text" xml:space="preserve"> <data name="cBIdleDisconnect.Text" xml:space="preserve">
<value>Таймаут бездействия:</value> <value>Таймаут бездействия:</value>
@ -453,6 +519,9 @@
<data name="gBOther.Text" xml:space="preserve"> <data name="gBOther.Text" xml:space="preserve">
<value>Другое</value> <value>Другое</value>
</data> </data>
<data name="nUDRainbowB.Location" type="System.Drawing.Point, System.Drawing">
<value>151, 215</value>
</data>
<data name="cBFlashType.Items" xml:space="preserve"> <data name="cBFlashType.Items" xml:space="preserve">
<value>Мигать при</value> <value>Мигать при</value>
</data> </data>
@ -472,13 +541,13 @@
<value>цвет</value> <value>цвет</value>
</data> </data>
<data name="cBWhileCharging.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBWhileCharging.Location" type="System.Drawing.Point, System.Drawing">
<value>142, 206</value> <value>122, 166</value>
</data> </data>
<data name="btnChargingColor.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnChargingColor.Location" type="System.Drawing.Point, System.Drawing">
<value>300, 209</value> <value>300, 209</value>
</data> </data>
<data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 17</value> <value>111, 13</value>
</data> </data>
<data name="lbWhileCharging.Text" xml:space="preserve"> <data name="lbWhileCharging.Text" xml:space="preserve">
<value>Индикация зарядки:</value> <value>Индикация зарядки:</value>
@ -487,10 +556,10 @@
<value>Световая панель</value> <value>Световая панель</value>
</data> </data>
<data name="btnRumbleLightTest.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnRumbleLightTest.Location" type="System.Drawing.Point, System.Drawing">
<value>224, 19</value> <value>165, 12</value>
</data> </data>
<data name="btnRumbleLightTest.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnRumbleLightTest.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 29</value> <value>91, 30</value>
</data> </data>
<data name="btnRumbleLightTest.Text" xml:space="preserve"> <data name="btnRumbleLightTest.Text" xml:space="preserve">
<value>Тест слабой</value> <value>Тест слабой</value>
@ -502,7 +571,7 @@
<value>Правый стик</value> <value>Правый стик</value>
</data> </data>
<data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>148, 17</value> <value>119, 13</value>
</data> </data>
<data name="lbInputDelay.Text" xml:space="preserve"> <data name="lbInputDelay.Text" xml:space="preserve">
<value>Задержка ввода: Н/Д</value> <value>Задержка ввода: Н/Д</value>
@ -514,19 +583,34 @@
<value>Гироскоп: ось X инвертирована для простоты считывания</value> <value>Гироскоп: ось X инвертирована для простоты считывания</value>
</data> </data>
<data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing">
<value>47, 17</value> <value>81, 13</value>
</data> </data>
<data name="lb6Accel.Text" xml:space="preserve"> <data name="lb6Accel.Text" xml:space="preserve">
<value>Акселерометр</value> <value>Акселерометр</value>
</data> </data>
<data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing">
<value>40, 17</value> <value>55, 13</value>
</data> </data>
<data name="lb6Gryo.Text" xml:space="preserve"> <data name="lb6Gryo.Text" xml:space="preserve">
<value>Гироскоп</value> <value>Гироскоп</value>
</data> </data>
<data name="fLPTiltControls.Location" type="System.Drawing.Point, System.Drawing"> <data name="fLPTiltControls.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 103</value> <value>0, 55</value>
</data>
<data name="fLPTiltControls.Size" type="System.Drawing.Size, System.Drawing">
<value>271, 128</value>
</data>
<data name="lBControls.Location" type="System.Drawing.Point, System.Drawing">
<value>275, 237</value>
</data>
<data name="lBControls.Size" type="System.Drawing.Size, System.Drawing">
<value>157, 199</value>
</data>
<data name="lbControlTip.Location" type="System.Drawing.Point, System.Drawing">
<value>41, 238</value>
</data>
<data name="lbControlTip.Size" type="System.Drawing.Size, System.Drawing">
<value>182, 14</value>
</data> </data>
<data name="lbControlTip.Text" xml:space="preserve"> <data name="lbControlTip.Text" xml:space="preserve">
<value>Нажмите на кнопку для назначения действия <value>Нажмите на кнопку для назначения действия
@ -565,133 +649,157 @@
<data name="tPCurve.Text" xml:space="preserve"> <data name="tPCurve.Text" xml:space="preserve">
<value>Кривые</value> <value>Кривые</value>
</data> </data>
<data name="rBSAControls.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="rBSAControls.Location" type="System.Drawing.Point, System.Drawing"> <data name="rBSAControls.Location" type="System.Drawing.Point, System.Drawing">
<value>14, 48</value> <value>140, 20</value>
</data> </data>
<data name="rBSAControls.Size" type="System.Drawing.Size, System.Drawing"> <data name="rBSAControls.Size" type="System.Drawing.Size, System.Drawing">
<value>231, 21</value> <value>120, 30</value>
</data> </data>
<data name="rBSAControls.Text" xml:space="preserve"> <data name="rBSAControls.Text" xml:space="preserve">
<value>Использовать для управления</value> <value>Использовать для управления</value>
</data> </data>
<data name="rBSAMouse.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="rBSAMouse.Location" type="System.Drawing.Point, System.Drawing"> <data name="rBSAMouse.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 20</value> <value>16, 20</value>
</data> </data>
<data name="rBSAMouse.Size" type="System.Drawing.Size, System.Drawing"> <data name="rBSAMouse.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 21</value> <value>120, 30</value>
</data> </data>
<data name="rBSAMouse.Text" xml:space="preserve"> <data name="rBSAMouse.Text" xml:space="preserve">
<value>Использовать как мышь</value> <value>Использовать как мышь</value>
</data> </data>
<data name="cBGyroMouseXAxis.Location" type="System.Drawing.Point, System.Drawing">
<value>172, 93</value>
</data>
<data name="lbGyroSmooth.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 141</value>
</data>
<data name="cBGyroSmooth.Location" type="System.Drawing.Point, System.Drawing">
<value>75, 141</value>
</data>
<data name="lbSmoothWeight.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 142</value>
</data>
<data name="nUDGyroSmoothWeight.Location" type="System.Drawing.Point, System.Drawing">
<value>191, 134</value>
</data>
<data name="cBGyroInvertY.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBGyroInvertY.Location" type="System.Drawing.Point, System.Drawing">
<value>191, 95</value> <value>146, 120</value>
</data> </data>
<data name="cBGyroInvertX.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBGyroInvertX.Location" type="System.Drawing.Point, System.Drawing">
<value>137, 95</value> <value>102, 120</value>
</data> </data>
<data name="lbGyroInvert.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroInvert.Size" type="System.Drawing.Size, System.Drawing">
<value>115, 17</value> <value>88, 13</value>
</data> </data>
<data name="lbGyroInvert.Text" xml:space="preserve"> <data name="lbGyroInvert.Text" xml:space="preserve">
<value>Инвертировать:</value> <value>Инвертировать:</value>
</data> </data>
<data name="lbGyroTriggers.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroTriggers.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 17</value> <value>51, 13</value>
</data> </data>
<data name="lbGyroTriggers.Text" xml:space="preserve"> <data name="lbGyroTriggers.Text" xml:space="preserve">
<value>Триггер:</value> <value>Триггер:</value>
</data> </data>
<data name="nUDGyroSensitivity.Location" type="System.Drawing.Point, System.Drawing">
<value>101, 67</value>
</data>
<data name="lbGyroSens.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="lbGyroSens.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 61</value>
</data>
<data name="lbGyroSens.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroSens.Size" type="System.Drawing.Size, System.Drawing">
<value>196, 17</value> <value>88, 30</value>
</data> </data>
<data name="lbGyroSens.Text" xml:space="preserve"> <data name="lbGyroSens.Text" xml:space="preserve">
<value>Чувствительность гироскопа:</value> <value>Чувствительность гироскопа:</value>
</data> </data>
<data name="pnlSAMouse.Location" type="System.Drawing.Point, System.Drawing"> <data name="pnlSAMouse.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 93</value> <value>-2, 51</value>
</data>
<data name="pnlSAMouse.Size" type="System.Drawing.Size, System.Drawing">
<value>269, 168</value>
</data> </data>
<data name="gBGyro.Size" type="System.Drawing.Size, System.Drawing"> <data name="gBGyro.Size" type="System.Drawing.Size, System.Drawing">
<value>340, 259</value> <value>272, 208</value>
</data> </data>
<data name="crossToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="crossToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="circleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="circleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="squareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="squareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="triangleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="triangleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="l1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="l2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="r1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="r2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="onTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="onTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="downToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="downToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="leftToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="leftToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="rightToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="rightToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="l3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="r3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="fingerOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="fingerOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>Палец на тачпаде</value> <value>Палец на тачпаде</value>
</data> </data>
<data name="fingersOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="fingersOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>Два пальца на тачпаде</value> <value>Два пальца на тачпаде</value>
</data> </data>
<data name="optionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="optionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="shareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="shareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="pSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="pSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="alwaysOnToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="alwaysOnToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 26</value> <value>198, 22</value>
</data> </data>
<data name="alwaysOnToolStripMenuItem.Text" xml:space="preserve"> <data name="alwaysOnToolStripMenuItem.Text" xml:space="preserve">
<value>Всегда включен</value> <value>Всегда включен</value>
</data> </data>
<data name="cMGyroTriggers.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMGyroTriggers.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 524</value> <value>199, 444</value>
</data>
<data name="gBSensitivity,Text" xml:space="preserve">
<value>Чувствительность</value>
</data>
<data name="resetToolStripMenuItem.Text" xml:space="preserve">
<value>Сброс</value>
</data>
<data name="tPController.Text" xml:space="preserve">
<value>Считывание контроллера</value>
</data> </data>
</root> </root>

View File

@ -119,82 +119,106 @@
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 21</value> <value>146, 17</value>
</data> </data>
<data name="cBLightbyBattery.Text" xml:space="preserve"> <data name="cBLightbyBattery.Text" xml:space="preserve">
<value>颜色随电量百分比变化</value> <value>颜色随电量百分比变化</value>
</data> </data>
<data name="lbBlue.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 77</value>
</data>
<data name="lbBlue.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbBlue.Text" xml:space="preserve"> <data name="lbBlue.Text" xml:space="preserve">
<value>蓝</value> <value>蓝</value>
</data> </data>
<data name="lbGreen.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 55</value>
</data>
<data name="lbGreen.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbGreen.Text" xml:space="preserve"> <data name="lbGreen.Text" xml:space="preserve">
<value>绿</value> <value>绿</value>
</data> </data>
<data name="lbspc.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbspc.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value> <value>48, 13</value>
</data> </data>
<data name="lbspc.Text" xml:space="preserve"> <data name="lbspc.Text" xml:space="preserve">
<value>秒/循環</value> <value>秒/循環</value>
</data> </data>
<data name="lbRed.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 29</value>
</data>
<data name="lbRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbRed.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbRed.Text" xml:space="preserve"> <data name="lbRed.Text" xml:space="preserve">
<value>红</value> <value>红</value>
</data> </data>
<data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBDoubleTap.Text" xml:space="preserve"> <data name="cBDoubleTap.Text" xml:space="preserve">
<value>双击</value> <value>双击</value>
</data> </data>
<data name="cBTap.Size" type="System.Drawing.Size, System.Drawing">
<value>50, 17</value>
</data>
<data name="cBTap.Text" xml:space="preserve"> <data name="cBTap.Text" xml:space="preserve">
<value>轻触</value> <value>轻触</value>
</data> </data>
<data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 21</value> <value>47, 17</value>
</data> </data>
<data name="cBScroll.Text" xml:space="preserve"> <data name="cBScroll.Text" xml:space="preserve">
<value>滚动</value> <value>滚动</value>
</data> </data>
<data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBSlide.Text" xml:space="preserve"> <data name="cBSlide.Text" xml:space="preserve">
<value>滑动</value> <value>滑动</value>
</data> </data>
<data name="lbButtonMouseSens.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 17</value>
</data>
<data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 17</value> <value>67, 13</value>
</data> </data>
<data name="lbButtonMouseSens.Text" xml:space="preserve"> <data name="lbButtonMouseSens.Text" xml:space="preserve">
<value>鼠标灵敏度</value> <value>鼠标灵敏度</value>
</data> </data>
<data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBlowerRCOn.Text" xml:space="preserve"> <data name="cBlowerRCOn.Text" xml:space="preserve">
<value>右下角設為右鍵</value> <value>右下角設為右鍵</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value> <value>74, 17</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Text" xml:space="preserve"> <data name="cBTouchpadJitterCompensation.Text" xml:space="preserve">
<value>抖動補償</value> <value>抖動補償</value>
</data> </data>
<data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 65</value>
</data>
<data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbIdleMinutes.Text" xml:space="preserve"> <data name="lbIdleMinutes.Text" xml:space="preserve">
<value>分</value> <value>分</value>
</data> </data>
<data name="nUDIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 62</value>
</data>
<data name="cBFlushHIDQueue.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 172</value>
</data>
<data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 21</value> <value>69, 17</value>
</data> </data>
<data name="cBFlushHIDQueue.Text" xml:space="preserve"> <data name="cBFlushHIDQueue.Text" xml:space="preserve">
<value>清空HID</value> <value>清空HID</value>
@ -203,233 +227,269 @@
<value>测试震动</value> <value>测试震动</value>
</data> </data>
<data name="lbFull.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbFull.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value> <value>37, 13</value>
</data> </data>
<data name="lbFull.Text" xml:space="preserve"> <data name="lbFull.Text" xml:space="preserve">
<value>滿電:</value> <value>滿電:</value>
</data> </data>
<data name="lbLowRed.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 30</value>
</data>
<data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbLowRed.Text" xml:space="preserve"> <data name="lbLowRed.Text" xml:space="preserve">
<value>红</value> <value>红</value>
</data> </data>
<data name="lbLowGreen.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 56</value>
</data>
<data name="lbLowGreen.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbLowGreen.Text" xml:space="preserve"> <data name="lbLowGreen.Text" xml:space="preserve">
<value>绿</value> <value>绿</value>
</data> </data>
<data name="lbLowBlue.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 78</value>
</data>
<data name="lbLowBlue.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbLowBlue.Text" xml:space="preserve"> <data name="lbLowBlue.Text" xml:space="preserve">
<value>蓝</value> <value>蓝</value>
</data> </data>
<data name="lbEmpty.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbEmpty.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value> <value>25, 13</value>
</data> </data>
<data name="lbEmpty.Text" xml:space="preserve"> <data name="lbEmpty.Text" xml:space="preserve">
<value>空:</value> <value>空:</value>
</data> </data>
<data name="numUDMouseSens.Location" type="System.Drawing.Point, System.Drawing">
<value>85, 15</value>
</data>
<data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing"> <data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 21</value> <value>139, 17</value>
</data> </data>
<data name="cbStartTouchpadOff.Text" xml:space="preserve"> <data name="cbStartTouchpadOff.Text" xml:space="preserve">
<value>開啟時滑動/捲動關閉</value> <value>開啟時滑動/捲動關閉</value>
</data> </data>
<data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 6</value> <value>111, 6</value>
</data> </data>
<data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="defaultToolStripMenuItem.Text" xml:space="preserve"> <data name="defaultToolStripMenuItem.Text" xml:space="preserve">
<value>默认</value> <value>默认</value>
</data> </data>
<data name="tSMIDPadInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIDPadInverted.Text" xml:space="preserve"> <data name="tSMIDPadInverted.Text" xml:space="preserve">
<value>反转</value> <value>反转</value>
</data> </data>
<data name="tSMIDPadInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIDPadInvertedX.Text" xml:space="preserve"> <data name="tSMIDPadInvertedX.Text" xml:space="preserve">
<value>反转X轴</value> <value>反转X轴</value>
</data> </data>
<data name="tSMIDPadInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIDPadInvertedY.Text" xml:space="preserve"> <data name="tSMIDPadInvertedY.Text" xml:space="preserve">
<value>反转Y轴</value> <value>反转Y轴</value>
</data> </data>
<data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="DpadToolStripMenuItem.Text" xml:space="preserve"> <data name="DpadToolStripMenuItem.Text" xml:space="preserve">
<value>十字键</value> <value>十字键</value>
</data> </data>
<data name="tSMILSInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMILSInverted.Text" xml:space="preserve"> <data name="tSMILSInverted.Text" xml:space="preserve">
<value>反转</value> <value>反转</value>
</data> </data>
<data name="tSMILSInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMILSInvertedX.Text" xml:space="preserve"> <data name="tSMILSInvertedX.Text" xml:space="preserve">
<value>反转X轴</value> <value>反转X轴</value>
</data> </data>
<data name="tSMILSInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMILSInvertedY.Text" xml:space="preserve"> <data name="tSMILSInvertedY.Text" xml:space="preserve">
<value>反转Y轴</value> <value>反转Y轴</value>
</data> </data>
<data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="LSToolStripMenuItem.Text" xml:space="preserve"> <data name="LSToolStripMenuItem.Text" xml:space="preserve">
<value>左摇杆</value> <value>左摇杆</value>
</data> </data>
<data name="tSMIRSInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIRSInverted.Text" xml:space="preserve"> <data name="tSMIRSInverted.Text" xml:space="preserve">
<value>反转</value> <value>反转</value>
</data> </data>
<data name="tSMIRSInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIRSInvertedX.Text" xml:space="preserve"> <data name="tSMIRSInvertedX.Text" xml:space="preserve">
<value>反转X轴</value> <value>反转X轴</value>
</data> </data>
<data name="tSMIRSInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIRSInvertedY.Text" xml:space="preserve"> <data name="tSMIRSInvertedY.Text" xml:space="preserve">
<value>反转Y轴</value> <value>反转Y轴</value>
</data> </data>
<data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="RSToolStripMenuItem.Text" xml:space="preserve"> <data name="RSToolStripMenuItem.Text" xml:space="preserve">
<value>右摇杆</value> <value>右摇杆</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Text" xml:space="preserve"> <data name="ABXYToolStripMenuItem.Text" xml:space="preserve">
<value>右侧动作键</value> <value>右侧动作键</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 26</value> <value>139, 22</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve">
<value>用掃描代碼</value> <value>用掃描代碼</value>
</data> </data>
<data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 26</value> <value>139, 22</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>用掃描代碼</value> <value>用掃描代碼</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>方向键</value> <value>方向键</value>
</data> </data>
<data name="tSMIMouseInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIMouseInverted.Text" xml:space="preserve"> <data name="tSMIMouseInverted.Text" xml:space="preserve">
<value>反转</value> <value>反转</value>
</data> </data>
<data name="tSMIMouseInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIMouseInvertedX.Text" xml:space="preserve"> <data name="tSMIMouseInvertedX.Text" xml:space="preserve">
<value>反转X轴</value> <value>反转X轴</value>
</data> </data>
<data name="tSMIMouseInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>141, 26</value> <value>120, 22</value>
</data> </data>
<data name="tSMIMouseInvertedY.Text" xml:space="preserve"> <data name="tSMIMouseInvertedY.Text" xml:space="preserve">
<value>反转Y轴</value> <value>反转Y轴</value>
</data> </data>
<data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 26</value> <value>114, 22</value>
</data> </data>
<data name="MouseToolStripMenuItem.Text" xml:space="preserve"> <data name="MouseToolStripMenuItem.Text" xml:space="preserve">
<value>鼠标</value> <value>鼠标</value>
</data> </data>
<data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing">
<value>134, 244</value> <value>115, 208</value>
</data> </data>
<data name="gBTouchpad.Text" xml:space="preserve"> <data name="gBTouchpad.Text" xml:space="preserve">
<value>触摸板</value> <value>触摸板</value>
</data> </data>
<data name="btPollRateLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>11, 222</value>
</data>
<data name="btPollRateComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>84, 219</value>
</data>
<data name="enableTouchToggleCheckbox.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 196</value>
</data>
<data name="cBDinput.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 149</value>
</data>
<data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 21</value> <value>96, 17</value>
</data> </data>
<data name="cBDinput.Text" xml:space="preserve"> <data name="cBDinput.Text" xml:space="preserve">
<value>只使用 Dinput</value> <value>只使用 Dinput</value>
</data> </data>
<data name="pBProgram.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBProgram.Location" type="System.Drawing.Point, System.Drawing">
<value>236, 133</value> <value>233, 119</value>
</data> </data>
<data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 140</value> <value>9, 121</value>
</data> </data>
<data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 21</value> <value>134, 17</value>
</data> </data>
<data name="cBLaunchProgram.Text" xml:space="preserve"> <data name="cBLaunchProgram.Text" xml:space="preserve">
<value>运行程式与配置文件</value> <value>运行程式与配置文件</value>
</data> </data>
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 135</value> <value>149, 119</value>
</data> </data>
<data name="btnBrowse.Text" xml:space="preserve"> <data name="btnBrowse.Text" xml:space="preserve">
<value>浏览...</value> <value>浏览...</value>
</data> </data>
<data name="lbUseController.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 95</value>
</data>
<data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value> <value>67, 13</value>
</data> </data>
<data name="lbUseController.Text" xml:space="preserve"> <data name="lbUseController.Text" xml:space="preserve">
<value>使用控制器</value> <value>使用控制器</value>
</data> </data>
<data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing">
<value>205, 21</value> <value>9, 40</value>
</data> </data>
<data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 21</value> <value>74, 17</value>
</data> </data>
<data name="cBMouseAccel.Text" xml:space="preserve"> <data name="cBMouseAccel.Text" xml:space="preserve">
<value>鼠标加速</value> <value>鼠标加速</value>
</data> </data>
<data name="nUDSixaxis.Location" type="System.Drawing.Point, System.Drawing">
<value>77, 94</value>
</data>
<data name="cBControllerInput.Location" type="System.Drawing.Point, System.Drawing">
<value>115, 96</value>
</data>
<data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBControllerInput.Text" xml:space="preserve"> <data name="cBControllerInput.Text" xml:space="preserve">
<value>用於映射和讀出</value> <value>用於映射和讀出</value>
</data> </data>
<data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing">
<value>116, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBIdleDisconnect.Text" xml:space="preserve"> <data name="cBIdleDisconnect.Text" xml:space="preserve">
<value>空闲时断开连接</value> <value>空闲时断开连接</value>
</data> </data>
<data name="gBOther.Size" type="System.Drawing.Size, System.Drawing">
<value>267, 250</value>
</data>
<data name="gBOther.Text" xml:space="preserve"> <data name="gBOther.Text" xml:space="preserve">
<value>其他</value> <value>其他</value>
</data> </data>
@ -452,35 +512,11 @@
<value>颜色</value> <value>颜色</value>
</data> </data>
<data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 17</value> <value>49, 13</value>
</data> </data>
<data name="lbWhileCharging.Text" xml:space="preserve"> <data name="lbWhileCharging.Text" xml:space="preserve">
<value>充电时:</value> <value>充电时:</value>
</data> </data>
<data name="cBShiftLight.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 21</value>
</data>
<data name="cBShiftLight.Text" xml:space="preserve">
<value>shift mode 時用另一種顏色</value>
</data>
<data name="lbShiftRed.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="lbShiftRed.Text" xml:space="preserve">
<value>红</value>
</data>
<data name="lbShiftGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="lbShiftGreen.Text" xml:space="preserve">
<value>绿</value>
</data>
<data name="lbShiftBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 17</value>
</data>
<data name="lbShiftBlue.Text" xml:space="preserve">
<value>蓝</value>
</data>
<data name="gBLightbar.Text" xml:space="preserve"> <data name="gBLightbar.Text" xml:space="preserve">
<value>灯条</value> <value>灯条</value>
</data> </data>
@ -494,7 +530,7 @@
<value>右摇杆</value> <value>右摇杆</value>
</data> </data>
<data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>110, 17</value> <value>94, 13</value>
</data> </data>
<data name="lbInputDelay.Text" xml:space="preserve"> <data name="lbInputDelay.Text" xml:space="preserve">
<value>输入延迟N/Ams</value> <value>输入延迟N/Ams</value>
@ -506,32 +542,17 @@
<value>六軸X軸已反轉來方便閱讀</value> <value>六軸X軸已反轉來方便閱讀</value>
</data> </data>
<data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value> <value>31, 13</value>
</data> </data>
<data name="lb6Accel.Text" xml:space="preserve"> <data name="lb6Accel.Text" xml:space="preserve">
<value>加速</value> <value>加速</value>
</data> </data>
<data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing">
<value>44, 17</value> <value>43, 13</value>
</data> </data>
<data name="lb6Gryo.Text" xml:space="preserve"> <data name="lb6Gryo.Text" xml:space="preserve">
<value>陀螺仪</value> <value>陀螺仪</value>
</data> </data>
<data name="lbHold.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="lbHold.Text" xml:space="preserve">
<value>按住</value>
</data>
<data name="lbtoUse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 17</value>
</data>
<data name="lbtoUse.Text" xml:space="preserve">
<value>來使用這些控制</value>
</data>
<data name="cBShiftControl.Items" xml:space="preserve">
<value>(無)/shift 關閉</value>
</data>
<data name="lbControlTip.Text" xml:space="preserve"> <data name="lbControlTip.Text" xml:space="preserve">
<value>點擊光調來開啟顏色選擇器</value> <value>點擊光調來開啟顏色選擇器</value>
</data> </data>

View File

@ -119,91 +119,103 @@
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLightbyBattery.Size" type="System.Drawing.Size, System.Drawing">
<value>119, 21</value> <value>118, 17</value>
</data> </data>
<data name="cBLightbyBattery.Text" xml:space="preserve"> <data name="cBLightbyBattery.Text" xml:space="preserve">
<value>顏色依電量%變化</value> <value>顏色依電量%變化</value>
</data> </data>
<data name="lbBlue.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 77</value>
</data>
<data name="lbBlue.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbBlue.Text" xml:space="preserve"> <data name="lbBlue.Text" xml:space="preserve">
<value>藍</value> <value>藍</value>
</data> </data>
<data name="lbGreen.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 55</value>
</data>
<data name="lbGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 13</value>
</data>
<data name="lbGreen.Text" xml:space="preserve"> <data name="lbGreen.Text" xml:space="preserve">
<value>綠</value> <value>綠</value>
</data> </data>
<data name="lbspc.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbspc.Size" type="System.Drawing.Size, System.Drawing">
<value>45, 17</value> <value>48, 13</value>
</data> </data>
<data name="lbspc.Text" xml:space="preserve"> <data name="lbspc.Text" xml:space="preserve">
<value>秒/循環</value> <value>秒/循環</value>
</data> </data>
<data name="lbRed.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 29</value>
</data>
<data name="lbRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbRed.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbRed.Text" xml:space="preserve"> <data name="lbRed.Text" xml:space="preserve">
<value>紅</value> <value>紅</value>
</data> </data>
<data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDoubleTap.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBDoubleTap.Text" xml:space="preserve"> <data name="cBDoubleTap.Text" xml:space="preserve">
<value>雙擊</value> <value>雙擊</value>
</data> </data>
<data name="cBTap.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBTap.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBTap.Text" xml:space="preserve"> <data name="cBTap.Text" xml:space="preserve">
<value>點擊</value> <value>點擊</value>
</data> </data>
<data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBScroll.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBScroll.Text" xml:space="preserve"> <data name="cBScroll.Text" xml:space="preserve">
<value>捲動</value> <value>捲動</value>
</data> </data>
<data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBSlide.Size" type="System.Drawing.Size, System.Drawing">
<value>52, 21</value> <value>50, 17</value>
</data> </data>
<data name="cBSlide.Text" xml:space="preserve"> <data name="cBSlide.Text" xml:space="preserve">
<value>滑動</value> <value>滑動</value>
</data> </data>
<data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbButtonMouseSens.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value> <value>73, 13</value>
</data> </data>
<data name="lbButtonMouseSens.Text" xml:space="preserve"> <data name="lbButtonMouseSens.Text" xml:space="preserve">
<value>滑鼠靈敏度:</value> <value>滑鼠靈敏度:</value>
</data> </data>
<data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBlowerRCOn.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBlowerRCOn.Text" xml:space="preserve"> <data name="cBlowerRCOn.Text" xml:space="preserve">
<value>右下角設為右鍵</value> <value>右下角設為右鍵</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBTouchpadJitterCompensation.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value> <value>74, 17</value>
</data> </data>
<data name="cBTouchpadJitterCompensation.Text" xml:space="preserve"> <data name="cBTouchpadJitterCompensation.Text" xml:space="preserve">
<value>抖動補償</value> <value>抖動補償</value>
</data> </data>
<data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbIdleMinutes.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 59</value> <value>155, 66</value>
</data> </data>
<data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbIdleMinutes.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value> <value>31, 13</value>
</data> </data>
<data name="lbIdleMinutes.Text" xml:space="preserve"> <data name="lbIdleMinutes.Text" xml:space="preserve">
<value>分鐘</value> <value>分鐘</value>
</data> </data>
<data name="nUDIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing"> <data name="nUDIdleDisconnect.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 55</value> <value>100, 62</value>
</data> </data>
<data name="cBFlushHIDQueue.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBFlushHIDQueue.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 213</value> <value>10, 201</value>
</data> </data>
<data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBFlushHIDQueue.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 21</value> <value>72, 17</value>
</data> </data>
<data name="cBFlushHIDQueue.Text" xml:space="preserve"> <data name="cBFlushHIDQueue.Text" xml:space="preserve">
<value>刷新 HID</value> <value>刷新 HID</value>
@ -212,233 +224,254 @@
<value>測試強震</value> <value>測試強震</value>
</data> </data>
<data name="lbFull.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbFull.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value> <value>37, 13</value>
</data> </data>
<data name="lbFull.Text" xml:space="preserve"> <data name="lbFull.Text" xml:space="preserve">
<value>滿電:</value> <value>滿電:</value>
</data> </data>
<data name="lbLowRed.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 30</value>
</data>
<data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowRed.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbLowRed.Text" xml:space="preserve"> <data name="lbLowRed.Text" xml:space="preserve">
<value>紅</value> <value>紅</value>
</data> </data>
<data name="lbLowGreen.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 51</value>
</data>
<data name="lbLowGreen.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 13</value>
</data>
<data name="lbLowGreen.Text" xml:space="preserve"> <data name="lbLowGreen.Text" xml:space="preserve">
<value>綠</value> <value>綠</value>
</data> </data>
<data name="lbLowBlue.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 74</value>
</data>
<data name="lbLowBlue.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbLowBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value> <value>19, 13</value>
</data> </data>
<data name="lbLowBlue.Text" xml:space="preserve"> <data name="lbLowBlue.Text" xml:space="preserve">
<value>藍</value> <value>藍</value>
</data> </data>
<data name="lbEmpty.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbEmpty.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value> <value>37, 13</value>
</data> </data>
<data name="lbEmpty.Text" xml:space="preserve"> <data name="lbEmpty.Text" xml:space="preserve">
<value>沒電:</value> <value>沒電:</value>
</data> </data>
<data name="numUDMouseSens.Location" type="System.Drawing.Point, System.Drawing"> <data name="numUDMouseSens.Location" type="System.Drawing.Point, System.Drawing">
<value>88, 19</value> <value>84, 17</value>
</data> </data>
<data name="gBTouchpad.Text" xml:space="preserve"> <data name="gBTouchpad.Text" xml:space="preserve">
<value>觸控版</value> <value>觸控版</value>
</data> </data>
<data name="pnlTPMouse.Location" type="System.Drawing.Point, System.Drawing"> <data name="pnlTPMouse.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 60</value> <value>3, 36</value>
</data> </data>
<data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing"> <data name="cbStartTouchpadOff.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 21</value> <value>139, 17</value>
</data> </data>
<data name="cbStartTouchpadOff.Text" xml:space="preserve"> <data name="cbStartTouchpadOff.Text" xml:space="preserve">
<value>開啟時滑動/捲動關閉</value> <value>開啟時滑動/捲動關閉</value>
</data> </data>
<data name="fLPShiftTouchSwipe.Location" type="System.Drawing.Point, System.Drawing"> <data name="fLPTouchSwipe.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 61</value> <value>4, 40</value>
</data>
<data name="fLPTouchSwipe.Size" type="System.Drawing.Size, System.Drawing">
<value>260, 153</value>
</data> </data>
<data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMSPresets.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 244</value> <value>128, 208</value>
</data> </data>
<data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="controlToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing"> <data name="toolStripSeparator1.Size" type="System.Drawing.Size, System.Drawing">
<value>146, 6</value> <value>124, 6</value>
</data> </data>
<data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="defaultToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="defaultToolStripMenuItem.Text" xml:space="preserve"> <data name="defaultToolStripMenuItem.Text" xml:space="preserve">
<value>預設</value> <value>預設</value>
</data> </data>
<data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="DpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="DpadToolStripMenuItem.Text" xml:space="preserve"> <data name="DpadToolStripMenuItem.Text" xml:space="preserve">
<value>十字鍵</value> <value>十字鍵</value>
</data> </data>
<data name="tSMIDPadInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIDPadInverted.Text" xml:space="preserve"> <data name="tSMIDPadInverted.Text" xml:space="preserve">
<value>反轉</value> <value>反轉</value>
</data> </data>
<data name="tSMIDPadInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIDPadInvertedX.Text" xml:space="preserve"> <data name="tSMIDPadInvertedX.Text" xml:space="preserve">
<value>反轉 X</value> <value>反轉 X</value>
</data> </data>
<data name="tSMIDPadInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIDPadInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIDPadInvertedY.Text" xml:space="preserve"> <data name="tSMIDPadInvertedY.Text" xml:space="preserve">
<value>反轉 Y</value> <value>反轉 Y</value>
</data> </data>
<data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="LSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="LSToolStripMenuItem.Text" xml:space="preserve"> <data name="LSToolStripMenuItem.Text" xml:space="preserve">
<value>左搖桿</value> <value>左搖桿</value>
</data> </data>
<data name="tSMILSInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMILSInverted.Text" xml:space="preserve"> <data name="tSMILSInverted.Text" xml:space="preserve">
<value>反轉</value> <value>反轉</value>
</data> </data>
<data name="tSMILSInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMILSInvertedX.Text" xml:space="preserve"> <data name="tSMILSInvertedX.Text" xml:space="preserve">
<value>反轉 X</value> <value>反轉 X</value>
</data> </data>
<data name="tSMILSInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMILSInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMILSInvertedY.Text" xml:space="preserve"> <data name="tSMILSInvertedY.Text" xml:space="preserve">
<value>反轉 Y</value> <value>反轉 Y</value>
</data> </data>
<data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="RSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="RSToolStripMenuItem.Text" xml:space="preserve"> <data name="RSToolStripMenuItem.Text" xml:space="preserve">
<value>右搖桿</value> <value>右搖桿</value>
</data> </data>
<data name="tSMIRSInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIRSInverted.Text" xml:space="preserve"> <data name="tSMIRSInverted.Text" xml:space="preserve">
<value>反轉</value> <value>反轉</value>
</data> </data>
<data name="tSMIRSInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIRSInvertedX.Text" xml:space="preserve"> <data name="tSMIRSInvertedX.Text" xml:space="preserve">
<value>反轉 X</value> <value>反轉 X</value>
</data> </data>
<data name="tSMIRSInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIRSInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIRSInvertedY.Text" xml:space="preserve"> <data name="tSMIRSInvertedY.Text" xml:space="preserve">
<value>反轉 Y</value> <value>反轉 Y</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ABXYToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="ABXYToolStripMenuItem.Text" xml:space="preserve"> <data name="ABXYToolStripMenuItem.Text" xml:space="preserve">
<value>右側四個按鈕</value> <value>右側四個按鈕</value>
</data> </data>
<data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="WASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeWASDToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 26</value> <value>139, 22</value>
</data> </data>
<data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeWASDToolStripMenuItem.Text" xml:space="preserve">
<value>用掃描代碼</value> <value>用掃描代碼</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="ArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="ArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>方向鍵</value> <value>方向鍵</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="wScanCodeArrowKeysToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 26</value> <value>139, 22</value>
</data> </data>
<data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve"> <data name="wScanCodeArrowKeysToolStripMenuItem.Text" xml:space="preserve">
<value>用掃描代碼</value> <value>用掃描代碼</value>
</data> </data>
<data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="MouseToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>149, 26</value> <value>127, 22</value>
</data> </data>
<data name="MouseToolStripMenuItem.Text" xml:space="preserve"> <data name="MouseToolStripMenuItem.Text" xml:space="preserve">
<value>滑鼠</value> <value>滑鼠</value>
</data> </data>
<data name="tSMIMouseInverted.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInverted.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIMouseInverted.Text" xml:space="preserve"> <data name="tSMIMouseInverted.Text" xml:space="preserve">
<value>反轉</value> <value>反轉</value>
</data> </data>
<data name="tSMIMouseInvertedX.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInvertedX.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIMouseInvertedX.Text" xml:space="preserve"> <data name="tSMIMouseInvertedX.Text" xml:space="preserve">
<value>反轉 X</value> <value>反轉 X</value>
</data> </data>
<data name="tSMIMouseInvertedY.Size" type="System.Drawing.Size, System.Drawing"> <data name="tSMIMouseInvertedY.Size" type="System.Drawing.Size, System.Drawing">
<value>129, 26</value> <value>110, 22</value>
</data> </data>
<data name="tSMIMouseInvertedY.Text" xml:space="preserve"> <data name="tSMIMouseInvertedY.Text" xml:space="preserve">
<value>反轉 Y</value> <value>反轉 Y</value>
</data> </data>
<data name="fLPTouchSwipe.Location" type="System.Drawing.Point, System.Drawing"> <data name="gBOther.Size" type="System.Drawing.Size, System.Drawing">
<value>4, 61</value> <value>272, 245</value>
</data> </data>
<data name="gBOther.Text" xml:space="preserve"> <data name="gBOther.Text" xml:space="preserve">
<value>其它</value> <value>其它</value>
</data> </data>
<data name="btPollRateLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 226</value>
</data>
<data name="btPollRateComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 221</value>
</data>
<data name="enableTouchToggleCheckbox.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 179</value>
</data>
<data name="cBDinput.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBDinput.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 184</value> <value>8, 158</value>
</data> </data>
<data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDinput.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 21</value> <value>96, 17</value>
</data> </data>
<data name="cBDinput.Text" xml:space="preserve"> <data name="cBDinput.Text" xml:space="preserve">
<value>只使用 Dinput</value> <value>只使用 Dinput</value>
</data> </data>
<data name="pBProgram.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBProgram.Location" type="System.Drawing.Point, System.Drawing">
<value>197, 133</value> <value>183, 125</value>
</data> </data>
<data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBLaunchProgram.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 131</value> <value>6, 122</value>
</data> </data>
<data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBLaunchProgram.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 38</value> <value>86, 30</value>
</data> </data>
<data name="cBLaunchProgram.Text" xml:space="preserve"> <data name="cBLaunchProgram.Text" xml:space="preserve">
<value>啟用程式 <value>啟用程式
使用設定檔</value> 使用設定檔</value>
</data> </data>
<data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnBrowse.Location" type="System.Drawing.Point, System.Drawing">
<value>107, 135</value> <value>100, 125</value>
</data> </data>
<data name="btnBrowse.Text" xml:space="preserve"> <data name="btnBrowse.Text" xml:space="preserve">
<value>瀏覽...</value> <value>瀏覽...</value>
</data> </data>
<data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbUseController.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value> <value>67, 13</value>
</data> </data>
<data name="lbUseController.Text" xml:space="preserve"> <data name="lbUseController.Text" xml:space="preserve">
<value>使用控制器</value> <value>使用控制器</value>
</data> </data>
<data name="cBMouseAccel.Location" type="System.Drawing.Point, System.Drawing">
<value>156, 20</value>
</data>
<data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBMouseAccel.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 21</value> <value>74, 17</value>
</data> </data>
<data name="cBMouseAccel.Text" xml:space="preserve"> <data name="cBMouseAccel.Text" xml:space="preserve">
<value>滑鼠加速</value> <value>滑鼠加速</value>
@ -450,13 +483,13 @@
<value>128, 93</value> <value>128, 93</value>
</data> </data>
<data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBControllerInput.Size" type="System.Drawing.Size, System.Drawing">
<value>107, 21</value> <value>110, 17</value>
</data> </data>
<data name="cBControllerInput.Text" xml:space="preserve"> <data name="cBControllerInput.Text" xml:space="preserve">
<value>用於映射和讀出</value> <value>用於映射和讀出</value>
</data> </data>
<data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBIdleDisconnect.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 21</value> <value>86, 17</value>
</data> </data>
<data name="cBIdleDisconnect.Text" xml:space="preserve"> <data name="cBIdleDisconnect.Text" xml:space="preserve">
<value>閒置時斷開</value> <value>閒置時斷開</value>
@ -483,32 +516,11 @@
<value>顏色</value> <value>顏色</value>
</data> </data>
<data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbWhileCharging.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 17</value> <value>61, 13</value>
</data> </data>
<data name="lbWhileCharging.Text" xml:space="preserve"> <data name="lbWhileCharging.Text" xml:space="preserve">
<value>當改變時:</value> <value>當改變時:</value>
</data> </data>
<data name="cBShiftLight.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 21</value>
</data>
<data name="cBShiftLight.Text" xml:space="preserve">
<value>shift mode 時用另一種顏色</value>
</data>
<data name="lbShiftRed.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value>
</data>
<data name="lbShiftRed.Text" xml:space="preserve">
<value>紅</value>
</data>
<data name="lbShiftGreen.Text" xml:space="preserve">
<value>綠</value>
</data>
<data name="lbShiftBlue.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 17</value>
</data>
<data name="lbShiftBlue.Text" xml:space="preserve">
<value>藍</value>
</data>
<data name="gBRumble.Text" xml:space="preserve"> <data name="gBRumble.Text" xml:space="preserve">
<value>震動</value> <value>震動</value>
</data> </data>
@ -519,7 +531,7 @@
<value>右搖桿</value> <value>右搖桿</value>
</data> </data>
<data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbInputDelay.Size" type="System.Drawing.Size, System.Drawing">
<value>101, 17</value> <value>94, 13</value>
</data> </data>
<data name="lbInputDelay.Text" xml:space="preserve"> <data name="lbInputDelay.Text" xml:space="preserve">
<value>輸入延遲: N/Ams</value> <value>輸入延遲: N/Ams</value>
@ -531,35 +543,17 @@
<value>六軸X軸已反轉來方便閱讀</value> <value>六軸X軸已反轉來方便閱讀</value>
</data> </data>
<data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Accel.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value> <value>31, 13</value>
</data> </data>
<data name="lb6Accel.Text" xml:space="preserve"> <data name="lb6Accel.Text" xml:space="preserve">
<value>加速</value> <value>加速</value>
</data> </data>
<data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing"> <data name="lb6Gryo.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 17</value> <value>43, 13</value>
</data> </data>
<data name="lb6Gryo.Text" xml:space="preserve"> <data name="lb6Gryo.Text" xml:space="preserve">
<value>陀螺儀</value> <value>陀螺儀</value>
</data> </data>
<data name="lbHold.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value>
</data>
<data name="lbHold.Text" xml:space="preserve">
<value>按住</value>
</data>
<data name="lbtoUse.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 17</value>
</data>
<data name="lbtoUse.Text" xml:space="preserve">
<value>來使用這些控制</value>
</data>
<data name="cBShiftControl.Items" xml:space="preserve">
<value>(無)/shift 關閉</value>
</data>
<data name="cBShiftControl.Items26" xml:space="preserve">
<value>觸控版 (未點擊)</value>
</data>
<data name="tPControls.Text" xml:space="preserve"> <data name="tPControls.Text" xml:space="preserve">
<value>控制器</value> <value>控制器</value>
</data> </data>
@ -597,119 +591,103 @@
<value>死區</value> <value>死區</value>
</data> </data>
<data name="rBSAControls.Size" type="System.Drawing.Size, System.Drawing"> <data name="rBSAControls.Size" type="System.Drawing.Size, System.Drawing">
<value>84, 21</value> <value>85, 17</value>
</data> </data>
<data name="rBSAControls.Text" xml:space="preserve"> <data name="rBSAControls.Text" xml:space="preserve">
<value>當成控制器</value> <value>當成控制器</value>
</data> </data>
<data name="rBSAMouse.Size" type="System.Drawing.Size, System.Drawing"> <data name="rBSAMouse.Size" type="System.Drawing.Size, System.Drawing">
<value>73, 21</value> <value>73, 17</value>
</data> </data>
<data name="rBSAMouse.Text" xml:space="preserve"> <data name="rBSAMouse.Text" xml:space="preserve">
<value>當成滑鼠</value> <value>當成滑鼠</value>
</data> </data>
<data name="lbGyroInvert.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroInvert.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 17</value> <value>31, 13</value>
</data> </data>
<data name="lbGyroInvert.Text" xml:space="preserve"> <data name="lbGyroInvert.Text" xml:space="preserve">
<value>反轉</value> <value>反轉</value>
</data> </data>
<data name="lbGyroTriggers.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroTriggers.Size" type="System.Drawing.Size, System.Drawing">
<value>55, 17</value> <value>55, 13</value>
</data> </data>
<data name="lbGyroTriggers.Text" xml:space="preserve"> <data name="lbGyroTriggers.Text" xml:space="preserve">
<value>啟動按鍵</value> <value>啟動按鍵</value>
</data> </data>
<data name="lbGyroSens.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbGyroSens.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 17</value> <value>79, 13</value>
</data> </data>
<data name="lbGyroSens.Text" xml:space="preserve"> <data name="lbGyroSens.Text" xml:space="preserve">
<value>陀螺儀靈敏度</value> <value>陀螺儀靈敏度</value>
</data> </data>
<data name="cMGyroTriggers.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMGyroTriggers.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 524</value> <value>172, 444</value>
</data> </data>
<data name="crossToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="crossToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="circleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="circleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="squareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="squareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="triangleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="triangleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="l1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="l2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="r1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r1ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="r2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r2ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="onTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="onTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="downToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="downToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="leftToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="leftToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="rightToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="rightToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="l3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="l3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="r3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="r3ToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="fingerOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="fingerOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingerOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>手指放在觸摸板</value> <value>手指放在觸摸板</value>
</data> </data>
<data name="fingersOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="fingersOnTouchpadToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve"> <data name="fingersOnTouchpadToolStripMenuItem.Text" xml:space="preserve">
<value>2手指放在觸摸板</value> <value>2手指放在觸摸板</value>
</data> </data>
<data name="optionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="optionsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="shareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="shareToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="pSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="pSToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data> </data>
<data name="resetToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="alwaysOnToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>204, 26</value> <value>171, 22</value>
</data>
<data name="resetToolStripMenuItem.Text" xml:space="preserve">
<value>重置</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Inherit</value>
</data>
<data name="gBSensitivity,Text" xml:space="preserve">
<value>靈敏度</value>
</data>
<data name="tPController.Text" xml:space="preserve">
<value>控制器讀數</value>
</data>
<data name="tPShiftMod.Text" xml:space="preserve">
<value>Shift Modifier</value>
</data> </data>
<data name="alwaysOnToolStripMenuItem.Text" xml:space="preserve"> <data name="alwaysOnToolStripMenuItem.Text" xml:space="preserve">
<value>總是啟用</value> <value>總是啟用</value>

View File

@ -69,7 +69,7 @@
this.btnRecord.UseVisualStyleBackColor = true; this.btnRecord.UseVisualStyleBackColor = true;
this.btnRecord.Click += new System.EventHandler(this.btnRecord_Click); this.btnRecord.Click += new System.EventHandler(this.btnRecord_Click);
this.btnRecord.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.btnRecord.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.btnRecord.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.btnRecord.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
// //
// cBRecordDelays // cBRecordDelays
// //
@ -78,7 +78,7 @@
this.cBRecordDelays.TabStop = false; this.cBRecordDelays.TabStop = false;
this.cBRecordDelays.UseVisualStyleBackColor = true; this.cBRecordDelays.UseVisualStyleBackColor = true;
this.cBRecordDelays.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.cBRecordDelays.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.cBRecordDelays.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.cBRecordDelays.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
this.cBRecordDelays.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown); this.cBRecordDelays.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown);
this.cBRecordDelays.MouseUp += new System.Windows.Forms.MouseEventHandler(this.anyMouseUp); this.cBRecordDelays.MouseUp += new System.Windows.Forms.MouseEventHandler(this.anyMouseUp);
// //
@ -97,7 +97,7 @@
this.lVMacros.View = System.Windows.Forms.View.Details; this.lVMacros.View = System.Windows.Forms.View.Details;
this.lVMacros.SelectedIndexChanged += new System.EventHandler(this.lVMacros_SelectedIndexChanged); this.lVMacros.SelectedIndexChanged += new System.EventHandler(this.lVMacros_SelectedIndexChanged);
this.lVMacros.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.lVMacros.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.lVMacros.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.lVMacros.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
this.lVMacros.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lVMacros_MouseDoubleClick); this.lVMacros.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lVMacros_MouseDoubleClick);
this.lVMacros.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown); this.lVMacros.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown);
this.lVMacros.MouseHover += new System.EventHandler(this.lVMacros_MouseHover); this.lVMacros.MouseHover += new System.EventHandler(this.lVMacros_MouseHover);
@ -185,7 +185,7 @@
this.btnLightbar.UseVisualStyleBackColor = true; this.btnLightbar.UseVisualStyleBackColor = true;
this.btnLightbar.Click += new System.EventHandler(this.btnLightbar_Click); this.btnLightbar.Click += new System.EventHandler(this.btnLightbar_Click);
this.btnLightbar.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.btnLightbar.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.btnLightbar.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.btnLightbar.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
// //
// btnRumble // btnRumble
// //
@ -194,7 +194,7 @@
this.btnRumble.UseVisualStyleBackColor = true; this.btnRumble.UseVisualStyleBackColor = true;
this.btnRumble.Click += new System.EventHandler(this.btnRumble_Click); this.btnRumble.Click += new System.EventHandler(this.btnRumble_Click);
this.btnRumble.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.btnRumble.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.btnRumble.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.btnRumble.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
// //
// btn5th // btn5th
// //
@ -203,7 +203,7 @@
this.btn5th.UseVisualStyleBackColor = true; this.btn5th.UseVisualStyleBackColor = true;
this.btn5th.Click += new System.EventHandler(this.btn5th_Click); this.btn5th.Click += new System.EventHandler(this.btn5th_Click);
this.btn5th.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.btn5th.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.btn5th.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.btn5th.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
// //
// btn4th // btn4th
// //
@ -212,7 +212,7 @@
this.btn4th.UseVisualStyleBackColor = true; this.btn4th.UseVisualStyleBackColor = true;
this.btn4th.Click += new System.EventHandler(this.btn4th_Click); this.btn4th.Click += new System.EventHandler(this.btn4th_Click);
this.btn4th.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.btn4th.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.btn4th.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.btn4th.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
// //
// btnLoadP // btnLoadP
// //
@ -286,7 +286,7 @@
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.RecordBox_FormClosing); this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.RecordBox_FormClosing);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.anyKeyDown);
this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.anyKeyUp); this.KeyUp += new System.Windows.Forms.KeyEventHandler(this.AnyKeyUp);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown); this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.anyMouseDown);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.anyMouseUp); this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.anyMouseUp);
this.Resize += new System.EventHandler(this.RecordBox_Resize); this.Resize += new System.EventHandler(this.RecordBox_Resize);

View File

@ -1,15 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using NonFormTimer = System.Timers.Timer;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
@ -19,7 +14,8 @@ namespace DS4Windows
public partial class RecordBox : Form public partial class RecordBox : Form
{ {
Stopwatch sw = new Stopwatch(); Stopwatch sw = new Stopwatch();
Timer ds4 = new Timer(); //Timer ds4 = new Timer();
NonFormTimer ds4 = new NonFormTimer();
public List<int> macros = new List<int>(), macrosAfter = new List<int>(); public List<int> macros = new List<int>(), macrosAfter = new List<int>();
public List<string> macronames = new List<string>(); public List<string> macronames = new List<string>();
SpecActions sA; SpecActions sA;
@ -36,12 +32,16 @@ namespace DS4Windows
openPresets.Filter = Properties.Resources.TextDocs + "|*.txt"; openPresets.Filter = Properties.Resources.TextDocs + "|*.txt";
savePresets.Filter = Properties.Resources.TextDocs + "|*.txt"; savePresets.Filter = Properties.Resources.TextDocs + "|*.txt";
if (op != null) if (op != null)
{
if (kbm.macrorepeat) if (kbm.macrorepeat)
cBStyle.SelectedIndex = 1; cBStyle.SelectedIndex = 1;
else else
cBStyle.SelectedIndex = 0; cBStyle.SelectedIndex = 0;
}
AddtoDS4List(); AddtoDS4List();
ds4.Tick += ds4_Tick; //ds4.Tick += ds4_Tick;
ds4.Elapsed += Ds4_Tick;
ds4.Interval = 1; ds4.Interval = 1;
if (kbm.macrostag.Count > 0) if (kbm.macrostag.Count > 0)
{ {
@ -59,10 +59,13 @@ namespace DS4Windows
cBStyle.SelectedIndex = 1; cBStyle.SelectedIndex = 1;
else else
cBStyle.SelectedIndex = 0; cBStyle.SelectedIndex = 0;
AddtoDS4List(); AddtoDS4List();
if (button > -1) if (button > -1)
sAButton = button; sAButton = button;
ds4.Tick += ds4_Tick;
//ds4.Tick += ds4_Tick;
ds4.Elapsed += Ds4_Tick;
ds4.Interval = 1; ds4.Interval = 1;
lbRecordTip.Visible = false; lbRecordTip.Visible = false;
cBStyle.Visible = false; cBStyle.Visible = false;
@ -86,7 +89,6 @@ namespace DS4Windows
void AddtoDS4List() void AddtoDS4List()
{ {
dcs.Add(DS4Controls.Cross);
dcs.Add(DS4Controls.Cross); dcs.Add(DS4Controls.Cross);
dcs.Add(DS4Controls.Circle); dcs.Add(DS4Controls.Circle);
dcs.Add(DS4Controls.Square); dcs.Add(DS4Controls.Square);
@ -121,12 +123,16 @@ namespace DS4Windows
else else
macros.Add(value); macros.Add(value);
} }
bool[] pTP = new bool[4]; bool[] pTP = new bool[4];
void ds4_Tick(object sender, EventArgs e)
private void Ds4_Tick(object sender, System.Timers.ElapsedEventArgs e)
{ {
if (Program.rootHub.DS4Controllers[0] != null) if (Program.rootHub.DS4Controllers[0] != null)
{ {
cState = Program.rootHub.getDS4State(0); cState = Program.rootHub.getDS4State(0);
this.BeginInvoke((Action)(() =>
{
if (btnRecord.Text == Properties.Resources.StopText) if (btnRecord.Text == Properties.Resources.StopText)
{ {
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
@ -147,17 +153,25 @@ namespace DS4Windows
pTP[0] = tP.leftDown; pTP[0] = tP.leftDown;
pTP[1] = tP.rightDown; pTP[1] = tP.rightDown;
} }
foreach (DS4Controls dc in dcs)
//foreach (DS4Controls dc in dcs)
for (int controlIndex = 0, dcsLen = dcs.Count; controlIndex < dcsLen; controlIndex++)
{
DS4Controls dc = dcs[controlIndex];
if (Mapping.getBoolMapping(0, dc, cState, null, null)) if (Mapping.getBoolMapping(0, dc, cState, null, null))
{ {
int value = DS4ControltoInt(dc); int value = DS4ControltoInt(dc);
int count = 0; int count = 0;
foreach (int i in macros) int macroLen = macros.Count;
//foreach (int i in macros)
for (int macroIndex = 0; macroIndex < macroLen; macroIndex++)
{ {
int i = macros[macroIndex];
if (i == value) if (i == value)
count++; count++;
} }
if (macros.Count == 0)
if (macroLen == 0)
{ {
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(DS4ControltoX360(dc), 0); lVMacros.Items.Add(DS4ControltoX360(dc), 0);
@ -179,22 +193,28 @@ namespace DS4Windows
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(DS4ControltoX360(dc), 0); lVMacros.Items.Add(DS4ControltoX360(dc), 0);
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
else if (!Mapping.getBoolMapping(0, dc, cState, null, null)) else if (!Mapping.getBoolMapping(0, dc, cState, null, null))
{ {
if (macros.Count != 0) int macroLen = macros.Count;
if (macroLen != 0)
{ {
int value = DS4ControltoInt(dc); int value = DS4ControltoInt(dc);
int count = 0; int count = 0;
foreach (int i in macros) //foreach (int i in macros)
for (int macroIndex = 0; macroIndex < macroLen; macroIndex++)
{ {
int i = macros[macroIndex];
if (i == value) if (i == value)
count++; count++;
} }
/*for (int i = macros.Count - 1; i >= 0; i--) /*for (int i = macros.Count - 1; i >= 0; i--)
if (macros.Count == 261) if (macros.Count == 261)
count++;*/ count++;*/
if (count % 2 == 1) if (count % 2 == 1)
{ {
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
@ -204,6 +224,7 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(DS4ControltoX360(dc), 1); lVMacros.Items.Add(DS4ControltoX360(dc), 1);
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
@ -212,6 +233,8 @@ namespace DS4Windows
} }
} }
} }
}));
}
} }
public static int DS4ControltoInt(DS4Controls ctrl) public static int DS4ControltoInt(DS4Controls ctrl)
@ -277,16 +300,20 @@ namespace DS4Windows
case DS4Controls.RYPos: return "RS Down"; case DS4Controls.RYPos: return "RS Down";
case DS4Controls.RYNeg: return "RS Up"; case DS4Controls.RYNeg: return "RS Up";
} }
return "None"; return "None";
} }
bool recordAfter = false; bool recordAfter = false;
int recordAfterInt = 0; int recordAfterInt = 0;
private void btnRecord_Click(object sender, EventArgs e) private void btnRecord_Click(object sender, EventArgs e)
{ {
if (btnRecord.Text != Properties.Resources.StopText) if (btnRecord.Text != Properties.Resources.StopText)
{ {
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
sw.Start(); sw.Start();
btnRumble.Visible = cBRecordDelays.Checked; btnRumble.Visible = cBRecordDelays.Checked;
btnLightbar.Visible = cBRecordDelays.Checked; btnLightbar.Visible = cBRecordDelays.Checked;
pBLtouch.Visible = cBRecordDelays.Checked; pBLtouch.Visible = cBRecordDelays.Checked;
@ -296,6 +323,7 @@ namespace DS4Windows
ds4.Start(); ds4.Start();
if (!recordAfter) if (!recordAfter)
macros.Clear(); macros.Clear();
lVMacros.Items.Clear(); lVMacros.Items.Clear();
btnRecord.Text = Properties.Resources.StopText; btnRecord.Text = Properties.Resources.StopText;
EnableControls(false); EnableControls(false);
@ -314,21 +342,28 @@ namespace DS4Windows
recordAfter = false; recordAfter = false;
LoadMacro(); LoadMacro();
} }
if (btn4th.Text.Contains(Properties.Resources.UpText)) if (btn4th.Text.Contains(Properties.Resources.UpText))
btn4th_Click(sender, e); btn4th_Click(sender, e);
if (btn5th.Text.Contains(Properties.Resources.UpText)) if (btn5th.Text.Contains(Properties.Resources.UpText))
btn5th_Click(sender, e); btn5th_Click(sender, e);
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
{ {
if (btnRumble.Text.Contains("Stop")) if (btnRumble.Text.Contains("Stop"))
btnRumble_Click(sender, e); btnRumble_Click(sender, e);
if (btnLightbar.Text.Contains("Reset")) if (btnLightbar.Text.Contains("Reset"))
btnLightbar_Click(sender, e); btnLightbar_Click(sender, e);
} }
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
sw.Reset(); sw.Reset();
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
lbDelayTip.Visible = true; lbDelayTip.Visible = true;
btnRecord.Text = Properties.Resources.RecordText; btnRecord.Text = Properties.Resources.RecordText;
EnableControls(true); EnableControls(true);
} }
@ -352,17 +387,22 @@ namespace DS4Windows
int value = WhichKey(e, 0); int value = WhichKey(e, 0);
int count = 0; int count = 0;
if (recordAfter) if (recordAfter)
{
foreach (int i in macrosAfter) foreach (int i in macrosAfter)
{ {
if (i == value) if (i == value)
count++; count++;
} }
}
else else
{
foreach (int i in macros) foreach (int i in macros)
{ {
if (i == value) if (i == value)
count++; count++;
} }
}
if (macros.Count == 0 || (recordAfter && macrosAfter.Count == 0)) if (macros.Count == 0 || (recordAfter && macrosAfter.Count == 0))
{ {
AddMacroValue(value); AddMacroValue(value);
@ -382,20 +422,26 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(((Keys)value).ToString(), 0); lVMacros.Items.Add(((Keys)value).ToString(), 0);
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
else if (e.KeyValue == 27) else if (e.KeyValue == 27)
{
Close(); Close();
}
else if (e.KeyCode == Keys.Delete) else if (e.KeyCode == Keys.Delete)
{
if (lVMacros.SelectedIndices.Count > 0 && lVMacros.SelectedIndices[0] > -1) if (lVMacros.SelectedIndices.Count > 0 && lVMacros.SelectedIndices[0] > -1)
{ {
macros.RemoveAt(lVMacros.SelectedIndices[0]); macros.RemoveAt(lVMacros.SelectedIndices[0]);
lVMacros.Items.Remove(lVMacros.SelectedItems[0]); lVMacros.Items.Remove(lVMacros.SelectedItems[0]);
} }
} }
}
private int WhichKey(KeyEventArgs e, int keystate) private int WhichKey(KeyEventArgs e, int keystate)
{ {
@ -406,55 +452,75 @@ namespace DS4Windows
if (recordAfter) if (recordAfter)
{ {
for (int i = macrosAfter.Count - 1; i >= 0; i--) for (int i = macrosAfter.Count - 1; i >= 0; i--)
{
if (macrosAfter[i] == 160) if (macrosAfter[i] == 160)
return 160; return 160;
else if (macrosAfter[i] == 161) else if (macrosAfter[i] == 161)
return 161; return 161;
} }
}
else else
{
for (int i = macros.Count - 1; i >= 0; i--) for (int i = macros.Count - 1; i >= 0; i--)
{
if (macros[i] == 160) if (macros[i] == 160)
return 160; return 160;
else if (macros[i] == 161) else if (macros[i] == 161)
return 161; return 161;
} }
}
}
else if (e.KeyCode == Keys.ControlKey) else if (e.KeyCode == Keys.ControlKey)
{ {
if (recordAfter) if (recordAfter)
{ {
for (int i = macrosAfter.Count - 1; i >= 0; i--) for (int i = macrosAfter.Count - 1; i >= 0; i--)
{
if (macrosAfter[i] == 162) if (macrosAfter[i] == 162)
return 162; return 162;
else if (macrosAfter[i] == 163) else if (macrosAfter[i] == 163)
return 163; return 163;
} }
}
else else
{
for (int i = macros.Count - 1; i >= 0; i--) for (int i = macros.Count - 1; i >= 0; i--)
{
if (macros[i] == 162) if (macros[i] == 162)
return 162; return 162;
else if (macros[i] == 163) else if (macros[i] == 163)
return 163; return 163;
} }
}
}
else if (e.KeyCode == Keys.Menu) else if (e.KeyCode == Keys.Menu)
{ {
if (recordAfter) if (recordAfter)
{ {
for (int i = macrosAfter.Count - 1; i >= 0; i--) for (int i = macrosAfter.Count - 1; i >= 0; i--)
{
if (macrosAfter[i] == 164) if (macrosAfter[i] == 164)
return 164; return 164;
else if (macrosAfter[i] == 165) else if (macrosAfter[i] == 165)
return 165; return 165;
} }
}
else else
{
for (int i = macros.Count - 1; i >= 0; i--) for (int i = macros.Count - 1; i >= 0; i--)
{
if (macros[i] == 164) if (macros[i] == 164)
return 164; return 164;
else if (macros[i] == 165) else if (macros[i] == 165)
return 165; return 165;
} }
}
}
return e.KeyValue; return e.KeyValue;
} }
else else
{
if (e.KeyCode == Keys.ShiftKey) if (e.KeyCode == Keys.ShiftKey)
{ {
if (Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey))) if (Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey)))
@ -476,15 +542,17 @@ namespace DS4Windows
return 164; return 164;
if (Convert.ToBoolean(GetAsyncKeyState(Keys.RMenu))) if (Convert.ToBoolean(GetAsyncKeyState(Keys.RMenu)))
return 165; return 165;
} }
}
return e.KeyValue; return e.KeyValue;
} }
private void anyKeyUp(object sender, KeyEventArgs e) private void AnyKeyUp(object sender, KeyEventArgs e)
{ {
if (btnRecord.Text == Properties.Resources.StopText && (macros.Count != 0 || (recordAfter && macrosAfter.Count != 0))) if (btnRecord.Text == Properties.Resources.StopText && (macros.Count != 0 || (recordAfter && macrosAfter.Count != 0)))
{ {
lVMacros.BeginUpdate();
int value = WhichKey(e, 1); int value = WhichKey(e, 1);
if (cBRecordDelays.Checked) if (cBRecordDelays.Checked)
{ {
@ -493,9 +561,19 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
if (e.KeyCode == Keys.PrintScreen)
{
int tempvalue = WhichKey(e, 0);
AddMacroValue(tempvalue);
lVMacros.Items.Add(((Keys)value).ToString(), 0);
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
}
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(((Keys)value).ToString(), 1); lVMacros.Items.Add(((Keys)value).ToString(), 1);
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
lVMacros.EndUpdate();
} }
} }
private void anyMouseDown(object sender, MouseEventArgs e) private void anyMouseDown(object sender, MouseEventArgs e)
@ -505,13 +583,14 @@ namespace DS4Windows
int value; int value;
switch (e.Button) switch (e.Button)
{ {
case System.Windows.Forms.MouseButtons.Left: value = 256; break; case MouseButtons.Left: value = 256; break;
case System.Windows.Forms.MouseButtons.Right: value = 257; break; case MouseButtons.Right: value = 257; break;
case System.Windows.Forms.MouseButtons.Middle: value = 258; break; case MouseButtons.Middle: value = 258; break;
case System.Windows.Forms.MouseButtons.XButton1: value = 259; break; case MouseButtons.XButton1: value = 259; break;
case System.Windows.Forms.MouseButtons.XButton2: value = 260; break; case MouseButtons.XButton2: value = 260; break;
default: value = 0; break; default: value = 0; break;
} }
if (macros.Count == 0 || (recordAfter && macrosAfter.Count == 0)) if (macros.Count == 0 || (recordAfter && macrosAfter.Count == 0))
{ {
AddMacroValue(value); AddMacroValue(value);
@ -531,13 +610,17 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(e.Button.ToString() + " Mouse Button", 0); lVMacros.Items.Add(e.Button.ToString() + " Mouse Button", 0);
} }
if (e.Button == System.Windows.Forms.MouseButtons.XButton1)
if (e.Button == MouseButtons.XButton1)
lVMacros.Items[lVMacros.Items.Count - 1].Text = "4th Mouse Button"; lVMacros.Items[lVMacros.Items.Count - 1].Text = "4th Mouse Button";
if (e.Button == System.Windows.Forms.MouseButtons.XButton2)
if (e.Button == MouseButtons.XButton2)
lVMacros.Items[lVMacros.Items.Count - 1].Text = "5th Mouse Button"; lVMacros.Items[lVMacros.Items.Count - 1].Text = "5th Mouse Button";
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
} }
@ -549,11 +632,11 @@ namespace DS4Windows
int value; int value;
switch (e.Button) switch (e.Button)
{ {
case System.Windows.Forms.MouseButtons.Left: value = 256; break; case MouseButtons.Left: value = 256; break;
case System.Windows.Forms.MouseButtons.Right: value = 257; break; case MouseButtons.Right: value = 257; break;
case System.Windows.Forms.MouseButtons.Middle: value = 258; break; case MouseButtons.Middle: value = 258; break;
case System.Windows.Forms.MouseButtons.XButton1: value = 259; break; case MouseButtons.XButton1: value = 259; break;
case System.Windows.Forms.MouseButtons.XButton2: value = 260; break; case MouseButtons.XButton2: value = 260; break;
default: value = 0; break; default: value = 0; break;
} }
@ -564,12 +647,16 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add(e.Button.ToString() + " Mouse Button", 1); lVMacros.Items.Add(e.Button.ToString() + " Mouse Button", 1);
if (e.Button == System.Windows.Forms.MouseButtons.XButton1)
if (e.Button == MouseButtons.XButton1)
lVMacros.Items[lVMacros.Items.Count - 1].Text = "4th Mouse Button"; lVMacros.Items[lVMacros.Items.Count - 1].Text = "4th Mouse Button";
if (e.Button == System.Windows.Forms.MouseButtons.XButton2)
if (e.Button == MouseButtons.XButton2)
lVMacros.Items[lVMacros.Items.Count - 1].Text = "5th Mouse Button"; lVMacros.Items[lVMacros.Items.Count - 1].Text = "5th Mouse Button";
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
} }
@ -598,9 +685,11 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("4th Mouse Button", 0); lVMacros.Items.Add("4th Mouse Button", 0);
} }
btn4th.Text = Properties.Resources.FourthMouseUp; btn4th.Text = Properties.Resources.FourthMouseUp;
} }
else else
@ -612,10 +701,12 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("4th Mouse Button", 1); lVMacros.Items.Add("4th Mouse Button", 1);
btn4th.Text = Properties.Resources.FourthMouseDown; btn4th.Text = Properties.Resources.FourthMouseDown;
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
@ -643,9 +734,11 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("5th Mouse Button", 0); lVMacros.Items.Add("5th Mouse Button", 0);
} }
btn5th.Text = Properties.Resources.FifthMouseUp; btn5th.Text = Properties.Resources.FifthMouseUp;
} }
else else
@ -657,10 +750,12 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("5th Mouse Button", 1); lVMacros.Items.Add("5th Mouse Button", 1);
btn5th.Text = Properties.Resources.FifthMouseDown; btn5th.Text = Properties.Resources.FifthMouseDown;
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
@ -689,9 +784,11 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("Rumble 255,255 (100%)", 0); lVMacros.Items.Add("Rumble 255,255 (100%)", 0);
} }
btnRumble.Text = "Stop Rumble"; btnRumble.Text = "Stop Rumble";
} }
else else
@ -704,10 +801,12 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("Stop Rumble", 1); lVMacros.Items.Add("Stop Rumble", 1);
btnRumble.Text = "Add Rumble"; btnRumble.Text = "Add Rumble";
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
@ -735,9 +834,11 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("Lightbar Color: 255,255,255", 0); lVMacros.Items.Add("Lightbar Color: 255,255,255", 0);
} }
btnLightbar.Text = "Reset Lightbar Color"; btnLightbar.Text = "Reset Lightbar Color";
} }
else else
@ -750,10 +851,12 @@ namespace DS4Windows
sw.Reset(); sw.Reset();
sw.Start(); sw.Start();
} }
AddMacroValue(value); AddMacroValue(value);
lVMacros.Items.Add("Reset Lightbar", 1); lVMacros.Items.Add("Reset Lightbar", 1);
btnLightbar.Text = "Change Lightbar Color"; btnLightbar.Text = "Change Lightbar Color";
} }
lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible(); lVMacros.Items[lVMacros.Items.Count - 1].EnsureVisible();
} }
@ -768,6 +871,7 @@ namespace DS4Windows
case 1: sA.btnHoldT.Text = macros.Count > 0 ? Properties.Resources.MacroRecorded : Properties.Resources.SelectMacro; break; case 1: sA.btnHoldT.Text = macros.Count > 0 ? Properties.Resources.MacroRecorded : Properties.Resources.SelectMacro; break;
case 2: sA.btnDTapT.Text = macros.Count > 0 ? Properties.Resources.MacroRecorded : Properties.Resources.SelectMacro; break; case 2: sA.btnDTapT.Text = macros.Count > 0 ? Properties.Resources.MacroRecorded : Properties.Resources.SelectMacro; break;
} }
saved = true; saved = true;
Close(); Close();
} }
@ -778,14 +882,14 @@ namespace DS4Windows
{ {
macronames.Add(lvi.Text); macronames.Add(lvi.Text);
} }
string macro = string.Join(", ", macronames.ToArray()); string macro = string.Join(", ", macronames.ToArray());
if (kbm != null) if (kbm != null)
{ {
kbm.macrostag = macros; kbm.macrostag = macros;
kbm.macros = macronames; kbm.macros = macronames;
kbm.lBMacroOn.Visible = true; kbm.lBMacroOn.Visible = true;
if (cBStyle.SelectedIndex == 1) kbm.macrorepeat = cBStyle.SelectedIndex == 1;
kbm.macrorepeat = true;
saved = true; saved = true;
if (sender != kbm) if (sender != kbm)
kbm.Close(); kbm.Close();
@ -796,8 +900,7 @@ namespace DS4Windows
sA.macros = macronames; sA.macros = macronames;
sA.lbMacroRecorded.Text = string.Join(", ", macronames); sA.lbMacroRecorded.Text = string.Join(", ", macronames);
//kbm.lBMacroOn.Visible = true; //kbm.lBMacroOn.Visible = true;
if (cBStyle.SelectedIndex == 1) sA.macrorepeat = cBStyle.SelectedIndex == 1;
sA.macrorepeat = true;
saved = true; saved = true;
//if (sender != sA) //if (sender != sA)
// sA.Close(); // sA.Close();
@ -806,9 +909,11 @@ namespace DS4Windows
else else
Close(); Close();
} }
else MessageBox.Show(Properties.Resources.NoMacroRecorded, "DS4Windows", MessageBoxButtons.OK, MessageBoxIcon.Warning); else
{
MessageBox.Show(Properties.Resources.NoMacroRecorded, "DS4Windows", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
} }
private void btnSaveP_Click(object sender, EventArgs e) private void btnSaveP_Click(object sender, EventArgs e)
{ {
@ -822,13 +927,16 @@ namespace DS4Windows
savePresets.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Macros\"; savePresets.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Macros\";
else else
savePresets.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Macros\"; savePresets.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Macros\";
if (!Directory.Exists(savePresets.InitialDirectory)) if (!Directory.Exists(savePresets.InitialDirectory))
{ {
Directory.CreateDirectory(savePresets.InitialDirectory); Directory.CreateDirectory(savePresets.InitialDirectory);
//savePresets.InitialDirectory = path; //savePresets.InitialDirectory = path;
} }
Console.WriteLine(savePresets.InitialDirectory); Console.WriteLine(savePresets.InitialDirectory);
if (savePresets.ShowDialog() == System.Windows.Forms.DialogResult.OK) if (savePresets.ShowDialog() == DialogResult.OK)
{
if ((stream = savePresets.OpenFile()) != null) if ((stream = savePresets.OpenFile()) != null)
{ {
string macro = string.Join("/", macros.ToArray()); string macro = string.Join("/", macros.ToArray());
@ -837,7 +945,11 @@ namespace DS4Windows
sw.Close(); sw.Close();
} }
} }
else MessageBox.Show(Properties.Resources.NoMacroRecorded, "DS4Windows", MessageBoxButtons.OK, MessageBoxIcon.Warning); }
else
{
MessageBox.Show(Properties.Resources.NoMacroRecorded, "DS4Windows", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
} }
private void btnLoadP_Click(object sender, EventArgs e) private void btnLoadP_Click(object sender, EventArgs e)
@ -863,7 +975,8 @@ namespace DS4Windows
openPresets.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Macros\"; openPresets.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Macros\";
else else
openPresets.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Macros\"; openPresets.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool" + @"\Macros\";
if (openPresets.ShowDialog() == System.Windows.Forms.DialogResult.OK)
if (openPresets.ShowDialog() == DialogResult.OK)
{ {
string file = openPresets.FileName; string file = openPresets.FileName;
macros.Clear(); macros.Clear();
@ -876,6 +989,7 @@ namespace DS4Windows
if (int.TryParse(s, out temp)) if (int.TryParse(s, out temp))
macros.Add(temp); macros.Add(temp);
} }
LoadMacro(); LoadMacro();
sr.Close(); sr.Close();
} }
@ -894,7 +1008,6 @@ namespace DS4Windows
void LoadMacro() void LoadMacro()
{ {
if (macros.Count > 0) if (macros.Count > 0)
{ {
bool[] keydown = new bool[286]; bool[] keydown = new bool[286];
@ -928,7 +1041,9 @@ namespace DS4Windows
lVMacros.Items.Add("Stop Rumble", 1); lVMacros.Items.Add("Stop Rumble", 1);
} }
else if (i >= 300) //ints over 300 used to delay else if (i >= 300) //ints over 300 used to delay
{
lVMacros.Items.Add(Properties.Resources.WaitMS.Replace("*number*", (i - 300).ToString()).Replace("*ms*", "ms"), 2); lVMacros.Items.Add(Properties.Resources.WaitMS.Replace("*number*", (i - 300).ToString()).Replace("*ms*", "ms"), 2);
}
else if (!keydown[i]) else if (!keydown[i])
{ {
//anything above 255 is not a keyvalue //anything above 255 is not a keyvalue
@ -1001,6 +1116,7 @@ namespace DS4Windows
keydown[i] = false; keydown[i] = false;
} }
} }
for (int i = 0; i < keydown.Length; i++) for (int i = 0; i < keydown.Length; i++)
{ {
if (keydown[i]) if (keydown[i])
@ -1042,15 +1158,17 @@ namespace DS4Windows
} }
} }
private void RecordBox_FormClosing(object sender, FormClosingEventArgs e) private void RecordBox_FormClosing(object sender, FormClosingEventArgs e)
{ {
if (!saved && macros.Count > 0) if (!saved && macros.Count > 0)
if (MessageBox.Show(Properties.Resources.SaveRecordedMacro, "DS4Windows", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) {
if (MessageBox.Show(Properties.Resources.SaveRecordedMacro, "DS4Windows", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
btnSave_Click(null, null); btnSave_Click(null, null);
} }
Program.rootHub.recordingMacro = false;
}
protected override bool IsInputKey(Keys keyData) protected override bool IsInputKey(Keys keyData)
{ {
switch (keyData) switch (keyData)
@ -1074,8 +1192,10 @@ namespace DS4Windows
case Keys.Shift | Keys.MediaNextTrack: case Keys.Shift | Keys.MediaNextTrack:
return true; return true;
} }
return base.IsInputKey(keyData); return base.IsInputKey(keyData);
} }
protected override void OnKeyDown(KeyEventArgs e) protected override void OnKeyDown(KeyEventArgs e)
{ {
base.OnKeyDown(e); base.OnKeyDown(e);
@ -1099,11 +1219,14 @@ namespace DS4Windows
break; break;
} }
} }
private int selection; private int selection;
private bool changingDelay = false; private bool changingDelay = false;
private void lVMacros_MouseDoubleClick(object sender, MouseEventArgs e) private void lVMacros_MouseDoubleClick(object sender, MouseEventArgs e)
{ {
if (lVMacros.SelectedIndices[0] >= 0) if (lVMacros.SelectedIndices[0] >= 0)
{
if (lVMacros.SelectedItems[0].ImageIndex == 2) if (lVMacros.SelectedItems[0].ImageIndex == 2)
{ {
TextBox tb = new TextBox(); TextBox tb = new TextBox();
@ -1167,6 +1290,7 @@ namespace DS4Windows
tb1.Focus(); tb1.Focus();
} }
} }
}
void tb_TextChanged(object sender, EventArgs e) void tb_TextChanged(object sender, EventArgs e)
{ {
@ -1174,10 +1298,12 @@ namespace DS4Windows
//if (changingDelay) //if (changingDelay)
{ {
for (int i = tb.Text.Length - 1; i >= 0; i--) for (int i = tb.Text.Length - 1; i >= 0; i--)
{
if (!char.IsDigit(tb.Text[i])) if (!char.IsDigit(tb.Text[i]))
tb.Text = tb.Text.Remove(i, 1); tb.Text = tb.Text.Remove(i, 1);
} }
} }
}
void nud_LostFocus(object sender, EventArgs e) void nud_LostFocus(object sender, EventArgs e)
{ {
@ -1189,6 +1315,7 @@ namespace DS4Windows
if (e.KeyCode == Keys.Enter) if (e.KeyCode == Keys.Enter)
SaveMacroChange((TextBox)sender); SaveMacroChange((TextBox)sender);
} }
private void SaveMacroChange(TextBox tb) private void SaveMacroChange(TextBox tb)
{ {
int i, j; int i, j;
@ -1220,6 +1347,7 @@ namespace DS4Windows
} }
} }
} }
lVMacros.MouseHover += lVMacros_MouseHover; lVMacros.MouseHover += lVMacros_MouseHover;
} }
@ -1243,6 +1371,7 @@ namespace DS4Windows
private void lVMacros_SelectedIndexChanged(object sender, EventArgs e) private void lVMacros_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (btnRecord.Text != Properties.Resources.StopText) if (btnRecord.Text != Properties.Resources.StopText)
{
if (lVMacros.SelectedIndices.Count > 0 && lVMacros.SelectedIndices[0] > -1) if (lVMacros.SelectedIndices.Count > 0 && lVMacros.SelectedIndices[0] > -1)
{ {
recordAfter = true; recordAfter = true;
@ -1255,6 +1384,6 @@ namespace DS4Windows
btnRecord.Text = "Record"; btnRecord.Text = "Record";
} }
} }
}
} }
} }

View File

@ -117,10 +117,188 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btnRecord.Location" type="System.Drawing.Point, System.Drawing">
<value>536, 29</value>
</data>
<data name="btnRecord.Size" type="System.Drawing.Size, System.Drawing">
<value>213, 46</value>
</data>
<data name="cBRecordDelays.Location" type="System.Drawing.Point, System.Drawing">
<value>591, 121</value>
</data>
<data name="cBRecordDelays.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 17</value>
</data>
<data name="iLKeys.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAQ
CgAAAk1TRnQBSQFMAgEBAwEAAcwBAQHMAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/yIAAf8B7wH3AfQGAAH/
Au8B/xgAAf8BBw4AAuwB/wcAAf8BBwHxAQcBvAGRAosBkQG8AQcB8QHvAf8XAAH/AuwBBw0AAuwB/wgA
AfQB8AEHBosCBwH0FwAB/wTsAQcMAALsAf8IAAHxAZEBiwe0AZEB8RYAAf8G7AEHCwAC7AH/BwAB9AG0
Aa0BtAG1AfEC/wHxAbUBtAGtAbQB9BUAAuwBBwLsAf8C7AH/CgAC7AH/BwABvAGzAbQBtQb/ArQBswG8
FQAB7AEHAQAC7AL/AewB/woAAuwB/wcAAbUBtAG1ARkC9AEHAfMB/wEZAQkCtAG1FQABBwIAAuwB/wEA
Av8HAAH/AgAC7AH/AgAB/wQAArQBtQP0AuwBvAH/ARkDtBgAAuwB/woAAewB/wEAAuwB/wEAAQcB/wQA
ArQBtQH0Av8B7AHvAewBBwEZA7QYAALsAf8KAALsAf8C7AH/AQcB7AH/BAABuwG0AbsBGQH/AfQBkgH0
Af8B7wEZAbUBtAG7GAAC7AH/CgABBwTsAQcC7AH/BAAB8AG0AbsBCQH/AfQB8gP/ArsBtAHwGAAC7AH/
CwABBwXsAf8EAAH0AVgBUgG7AgkB8wL0AfMBCQG7ARwBUgF5Af8XAALsAf8MAAEHA+wB/wUAARoBmgF6
AVIDCQK1AgkBuwFYARoBegH/FwAC7AH/DQABBwHsAf8GAAEaAXoBwwF6AVgB3AQJAbsBUgKaAXoB/xcA
A/8OAAH/BwAB/wEaAXoBwwF6AZkBCQLcAQkBmQF6AZoBegH2MgAB/wEaAVkBegH/BAAB/wFZAXoB9hIA
AUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAT/AYcB4QIAAf4BfwH+AT8BgAEB
AgAB/AE/Af4BPwHAAQMCAAH4AR8B/gE/AcABAwIAAfABDwH+AT8BgAEBAgAB8AEHAf4BPwGAAQECAAHy
AQcB/gE/AYABAQIAAfYBJwH2ATcBgAEBAgAB/gE/AfIBJwGAAQECAAH+AT8B8AEHAYABAQIAAf4BPwHw
AQcBgAEBAgAB/gE/AfgBDwQAAf4BPwH8AR8EAAH+AT8B/gE/BAAB/gE/Af8BfwEAAQECAAT/AYMBwwIA
Cw==
</value>
</data>
<data name="lVMacros.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 29</value>
</data>
<data name="lVMacros.Size" type="System.Drawing.Size, System.Drawing">
<value>527, 342</value>
</data>
<data name="cBStyle.Location" type="System.Drawing.Point, System.Drawing">
<value>578, 179</value>
</data>
<data name="cBStyle.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
<value>536, 2</value>
</data>
<data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 23</value>
</data>
<data name="btnSave.Text" xml:space="preserve"> <data name="btnSave.Text" xml:space="preserve">
<value>保存</value> <value>保存</value>
</data> </data>
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>646, 2</value>
</data>
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 23</value>
</data>
<data name="btnSaveP.Location" type="System.Drawing.Point, System.Drawing">
<value>646, 81</value>
</data>
<data name="btnSaveP.Size" type="System.Drawing.Size, System.Drawing">
<value>103, 23</value>
</data>
<data name="btnSaveP.Text" xml:space="preserve"> <data name="btnSaveP.Text" xml:space="preserve">
<value>プリセットを保存</value> <value>プリセットを保存</value>
</data> </data>
<data name="lbRecordTip.Location" type="System.Drawing.Point, System.Drawing">
<value>309, 7</value>
</data>
<data name="lbRecordTip.Size" type="System.Drawing.Size, System.Drawing">
<value>221, 13</value>
</data>
<data name="pBRtouch.Location" type="System.Drawing.Point, System.Drawing">
<value>152, 106</value>
</data>
<data name="pBRtouch.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 23</value>
</data>
<data name="pBLtouch.Location" type="System.Drawing.Point, System.Drawing">
<value>152, 77</value>
</data>
<data name="pBLtouch.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 23</value>
</data>
<data name="btnLightbar.Location" type="System.Drawing.Point, System.Drawing">
<value>17, 106</value>
</data>
<data name="btnLightbar.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 23</value>
</data>
<data name="btnRumble.Location" type="System.Drawing.Point, System.Drawing">
<value>17, 77</value>
</data>
<data name="btnRumble.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 23</value>
</data>
<data name="btn5th.Location" type="System.Drawing.Point, System.Drawing">
<value>39, 39</value>
</data>
<data name="btn5th.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 23</value>
</data>
<data name="btn4th.Location" type="System.Drawing.Point, System.Drawing">
<value>39, 10</value>
</data>
<data name="btn4th.Size" type="System.Drawing.Size, System.Drawing">
<value>131, 23</value>
</data>
<data name="pnlMouseButtons.Location" type="System.Drawing.Point, System.Drawing">
<value>539, 225</value>
</data>
<data name="pnlMouseButtons.Size" type="System.Drawing.Size, System.Drawing">
<value>210, 138</value>
</data>
<data name="btnLoadP.Location" type="System.Drawing.Point, System.Drawing">
<value>536, 81</value>
</data>
<data name="btnLoadP.Size" type="System.Drawing.Size, System.Drawing">
<value>104, 23</value>
</data>
<data name="lbMacroOrder.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 8</value>
</data>
<data name="lbMacroOrder.Size" type="System.Drawing.Size, System.Drawing">
<value>66, 13</value>
</data>
<data name="lbDelayTip.Location" type="System.Drawing.Point, System.Drawing">
<value>536, 142</value>
</data>
<data name="lbDelayTip.Size" type="System.Drawing.Size, System.Drawing">
<value>212, 33</value>
</data>
<data name="altTabToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 22</value>
</data>
<data name="fromFileToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 22</value>
</data>
<data name="cMSLoadPresets.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 48</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>750, 375</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>260, 205</value>
</data>
</root> </root>

View File

@ -140,8 +140,8 @@
<data name="btn4th.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="btn4th.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="lbRecordTip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="cHMacro.Text" xml:space="preserve">
<value>4, 0, 4, 0</value> <value>Macro Order</value>
</data> </data>
<data name="&gt;&gt;btnRumble.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnRumble.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
@ -171,8 +171,8 @@
<data name="&gt;&gt;btnSave.Name" xml:space="preserve"> <data name="&gt;&gt;btnSave.Name" xml:space="preserve">
<value>btnSave</value> <value>btnSave</value>
</data> </data>
<data name="cMSLoadPresets.Size" type="System.Drawing.Size, System.Drawing"> <data name="&gt;&gt;lbMacroOrder.Type" xml:space="preserve">
<value>156, 56</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="btnSaveP.Text" xml:space="preserve"> <data name="btnSaveP.Text" xml:space="preserve">
<value>Save Preset</value> <value>Save Preset</value>
@ -195,11 +195,8 @@
<data name="&gt;&gt;cBStyle.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cBStyle.ZOrder" xml:space="preserve">
<value>2</value> <value>2</value>
</data> </data>
<data name="cBStyle.TabIndex" type="System.Int32, mscorlib"> <data name="btnLightbar.Location" type="System.Drawing.Point, System.Drawing">
<value>327</value> <value>23, 130</value>
</data>
<data name="lbRecordTip.Size" type="System.Drawing.Size, System.Drawing">
<value>294, 17</value>
</data> </data>
<data name="pBRtouch.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="pBRtouch.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
@ -207,12 +204,24 @@
<data name="&gt;&gt;btnLightbar.Parent" xml:space="preserve"> <data name="&gt;&gt;btnLightbar.Parent" xml:space="preserve">
<value>pnlMouseButtons</value> <value>pnlMouseButtons</value>
</data> </data>
<data name="lbDelayTip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="&gt;&gt;btnLightbar.Name" xml:space="preserve"> <data name="&gt;&gt;btnLightbar.Name" xml:space="preserve">
<value>btnLightbar</value> <value>btnLightbar</value>
</data> </data>
<data name="&gt;&gt;iLKeys.Name" xml:space="preserve">
<value>iLKeys</value>
</data>
<data name="&gt;&gt;btnRecord.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnRecord.ZOrder" xml:space="preserve">
<value>8</value> <value>8</value>
</data> </data>
<data name="lbDelayTip.Size" type="System.Drawing.Size, System.Drawing">
<value>283, 41</value>
</data>
<data name="btnSaveP.Location" type="System.Drawing.Point, System.Drawing">
<value>861, 100</value>
</data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Record a Macro</value> <value>Record a Macro</value>
</data> </data>
@ -243,11 +252,14 @@
<data name="btnLoadP.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnLoadP.Location" type="System.Drawing.Point, System.Drawing">
<value>715, 100</value> <value>715, 100</value>
</data> </data>
<data name="&gt;&gt;pBLtouch.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;fromFileToolStripMenuItem.Name" xml:space="preserve"> <data name="&gt;&gt;fromFileToolStripMenuItem.Name" xml:space="preserve">
<value>fromFileToolStripMenuItem</value> <value>fromFileToolStripMenuItem</value>
</data> </data>
<data name="btnSave.Location" type="System.Drawing.Point, System.Drawing"> <data name="&gt;&gt;btnLightbar.ZOrder" xml:space="preserve">
<value>715, 2</value> <value>2</value>
</data> </data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>8, 16</value> <value>8, 16</value>
@ -288,6 +300,12 @@
<data name="btnRumble.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="btnRumble.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="&gt;&gt;cHMacro.Type" xml:space="preserve">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="lbMacroOrder.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;btnLoadP.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnLoadP.ZOrder" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
@ -324,12 +342,6 @@
<data name="pBRtouch.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms"> <data name="pBRtouch.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>Zoom</value> <value>Zoom</value>
</data> </data>
<data name="btnRumble.Text" xml:space="preserve">
<value>Add Rumble</value>
</data>
<data name="btnRecord.Location" type="System.Drawing.Point, System.Drawing">
<value>715, 36</value>
</data>
<data name="btnLightbar.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="btnLightbar.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
@ -345,9 +357,6 @@
<data name="pBLtouch.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="pBLtouch.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="btn5th.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="cBStyle.Items1" xml:space="preserve"> <data name="cBStyle.Items1" xml:space="preserve">
<value>Repeat while held</value> <value>Repeat while held</value>
</data> </data>
@ -366,9 +375,6 @@
<data name="pnlMouseButtons.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="pnlMouseButtons.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="&gt;&gt;lbMacroOrder.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="btnRecord.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnRecord.Size" type="System.Drawing.Size, System.Drawing">
<value>284, 57</value> <value>284, 57</value>
</data> </data>
@ -378,8 +384,8 @@
<data name="&gt;&gt;lbDelayTip.Name" xml:space="preserve"> <data name="&gt;&gt;lbDelayTip.Name" xml:space="preserve">
<value>lbDelayTip</value> <value>lbDelayTip</value>
</data> </data>
<data name="lbMacroOrder.AutoSize" type="System.Boolean, mscorlib"> <data name="lbRecordTip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>True</value> <value>4, 0, 4, 0</value>
</data> </data>
<data name="btn4th.TabIndex" type="System.Int32, mscorlib"> <data name="btn4th.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -387,14 +393,14 @@
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>347, 252</value> <value>347, 252</value>
</data> </data>
<data name="cBStyle.Location" type="System.Drawing.Point, System.Drawing"> <data name="btnSave.TabIndex" type="System.Int32, mscorlib">
<value>771, 220</value> <value>328</value>
</data> </data>
<data name="&gt;&gt;pBLtouch.Parent" xml:space="preserve"> <data name="&gt;&gt;pBLtouch.Parent" xml:space="preserve">
<value>pnlMouseButtons</value> <value>pnlMouseButtons</value>
</data> </data>
<data name="lbMacroOrder.Text" xml:space="preserve"> <data name="cBStyle.Location" type="System.Drawing.Point, System.Drawing">
<value>Macro Order</value> <value>771, 220</value>
</data> </data>
<data name="lVMacros.Size" type="System.Drawing.Size, System.Drawing"> <data name="lVMacros.Size" type="System.Drawing.Size, System.Drawing">
<value>701, 420</value> <value>701, 420</value>
@ -423,6 +429,9 @@
<data name="lbRecordTip.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="lbRecordTip.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value> <value>Top, Right</value>
</data> </data>
<data name="&gt;&gt;cBStyle.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cHMacro.Width" type="System.Int32, mscorlib"> <data name="cHMacro.Width" type="System.Int32, mscorlib">
<value>200</value> <value>200</value>
</data> </data>
@ -441,9 +450,6 @@
<data name="&gt;&gt;btn4th.Parent" xml:space="preserve"> <data name="&gt;&gt;btn4th.Parent" xml:space="preserve">
<value>pnlMouseButtons</value> <value>pnlMouseButtons</value>
</data> </data>
<data name="lbRecordTip.Text" xml:space="preserve">
<value>Use Keyboard/Mouse + Controller 1 to record</value>
</data>
<data name="btnRecord.TabIndex" type="System.Int32, mscorlib"> <data name="btnRecord.TabIndex" type="System.Int32, mscorlib">
<value>322</value> <value>322</value>
</data> </data>
@ -459,9 +465,6 @@
<data name="&gt;&gt;cMSLoadPresets.Name" xml:space="preserve"> <data name="&gt;&gt;cMSLoadPresets.Name" xml:space="preserve">
<value>cMSLoadPresets</value> <value>cMSLoadPresets</value>
</data> </data>
<data name="btnSave.TabIndex" type="System.Int32, mscorlib">
<value>328</value>
</data>
<data name="altTabToolStripMenuItem.Text" xml:space="preserve"> <data name="altTabToolStripMenuItem.Text" xml:space="preserve">
<value>Cycle Programs</value> <value>Cycle Programs</value>
</data> </data>
@ -486,15 +489,15 @@
<data name="btnLoadP.TabIndex" type="System.Int32, mscorlib"> <data name="btnLoadP.TabIndex" type="System.Int32, mscorlib">
<value>332</value> <value>332</value>
</data> </data>
<data name="cMSLoadPresets.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 56</value>
</data>
<data name="lVMacros.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="lVMacros.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value> <value>Top, Bottom, Left, Right</value>
</data> </data>
<data name="&gt;&gt;cBRecordDelays.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cBRecordDelays.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="cBRecordDelays.TabIndex" type="System.Int32, mscorlib">
<value>324</value>
</data>
<data name="lbMacroOrder.TabIndex" type="System.Int32, mscorlib"> <data name="lbMacroOrder.TabIndex" type="System.Int32, mscorlib">
<value>333</value> <value>333</value>
</data> </data>
@ -504,9 +507,6 @@
<data name="&gt;&gt;iLKeys.Type" xml:space="preserve"> <data name="&gt;&gt;iLKeys.Type" xml:space="preserve">
<value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;btnLightbar.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btn4th.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btn4th.ZOrder" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
@ -522,6 +522,9 @@
<data name="&gt;&gt;cBRecordDelays.Type" xml:space="preserve"> <data name="&gt;&gt;cBRecordDelays.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;btnCancel.Name" xml:space="preserve">
<value>btnCancel</value>
</data>
<data name="lbRecordTip.AutoSize" type="System.Boolean, mscorlib"> <data name="lbRecordTip.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -531,18 +534,12 @@
<data name="lbDelayTip.Visible" type="System.Boolean, mscorlib"> <data name="lbDelayTip.Visible" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
</data> </data>
<data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>139, 28</value>
</data>
<data name="lVMacros.Location" type="System.Drawing.Point, System.Drawing"> <data name="lVMacros.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 36</value> <value>4, 36</value>
</data> </data>
<data name="&gt;&gt;pBLtouch.Type" xml:space="preserve"> <data name="&gt;&gt;pBLtouch.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="btnLightbar.Location" type="System.Drawing.Point, System.Drawing">
<value>23, 130</value>
</data>
<data name="cBStyle.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="cBStyle.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
@ -588,9 +585,6 @@
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 28</value> <value>137, 28</value>
</data> </data>
<data name="lbRecordTip.Location" type="System.Drawing.Point, System.Drawing">
<value>412, 9</value>
</data>
<data name="btnLightbar.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="btnLightbar.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value> <value>Top</value>
</data> </data>
@ -612,7 +606,10 @@
<data name="&gt;&gt;btn5th.Parent" xml:space="preserve"> <data name="&gt;&gt;btn5th.Parent" xml:space="preserve">
<value>pnlMouseButtons</value> <value>pnlMouseButtons</value>
</data> </data>
<data name="&gt;&gt;btnCancel.Parent" xml:space="preserve"> <data name="&gt;&gt;btnLoadP.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBStyle.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;altTabToolStripMenuItem.Type" xml:space="preserve"> <data name="&gt;&gt;altTabToolStripMenuItem.Type" xml:space="preserve">
@ -621,8 +618,8 @@
<data name="btnRecord.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="btnRecord.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="&gt;&gt;btnLoadP.Type" xml:space="preserve"> <data name="btnRecord.Location" type="System.Drawing.Point, System.Drawing">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>715, 36</value>
</data> </data>
<data name="&gt;&gt;pBRtouch.Type" xml:space="preserve"> <data name="&gt;&gt;pBRtouch.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@ -633,14 +630,14 @@
<data name="&gt;&gt;btn5th.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btn5th.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="&gt;&gt;iLKeys.Name" xml:space="preserve"> <data name="lbRecordTip.Location" type="System.Drawing.Point, System.Drawing">
<value>iLKeys</value> <value>412, 9</value>
</data> </data>
<data name="btn5th.Location" type="System.Drawing.Point, System.Drawing"> <data name="btn5th.Location" type="System.Drawing.Point, System.Drawing">
<value>52, 48</value> <value>52, 48</value>
</data> </data>
<data name="&gt;&gt;cHMacro.Type" xml:space="preserve"> <data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>715, 2</value>
</data> </data>
<data name="btnRecord.Text" xml:space="preserve"> <data name="btnRecord.Text" xml:space="preserve">
<value>Record</value> <value>Record</value>
@ -648,8 +645,8 @@
<data name="&gt;&gt;btnRecord.Parent" xml:space="preserve"> <data name="&gt;&gt;btnRecord.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="pBRtouch.Location" type="System.Drawing.Point, System.Drawing"> <data name="&gt;&gt;btnLightbar.Type" xml:space="preserve">
<value>203, 130</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="lbRecordTip.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="lbRecordTip.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value> <value>MiddleCenter</value>
@ -660,17 +657,17 @@
<data name="btn5th.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="btn5th.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="&gt;&gt;btnLightbar.ZOrder" xml:space="preserve"> <data name="pBRtouch.Location" type="System.Drawing.Point, System.Drawing">
<value>2</value> <value>203, 130</value>
</data> </data>
<data name="&gt;&gt;lbDelayTip.Parent" xml:space="preserve"> <data name="&gt;&gt;lbDelayTip.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="lbDelayTip.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="btnRumble.Text" xml:space="preserve">
<value>4, 0, 4, 0</value> <value>Add Rumble</value>
</data> </data>
<data name="&gt;&gt;pBLtouch.ZOrder" xml:space="preserve"> <data name="cBRecordDelays.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>324</value>
</data> </data>
<data name="&gt;&gt;lVMacros.Parent" xml:space="preserve"> <data name="&gt;&gt;lVMacros.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -690,6 +687,9 @@
<data name="&gt;&gt;altTabToolStripMenuItem.Name" xml:space="preserve"> <data name="&gt;&gt;altTabToolStripMenuItem.Name" xml:space="preserve">
<value>altTabToolStripMenuItem</value> <value>altTabToolStripMenuItem</value>
</data> </data>
<data name="lbMacroOrder.Text" xml:space="preserve">
<value>Macro Order</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>1000, 462</value> <value>1000, 462</value>
</data> </data>
@ -702,26 +702,23 @@
<data name="&gt;&gt;pnlMouseButtons.Name" xml:space="preserve"> <data name="&gt;&gt;pnlMouseButtons.Name" xml:space="preserve">
<value>pnlMouseButtons</value> <value>pnlMouseButtons</value>
</data> </data>
<data name="&gt;&gt;btnCancel.Name" xml:space="preserve"> <data name="&gt;&gt;btnCancel.Parent" xml:space="preserve">
<value>btnCancel</value> <value>$this</value>
</data> </data>
<data name="btnRumble.TabIndex" type="System.Int32, mscorlib"> <data name="btnRumble.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
</data> </data>
<data name="cHMacro.Text" xml:space="preserve">
<value>Macro Order</value>
</data>
<data name="&gt;&gt;lbDelayTip.Type" xml:space="preserve"> <data name="&gt;&gt;lbDelayTip.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;cBRecordDelays.Parent" xml:space="preserve"> <data name="cBStyle.TabIndex" type="System.Int32, mscorlib">
<value>$this</value> <value>327</value>
</data> </data>
<data name="cBRecordDelays.Text" xml:space="preserve"> <data name="cBRecordDelays.Text" xml:space="preserve">
<value>Record Delays</value> <value>Record Delays</value>
</data> </data>
<data name="&gt;&gt;cBStyle.Type" xml:space="preserve"> <data name="btn5th.TabIndex" type="System.Int32, mscorlib">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>0</value>
</data> </data>
<data name="btnLightbar.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="btnLightbar.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
@ -735,15 +732,15 @@
<data name="&gt;&gt;lVMacros.ZOrder" xml:space="preserve"> <data name="&gt;&gt;lVMacros.ZOrder" xml:space="preserve">
<value>9</value> <value>9</value>
</data> </data>
<data name="btnSaveP.Location" type="System.Drawing.Point, System.Drawing"> <data name="lbRecordTip.Text" xml:space="preserve">
<value>861, 100</value> <value>Use Keyboard/Mouse + Controller 1 to record</value>
</data> </data>
<data name="iLKeys.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="iLKeys.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAQ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAQ
CgAAAk1TRnQBSQFMAgEBAwEAAZwBAQHEAQEBEAEAARABAAT/AQkBEAj/AUIBTQE2AQQGAAE2AQQCAAEo CgAAAk1TRnQBSQFMAgEBAwEAAZwBAQHIAQEBEAEAARABAAT/AQkBEAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@ -789,6 +786,9 @@
Cw== Cw==
</value> </value>
</data> </data>
<data name="&gt;&gt;cBRecordDelays.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="pBRtouch.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="pBRtouch.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
@ -807,8 +807,8 @@
<data name="lbDelayTip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms"> <data name="lbDelayTip.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="lbDelayTip.Size" type="System.Drawing.Size, System.Drawing"> <data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>283, 41</value> <value>139, 28</value>
</data> </data>
<data name="altTabToolStripMenuItem.ToolTipText" xml:space="preserve"> <data name="altTabToolStripMenuItem.ToolTipText" xml:space="preserve">
<value>Edit the Wait to change the cycle rate</value> <value>Edit the Wait to change the cycle rate</value>
@ -831,8 +831,8 @@
<data name="&gt;&gt;btnSave.ZOrder" xml:space="preserve"> <data name="&gt;&gt;btnSave.ZOrder" xml:space="preserve">
<value>11</value> <value>11</value>
</data> </data>
<data name="&gt;&gt;cBStyle.Parent" xml:space="preserve"> <data name="lbRecordTip.Size" type="System.Drawing.Size, System.Drawing">
<value>$this</value> <value>294, 17</value>
</data> </data>
<metadata name="openPresets.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="openPresets.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>238, 17</value> <value>238, 17</value>
@ -849,7 +849,4 @@
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>ja</value>
</metadata>
</root> </root>

View File

@ -40,14 +40,14 @@
// //
// label4 // label4
// //
resources.ApplyResources(this.label4, "label4");
this.label4.ForeColor = System.Drawing.SystemColors.GrayText; this.label4.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.label4, "label4");
this.label4.Name = "label4"; this.label4.Name = "label4";
// //
// label3 // label3
// //
resources.ApplyResources(this.label3, "label3");
this.label3.ForeColor = System.Drawing.SystemColors.GrayText; this.label3.ForeColor = System.Drawing.SystemColors.GrayText;
resources.ApplyResources(this.label3, "label3");
this.label3.Name = "label3"; this.label3.Name = "label3";
// //
// bnAppdataFolder // bnAppdataFolder

View File

@ -127,7 +127,7 @@
<value>No elimines los otros ajustes aún</value> <value>No elimines los otros ajustes aún</value>
</data> </data>
<data name="label3.Text" xml:space="preserve"> <data name="label3.Text" xml:space="preserve">
<value>Para aquellos que prefieren un programa portable Nota: esta opción no funciona si esta en una carpeta admin son o sin UAC</value> <value>Para aquellos que prefieren un programa portable. Nota: esta opción no funciona si esta en una carpeta admin con o sin UAC</value>
</data> </data>
<data name="label4.Text" xml:space="preserve"> <data name="label4.Text" xml:space="preserve">
<value>Para aquellos que prefieren una instalación de ajustes regular se guarda en %appdata%/ds4tool</value> <value>Para aquellos que prefieren una instalación de ajustes regular se guarda en %appdata%/ds4tool</value>

View File

@ -118,250 +118,226 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lbMultiSaves.Location" type="System.Drawing.Point, System.Drawing"> <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 10</value> <value>206, 89</value>
</data> </data>
<data name="&gt;&gt;bnPrgmFolder.Name" xml:space="preserve"> <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>bnPrgmFolder</value> <value>177, 69</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Name" xml:space="preserve">
<value>cBDeleteOther</value>
</data>
<data name="lbPickWhere.Size" type="System.Drawing.Size, System.Drawing">
<value>515, 33</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cBDeleteOther.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="&gt;&gt;cBDeleteOther.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lbMultiSaves.Text" xml:space="preserve">
<value>Multiple save locations detected</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 5, 5, 5</value>
</data>
<data name="lbMultiSaves.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="bnAppdataFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 28</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label4.TabIndex" type="System.Int32, mscorlib"> <data name="label4.TabIndex" type="System.Int32, mscorlib">
<value>9</value> <value>9</value>
</data> </data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing"> <data name="label4.Text" xml:space="preserve">
<value>260, 85</value> <value>For those who prefer a regular install Settings saved at %appdata%/DS4Windows</value>
</data> </data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>8, 16</value> <value>TopCenter</value>
</data> </data>
<data name="cBDeleteOther.Text" xml:space="preserve"> <data name="&gt;&gt;label4.Name" xml:space="preserve">
<value>Don't Delete the <value>label4</value>
other settings yet</value>
</data> </data>
<data name="&gt;&gt;lbMultiSaves.Parent" xml:space="preserve"> <data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms"> <data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>CenterScreen</value> <value>1</value>
</data>
<data name="label4.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data> </data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing"> <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>7, 110</value> <value>5, 89</value>
</data> </data>
<data name="bnPrgmFolder.Location" type="System.Drawing.Point, System.Drawing"> <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 78</value> <value>195, 69</value>
</data> </data>
<data name="&gt;&gt;bnPrgmFolder.ZOrder" xml:space="preserve"> <data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>6</value> <value>10</value>
</data> </data>
<data name="&gt;&gt;lbMultiSaves.ZOrder" xml:space="preserve"> <data name="label3.Text" xml:space="preserve">
<value>2</value> <value>For those who prefer a portable program Note: this option does not work if in an admin folder w/o UAC</value>
</data>
<data name="&gt;&gt;bnPrgmFolder.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="cBDeleteOther.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="lbMultiSaves.Size" type="System.Drawing.Size, System.Drawing">
<value>209, 17</value>
</data>
<data name="cBDeleteOther.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbPickWhere.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data> </data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value> <value>TopCenter</value>
</data> </data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="bnAppdataFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>222, 63</value>
</data>
<data name="bnAppdataFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="bnAppdataFolder.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="bnAppdataFolder.Text" xml:space="preserve">
<value>Appdata</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.Name" xml:space="preserve">
<value>bnAppdataFolder</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.Parent" xml:space="preserve"> <data name="&gt;&gt;bnAppdataFolder.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="&gt;&gt;bnAppdataFolder.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="bnPrgmFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>32, 63</value>
</data>
<data name="bnPrgmFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="bnPrgmFolder.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="bnPrgmFolder.Text" xml:space="preserve">
<value>Program Folder</value>
</data>
<data name="&gt;&gt;bnPrgmFolder.Name" xml:space="preserve">
<value>bnPrgmFolder</value>
</data>
<data name="&gt;&gt;bnPrgmFolder.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bnPrgmFolder.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;bnPrgmFolder.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lbPickWhere.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="lbPickWhere.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 33</value>
</data>
<data name="lbPickWhere.Size" type="System.Drawing.Size, System.Drawing">
<value>386, 27</value>
</data>
<data name="lbPickWhere.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="lbPickWhere.Text" xml:space="preserve">
<value>Pick where you want settings and profiles to be saved</value>
</data>
<data name="lbPickWhere.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="&gt;&gt;lbPickWhere.Name" xml:space="preserve">
<value>lbPickWhere</value>
</data>
<data name="&gt;&gt;lbPickWhere.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbPickWhere.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;lbPickWhere.ZOrder" xml:space="preserve"> <data name="&gt;&gt;lbPickWhere.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="&gt;&gt;label4.Name" xml:space="preserve"> <data name="lbMultiSaves.AutoSize" type="System.Boolean, mscorlib">
<value>label4</value> <value>True</value>
</data> </data>
<data name="label4.Text" xml:space="preserve"> <data name="lbMultiSaves.Location" type="System.Drawing.Point, System.Drawing">
<value>For those who prefer a regular install Settings saved at %appdata%/ds4tool</value> <value>9, 8</value>
</data> </data>
<data name="&gt;&gt;bnPrgmFolder.Parent" xml:space="preserve"> <data name="lbMultiSaves.Size" type="System.Drawing.Size, System.Drawing">
<value>$this</value> <value>159, 13</value>
</data>
<data name="lbPickWhere.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="lbMultiSaves.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="lbPickWhere.Text" xml:space="preserve">
<value>Pick where you want settings and profiles to be saved</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>For those who prefer a portable program Note: this option does not work if in an admin folder w/o UAC</value>
</data>
<data name="label3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="&gt;&gt;label4.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="label4.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="&gt;&gt;label4.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="bnPrgmFolder.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="cBDeleteOther.Location" type="System.Drawing.Point, System.Drawing">
<value>375, 0</value>
</data>
<data name="&gt;&gt;label4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="lbPickWhere.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="bnPrgmFolder.Text" xml:space="preserve">
<value>Program Folder</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.Name" xml:space="preserve">
<value>bnAppdataFolder</value>
</data>
<data name="cBDeleteOther.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="lbPickWhere.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data>
<data name="&gt;&gt;label3.Name" xml:space="preserve">
<value>label3</value>
</data>
<data name="bnAppdataFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>296, 78</value>
</data> </data>
<data name="lbMultiSaves.TabIndex" type="System.Int32, mscorlib"> <data name="lbMultiSaves.TabIndex" type="System.Int32, mscorlib">
<value>10</value> <value>10</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="lbMultiSaves.Text" xml:space="preserve">
<value>SaveWhere</value> <value>Multiple save locations detected</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="lbMultiSaves.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>DS4Windows</value> <value>TopCenter</value>
<comment>@Invariant</comment></data>
<data name="bnAppdataFolder.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;lbPickWhere.Name" xml:space="preserve">
<value>lbPickWhere</value>
</data>
<data name="label3.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>275, 110</value>
</data>
<data name="&gt;&gt;lbPickWhere.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>236, 85</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="bnAppdataFolder.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="lbMultiSaves.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;lbPickWhere.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="bnPrgmFolder.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="&gt;&gt;lbMultiSaves.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bnAppdataFolder.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbMultiSaves.Name" xml:space="preserve">
<value>lbMultiSaves</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>519, 167</value>
</data> </data>
<data name="lbMultiSaves.Visible" type="System.Boolean, mscorlib"> <data name="lbMultiSaves.Visible" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve"> <data name="&gt;&gt;lbMultiSaves.Name" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>lbMultiSaves</value>
</data> </data>
<data name="lbPickWhere.Location" type="System.Drawing.Point, System.Drawing"> <data name="&gt;&gt;lbMultiSaves.Type" xml:space="preserve">
<value>1, 41</value>
</data>
<data name="bnPrgmFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>187, 28</value>
</data>
<data name="&gt;&gt;label3.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="cBDeleteOther.Size" type="System.Drawing.Size, System.Drawing">
<value>139, 38</value>
</data>
<data name="&gt;&gt;label3.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="bnAppdataFolder.Text" xml:space="preserve"> <data name="&gt;&gt;lbMultiSaves.Parent" xml:space="preserve">
<value>Appdata</value> <value>$this</value>
</data>
<data name="&gt;&gt;lbMultiSaves.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cBDeleteOther.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="cBDeleteOther.Location" type="System.Drawing.Point, System.Drawing">
<value>281, 0</value>
</data>
<data name="cBDeleteOther.Size" type="System.Drawing.Size, System.Drawing">
<value>106, 30</value>
</data>
<data name="cBDeleteOther.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="cBDeleteOther.Text" xml:space="preserve">
<value>Don't Delete the
other settings yet</value>
</data>
<data name="cBDeleteOther.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Name" xml:space="preserve">
<value>cBDeleteOther</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;cBDeleteOther.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cBDeleteOther.ZOrder" xml:space="preserve">
<value>0</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>zh-Hans</value> <value>6, 13</value>
</metadata> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>389, 136</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>DS4Windows</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>SaveWhere</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root> </root>

View File

@ -117,35 +117,78 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="label4.Location" type="System.Drawing.Point, System.Drawing">
<value>206, 89</value>
</data>
<data name="label4.Size" type="System.Drawing.Size, System.Drawing">
<value>177, 69</value>
</data>
<data name="label4.Text" xml:space="preserve"> <data name="label4.Text" xml:space="preserve">
<value>如果使用安装包安装,配置文件将保存至 %appdata%/ds4tool</value> <value>如果使用安装包安装,配置文件将保存至 %appdata%/ds4tool</value>
</data> </data>
<data name="label3.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 89</value>
</data>
<data name="label3.Size" type="System.Drawing.Size, System.Drawing">
<value>195, 69</value>
</data>
<data name="label3.Text" xml:space="preserve"> <data name="label3.Text" xml:space="preserve">
<value>请注意如果在UAC保护的文件夹内运行本程序这个选项不会生效。</value> <value>请注意如果在UAC保护的文件夹内运行本程序这个选项不会生效。</value>
</data> </data>
<data name="bnAppdataFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>222, 63</value>
</data>
<data name="bnAppdataFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="bnAppdataFolder.Text" xml:space="preserve"> <data name="bnAppdataFolder.Text" xml:space="preserve">
<value>系统文件夹</value> <value>系统文件夹</value>
</data> </data>
<data name="bnPrgmFolder.Location" type="System.Drawing.Point, System.Drawing">
<value>32, 63</value>
</data>
<data name="bnPrgmFolder.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 23</value>
</data>
<data name="bnPrgmFolder.Text" xml:space="preserve"> <data name="bnPrgmFolder.Text" xml:space="preserve">
<value>程序所在文件夹</value> <value>程序所在文件夹</value>
</data> </data>
<data name="lbPickWhere.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 33</value>
</data>
<data name="lbPickWhere.Size" type="System.Drawing.Size, System.Drawing">
<value>386, 27</value>
</data>
<data name="lbPickWhere.Text" xml:space="preserve"> <data name="lbPickWhere.Text" xml:space="preserve">
<value>选择将要保存配置文件的位置。</value> <value>选择将要保存配置文件的位置。</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <data name="lbMultiSaves.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 8</value>
</data>
<data name="lbMultiSaves.Size" type="System.Drawing.Size, System.Drawing"> <data name="lbMultiSaves.Size" type="System.Drawing.Size, System.Drawing">
<value>145, 17</value> <value>147, 13</value>
</data> </data>
<data name="lbMultiSaves.Text" xml:space="preserve"> <data name="lbMultiSaves.Text" xml:space="preserve">
<value>检测到多个配置文件目录。</value> <value>检测到多个配置文件目录。</value>
</data> </data>
<data name="cBDeleteOther.Location" type="System.Drawing.Point, System.Drawing"> <data name="cBDeleteOther.Location" type="System.Drawing.Point, System.Drawing">
<value>349, 6</value> <value>262, 5</value>
</data> </data>
<data name="cBDeleteOther.Size" type="System.Drawing.Size, System.Drawing"> <data name="cBDeleteOther.Size" type="System.Drawing.Size, System.Drawing">
<value>167, 21</value> <value>166, 17</value>
</data> </data>
<data name="cBDeleteOther.Text" xml:space="preserve"> <data name="cBDeleteOther.Text" xml:space="preserve">
<value>目前请不要删除其它设置。</value> <value>目前请不要删除其它设置。</value>
</data> </data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>389, 136</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
</root> </root>

View File

@ -139,7 +139,7 @@
<value>Grabar una macro</value> <value>Grabar una macro</value>
</data> </data>
<data name="cBActions.Items2" xml:space="preserve"> <data name="cBActions.Items2" xml:space="preserve">
<value>Lanzar un programa</value> <value>Abrir un programa</value>
</data> </data>
<data name="cBActions.Items3" xml:space="preserve"> <data name="cBActions.Items3" xml:space="preserve">
<value>Cargar un perfil</value> <value>Cargar un perfil</value>
@ -151,37 +151,37 @@
<value>Comprobar batería</value> <value>Comprobar batería</value>
</data> </data>
<data name="cbLightbarBatt.Text" xml:space="preserve"> <data name="cbLightbarBatt.Text" xml:space="preserve">
<value>a través del barra de luz</value> <value>Por medio de la barra de luz</value>
</data> </data>
<data name="cBMacroScanCode.Text" xml:space="preserve"> <data name="cBMacroScanCode.Text" xml:space="preserve">
<value>Escanear del código</value> <value>Escanear del código</value>
</data> </data>
<data name="cBNotificationBatt.Text" xml:space="preserve"> <data name="cBNotificationBatt.Text" xml:space="preserve">
<value>via notificación</value> <value>Por medio de notificación</value>
</data> </data>
<data name="cBPressRelease.Items" xml:space="preserve"> <data name="cBPressRelease.Items" xml:space="preserve">
<value>Oprimiendo trigger unload</value> <value>Presionar gatillo de descarga</value>
</data> </data>
<data name="cBPressRelease.Items1" xml:space="preserve"> <data name="cBPressRelease.Items1" xml:space="preserve">
<value>Soltando el trigger unload</value> <value>Soltar gatillo de descarga</value>
</data> </data>
<data name="cHTrigger.Text" xml:space="preserve"> <data name="cHTrigger.Text" xml:space="preserve">
<value>Gatillo</value> <value>Gatillo</value>
</data> </data>
<data name="cHUnloadTrigger.Text" xml:space="preserve"> <data name="cHUnloadTrigger.Text" xml:space="preserve">
<value>Liberar Gatillo</value> <value>Soltar Gatillo</value>
</data> </data>
<data name="lbArg.Text" xml:space="preserve"> <data name="lbArg.Text" xml:space="preserve">
<value>Argumentos</value> <value>Argumentos</value>
</data> </data>
<data name="lbDTapDVR.Text" xml:space="preserve"> <data name="lbDTapDVR.Text" xml:space="preserve">
<value>Oprimir el gatillo doblemente</value> <value>Presionar el gatillo doblemente</value>
</data> </data>
<data name="lbHoldDVR.Text" xml:space="preserve"> <data name="lbHoldDVR.Text" xml:space="preserve">
<value>Dejar oprimido el gatillo</value> <value>Dejar presionado el gatillo</value>
</data> </data>
<data name="lbHoldFor.Text" xml:space="preserve"> <data name="lbHoldFor.Text" xml:space="preserve">
<value>Dejar oprimido por</value> <value>Dejar presionado por</value>
</data> </data>
<data name="lbName.Text" xml:space="preserve"> <data name="lbName.Text" xml:space="preserve">
<value>Nombre</value> <value>Nombre</value>
@ -190,9 +190,9 @@
<value>segundos</value> <value>segundos</value>
</data> </data>
<data name="lbTapDVR.Text" xml:space="preserve"> <data name="lbTapDVR.Text" xml:space="preserve">
<value>Oprimir el gatillo</value> <value>Presionar el gatillo</value>
</data> </data>
<data name="lbUnloadTipKey.Text" xml:space="preserve"> <data name="lbUnloadTipKey.Text" xml:space="preserve">
<value>Desligar tecla por</value> <value>Desactivar tecla por</value>
</data> </data>
</root> </root>

View File

@ -1,30 +1,31 @@
using System; using System;
using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using System.Net; using System.Net;
using System.IO; using System.IO;
using System.IO.Compression; using System.IO.Compression;
using System.Diagnostics; using System.Diagnostics;
using System.Runtime.InteropServices; //using NonFormTimer = System.Threading.Timer;
using System.Security.Principal; using NonFormTimer = System.Timers.Timer;
using System.Security.Permissions; using System.Threading.Tasks;
using System.Reflection; using static DS4Windows.Global;
namespace DS4Windows namespace DS4Windows
{ {
public partial class WelcomeDialog : Form public partial class WelcomeDialog : Form
{ {
public WelcomeDialog() public WelcomeDialog(bool loadConfig=false)
{ {
if (loadConfig)
{
Global.FindConfigLocation();
Global.Load();
Global.SetCulture(Global.UseLang);
}
InitializeComponent(); InitializeComponent();
Icon = Properties.Resources.DS4; Icon = Properties.Resources.DS4;
} }
private void bnFinish_Click(object sender, EventArgs e) private void bnFinish_Click(object sender, EventArgs e)
@ -42,7 +43,7 @@ namespace DS4Windows
WebClient wb = new WebClient(); WebClient wb = new WebClient();
if (!driverinstalling) if (!driverinstalling)
{ {
wb.DownloadFileAsync(new Uri("http://ds4windows.com/Files/Virtual Bus Driver.zip"), exepath + "\\VBus.zip"); wb.DownloadFileAsync(new Uri("http://23.239.26.40/ds4windows/files/Virtual Bus Driver.zip"), exepath + "\\VBus.zip");
wb.DownloadProgressChanged += wb_DownloadProgressChanged; wb.DownloadProgressChanged += wb_DownloadProgressChanged;
wb.DownloadFileCompleted += wb_DownloadFileCompleted; wb.DownloadFileCompleted += wb_DownloadFileCompleted;
driverinstalling = true; driverinstalling = true;
@ -54,7 +55,6 @@ namespace DS4Windows
bnStep1.Text = Properties.Resources.Downloading.Replace("*number*", e.ProgressPercentage.ToString()); bnStep1.Text = Properties.Resources.Downloading.Replace("*number*", e.ProgressPercentage.ToString());
} }
string exepath = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName;
private void wb_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) private void wb_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{ {
bnStep1.Text = Properties.Resources.OpeningInstaller; bnStep1.Text = Properties.Resources.OpeningInstaller;
@ -80,10 +80,15 @@ namespace DS4Windows
} }
catch { Process.Start(exepath + "\\Virtual Bus Driver"); } catch { Process.Start(exepath + "\\Virtual Bus Driver"); }
Timer timer = new Timer(); /*Timer timer = new Timer();
timer.Start(); timer.Start();
timer.Tick += timer_Tick; timer.Tick += timer_Tick;
*/
NonFormTimer timer = new NonFormTimer();
timer.Elapsed += timer_Tick;
timer.Start();
} }
bool waitForFile; bool waitForFile;
DateTime waitFileCheck; DateTime waitFileCheck;
private void timer_Tick(object sender, EventArgs e) private void timer_Tick(object sender, EventArgs e)
@ -97,24 +102,27 @@ namespace DS4Windows
waitFileCheck = DateTime.UtcNow; waitFileCheck = DateTime.UtcNow;
return; return;
} }
if (waitForFile && waitFileCheck + TimeSpan.FromMinutes(2) < DateTime.UtcNow) if (waitForFile && waitFileCheck + TimeSpan.FromMinutes(2) < DateTime.UtcNow)
{ {
bnStep1.Text = Properties.Resources.InstallFailed;
Process.Start(exepath + "\\Virtual Bus Driver"); Process.Start(exepath + "\\Virtual Bus Driver");
File.Delete(exepath + "\\VBus.zip"); File.Delete(exepath + "\\VBus.zip");
((Timer)sender).Stop(); ((NonFormTimer)sender).Stop();
this.BeginInvoke((Action)(() => { bnStep1.Text = Properties.Resources.InstallFailed; }), null);
return; return;
} }
else if (waitForFile) else if (waitForFile)
return; return;
string log = File.ReadAllText(exepath + "\\ScpDriver.log"); string log = File.ReadAllText(exepath + "\\ScpDriver.log");
if (log.Contains("Install Succeeded")) if (log.Contains("Install Succeeded"))
bnStep1.Text = Properties.Resources.InstallComplete; this.BeginInvoke((Action)(() => { bnStep1.Text = Properties.Resources.InstallComplete; }));
else else
{ {
bnStep1.Text = Properties.Resources.InstallFailed; this.BeginInvoke((Action)(() => { bnStep1.Text = Properties.Resources.InstallFailed; }));
Process.Start(exepath + "\\Virtual Bus Driver"); Process.Start(exepath + "\\Virtual Bus Driver");
} }
try try
{ {
File.Delete(exepath + "\\ScpDriver.exe"); File.Delete(exepath + "\\ScpDriver.exe");
@ -123,15 +131,15 @@ namespace DS4Windows
Directory.Delete(exepath + "\\DIFxAPI", true); Directory.Delete(exepath + "\\DIFxAPI", true);
} }
catch { } catch { }
File.Delete(exepath + "\\VBus.zip");
((Timer)sender).Stop();
}
}
File.Delete(exepath + "\\VBus.zip");
((NonFormTimer)sender).Stop();
}
}
private void button2_Click(object sender, EventArgs e) private void button2_Click(object sender, EventArgs e)
{ {
Process.Start("http://www.microsoft.com/hardware/en-us/d/xbox-360-controller-for-windows"); Process.Start("http://www.microsoft.com/accessories/en-gb/d/xbox-360-controller-for-windows");
} }
} }
} }

View File

@ -121,20 +121,20 @@
<value>Paso 1: Instalar el Driver DS4</value> <value>Paso 1: Instalar el Driver DS4</value>
</data> </data>
<data name="button2.Text" xml:space="preserve"> <data name="button2.Text" xml:space="preserve">
<value>Paso 2: Si usas Windows 7 o inferior, instala el Driver 360</value> <value>Paso 2: Si usas Windows 7 o inferior, instala el Driver de Xbox 360</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>135, 13</value> <value>135, 13</value>
</data> </data>
<data name="linkBluetoothSettings.Text" xml:space="preserve"> <data name="linkBluetoothSettings.Text" xml:space="preserve">
<value>Configuracion de Bluetooth</value> <value>Configuración del Bluetooth</value>
</data> </data>
<data name="label1.Text" xml:space="preserve"> <data name="label1.Text" xml:space="preserve">
<value>Si esta ventana reaparece despues de instalar, necesitas reiniciar tu PC o esperar 10-15 minutos a que Windows reconozca el driver</value> <value>Si esta ventana reaparece despues de instalar, necesitas reiniciar tu PC o esperar 10-15 minutos a que Windows reconozca el driver</value>
</data> </data>
<data name="label2.Text" xml:space="preserve"> <data name="label2.Text" xml:space="preserve">
<value>Si usas un Controlador X360 en esta PC, puedes omitir esto</value> <value>Si usas un Controlador de Xbox 360 en esta PC, puedes omitir esto</value>
</data> </data>
<data name="bnFinish.Text" xml:space="preserve"> <data name="bnFinish.Text" xml:space="preserve">
<value>Finalizado</value> <value>Finalizado</value>
@ -143,12 +143,12 @@
<value>Bienvenido a DS4Windows</value> <value>Bienvenido a DS4Windows</value>
</data> </data>
<data name="labelBluetooth.Text" xml:space="preserve"> <data name="labelBluetooth.Text" xml:space="preserve">
<value>Para configurar el bluetooth (opcional): Mantenga presionado el botón PS y Share durante 3 segundos. La luz del controlador comenzará a parpadear.</value> <value>Para configurar el bluetooth (opcional): Mantenga presionado el botón PS y Share durante 3 segundos. La luz del control comenzará a parpadear.</value>
</data> </data>
<data name="labelUSB.Text" xml:space="preserve"> <data name="labelUSB.Text" xml:space="preserve">
<value>Paso 3: Para conectar el control DS4 por medio de cable usb sólo debe conectar el cable microusb en el DS4 y el usb común en la PC.</value> <value>Paso 3: Para conectar el control DS4 por medio de un cable USB sólo debe conectar el cable micro USB en el DS4 y el USB común en la PC.</value>
</data> </data>
<data name="labelBluetooth2.Text" xml:space="preserve"> <data name="labelBluetooth2.Text" xml:space="preserve">
<value>Una vez que esté parpadeando, vaya a Configuración de Bluetooth y conéctese al "Wireless Controller". Si le pide un código de emparejamiento, utilice el "0000". Una vez emparejado, el controlador estará listo. ¡A divertirse!</value> <value>Una vez que esté parpadeando, vaya a Configuración del Bluetooth y conéctese al "Wireless Controller". Si le pide un código de emparejamiento, utilice el "0000". Una vez emparejado, el control estará listo. ¡A divertirse!</value>
</data> </data>
</root> </root>

View File

@ -127,56 +127,59 @@
<data name="&gt;&gt;linkBluetoothSettings.ZOrder" xml:space="preserve"> <data name="&gt;&gt;linkBluetoothSettings.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <data name="&gt;&gt;labelBluetooth2.Type" xml:space="preserve">
<data name="labelBluetooth.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>4, 0, 4, 0</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bnFinish.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnFinish.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 544</value> <value>146, 544</value>
</data> </data>
<data name="labelUSB.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="labelBluetooth2.Size" type="System.Drawing.Size, System.Drawing"> <data name="labelBluetooth2.Size" type="System.Drawing.Size, System.Drawing">
<value>390, 80</value> <value>390, 80</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkBluetoothSettings.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="linkBluetoothSettings.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value> <value>Bottom</value>
</data> </data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;button2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;button2.ZOrder" xml:space="preserve">
<value>3</value> <value>3</value>
</data> </data>
<data name="bnFinish.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="bnFinish.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>394, 579</value> <value>label1</value>
</data> </data>
<data name="&gt;&gt;labelUSB.ZOrder" xml:space="preserve"> <data name="&gt;&gt;labelUSB.ZOrder" xml:space="preserve">
<value>8</value> <value>8</value>
</data> </data>
<data name="&gt;&gt;labelBluetooth.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 5, 5, 5</value> <value>5, 5, 5, 5</value>
</data> </data>
<data name="&gt;&gt;label1.Name" xml:space="preserve"> <data name="labelBluetooth2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>label1</value> <value>Bottom, Left, Right</value>
</data>
<data name="bnFinish.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data> </data>
<data name="pictureBox1.InitialImage" type="System.Resources.ResXNullRef, System.Windows.Forms"> <data name="pictureBox1.InitialImage" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value /> <value />
</data> </data>
<data name="button2.Text" xml:space="preserve"> <data name="&gt;&gt;linkBluetoothSettings.Type" xml:space="preserve">
<value>Step 2: If on Windows 7 or below, Install 360 Driver</value> <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bnFinish.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="bnStep1.Size" type="System.Drawing.Size, System.Drawing">
<value>324, 29</value>
</data> </data>
<data name="bnStep1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="bnStep1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;labelBluetooth2.Name" xml:space="preserve"> <data name="&gt;&gt;labelBluetooth2.Name" xml:space="preserve">
<value>labelBluetooth2</value> <value>labelBluetooth2</value>
</data> </data>
@ -186,13 +189,8 @@
<data name="&gt;&gt;button2.Parent" xml:space="preserve"> <data name="&gt;&gt;button2.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="labelBluetooth.Text" xml:space="preserve"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>To set up bluetooth (optional): <value>120, 120</value>
Hold the PS Button and Share for 3 seconds
The lightbar will begin to double flash</value>
</data>
<data name="labelBluetooth.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data> </data>
<data name="&gt;&gt;pictureBox1.Name" xml:space="preserve"> <data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
<value>pictureBox1</value> <value>pictureBox1</value>
@ -200,23 +198,23 @@ The lightbar will begin to double flash</value>
<data name="labelUSB.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="labelUSB.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value> <value>Top, Left, Right</value>
</data> </data>
<data name="&gt;&gt;labelBluetooth2.Type" xml:space="preserve"> <data name="&gt;&gt;bnStep1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="labelUSB.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>TopCenter</value> <value>2</value>
</data> </data>
<data name="labelUSB.Size" type="System.Drawing.Size, System.Drawing"> <data name="labelUSB.Size" type="System.Drawing.Size, System.Drawing">
<value>391, 49</value> <value>391, 49</value>
</data> </data>
<data name="labelBluetooth.Size" type="System.Drawing.Size, System.Drawing"> <data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>390, 49</value> <value>$this</value>
</data> </data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="&gt;&gt;bnFinish.Name" xml:space="preserve">
<value>TopCenter</value> <value>bnFinish</value>
</data> </data>
<data name="labelBluetooth.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkBluetoothSettings.TabIndex" type="System.Int32, mscorlib">
<value>1, 223</value> <value>4</value>
</data> </data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>2</value> <value>2</value>
@ -224,8 +222,8 @@ The lightbar will begin to double flash</value>
<data name="&gt;&gt;bnFinish.Parent" xml:space="preserve"> <data name="&gt;&gt;bnFinish.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="bnFinish.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="&gt;&gt;linkBluetoothSettings.Name" xml:space="preserve">
<value>Bottom</value> <value>linkBluetoothSettings</value>
</data> </data>
<data name="label1.TabIndex" type="System.Int32, mscorlib"> <data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
@ -239,8 +237,8 @@ The lightbar will begin to double flash</value>
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms"> <data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>StretchImage</value> <value>StretchImage</value>
</data> </data>
<data name="&gt;&gt;bnFinish.Name" xml:space="preserve"> <data name="&gt;&gt;bnStep1.Parent" xml:space="preserve">
<value>bnFinish</value> <value>$this</value>
</data> </data>
<data name="bnFinish.TabIndex" type="System.Int32, mscorlib"> <data name="bnFinish.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
@ -248,18 +246,15 @@ The lightbar will begin to double flash</value>
<data name="button2.TabIndex" type="System.Int32, mscorlib"> <data name="button2.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
<data name="labelBluetooth.TabIndex" type="System.Int32, mscorlib"> <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3</value> <value>1, 40</value>
</data> </data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing"> <data name="&gt;&gt;labelUSB.Type" xml:space="preserve">
<value>120, 120</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;label2.Type" xml:space="preserve"> <data name="&gt;&gt;label2.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing"> <data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 298</value> <value>45, 298</value>
</data> </data>
@ -275,36 +270,33 @@ The lightbar will begin to double flash</value>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve"> <data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="&gt;&gt;linkBluetoothSettings.Type" xml:space="preserve"> <data name="&gt;&gt;bnFinish.ZOrder" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>5</value>
</data>
<data name="pictureBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom</value>
</data> </data>
<data name="&gt;&gt;bnFinish.Type" xml:space="preserve"> <data name="&gt;&gt;bnFinish.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="bnStep1.Text" xml:space="preserve">
<value>Step 1: Install the DS4 Driver</value>
</data>
<data name="bnFinish.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnFinish.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 29</value> <value>94, 29</value>
</data> </data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing"> <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>0, 132</value> <value>CenterScreen</value>
</data> </data>
<data name="labelUSB.TabIndex" type="System.Int32, mscorlib"> <data name="&gt;&gt;bnStep1.Name" xml:space="preserve">
<value>3</value> <value>bnStep1</value>
</data>
<data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data> </data>
<data name="pictureBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="pictureBox1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="linkBluetoothSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>211, 466</value>
</data>
<data name="labelBluetooth2.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelBluetooth2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 466</value> <value>1, 466</value>
</data> </data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bnStep1.ZOrder" xml:space="preserve"> <data name="&gt;&gt;bnStep1.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
@ -314,17 +306,14 @@ The lightbar will begin to double flash</value>
<data name="linkBluetoothSettings.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="linkBluetoothSettings.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value> <value>4, 0, 4, 0</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve"> <data name="labelBluetooth.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>WelcomeDialog</value> <value>4, 0, 4, 0</value>
</data>
<data name="&gt;&gt;labelBluetooth.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing"> <data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>306, 165</value> <value>306, 165</value>
</data> </data>
<data name="&gt;&gt;labelUSB.Type" xml:space="preserve"> <data name="pictureBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>Bottom</value>
</data> </data>
<data name="&gt;&gt;button2.Type" xml:space="preserve"> <data name="&gt;&gt;button2.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
@ -338,35 +327,32 @@ The lightbar will begin to double flash</value>
<data name="&gt;&gt;label2.Parent" xml:space="preserve"> <data name="&gt;&gt;label2.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
</data> </data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="bnStep1.Size" type="System.Drawing.Size, System.Drawing">
<value>Top, Left, Right</value> <value>324, 29</value>
</data> </data>
<data name="label2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>TopCenter</value> <value>4, 0, 4, 0</value>
</data>
<data name="&gt;&gt;labelUSB.Name" xml:space="preserve">
<value>labelUSB</value>
</data> </data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing"> <data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 101</value> <value>36, 101</value>
</data> </data>
<data name="&gt;&gt;linkBluetoothSettings.Name" xml:space="preserve">
<value>linkBluetoothSettings</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>
</data>
<data name="labelBluetooth2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="labelBluetooth2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value> <value>4, 0, 4, 0</value>
</data> </data>
<data name="linkBluetoothSettings.TabIndex" type="System.Int32, mscorlib"> <data name="label2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>4</value> <value>TopCenter</value>
</data>
<data name="&gt;&gt;labelBluetooth.ZOrder" xml:space="preserve">
<value>1</value>
</data> </data>
<data name="&gt;&gt;label2.Name" xml:space="preserve"> <data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value> <value>label2</value>
</data> </data>
<data name="&gt;&gt;bnStep1.Type" xml:space="preserve"> <data name="labelBluetooth.Size" type="System.Drawing.Size, System.Drawing">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>390, 49</value>
</data>
<data name="labelBluetooth2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data> </data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing"> <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>392, 57</value> <value>392, 57</value>
@ -374,15 +360,15 @@ The lightbar will begin to double flash</value>
<data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 17</value> <value>123, 17</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>WelcomeDialog</value>
</data>
<data name="labelBluetooth.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 223</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve"> <data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>6</value> <value>6</value>
</data> </data>
<data name="bnStep1.Text" xml:space="preserve">
<value>Step 1: Install the DS4 Driver</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 40</value>
</data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Welcome to DS4Windows</value> <value>Welcome to DS4Windows</value>
</data> </data>
@ -398,31 +384,33 @@ Once paired, you're ready. Have fun!</value>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing"> <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>394, 28</value> <value>394, 28</value>
</data> </data>
<data name="&gt;&gt;bnStep1.Parent" xml:space="preserve"> <data name="labelBluetooth.Text" xml:space="preserve">
<value>$this</value> <value>To set up bluetooth (optional):
Hold the PS Button and Share for 3 seconds
The lightbar will begin to double flash</value>
</data> </data>
<data name="linkBluetoothSettings.AutoSize" type="System.Boolean, mscorlib"> <data name="linkBluetoothSettings.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
<data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>Top, Left, Right</value> <value>0, 132</value>
</data> </data>
<data name="&gt;&gt;button2.Name" xml:space="preserve"> <data name="&gt;&gt;button2.Name" xml:space="preserve">
<value>button2</value> <value>button2</value>
</data> </data>
<data name="labelBluetooth2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="labelBluetooth.TabIndex" type="System.Int32, mscorlib">
<value>Bottom, Left, Right</value> <value>3</value>
</data> </data>
<data name="&gt;&gt;bnStep1.Name" xml:space="preserve"> <data name="linkBluetoothSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>bnStep1</value> <value>211, 466</value>
</data> </data>
<data name="labelUSB.Text" xml:space="preserve"> <data name="labelUSB.Text" xml:space="preserve">
<value>Step 3: Connecting the DualShock 4 controller <value>Step 3: Connecting the DualShock 4 controller
To set up wired/usb: To set up wired/usb:
Simply plug a micro usb into your PC and DualShock 4</value> Simply plug a micro usb into your PC and DualShock 4</value>
</data> </data>
<data name="labelUSB.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="button2.Text" xml:space="preserve">
<value>4, 0, 4, 0</value> <value>Step 2: If on Windows 7 or below, Install 360 Driver</value>
</data> </data>
<data name="&gt;&gt;linkBluetoothSettings.Parent" xml:space="preserve"> <data name="&gt;&gt;linkBluetoothSettings.Parent" xml:space="preserve">
<value>$this</value> <value>$this</value>
@ -436,26 +424,38 @@ Simply plug a micro usb into your PC and DualShock 4</value>
<data name="labelUSB.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelUSB.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 162</value> <value>0, 162</value>
</data> </data>
<data name="labelUSB.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="button2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="button2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value> <value>4, 4, 4, 4</value>
</data> </data>
<data name="&gt;&gt;labelUSB.Name" xml:space="preserve"> <data name="&gt;&gt;labelBluetooth.ZOrder" xml:space="preserve">
<value>labelUSB</value> <value>1</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>394, 579</value>
</data> </data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing"> <data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>324, 29</value> <value>324, 29</value>
</data> </data>
<data name="label1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms"> <data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>4, 0, 4, 0</value> <value>System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="labelBluetooth.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms"> <data name="labelBluetooth.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value> <value>Top, Left, Right</value>
</data> </data>
<data name="labelBluetooth.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopCenter</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve"> <data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data> </data>
<data name="labelBluetooth2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>TopCenter</value> <value>Top, Left, Right</value>
</data>
<data name="labelUSB.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 0, 4, 0</value>
</data> </data>
<data name="linkBluetoothSettings.Text" xml:space="preserve"> <data name="linkBluetoothSettings.Text" xml:space="preserve">
<value>Bluetooth Settings</value> <value>Bluetooth Settings</value>
@ -466,7 +466,4 @@ Simply plug a micro usb into your PC and DualShock 4</value>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>
<metadata name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>uk</value>
</metadata>
</root> </root>

View File

@ -117,18 +117,36 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bnStep1.Location" type="System.Drawing.Point, System.Drawing">
<value>29, 8</value>
</data>
<data name="bnStep1.Size" type="System.Drawing.Size, System.Drawing">
<value>259, 23</value>
</data>
<data name="bnStep1.Text" xml:space="preserve"> <data name="bnStep1.Text" xml:space="preserve">
<value>Крок 1: Встановити драйвер DS4</value> <value>Крок 1: Встановити драйвер DS4</value>
</data> </data>
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>29, 81</value>
</data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>259, 23</value>
</data>
<data name="button2.Text" xml:space="preserve"> <data name="button2.Text" xml:space="preserve">
<value>Крок 2: Для Windows 7 та попередніх - встановіть драйвер 360</value> <value>Крок 2: Для Windows 7 та попередніх - встановіть драйвер 360</value>
</data> </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing"> <data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>45, 307</value> <value>36, 246</value>
</data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 132</value>
</data> </data>
<data name="labelBluetooth.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelBluetooth.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 242</value> <value>1, 194</value>
</data>
<data name="labelBluetooth.Size" type="System.Drawing.Size, System.Drawing">
<value>312, 39</value>
</data> </data>
<data name="labelBluetooth.Text" xml:space="preserve"> <data name="labelBluetooth.Text" xml:space="preserve">
<value>Для налаштування Bluetooth (за бажанням): <value>Для налаштування Bluetooth (за бажанням):
@ -136,7 +154,10 @@
Світлопанель мерехтітиме подвійним спалахом</value> Світлопанель мерехтітиме подвійним спалахом</value>
</data> </data>
<data name="labelUSB.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelUSB.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 181</value> <value>0, 145</value>
</data>
<data name="labelUSB.Size" type="System.Drawing.Size, System.Drawing">
<value>313, 39</value>
</data> </data>
<data name="labelUSB.Text" xml:space="preserve"> <data name="labelUSB.Text" xml:space="preserve">
<value>Крок 3: Підключення контролеру DualShock 4 <value>Крок 3: Підключення контролеру DualShock 4
@ -144,10 +165,10 @@
Просто підключіть micro usb до вашого ПК та DualShock 4</value> Просто підключіть micro usb до вашого ПК та DualShock 4</value>
</data> </data>
<data name="labelBluetooth2.Location" type="System.Drawing.Point, System.Drawing"> <data name="labelBluetooth2.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 479</value> <value>1, 383</value>
</data> </data>
<data name="labelBluetooth2.Size" type="System.Drawing.Size, System.Drawing"> <data name="labelBluetooth2.Size" type="System.Drawing.Size, System.Drawing">
<value>390, 89</value> <value>312, 71</value>
</data> </data>
<data name="labelBluetooth2.Text" xml:space="preserve"> <data name="labelBluetooth2.Text" xml:space="preserve">
<value>Як тільки замерехтить, йдіть до налаштувань вашого Bluetooth <value>Як тільки замерехтить, йдіть до налаштувань вашого Bluetooth
@ -155,32 +176,51 @@
Якщо спитає, введіть код пари "0000" Якщо спитає, введіть код пари "0000"
При створенні пари, ви готові. Розважайтеся!</value> При створенні пари, ви готові. Розважайтеся!</value>
</data> </data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 32</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>314, 46</value>
</data>
<data name="label1.Text" xml:space="preserve"> <data name="label1.Text" xml:space="preserve">
<value>Якщо це вікно з'явилося знову після встановлення, тоді вам потрібно перезавантажити ПК, або почекати 10-15 хв поки Windows помітить драйвер</value> <value>Якщо це вікно з'явилося знову після встановлення, тоді вам потрібно перезавантажити ПК, або почекати 10-15 хв поки Windows помітить драйвер</value>
</data> </data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 106</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing"> <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>394, 38</value> <value>315, 30</value>
</data> </data>
<data name="label2.Text" xml:space="preserve"> <data name="label2.Text" xml:space="preserve">
<value>Якщи ви користуєтесь 360 контролером на цьому ПК, можете пропустити</value> <value>Якщи ви користуєтесь 360 контролером на цьому ПК, можете пропустити</value>
</data> </data>
<data name="bnFinish.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnFinish.Location" type="System.Drawing.Point, System.Drawing">
<value>146, 573</value> <value>117, 458</value>
</data>
<data name="bnFinish.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data> </data>
<data name="bnFinish.Text" xml:space="preserve"> <data name="bnFinish.Text" xml:space="preserve">
<value>Завершити</value> <value>Завершити</value>
</data> </data>
<data name="linkBluetoothSettings.Location" type="System.Drawing.Point, System.Drawing"> <data name="linkBluetoothSettings.Location" type="System.Drawing.Point, System.Drawing">
<value>211, 495</value> <value>169, 396</value>
</data> </data>
<data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing"> <data name="linkBluetoothSettings.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 17</value> <value>129, 13</value>
</data> </data>
<data name="linkBluetoothSettings.Text" xml:space="preserve"> <data name="linkBluetoothSettings.Text" xml:space="preserve">
<value>Налаштування Bluetooth</value> <value>Налаштування Bluetooth</value>
</data> </data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>394, 608</value> <value>315, 486</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data> </data>
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Ласкаво просимо до DS4Windows</value> <value>Ласкаво просимо до DS4Windows</value>

View File

@ -191,7 +191,6 @@
// //
// cMSPrograms // cMSPrograms
// //
resources.ApplyResources(this.cMSPrograms, "cMSPrograms");
this.cMSPrograms.ImageScalingSize = new System.Drawing.Size(20, 20); this.cMSPrograms.ImageScalingSize = new System.Drawing.Size(20, 20);
this.cMSPrograms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.cMSPrograms.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addProgramsFromStartMenuToolStripMenuItem, this.addProgramsFromStartMenuToolStripMenuItem,
@ -201,35 +200,36 @@
this.browseForOtherProgramsToolStripMenuItem}); this.browseForOtherProgramsToolStripMenuItem});
this.cMSPrograms.Name = "contextMenuStrip1"; this.cMSPrograms.Name = "contextMenuStrip1";
this.cMSPrograms.ShowImageMargin = false; this.cMSPrograms.ShowImageMargin = false;
resources.ApplyResources(this.cMSPrograms, "cMSPrograms");
// //
// addProgramsFromStartMenuToolStripMenuItem // addProgramsFromStartMenuToolStripMenuItem
// //
resources.ApplyResources(this.addProgramsFromStartMenuToolStripMenuItem, "addProgramsFromStartMenuToolStripMenuItem");
this.addProgramsFromStartMenuToolStripMenuItem.Name = "addProgramsFromStartMenuToolStripMenuItem"; this.addProgramsFromStartMenuToolStripMenuItem.Name = "addProgramsFromStartMenuToolStripMenuItem";
resources.ApplyResources(this.addProgramsFromStartMenuToolStripMenuItem, "addProgramsFromStartMenuToolStripMenuItem");
this.addProgramsFromStartMenuToolStripMenuItem.Click += new System.EventHandler(this.addProgramsFromStartMenuToolStripMenuItem_Click); this.addProgramsFromStartMenuToolStripMenuItem.Click += new System.EventHandler(this.addProgramsFromStartMenuToolStripMenuItem_Click);
// //
// addSteamGamesToolStripMenuItem // addSteamGamesToolStripMenuItem
// //
resources.ApplyResources(this.addSteamGamesToolStripMenuItem, "addSteamGamesToolStripMenuItem");
this.addSteamGamesToolStripMenuItem.Name = "addSteamGamesToolStripMenuItem"; this.addSteamGamesToolStripMenuItem.Name = "addSteamGamesToolStripMenuItem";
resources.ApplyResources(this.addSteamGamesToolStripMenuItem, "addSteamGamesToolStripMenuItem");
this.addSteamGamesToolStripMenuItem.Click += new System.EventHandler(this.addSteamGamesToolStripMenuItem_Click); this.addSteamGamesToolStripMenuItem.Click += new System.EventHandler(this.addSteamGamesToolStripMenuItem_Click);
// //
// addOriginGamesToolStripMenuItem // addOriginGamesToolStripMenuItem
// //
resources.ApplyResources(this.addOriginGamesToolStripMenuItem, "addOriginGamesToolStripMenuItem");
this.addOriginGamesToolStripMenuItem.Name = "addOriginGamesToolStripMenuItem"; this.addOriginGamesToolStripMenuItem.Name = "addOriginGamesToolStripMenuItem";
resources.ApplyResources(this.addOriginGamesToolStripMenuItem, "addOriginGamesToolStripMenuItem");
this.addOriginGamesToolStripMenuItem.Click += new System.EventHandler(this.addOriginGamesToolStripMenuItem_Click); this.addOriginGamesToolStripMenuItem.Click += new System.EventHandler(this.addOriginGamesToolStripMenuItem_Click);
// //
// addDirectoryToolStripMenuItem // addDirectoryToolStripMenuItem
// //
resources.ApplyResources(this.addDirectoryToolStripMenuItem, "addDirectoryToolStripMenuItem");
this.addDirectoryToolStripMenuItem.Name = "addDirectoryToolStripMenuItem"; this.addDirectoryToolStripMenuItem.Name = "addDirectoryToolStripMenuItem";
resources.ApplyResources(this.addDirectoryToolStripMenuItem, "addDirectoryToolStripMenuItem");
this.addDirectoryToolStripMenuItem.Click += new System.EventHandler(this.addDirectoryToolStripMenuItem_Click); this.addDirectoryToolStripMenuItem.Click += new System.EventHandler(this.addDirectoryToolStripMenuItem_Click);
// //
// browseForOtherProgramsToolStripMenuItem // browseForOtherProgramsToolStripMenuItem
// //
resources.ApplyResources(this.browseForOtherProgramsToolStripMenuItem, "browseForOtherProgramsToolStripMenuItem");
this.browseForOtherProgramsToolStripMenuItem.Name = "browseForOtherProgramsToolStripMenuItem"; this.browseForOtherProgramsToolStripMenuItem.Name = "browseForOtherProgramsToolStripMenuItem";
resources.ApplyResources(this.browseForOtherProgramsToolStripMenuItem, "browseForOtherProgramsToolStripMenuItem");
this.browseForOtherProgramsToolStripMenuItem.Click += new System.EventHandler(this.browseForOtherProgramsToolStripMenuItem_Click); this.browseForOtherProgramsToolStripMenuItem.Click += new System.EventHandler(this.browseForOtherProgramsToolStripMenuItem_Click);
// //
// cBTurnOffDS4W // cBTurnOffDS4W
@ -243,7 +243,7 @@
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White; this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.cBTurnOffDS4W); this.Controls.Add(this.cBTurnOffDS4W);
this.Controls.Add(this.pBProfilesTip); this.Controls.Add(this.pBProfilesTip);
this.Controls.Add(this.bnHideUnchecked); this.Controls.Add(this.bnHideUnchecked);

View File

@ -1,20 +1,15 @@
using Microsoft.Win32; using System;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using System.IO; using System.IO;
using System.Net;
using System.Text.RegularExpressions;
using System.Xml; using System.Xml;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
//using Ookii.Dialogs; using System.Threading;
using System.Diagnostics;
using System.Threading.Tasks;
namespace DS4Windows namespace DS4Windows
{ {
@ -30,6 +25,10 @@ namespace DS4Windows
List<string> programpaths = new List<string>(); List<string> programpaths = new List<string>();
List<string> lodsf = new List<string>(); List<string> lodsf = new List<string>();
bool appsloaded = false; bool appsloaded = false;
const string steamCommx86Loc = @"C:\Program Files (x86)\Steam\steamapps\common";
const string steamCommLoc = @"C:\Program Files\Steam\steamapps\common";
const string originx86Loc = @"C:\Program Files (x86)\Origin Games";
const string originLoc = @"C:\Program Files\Origin Games";
public WinProgs(string[] oc, DS4Form main) public WinProgs(string[] oc, DS4Form main)
{ {
@ -43,28 +42,30 @@ namespace DS4Windows
cbs[i].Items.Add(Properties.Resources.noneProfile); cbs[i].Items.Add(Properties.Resources.noneProfile);
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
} }
if (!File.Exists(Global.appdatapath + @"\Auto Profiles.xml")) if (!File.Exists(Global.appdatapath + @"\Auto Profiles.xml"))
Create(); Create();
LoadP(); LoadP();
if (Directory.Exists(@"C:\Program Files (x86)\Steam\steamapps\common")) if (Directory.Exists(steamCommx86Loc))
steamgamesdir = @"C:\Program Files (x86)\Steam\steamapps\common"; steamgamesdir = steamCommx86Loc;
else if (Directory.Exists(@"C:\Program Files\Steam\steamapps\common")) else if (Directory.Exists(steamCommLoc))
steamgamesdir = @"C:\Program Files\Steam\steamapps\common"; steamgamesdir = steamCommLoc;
else else
cMSPrograms.Items.Remove(addSteamGamesToolStripMenuItem); cMSPrograms.Items.Remove(addSteamGamesToolStripMenuItem);
if (Directory.Exists(@"C:\Program Files (x86)\Origin Games")) if (Directory.Exists(originx86Loc))
origingamesdir = @"C:\Program Files (x86)\Origin Games"; origingamesdir = originx86Loc;
else if (Directory.Exists(@"C:\Program Files\Origin Games")) else if (Directory.Exists(originLoc))
origingamesdir = @"C:\Program Files\Origin Games"; origingamesdir = originLoc;
else else
cMSPrograms.Items.Remove(addOriginGamesToolStripMenuItem); cMSPrograms.Items.Remove(addOriginGamesToolStripMenuItem);
} }
public bool Create() public bool Create()
{ {
Boolean Saved = true; bool Saved = true;
try try
{ {
@ -101,39 +102,36 @@ namespace DS4Windows
programpaths.Clear(); programpaths.Clear();
if (!File.Exists(Global.appdatapath + "\\Auto Profiles.xml")) if (!File.Exists(Global.appdatapath + "\\Auto Profiles.xml"))
return; return;
doc.Load(Global.appdatapath + "\\Auto Profiles.xml"); doc.Load(Global.appdatapath + "\\Auto Profiles.xml");
XmlNodeList programslist = doc.SelectNodes("Programs/Program"); XmlNodeList programslist = doc.SelectNodes("Programs/Program");
foreach (XmlNode x in programslist) foreach (XmlNode x in programslist)
programpaths.Add(x.Attributes["path"].Value); programpaths.Add(x.Attributes["path"].Value);
lVPrograms.BeginUpdate();
int index = 0;
foreach (string st in programpaths) foreach (string st in programpaths)
{
if (!string.IsNullOrEmpty(st))
{ {
if (File.Exists(st)) if (File.Exists(st))
{
int index = programpaths.IndexOf(st);
if (string.Empty != st)
{ {
iLIcons.Images.Add(Icon.ExtractAssociatedIcon(st)); iLIcons.Images.Add(Icon.ExtractAssociatedIcon(st));
}
ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(st), index); ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(st), index);
lvi.SubItems.Add(st);
lvi.Checked = true; lvi.Checked = true;
lvi.ToolTipText = st; lvi.ToolTipText = st;
lvi.SubItems.Add(st);
lVPrograms.Items.Add(lvi); lVPrograms.Items.Add(lvi);
} }
}
else index++;
{
RemoveP(st, false, false);
}
}
} }
lVPrograms.EndUpdate();
private void bnLoadSteam_Click(object sender, EventArgs e)
{
} }
private void GetApps(string path) private void GetApps(string path)
{ {
lodsf.Clear(); lodsf.Clear();
@ -147,6 +145,7 @@ namespace DS4Windows
} }
catch { } catch { }
} }
appsloaded = true; appsloaded = true;
} }
@ -162,31 +161,43 @@ namespace DS4Windows
} }
catch { } catch { }
} }
return lods; return lods;
} }
private void GetShortcuts(string path) private void GetShortcuts(string path)
{ {
lodsf.Clear(); lodsf.Clear();
lodsf.AddRange(Directory.GetFiles(path, "*.lnk", SearchOption.AllDirectories)); lodsf.AddRange(Directory.GetFiles(path, "*.lnk", SearchOption.AllDirectories));
lodsf.AddRange(Directory.GetFiles(@"C:\ProgramData\Microsoft\Windows\Start Menu\Programs", "*.lnk", SearchOption.AllDirectories)); lodsf.AddRange(Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu) + "\\Programs", "*.lnk", SearchOption.AllDirectories));
for (int i = 0; i < lodsf.Count; i++) for (int i = 0; i < lodsf.Count; i++)
lodsf[i] = GetTargetPath(lodsf[i]); lodsf[i] = GetTargetPath(lodsf[i]);
appsloaded = true; appsloaded = true;
} }
void appstimer_Tick(object sender, EventArgs e) void AddLoadedApps()
{ {
if (appsloaded) if (appsloaded)
{ {
bnAddPrograms.Text = Properties.Resources.AddingToList; bnAddPrograms.Text = Properties.Resources.AddingToList;
for (int i = lodsf.Count - 1; i >= 0; i--) for (int i = lodsf.Count - 1; i >= 0; i--)
{
if (lodsf[i].Contains("etup") || lodsf[i].Contains("dotnet") || lodsf[i].Contains("SETUP") if (lodsf[i].Contains("etup") || lodsf[i].Contains("dotnet") || lodsf[i].Contains("SETUP")
|| lodsf[i].Contains("edist") || lodsf[i].Contains("nstall") || String.IsNullOrEmpty(lodsf[i])) || lodsf[i].Contains("edist") || lodsf[i].Contains("nstall") || String.IsNullOrEmpty(lodsf[i]))
lodsf.RemoveAt(i); lodsf.RemoveAt(i);
}
for (int i = lodsf.Count - 1; i >= 0; i--) for (int i = lodsf.Count - 1; i >= 0; i--)
{
for (int j = programpaths.Count - 1; j >= 0; j--) for (int j = programpaths.Count - 1; j >= 0; j--)
{
if (lodsf[i].ToLower().Replace('/', '\\') == programpaths[j].ToLower().Replace('/', '\\')) if (lodsf[i].ToLower().Replace('/', '\\') == programpaths[j].ToLower().Replace('/', '\\'))
lodsf.RemoveAt(i); lodsf.RemoveAt(i);
}
}
lVPrograms.BeginUpdate();
foreach (string st in lodsf) foreach (string st in lodsf)
{ {
if (File.Exists(st)) if (File.Exists(st))
@ -199,14 +210,14 @@ namespace DS4Windows
lVPrograms.Items.Add(lvi); lVPrograms.Items.Add(lvi);
} }
} }
lVPrograms.EndUpdate();
bnAddPrograms.Text = Properties.Resources.AddPrograms; bnAddPrograms.Text = Properties.Resources.AddPrograms;
bnAddPrograms.Enabled = true; bnAddPrograms.Enabled = true;
appsloaded = false; appsloaded = false;
((Timer)sender).Stop();
} }
} }
public void Save(string name) public void Save(string name)
{ {
m_Xdoc.Load(m_Profile); m_Xdoc.Load(m_Profile);
@ -226,16 +237,20 @@ namespace DS4Windows
el.AppendChild(m_Xdoc.CreateElement("Controller3")).InnerText = cBProfile3.Text; el.AppendChild(m_Xdoc.CreateElement("Controller3")).InnerText = cBProfile3.Text;
el.AppendChild(m_Xdoc.CreateElement("Controller4")).InnerText = cBProfile4.Text; el.AppendChild(m_Xdoc.CreateElement("Controller4")).InnerText = cBProfile4.Text;
el.AppendChild(m_Xdoc.CreateElement("TurnOff")).InnerText = cBTurnOffDS4W.Checked.ToString(); el.AppendChild(m_Xdoc.CreateElement("TurnOff")).InnerText = cBTurnOffDS4W.Checked.ToString();
try try
{ {
XmlNode oldxmlprocess = m_Xdoc.SelectSingleNode("/Programs/Program[@path=\"" + lBProgramPath.Text + "\"]"); XmlNode oldxmlprocess = m_Xdoc.SelectSingleNode("/Programs/Program[@path=\"" + lBProgramPath.Text + "\"]");
Node.ReplaceChild(el, oldxmlprocess); Node.ReplaceChild(el, oldxmlprocess);
} }
catch { Node.AppendChild(el); } catch { Node.AppendChild(el); }
m_Xdoc.AppendChild(Node); m_Xdoc.AppendChild(Node);
m_Xdoc.Save(m_Profile); m_Xdoc.Save(m_Profile);
if (lVPrograms.SelectedItems.Count > 0) if (lVPrograms.SelectedItems.Count > 0)
lVPrograms.SelectedItems[0].Checked = true; lVPrograms.SelectedItems[0].Checked = true;
form.LoadP(); form.LoadP();
} }
@ -251,7 +266,9 @@ namespace DS4Windows
{ {
Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]" + "/Controller" + (i + 1)); Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]" + "/Controller" + (i + 1));
if (Item != null) if (Item != null)
{
for (int j = 0; j < cbs[i].Items.Count; j++) for (int j = 0; j < cbs[i].Items.Count; j++)
{
if (cbs[i].Items[j].ToString() == Item.InnerText) if (cbs[i].Items[j].ToString() == Item.InnerText)
{ {
cbs[i].SelectedIndex = j; cbs[i].SelectedIndex = j;
@ -260,9 +277,12 @@ namespace DS4Windows
} }
else else
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
}
}
else else
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
} }
Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]" + "/TurnOff"); Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]" + "/TurnOff");
bool turnOff; bool turnOff;
if (Item != null && bool.TryParse(Item.InnerText, out turnOff)) if (Item != null && bool.TryParse(Item.InnerText, out turnOff))
@ -276,29 +296,30 @@ namespace DS4Windows
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
cBTurnOffDS4W.Checked = false; cBTurnOffDS4W.Checked = false;
bnSave.Enabled = false; bnSave.Enabled = false;
} }
} }
public void RemoveP(string name, bool uncheck, bool reload = true) public void RemoveP(string name, bool uncheck)
{ {
XmlDocument doc = new XmlDocument(); XmlDocument doc = new XmlDocument();
doc.Load(m_Profile); doc.Load(m_Profile);
XmlNode Node = doc.SelectSingleNode("Programs"); XmlNode Node = doc.SelectSingleNode("Programs");
XmlNode Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]"); XmlNode Item = doc.SelectSingleNode("/Programs/Program[@path=\"" + name + "\"]");
if (Item != null) if (Item != null)
Node.RemoveChild(Item); Node.RemoveChild(Item);
doc.AppendChild(Node); doc.AppendChild(Node);
doc.Save(m_Profile); doc.Save(m_Profile);
if (lVPrograms.SelectedItems.Count > 0 && uncheck) if (lVPrograms.SelectedItems.Count > 0 && uncheck)
lVPrograms.SelectedItems[0].Checked = false; lVPrograms.SelectedItems[0].Checked = false;
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
bnSave.Enabled = false; bnSave.Enabled = false;
if (reload)
form.LoadP();
} }
private void CBProfile_IndexChanged(object sender, EventArgs e) private void CBProfile_IndexChanged(object sender, EventArgs e)
@ -306,6 +327,7 @@ namespace DS4Windows
int last = cbs[0].Items.Count - 1; int last = cbs[0].Items.Count - 1;
if (lBProgramPath.Text != string.Empty) if (lBProgramPath.Text != string.Empty)
bnSave.Enabled = true; bnSave.Enabled = true;
if (cbs[0].SelectedIndex == last && cbs[1].SelectedIndex == last && if (cbs[0].SelectedIndex == last && cbs[1].SelectedIndex == last &&
cbs[2].SelectedIndex == last && cbs[3].SelectedIndex == last && !cBTurnOffDS4W.Checked) cbs[2].SelectedIndex == last && cbs[3].SelectedIndex == last && !cBTurnOffDS4W.Checked)
bnSave.Enabled = false; bnSave.Enabled = false;
@ -315,6 +337,7 @@ namespace DS4Windows
{ {
if (lBProgramPath.Text != "") if (lBProgramPath.Text != "")
Save(lBProgramPath.Text); Save(lBProgramPath.Text);
bnSave.Enabled = false; bnSave.Enabled = false;
} }
@ -328,9 +351,11 @@ namespace DS4Windows
if (lBProgramPath.Text != "") if (lBProgramPath.Text != "")
LoadP(lBProgramPath.Text); LoadP(lBProgramPath.Text);
else else
{
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
cbs[i].SelectedIndex = cbs[i].Items.Count - 1; cbs[i].SelectedIndex = cbs[i].Items.Count - 1;
} }
}
private void bnDelete_Click(object sender, EventArgs e) private void bnDelete_Click(object sender, EventArgs e)
{ {
@ -359,41 +384,24 @@ namespace DS4Windows
form.RefreshAutoProfilesPage(); form.RefreshAutoProfilesPage();
} }
private async void addSteamGamesToolStripMenuItem_Click(object sender, EventArgs e)
private void addSteamGamesToolStripMenuItem_Click(object sender, EventArgs e)
{ {
try
{
var AppCollectionThread = new System.Threading.Thread(() => GetApps(steamgamesdir));
AppCollectionThread.IsBackground = true;
AppCollectionThread.Start();
}
catch { }
bnAddPrograms.Text = Properties.Resources.Loading; bnAddPrograms.Text = Properties.Resources.Loading;
bnAddPrograms.Enabled = false; bnAddPrograms.Enabled = false;
cMSPrograms.Items.Remove(addSteamGamesToolStripMenuItem); cMSPrograms.Items.Remove(addSteamGamesToolStripMenuItem);
Timer appstimer = new Timer(); await Task.Run(() => GetApps(steamgamesdir));
appstimer.Start(); AddLoadedApps();
appstimer.Tick += appstimer_Tick;
} }
private void addDirectoryToolStripMenuItem_Click(object sender, EventArgs e) private async void addDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{ {
FolderBrowserDialog fbd = new FolderBrowserDialog(); FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK) if (fbd.ShowDialog() == DialogResult.OK)
{ {
try
{
var AppCollectionThread = new System.Threading.Thread(() => GetApps(fbd.SelectedPath));
AppCollectionThread.IsBackground = true;
AppCollectionThread.Start();
}
catch { }
bnAddPrograms.Text = Properties.Resources.Loading; bnAddPrograms.Text = Properties.Resources.Loading;
bnAddPrograms.Enabled = false; bnAddPrograms.Enabled = false;
Timer appstimer = new Timer(); await Task.Run(() => GetApps(fbd.SelectedPath));
appstimer.Start(); AddLoadedApps();
appstimer.Tick += appstimer_Tick;
} }
} }
@ -406,6 +414,7 @@ namespace DS4Windows
{ {
file = GetTargetPath(file); file = GetTargetPath(file);
} }
lBProgramPath.Text = file; lBProgramPath.Text = file;
iLIcons.Images.Add(Icon.ExtractAssociatedIcon(file)); iLIcons.Images.Add(Icon.ExtractAssociatedIcon(file));
ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(file), lVPrograms.Items.Count); ListViewItem lvi = new ListViewItem(Path.GetFileNameWithoutExtension(file), lVPrograms.Items.Count);
@ -414,39 +423,22 @@ namespace DS4Windows
} }
} }
private void addOriginGamesToolStripMenuItem_Click(object sender, EventArgs e) private async void addOriginGamesToolStripMenuItem_Click(object sender, EventArgs e)
{ {
try
{
var AppCollectionThread = new System.Threading.Thread(() => GetApps(origingamesdir));
AppCollectionThread.IsBackground = true;
AppCollectionThread.Start();
}
catch { }
bnAddPrograms.Text = Properties.Resources.Loading; bnAddPrograms.Text = Properties.Resources.Loading;
bnAddPrograms.Enabled = false; bnAddPrograms.Enabled = false;
cMSPrograms.Items.Remove(addOriginGamesToolStripMenuItem); cMSPrograms.Items.Remove(addOriginGamesToolStripMenuItem);
Timer appstimer = new Timer(); await Task.Run(() => GetApps(origingamesdir));
appstimer.Start(); AddLoadedApps();
appstimer.Tick += appstimer_Tick;
} }
private void addProgramsFromStartMenuToolStripMenuItem_Click(object sender, EventArgs e) private async void addProgramsFromStartMenuToolStripMenuItem_Click(object sender, EventArgs e)
{ {
//MessageBox.Show(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu) + "\\Programs");
try
{
var AppCollectionThread = new System.Threading.Thread(() => GetShortcuts(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu) + "\\Programs"));
AppCollectionThread.IsBackground = true;
AppCollectionThread.Start();
}
catch { }
bnAddPrograms.Text = Properties.Resources.Loading; bnAddPrograms.Text = Properties.Resources.Loading;
bnAddPrograms.Enabled = false; bnAddPrograms.Enabled = false;
cMSPrograms.Items.Remove(addProgramsFromStartMenuToolStripMenuItem); cMSPrograms.Items.Remove(addProgramsFromStartMenuToolStripMenuItem);
Timer appstimer = new Timer(); await Task.Run(() => GetShortcuts(Environment.GetFolderPath(Environment.SpecialFolder.StartMenu) + "\\Programs"));
appstimer.Start(); AddLoadedApps();
appstimer.Tick += appstimer_Tick;
} }
public static string GetTargetPath(string filePath) public static string GetTargetPath(string filePath)
@ -486,36 +478,52 @@ namespace DS4Windows
public static string ResolveShortcut(string filePath) public static string ResolveShortcut(string filePath)
{ {
// IWshRuntimeLibrary is in the COM library "Windows Script Host Object Model" Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); // Windows Script Host Shell Object
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell(); dynamic shell = Activator.CreateInstance(t);
string result;
try try
{ {
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(filePath); var shortcut = shell.CreateShortcut(filePath);
return shortcut.TargetPath; result = shortcut.TargetPath;
Marshal.FinalReleaseComObject(shortcut);
} }
catch (COMException) catch (COMException)
{ {
// A COMException is thrown if the file is not a valid shortcut (.lnk) file // A COMException is thrown if the file is not a valid shortcut (.lnk) file
return null; result = null;
} }
finally
{
Marshal.FinalReleaseComObject(shell);
}
return result;
} }
public static string ResolveShortcutAndArgument(string filePath) public static string ResolveShortcutAndArgument(string filePath)
{ {
// IWshRuntimeLibrary is in the COM library "Windows Script Host Object Model" Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); // Windows Script Host Shell Object
IWshRuntimeLibrary.WshShell shell = new IWshRuntimeLibrary.WshShell(); dynamic shell = Activator.CreateInstance(t);
string result;
try try
{ {
IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)shell.CreateShortcut(filePath); var shortcut = shell.CreateShortcut(filePath);
return shortcut.TargetPath + " " + shortcut.Arguments; result = shortcut.TargetPath + " " + shortcut.Arguments;
Marshal.FinalReleaseComObject(shortcut);
} }
catch (COMException) catch (COMException)
{ {
// A COMException is thrown if the file is not a valid shortcut (.lnk) file // A COMException is thrown if the file is not a valid shortcut (.lnk) file
return null; result = null;
} }
finally
{
Marshal.FinalReleaseComObject(shell);
}
return result;
} }
private void cBTurnOffDS4W_CheckedChanged(object sender, EventArgs e) private void cBTurnOffDS4W_CheckedChanged(object sender, EventArgs e)
@ -545,6 +553,7 @@ namespace DS4Windows
} }
} }
} }
class NativeMethods2 class NativeMethods2
{ {
[DllImport("msi.dll", CharSet = CharSet.Auto)] [DllImport("msi.dll", CharSet = CharSet.Auto)]

View File

@ -118,26 +118,101 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bnAddPrograms.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 2</value>
</data>
<data name="bnAddPrograms.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnAddPrograms.Size" type="System.Drawing.Size, System.Drawing">
<value>130, 23</value> <value>98, 19</value>
</data> </data>
<data name="bnAddPrograms.Text" xml:space="preserve"> <data name="bnAddPrograms.Text" xml:space="preserve">
<value>Programme hinzufügen</value> <value>Programme hinzufügen</value>
</data> </data>
<data name="lBProgramPath.Location" type="System.Drawing.Point, System.Drawing">
<value>519, 195</value>
</data>
<data name="lBProgramPath.Size" type="System.Drawing.Size, System.Drawing">
<value>205, 18</value>
</data>
<data name="cBProfile1.Location" type="System.Drawing.Point, System.Drawing">
<value>609, 28</value>
</data>
<data name="cBProfile1.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<data name="cBProfile2.Location" type="System.Drawing.Point, System.Drawing">
<value>609, 55</value>
</data>
<data name="cBProfile2.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<data name="cBProfile3.Location" type="System.Drawing.Point, System.Drawing">
<value>609, 82</value>
</data>
<data name="cBProfile3.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<data name="cBProfile4.Location" type="System.Drawing.Point, System.Drawing">
<value>609, 109</value>
</data>
<data name="cBProfile4.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<data name="bnSave.Location" type="System.Drawing.Point, System.Drawing">
<value>663, 2</value>
</data>
<data name="bnSave.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 23</value>
</data>
<data name="bnSave.Text" xml:space="preserve"> <data name="bnSave.Text" xml:space="preserve">
<value>Speichern</value> <value>Speichern</value>
</data> </data>
<data name="lBController1.Location" type="System.Drawing.Point, System.Drawing">
<value>516, 31</value>
</data>
<data name="lBController1.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
</data>
<data name="lBController2.Location" type="System.Drawing.Point, System.Drawing">
<value>516, 58</value>
</data>
<data name="lBController2.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
</data>
<data name="lBController3.Location" type="System.Drawing.Point, System.Drawing">
<value>516, 85</value>
</data>
<data name="lBController3.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
</data>
<data name="lBController4.Location" type="System.Drawing.Point, System.Drawing">
<value>516, 112</value>
</data>
<data name="lBController4.Size" type="System.Drawing.Size, System.Drawing">
<value>60, 13</value>
</data>
<data name="bnDelete.Location" type="System.Drawing.Point, System.Drawing">
<value>590, 2</value>
</data>
<data name="bnDelete.Size" type="System.Drawing.Size, System.Drawing">
<value>67, 23</value>
</data>
<data name="bnDelete.Text" xml:space="preserve"> <data name="bnDelete.Text" xml:space="preserve">
<value>Entfernen</value> <value>Entfernen</value>
</data> </data>
<data name="PathHeader.Text" xml:space="preserve"> <data name="PathHeader.Text" xml:space="preserve">
<value>Verzeichnis</value> <value>Verzeichnis</value>
</data> </data>
<data name="lVPrograms.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 28</value>
</data>
<data name="lVPrograms.Size" type="System.Drawing.Size, System.Drawing">
<value>505, 190</value>
</data>
<data name="pBProfilesTip.Location" type="System.Drawing.Point, System.Drawing"> <data name="pBProfilesTip.Location" type="System.Drawing.Point, System.Drawing">
<value>818, 167</value> <value>614, 136</value>
</data> </data>
<data name="pBProfilesTip.Size" type="System.Drawing.Size, System.Drawing"> <data name="pBProfilesTip.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 17</value> <value>110, 13</value>
</data> </data>
<data name="pBProfilesTip.Text" xml:space="preserve"> <data name="pBProfilesTip.Text" xml:space="preserve">
<value>Profile hier auswählen</value> <value>Profile hier auswählen</value>
@ -147,63 +222,66 @@
<value>NoControl</value> <value>NoControl</value>
</data> </data>
<data name="bnHideUnchecked.Location" type="System.Drawing.Point, System.Drawing"> <data name="bnHideUnchecked.Location" type="System.Drawing.Point, System.Drawing">
<value>141, 2</value> <value>106, 2</value>
</data> </data>
<data name="bnHideUnchecked.Size" type="System.Drawing.Size, System.Drawing"> <data name="bnHideUnchecked.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 23</value> <value>129, 19</value>
</data> </data>
<data name="bnHideUnchecked.Text" xml:space="preserve"> <data name="bnHideUnchecked.Text" xml:space="preserve">
<value>Abgewählte verstecken</value> <value>Abgewählte verstecken</value>
</data> </data>
<data name="addProgramsFromStartMenuToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="addProgramsFromStartMenuToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 26</value> <value>229, 22</value>
</data> </data>
<data name="addProgramsFromStartMenuToolStripMenuItem.Text" xml:space="preserve"> <data name="addProgramsFromStartMenuToolStripMenuItem.Text" xml:space="preserve">
<value>Startmenü Programm hinzufügen</value> <value>Startmenü Programm hinzufügen</value>
</data> </data>
<data name="addSteamGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="addSteamGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 26</value> <value>229, 22</value>
</data> </data>
<data name="addSteamGamesToolStripMenuItem.Text" xml:space="preserve"> <data name="addSteamGamesToolStripMenuItem.Text" xml:space="preserve">
<value>Steam Spiel hinzufügen</value> <value>Steam Spiel hinzufügen</value>
</data> </data>
<data name="addOriginGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="addOriginGamesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 26</value> <value>229, 22</value>
</data> </data>
<data name="addOriginGamesToolStripMenuItem.Text" xml:space="preserve"> <data name="addOriginGamesToolStripMenuItem.Text" xml:space="preserve">
<value>Origin Spiel hinzufügen</value> <value>Origin Spiel hinzufügen</value>
</data> </data>
<data name="addDirectoryToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="addDirectoryToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 26</value> <value>229, 22</value>
</data> </data>
<data name="addDirectoryToolStripMenuItem.Text" xml:space="preserve"> <data name="addDirectoryToolStripMenuItem.Text" xml:space="preserve">
<value>Verzeichnis Hinzufügen</value> <value>Verzeichnis Hinzufügen</value>
</data> </data>
<data name="browseForOtherProgramsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing"> <data name="browseForOtherProgramsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>275, 26</value> <value>229, 22</value>
</data> </data>
<data name="browseForOtherProgramsToolStripMenuItem.Text" xml:space="preserve"> <data name="browseForOtherProgramsToolStripMenuItem.Text" xml:space="preserve">
<value>Suche nach anderen Programmen</value> <value>Suche nach anderen Programmen</value>
</data> </data>
<data name="cMSPrograms.Size" type="System.Drawing.Size, System.Drawing"> <data name="cMSPrograms.Size" type="System.Drawing.Size, System.Drawing">
<value>276, 134</value> <value>230, 114</value>
</data>
<data name="cBTurnOffDS4W.Location" type="System.Drawing.Point, System.Drawing">
<value>514, 152</value>
</data>
<data name="cBTurnOffDS4W.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
</data>
<data name="cBTurnOffDS4W.Size" type="System.Drawing.Size, System.Drawing">
<value>215, 41</value>
</data> </data>
<data name="cBTurnOffDS4W.Text" xml:space="preserve"> <data name="cBTurnOffDS4W.Text" xml:space="preserve">
<value>DS4Windows temporär ausschalten</value> <value>DS4Windows temporär ausschalten</value>
</data> </data>
<data name="lBController1.Text" xml:space="preserve"> <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>Controller 1</value> <value>6, 13</value>
</data> </data>
<data name="lBController2.Text" xml:space="preserve"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>Controller 2</value> <value>736, 222</value>
</data> </data>
<data name="lBController3.Text" xml:space="preserve"> <data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>Controller 3</value> <value>4, 4, 4, 4</value>
</data>
<data name="lBController4.Text" xml:space="preserve">
<value>Controller 4</value>
</data>
<data name="nameHeader.Text" xml:space="preserve">
<value>Name</value>
</data> </data>
</root> </root>

View File

@ -128,25 +128,25 @@
<value>70, 13</value> <value>70, 13</value>
</data> </data>
<data name="lBController1.Text" xml:space="preserve"> <data name="lBController1.Text" xml:space="preserve">
<value>Controlador 1</value> <value>Control 1</value>
</data> </data>
<data name="lBController2.Size" type="System.Drawing.Size, System.Drawing"> <data name="lBController2.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 13</value> <value>70, 13</value>
</data> </data>
<data name="lBController2.Text" xml:space="preserve"> <data name="lBController2.Text" xml:space="preserve">
<value>Controlador 2</value> <value>Control 2</value>
</data> </data>
<data name="lBController3.Size" type="System.Drawing.Size, System.Drawing"> <data name="lBController3.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 13</value> <value>70, 13</value>
</data> </data>
<data name="lBController3.Text" xml:space="preserve"> <data name="lBController3.Text" xml:space="preserve">
<value>Controlador 3</value> <value>Control 3</value>
</data> </data>
<data name="lBController4.Size" type="System.Drawing.Size, System.Drawing"> <data name="lBController4.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 13</value> <value>70, 13</value>
</data> </data>
<data name="lBController4.Text" xml:space="preserve"> <data name="lBController4.Text" xml:space="preserve">
<value>Controlador 4</value> <value>Control 4</value>
</data> </data>
<data name="bnDelete.Text" xml:space="preserve"> <data name="bnDelete.Text" xml:space="preserve">
<value>Quitar</value> <value>Quitar</value>

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>

View File

@ -0,0 +1,391 @@
/*
Modified version of http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
Using a default table improves drastically the performance of the algorithm.
Credit for the implementation should be awarded to Damien Guard.
Modified under the intention of creating a Nuget package
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
Originally published at http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
*/
using System;
using System.Security.Cryptography;
namespace DS4Windows
{
/// <summary>
/// Implements a 32-bit CRC hash algorithm compatible with Zip etc.
/// </summary>
/// <remarks>
/// Crc32 should only be used for backward compatibility with older file formats
/// and algorithms. It is not secure enough for new applications.
/// If you need to call multiple times for the same data either use the HashAlgorithm
/// interface or remember that the result of one Compute call needs to be ~ (XOR) before
/// being passed in as the seed for the next Compute call.
/// </remarks>
public sealed class Crc32Algorithm : HashAlgorithm
{
public const uint DefaultPolynomial = 0xedb88320u;
public const uint DefaultSeed = 0xffffffffu;
private static readonly uint[] defaultTable =
{
0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,
0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,
0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,
0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,
0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,
0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,
0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,
0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,
0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,
0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,
0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,
0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,
0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,
0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,
0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,
0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,
0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,
0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,
0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,
0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,
0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,
0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,
0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,
0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,
0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,
0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,
0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,
0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,
0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,
0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,
0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,
0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,
0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,
0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,
0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,
0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,
0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,
0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,
0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,
0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,
0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,
0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,
0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,
0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,
0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,
0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,
0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,
0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,
0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,
0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,
0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,
0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,
0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,
0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,
0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,
0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,
0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,
0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,
0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,
0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,
0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,
0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,
0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,
0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D
};
private static uint[] testLook = new uint[16 * 256];
private static bool secondTablePop = false;
private readonly uint _seed;
private readonly uint[] _table;
private uint _hash;
public Crc32Algorithm()
: this(DefaultPolynomial, DefaultSeed)
{
}
public Crc32Algorithm(uint polynomial, uint seed)
{
_table = InitializeTable(polynomial);
_seed = _hash = seed;
}
public override void Initialize()
{
_hash = _seed;
}
protected override void HashCore(byte[] buffer, int start, int length)
{
_hash = CalculateHash(_table, _hash, buffer, start, length);
}
protected override byte[] HashFinal()
{
var hashBuffer = UintToBigEndianBytes(~_hash);
HashValue = hashBuffer;
return hashBuffer;
}
public override int HashSize { get { return 32; } }
public static uint Compute(byte[] buffer)
{
return ~CalculateHash(defaultTable, DefaultSeed, buffer, 0, buffer.Length);
}
public static uint Compute(uint seed, byte[] buffer)
{
return ~CalculateHash(defaultTable, seed, buffer, 0, buffer.Length);
}
public static uint Compute(uint polynomial, uint seed, byte[] buffer)
{
return ~CalculateHash(InitializeTable(polynomial), seed, buffer, 0, buffer.Length);
}
public static uint[] InitializeTable(uint polynomial)
{
if (polynomial == DefaultPolynomial)
{
if (!secondTablePop)
{
for (int i = 0; i <= 0xFF; i++)
{
testLook[0 + i] = defaultTable[i];
testLook[256+i] = (defaultTable[i] >> 8) ^ defaultTable[defaultTable[i] & 0xFF];
testLook[512 + i] = (testLook[256 + i] >> 8) ^ defaultTable[testLook[256 + i] & 0xFF];
testLook[768 + i] = (testLook[512 + i] >> 8) ^ defaultTable[testLook[512 + i] & 0xFF];
testLook[1024 + i] = (testLook[768 + i] >> 8) ^ defaultTable[testLook[768 + i] & 0xFF];
testLook[1280 + i] = (testLook[1024 + i] >> 8) ^ defaultTable[testLook[1024 + i] & 0xFF];
testLook[1536 + i] = (testLook[1280 + i] >> 8) ^ defaultTable[testLook[1280 + i] & 0xFF];
testLook[1792 + i] = (testLook[1536 + i] >> 8) ^ defaultTable[testLook[1536 + i] & 0xFF];
testLook[2048 + i] = (testLook[1792 + i] >> 8) ^ defaultTable[testLook[1792 + i] & 0xFF];
testLook[2304 + i] = (testLook[2048 + i] >> 8) ^ defaultTable[testLook[2048 + i] & 0xFF];
testLook[2560 + i] = (testLook[2304 + i] >> 8) ^ defaultTable[testLook[2304 + i] & 0xFF];
testLook[2816 + i] = (testLook[2560 + i] >> 8) ^ defaultTable[testLook[2560 + i] & 0xFF];
testLook[3072 + i] = (testLook[2816 + i] >> 8) ^ defaultTable[testLook[2816 + i] & 0xFF];
testLook[3328 + i] = (testLook[3072 + i] >> 8) ^ defaultTable[testLook[3072 + i] & 0xFF];
testLook[3584 + i] = (testLook[3328 + i] >> 8) ^ defaultTable[testLook[3328 + i] & 0xFF];
testLook[3840 + i] = (testLook[3584 + i] >> 8) ^ defaultTable[testLook[3584 + i] & 0xFF];
}
secondTablePop = true;
}
return defaultTable;
}
var createTable = new uint[256];
for (uint i = 0; i < 256; i++)
{
var entry = i;
for (var j = 0; j < 8; j++)
entry = ((entry & 1) == 1) ? (entry >> 1) ^ polynomial : (entry >> 1);
createTable[i] = entry;
}
return createTable;
}
private static uint CalculateHash(uint[] table, uint seed, byte[] buffer, int start, int size)
{
var crc = seed;
for (var i = start; i < size - start; i++)
crc = (crc >> 8) ^ table[buffer[i] ^ crc & 0xff];
return crc;
}
public static unsafe uint CalculateBasicHash(ref uint seed, ref byte[] buffer, int offset, int size)
{
uint crc = seed;
int i = offset;
fixed (byte* byteP = buffer)
fixed (uint* byteT = testLook)
{
while (size >= 16)
{
uint one = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24)) ^ crc;
uint two = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
uint three = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24));
uint four = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
crc = byteT[3840 + (one & 0xFF)] ^
byteT[3584 + ((one >> 8) & 0xFF)] ^
byteT[3328 + ((one >> 16) & 0xFF)] ^
byteT[3072 + ((one >> 24) & 0xFF)] ^
byteT[2816 + (two & 0xFF)] ^
byteT[2560 + ((two >> 8) & 0xFF)] ^
byteT[2304 + ((two >> 16) & 0xFF)] ^
byteT[2048 + ((two >> 24) & 0xFF)] ^
byteT[1792 + (three & 0xFF)] ^
byteT[1536 + ((three >> 8) & 0xFF)] ^
byteT[1280 + ((three >> 16) & 0xFF)] ^
byteT[1024 + ((three >> 24) & 0xFF)] ^
byteT[768 + (four & 0xFF)] ^
byteT[512 + ((four >> 8) & 0xFF)] ^
byteT[256 + ((four >> 16) & 0xFF)] ^
byteT[(four >> 24) & 0xFF];
size -= 16;
}
while (size >= 8)
{
uint one8 = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24)) ^ crc;
uint two8 = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
crc = byteT[1792 + (one8 & 0xFF)] ^
byteT[1536 + ((one8 >> 8) & 0xFF)] ^
byteT[1280 + ((one8 >> 16) & 0xFF)] ^
byteT[1024 + (one8 >> 24)] ^
byteT[768 + (two8 & 0xFF)] ^
byteT[512 + ((two8 >> 8) & 0xFF)] ^
byteT[256 + ((two8 >> 16) & 0xFF)] ^
byteT[two8 >> 24];
size -= 8;
}
while (--size >= 0)
{
crc = (crc >> 8) ^ byteT[(crc & 0xFF) ^ byteP[i++]];// i++;
}
}
return crc;
}
public static unsafe uint CalculateFasterBTHash(ref uint seed, ref byte[] buffer, ref int start, ref int size)
{
/*uint crc = seed;
for (int i = start; i < size + start; i++)
crc = (crc >> 8) ^ defaultTable[buffer[i] ^ crc & 0xff];
return crc;
*/
uint crc = seed;
int i = start;
int bufsize = size;
//while (bufsize >= 16)
fixed (byte* byteP = buffer)
fixed (uint* byteT = testLook)
{
for (int j = 0; j < 4; j++)
{
uint one = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24)) ^ crc;
uint two = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
uint three = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24));
uint four = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
crc = byteT[3840+(one & 0xFF)] ^
byteT[3584+((one >> 8) & 0xFF)] ^
byteT[3328+((one >> 16) & 0xFF)] ^
byteT[3072+((one >> 24) & 0xFF)] ^
byteT[2816+(two & 0xFF)] ^
byteT[2560+((two >> 8) & 0xFF)] ^
byteT[2304+((two >> 16) & 0xFF)] ^
byteT[2048+((two >> 24) & 0xFF)] ^
byteT[1792+(three & 0xFF)] ^
byteT[1536+((three >> 8) & 0xFF)] ^
byteT[1280+((three >> 16) & 0xFF)] ^
byteT[1024+((three >> 24) & 0xFF)] ^
byteT[768+(four & 0xFF)] ^
byteT[512+((four >> 8) & 0xFF)] ^
byteT[256+((four >> 16) & 0xFF)] ^
byteT[(four >> 24) & 0xFF];
bufsize -= 16;
}
//while (bufsize >= 8)
//if (bufsize >= 8)
uint one8 = (byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24)) ^ crc;
uint two8 = byteP[i++] |
(uint)(byteP[i++] << 8) |
(uint)(byteP[i++] << 16) |
(uint)(byteP[i++] << 24);
crc = byteT[1792+(one8 & 0xFF)] ^
byteT[1536+((one8 >> 8) & 0xFF)] ^
byteT[1280+((one8 >> 16) & 0xFF)] ^
byteT[1024+(one8 >> 24)] ^
byteT[768+(two8 & 0xFF)] ^
byteT[512+((two8 >> 8) & 0xFF)] ^
byteT[256+((two8 >> 16) & 0xFF)] ^
byteT[two8 >> 24];
bufsize -= 8;
/*crc ^= buffer[i++] |
(uint)(buffer[i++] << 8) |
(uint)(buffer[i++] << 16) |
(uint)(buffer[i++] << 24);// i = i + 4;
//crc ^= buffer[i];
crc = secondLook[3, (crc & 0xFF)] ^
secondLook[2, ((crc >> 8) & 0xFF)] ^
secondLook[1, ((crc >> 16) & 0xFF)] ^
defaultTable[crc >> 24];
bufsize -= 4;
*/
//while (--bufsize >= 0)
//{
crc = (crc >> 8) ^ byteT[(crc & 0xFF) ^ byteP[i++]];// i++;
crc = (crc >> 8) ^ byteT[(crc & 0xFF) ^ byteP[i++]];// i++;
//}
}
return crc;
}
private static byte[] UintToBigEndianBytes(uint uint32)
{
var result = BitConverter.GetBytes(uint32);
if (BitConverter.IsLittleEndian)
Array.Reverse(result);
return result;
}
}
}

View File

@ -0,0 +1,266 @@
using System;
using System.Runtime.InteropServices;
using DS4Windows.DS4Library.CoreAudio;
namespace DS4Windows.DS4Library
{
public class DS4Audio : IAudioEndpointVolumeCallback
{
private IAudioEndpointVolume endpointVolume;
private static Guid IID_IAudioEndpointVolume = new Guid("5CDF2C82-841E-4546-9722-0CF74078229A");
private static readonly PropertyKey PKEY_Device_FriendlyName =
new PropertyKey(new Guid(unchecked((int)0xa45c254e), unchecked((short)0xdf1c), 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0), 14);
public uint vol;
public uint Volume
{
get
{
return vol;
}
}
public uint getVolume()
{
return vol;
}
public void RefreshVolume()
{
float pfLevel = 0;
if (endpointVolume != null)
endpointVolume.GetMasterVolumeLevelScalar(out pfLevel);
vol = Convert.ToUInt32((75 - 20) * (--pfLevel * pfLevel * pfLevel + 1) + 20);
}
public void OnNotify(IntPtr pNotify)
{
RefreshVolume();
}
public DS4Audio(DataFlow audioFlags = DataFlow.Render)
{
var audioEnumerator = new MMDeviceEnumeratorComObject() as IMMDeviceEnumerator;
IMMDeviceCollection audioDevices;
audioEnumerator.EnumAudioEndpoints(audioFlags, DeviceState.Active, out audioDevices);
int numAudioDevices;
Marshal.ThrowExceptionForHR(audioDevices.GetCount(out numAudioDevices));
for (int deviceNumber = 0; deviceNumber < numAudioDevices; ++deviceNumber)
{
IMMDevice audioDevice;
Marshal.ThrowExceptionForHR(audioDevices.Item(deviceNumber, out audioDevice));
string deviceName = GetAudioDeviceName(ref audioDevice);
if (deviceName.Contains("DUALSHOCK®4 USB Wireless Adaptor"))
{
object interfacePointer;
Marshal.ThrowExceptionForHR(audioDevice.Activate(ref IID_IAudioEndpointVolume, ClsCtx.ALL, IntPtr.Zero, out interfacePointer));
endpointVolume = interfacePointer as IAudioEndpointVolume;
endpointVolume.RegisterControlChangeNotify(this);
}
else if (deviceName.Contains("Wireless Controller"))
{
object interfacePointer;
Marshal.ThrowExceptionForHR(audioDevice.Activate(ref IID_IAudioEndpointVolume, ClsCtx.ALL, IntPtr.Zero, out interfacePointer));
endpointVolume = interfacePointer as IAudioEndpointVolume;
endpointVolume.RegisterControlChangeNotify(this);
}
RefreshVolume();
Marshal.ReleaseComObject(audioDevice);
}
Marshal.ReleaseComObject(audioDevices);
Marshal.ReleaseComObject(audioEnumerator);
}
~DS4Audio()
{
if (endpointVolume != null)
{
endpointVolume.UnregisterControlChangeNotify(this);
Marshal.ReleaseComObject(endpointVolume);
endpointVolume = null;
}
}
private string GetAudioDeviceName(ref IMMDevice audioDevice)
{
IPropertyStore propertyStore;
Marshal.ThrowExceptionForHR(audioDevice.OpenPropertyStore(StorageAccessMode.Read, out propertyStore));
int numProperties;
Marshal.ThrowExceptionForHR(propertyStore.GetCount(out numProperties));
string deviceName = String.Empty;
for (int propertyNum = 0; propertyNum < numProperties; ++propertyNum)
{
PropertyKey propertyKey;
Marshal.ThrowExceptionForHR(propertyStore.GetAt(propertyNum, out propertyKey));
if ((propertyKey.formatId == PKEY_Device_FriendlyName.formatId) && (propertyKey.propertyId == PKEY_Device_FriendlyName.propertyId))
{
PropVariant propertyValue;
Marshal.ThrowExceptionForHR(propertyStore.GetValue(ref propertyKey, out propertyValue));
deviceName = Marshal.PtrToStringUni(propertyValue.pointerValue);
break;
}
}
Marshal.ReleaseComObject(propertyStore);
return deviceName;
}
}
}
namespace DS4Windows.DS4Library.CoreAudio
{
public enum DataFlow
{
Render,
Capture,
All
};
[Flags]
public enum DeviceState
{
Active = 0x00000001,
Disabled = 0x00000002,
NotPresent = 0x00000004,
Unplugged = 0x00000008,
All = 0x0000000F
}
enum StorageAccessMode
{
Read,
Write,
ReadWrite
}
[Flags]
public enum ClsCtx
{
INPROC_SERVER = 0x1,
INPROC_HANDLER = 0x2,
LOCAL_SERVER = 0x4,
INPROC_SERVER16 = 0x8,
REMOTE_SERVER = 0x10,
INPROC_HANDLER16 = 0x20,
NO_CODE_DOWNLOAD = 0x400,
NO_CUSTOM_MARSHAL = 0x1000,
ENABLE_CODE_DOWNLOAD = 0x2000,
NO_FAILURE_LOG = 0x4000,
DISABLE_AAA = 0x8000,
ENABLE_AAA = 0x10000,
FROM_DEFAULT_CONTEXT = 0x20000,
ACTIVATE_32_BIT_SERVER = 0x40000,
ACTIVATE_64_BIT_SERVER = 0x80000,
ENABLE_CLOAKING = 0x100000,
PS_DLL = unchecked((int)0x80000000),
INPROC = INPROC_SERVER | INPROC_HANDLER,
SERVER = INPROC_SERVER | LOCAL_SERVER | REMOTE_SERVER,
ALL = SERVER | INPROC_HANDLER
}
public struct PropertyKey
{
public Guid formatId;
public int propertyId;
public PropertyKey(Guid formatId, int propertyId)
{
this.formatId = formatId;
this.propertyId = propertyId;
}
}
[StructLayout(LayoutKind.Explicit)]
public struct PropVariant
{
[FieldOffset(0)] private short vt;
[FieldOffset(2)] private short wReserved1;
[FieldOffset(4)] private short wReserved2;
[FieldOffset(6)] private short wReserved3;
[FieldOffset(8)] public IntPtr pointerValue;
}
[Guid("886d8eeb-8cf2-4446-8d02-cdba1dbdcf99"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IPropertyStore
{
int GetCount(out int propCount);
int GetAt(int property, out PropertyKey key);
int GetValue(ref PropertyKey key, out PropVariant value);
int SetValue(ref PropertyKey key, ref PropVariant value);
int Commit();
}
[Guid("D666063F-1587-4E43-81F1-B948E807363F"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDevice
{
int Activate(ref Guid id, ClsCtx clsCtx, IntPtr activationParams,
[MarshalAs(UnmanagedType.IUnknown)] out object interfacePointer);
int OpenPropertyStore(StorageAccessMode stgmAccess, out IPropertyStore properties);
int GetId([MarshalAs(UnmanagedType.LPWStr)] out string id);
}
[Guid("0BD7A1BE-7A1A-44DB-8397-CC5392387B5E"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDeviceCollection
{
int GetCount(out int numDevices);
int Item(int deviceNumber, out IMMDevice device);
}
[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface IMMDeviceEnumerator
{
int EnumAudioEndpoints(DataFlow dataFlow, DeviceState stateMask, out IMMDeviceCollection devices);
}
[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")]
class MMDeviceEnumeratorComObject
{
}
[Guid("657804FA-D6AD-4496-8A60-352752AF4F89"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioEndpointVolumeCallback
{
void OnNotify(IntPtr notifyData);
};
[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IAudioEndpointVolume
{
int RegisterControlChangeNotify(IAudioEndpointVolumeCallback pNotify);
int UnregisterControlChangeNotify(IAudioEndpointVolumeCallback pNotify);
int GetChannelCount(out int pnChannelCount);
int SetMasterVolumeLevel(float fLevelDB, ref Guid pguidEventContext);
int SetMasterVolumeLevelScalar(float fLevel, ref Guid pguidEventContext);
int GetMasterVolumeLevel(out float pfLevelDB);
int GetMasterVolumeLevelScalar(out float pfLevel);
int SetChannelVolumeLevel(uint nChannel, float fLevelDB, ref Guid pguidEventContext);
int SetChannelVolumeLevelScalar(uint nChannel, float fLevel, ref Guid pguidEventContext);
int GetChannelVolumeLevel(uint nChannel, out float pfLevelDB);
int GetChannelVolumeLevelScalar(uint nChannel, out float pfLevel);
int SetMute([MarshalAs(UnmanagedType.Bool)] Boolean bMute, ref Guid pguidEventContext);
int GetMute(out bool pbMute);
int GetVolumeStepInfo(out uint pnStep, out uint pnStepCount);
int VolumeStepUp(ref Guid pguidEventContext);
int VolumeStepDown(ref Guid pguidEventContext);
int QueryHardwareSupport(out uint pdwHardwareSupportMask);
int GetVolumeRange(out float pflVolumeMindB, out float pflVolumeMaxdB, out float pflVolumeIncrementdB);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -7,11 +7,42 @@ using System.Security.Principal;
namespace DS4Windows namespace DS4Windows
{ {
public class VidPidInfo
{
public readonly int vid;
public readonly int pid;
internal VidPidInfo(int vid, int pid)
{
this.vid = vid;
this.pid = pid;
}
}
public class DS4Devices public class DS4Devices
{ {
// (HID device path, DS4Device)
private static Dictionary<string, DS4Device> Devices = new Dictionary<string, DS4Device>(); private static Dictionary<string, DS4Device> Devices = new Dictionary<string, DS4Device>();
private static HashSet<String> DevicePaths = new HashSet<String>(); private static HashSet<string> deviceSerials = new HashSet<string>();
private static HashSet<string> DevicePaths = new HashSet<string>();
// Keep instance of opened exclusive mode devices not in use (Charging while using BT connection)
private static List<HidDevice> DisabledDevices = new List<HidDevice>();
private static Stopwatch sw = new Stopwatch();
public static bool isExclusiveMode = false; public static bool isExclusiveMode = false;
internal const int SONY_VID = 0x054C;
internal const int RAZER_VID = 0x1532;
internal const int NACON_VID = 0x146B;
internal const int HORI_VID = 0x0F0D;
private static VidPidInfo[] knownDevices =
{
new VidPidInfo(SONY_VID, 0xBA0),
new VidPidInfo(SONY_VID, 0x5C4),
new VidPidInfo(SONY_VID, 0x09CC),
new VidPidInfo(RAZER_VID, 0x1000),
new VidPidInfo(NACON_VID, 0x0D01),
new VidPidInfo(HORI_VID, 0x00EE), // Hori PS4 Mini Wired Gamepad
new VidPidInfo(0x7545, 0x0104)
};
private static string devicePathToInstanceId(string devicePath) private static string devicePathToInstanceId(string devicePath)
{ {
@ -23,23 +54,35 @@ namespace DS4Windows
{ {
deviceInstanceId = deviceInstanceId.Remove(deviceInstanceId.Length - 1); deviceInstanceId = deviceInstanceId.Remove(deviceInstanceId.Length - 1);
} }
return deviceInstanceId; return deviceInstanceId;
} }
//enumerates ds4 controllers in the system // Enumerates ds4 controllers in the system
public static void findControllers() public static void findControllers()
{ {
lock (Devices) lock (Devices)
{ {
int[] pid = { 0xBA0, 0x5C4, 0x09CC }; IEnumerable<HidDevice> hDevices = HidDevices.EnumerateDS4(knownDevices);
IEnumerable<HidDevice> hDevices = HidDevices.Enumerate(0x054C, pid);
// Sort Bluetooth first in case USB is also connected on the same controller. // Sort Bluetooth first in case USB is also connected on the same controller.
hDevices = hDevices.OrderBy<HidDevice, ConnectionType>((HidDevice d) => { return DS4Device.HidConnectionType(d); }); hDevices = hDevices.OrderBy<HidDevice, ConnectionType>((HidDevice d) => { return DS4Device.HidConnectionType(d); });
foreach (HidDevice hDevice in hDevices) List<HidDevice> tempList = hDevices.ToList();
purgeHiddenExclusiveDevices();
tempList.AddRange(DisabledDevices);
int devCount = tempList.Count();
string devicePlural = "device" + (devCount == 0 || devCount > 1 ? "s" : "");
//Log.LogToGui("Found " + devCount + " possible " + devicePlural + ". Examining " + devicePlural + ".", false);
for (int i = 0; i < devCount; i++)
//foreach (HidDevice hDevice in hDevices)
{ {
if (DevicePaths.Contains(hDevice.DevicePath)) HidDevice hDevice = tempList[i];
if (hDevice.Description == "HID-compliant vendor-defined device")
continue; // ignore the Nacon Revolution Pro programming interface
else if (DevicePaths.Contains(hDevice.DevicePath))
continue; // BT/USB endpoint already open once continue; // BT/USB endpoint already open once
if (!hDevice.IsOpen) if (!hDevice.IsOpen)
{ {
hDevice.OpenDevice(isExclusiveMode); hDevice.OpenDevice(isExclusiveMode);
@ -59,6 +102,7 @@ namespace DS4Windows
startInfo.Verb = "runas"; startInfo.Verb = "runas";
startInfo.Arguments = "re-enabledevice " + devicePathToInstanceId(hDevice.DevicePath); startInfo.Arguments = "re-enabledevice " + devicePathToInstanceId(hDevice.DevicePath);
Process child = Process.Start(startInfo); Process child = Process.Start(startInfo);
if (!child.WaitForExit(5000)) if (!child.WaitForExit(5000))
{ {
child.Kill(); child.Kill();
@ -81,41 +125,42 @@ namespace DS4Windows
if (isExclusiveMode && !hDevice.IsOpen) if (isExclusiveMode && !hDevice.IsOpen)
hDevice.OpenDevice(false); hDevice.OpenDevice(false);
} }
if (hDevice.IsOpen) if (hDevice.IsOpen)
{ {
if (Devices.ContainsKey(hDevice.readSerial())) string serial = hDevice.readSerial();
continue; // happens when the BT endpoint already is open and the USB is plugged into the same host bool validSerial = !serial.Equals(DS4Device.blankSerial);
if (validSerial && deviceSerials.Contains(serial))
{
// happens when the BT endpoint already is open and the USB is plugged into the same host
if (isExclusiveMode && hDevice.IsExclusive &&
!DisabledDevices.Contains(hDevice))
{
// Grab reference to exclusively opened HidDevice so device
// stays hidden to other processes
DisabledDevices.Add(hDevice);
//DevicePaths.Add(hDevice.DevicePath);
}
continue;
}
else else
{ {
DS4Device ds4Device = new DS4Device(hDevice); DS4Device ds4Device = new DS4Device(hDevice);
ds4Device.Removal += On_Removal; //ds4Device.Removal += On_Removal;
Devices.Add(ds4Device.MacAddress, ds4Device); if (!ds4Device.ExitOutputThread)
{
Devices.Add(hDevice.DevicePath, ds4Device);
DevicePaths.Add(hDevice.DevicePath); DevicePaths.Add(hDevice.DevicePath);
ds4Device.StartUpdate(); deviceSerials.Add(serial);
}
}
}
} }
} }
} }
} // Returns DS4 controllers that were found and are running
}
//allows to get DS4Device by specifying unique MAC address
//format for MAC address is XX:XX:XX:XX:XX:XX
public static DS4Device getDS4Controller(string mac)
{
lock (Devices)
{
DS4Device device = null;
try
{
Devices.TryGetValue(mac, out device);
}
catch (ArgumentNullException) { }
return device;
}
}
//returns DS4 controllers that were found and are running
public static IEnumerable<DS4Device> getDS4Controllers() public static IEnumerable<DS4Device> getDS4Controllers()
{ {
lock (Devices) lock (Devices)
@ -131,25 +176,105 @@ namespace DS4Windows
lock (Devices) lock (Devices)
{ {
IEnumerable<DS4Device> devices = getDS4Controllers(); IEnumerable<DS4Device> devices = getDS4Controllers();
foreach (DS4Device device in devices) //foreach (DS4Device device in devices)
for (int i = 0, devCount = devices.Count(); i < devCount; i++)
{ {
DS4Device device = devices.ElementAt(i);
device.StopUpdate(); device.StopUpdate();
//device.runRemoval();
device.HidDevice.CloseDevice(); device.HidDevice.CloseDevice();
} }
Devices.Clear(); Devices.Clear();
DevicePaths.Clear(); DevicePaths.Clear();
deviceSerials.Clear();
DisabledDevices.Clear();
} }
} }
//called when devices is diconnected, timed out or has input reading failure // Called when devices is diconnected, timed out or has input reading failure
public static void On_Removal(object sender, EventArgs e) public static void On_Removal(object sender, EventArgs e)
{
DS4Device device = (DS4Device)sender;
RemoveDevice(device);
}
public static void RemoveDevice(DS4Device device)
{
lock (Devices)
{
if (device != null)
{
device.HidDevice.CloseDevice();
Devices.Remove(device.HidDevice.DevicePath);
DevicePaths.Remove(device.HidDevice.DevicePath);
deviceSerials.Remove(device.MacAddress);
//purgeHiddenExclusiveDevices();
}
}
}
public static void UpdateSerial(object sender, EventArgs e)
{ {
lock (Devices) lock (Devices)
{ {
DS4Device device = (DS4Device)sender; DS4Device device = (DS4Device)sender;
device.HidDevice.CloseDevice(); if (device != null)
Devices.Remove(device.MacAddress); {
DevicePaths.Remove(device.HidDevice.DevicePath); string devPath = device.HidDevice.DevicePath;
string serial = device.getMacAddress();
if (Devices.ContainsKey(devPath))
{
deviceSerials.Remove(serial);
device.updateSerial();
serial = device.getMacAddress();
if (DS4Device.isValidSerial(serial))
{
deviceSerials.Add(serial);
}
device.refreshCalibration();
}
}
}
}
private static void purgeHiddenExclusiveDevices()
{
int disabledDevCount = DisabledDevices.Count;
if (disabledDevCount > 0)
{
List<HidDevice> disabledDevList = new List<HidDevice>();
for (int i = 0, arlen = disabledDevCount; i < arlen; i++)
{
HidDevice tempDev = DisabledDevices.ElementAt(i);
if (tempDev != null)
{
if (tempDev.IsOpen && tempDev.IsConnected)
{
disabledDevList.Add(tempDev);
}
else if (tempDev.IsOpen)
{
if (!tempDev.IsConnected)
{
try
{
tempDev.CloseDevice();
}
catch { }
}
if (DevicePaths.Contains(tempDev.DevicePath))
{
DevicePaths.Remove(tempDev.DevicePath);
}
}
}
}
DisabledDevices.Clear();
DisabledDevices.AddRange(disabledDevList);
} }
} }
@ -184,10 +309,24 @@ namespace DS4Windows
throw new Exception("Error setting class install params, error code = " + Marshal.GetLastWin32Error()); throw new Exception("Error setting class install params, error code = " + Marshal.GetLastWin32Error());
} }
success = NativeMethods.SetupDiCallClassInstaller(NativeMethods.DIF_PROPERTYCHANGE, deviceInfoSet, ref deviceInfoData); success = NativeMethods.SetupDiCallClassInstaller(NativeMethods.DIF_PROPERTYCHANGE, deviceInfoSet, ref deviceInfoData);
if (!success) // TEST: If previous SetupDiCallClassInstaller fails, just continue
// otherwise device will likely get permanently disabled.
/*if (!success)
{ {
throw new Exception("Error disabling device, error code = " + Marshal.GetLastWin32Error()); throw new Exception("Error disabling device, error code = " + Marshal.GetLastWin32Error());
} }
*/
//System.Threading.Thread.Sleep(50);
sw.Restart();
while (sw.ElapsedMilliseconds < 50)
{
// Use SpinWait to keep control of current thread. Using Sleep could potentially
// cause other events to get run out of order
System.Threading.Thread.SpinWait(100);
}
sw.Stop();
propChangeParams.stateChange = NativeMethods.DICS_ENABLE; propChangeParams.stateChange = NativeMethods.DICS_ENABLE;
success = NativeMethods.SetupDiSetClassInstallParams(deviceInfoSet, ref deviceInfoData, ref propChangeParams, Marshal.SizeOf(propChangeParams)); success = NativeMethods.SetupDiSetClassInstallParams(deviceInfoSet, ref deviceInfoData, ref propChangeParams, Marshal.SizeOf(propChangeParams));
if (!success) if (!success)
@ -200,6 +339,16 @@ namespace DS4Windows
throw new Exception("Error enabling device, error code = " + Marshal.GetLastWin32Error()); throw new Exception("Error enabling device, error code = " + Marshal.GetLastWin32Error());
} }
//System.Threading.Thread.Sleep(50);
sw.Restart();
while (sw.ElapsedMilliseconds < 50)
{
// Use SpinWait to keep control of current thread. Using Sleep could potentially
// cause other events to get run out of order
System.Threading.Thread.SpinWait(100);
}
sw.Stop();
NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet); NativeMethods.SetupDiDestroyDeviceInfoList(deviceInfoSet);
} }
} }

View File

@ -1,107 +1,247 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DS4Windows namespace DS4Windows
{ {
public class SixAxisEventArgs : EventArgs public class SixAxisEventArgs : EventArgs
{ {
public readonly SixAxis sixAxis; public readonly SixAxis sixAxis;
public readonly System.DateTime timeStamp; public readonly DateTime timeStamp;
public SixAxisEventArgs(System.DateTime utcTimestamp, SixAxis sa) public SixAxisEventArgs(DateTime utcTimestamp, SixAxis sa)
{ {
sixAxis = sa; sixAxis = sa;
this.timeStamp = utcTimestamp; timeStamp = utcTimestamp;
} }
} }
public class SixAxis public class SixAxis
{ {
public readonly int gyroX, gyroY, gyroZ, deltaX, deltaY, deltaZ, accelX, accelY, accelZ; public const int ACC_RES_PER_G = 8192;
public readonly byte touchID; private const float F_ACC_RES_PER_G = ACC_RES_PER_G;
public readonly SixAxis previousAxis; public const int GYRO_RES_IN_DEG_SEC = 16;
public SixAxis(int X, int Y, int Z, int aX, int aY, int aZ, SixAxis prevAxis = null) private const float F_GYRO_RES_IN_DEG_SEC = GYRO_RES_IN_DEG_SEC;
public int gyroYaw, gyroPitch, gyroRoll, accelX, accelY, accelZ;
public int outputAccelX, outputAccelY, outputAccelZ;
public double accelXG, accelYG, accelZG;
public double angVelYaw, angVelPitch, angVelRoll;
public int gyroYawFull, gyroPitchFull, gyroRollFull;
public int accelXFull, accelYFull, accelZFull;
public double elapsed;
public SixAxis previousAxis = null;
private double tempDouble = 0d;
public SixAxis(int X, int Y, int Z,
int aX, int aY, int aZ,
double elapsedDelta, SixAxis prevAxis = null)
{ {
gyroX = X; populate(X, Y, Z, aX, aY, aZ, elapsedDelta, prevAxis);
gyroY = Y; }
gyroZ = Z;
accelX = aX; public void copy(SixAxis src)
accelY = aY; {
accelZ = aZ; gyroYaw = src.gyroYaw;
gyroPitch = src.gyroPitch;
gyroRoll = src.gyroRoll;
gyroYawFull = src.gyroYawFull;
accelXFull = src.accelXFull; accelYFull = src.accelYFull; accelZFull = src.accelZFull;
angVelYaw = src.angVelYaw;
angVelPitch = src.angVelPitch;
angVelRoll = src.angVelRoll;
accelXG = src.accelXG;
accelYG = src.accelYG;
accelZG = src.accelZG;
// Put accel ranges between 0 - 128 abs
accelX = src.accelX;
accelY = src.accelY;
accelZ = src.accelZ;
outputAccelX = accelX;
outputAccelY = accelY;
outputAccelZ = accelZ;
elapsed = src.elapsed;
previousAxis = src.previousAxis;
}
public void populate(int X, int Y, int Z,
int aX, int aY, int aZ,
double elapsedDelta, SixAxis prevAxis = null)
{
gyroYaw = -X / 256;
gyroPitch = Y / 256;
gyroRoll = -Z / 256;
gyroYawFull = -X; gyroPitchFull = Y; gyroRollFull = -Z;
accelXFull = -aX; accelYFull = -aY; accelZFull = aZ;
angVelYaw = gyroYawFull / F_GYRO_RES_IN_DEG_SEC;
angVelPitch = gyroPitchFull / F_GYRO_RES_IN_DEG_SEC;
angVelRoll = gyroRollFull / F_GYRO_RES_IN_DEG_SEC;
accelXG = tempDouble = accelXFull / F_ACC_RES_PER_G;
accelYG = tempDouble = accelYFull / F_ACC_RES_PER_G;
accelZG = tempDouble = accelZFull / F_ACC_RES_PER_G;
// Put accel ranges between 0 - 128 abs
accelX = -aX / 64;
accelY = -aY / 64;
accelZ = aZ / 64;
outputAccelX = accelX;
outputAccelY = accelY;
outputAccelZ = accelZ;
elapsed = elapsedDelta;
previousAxis = prevAxis; previousAxis = prevAxis;
if (previousAxis != null) }
}
internal class CalibData
{ {
deltaX = X - previousAxis.gyroX; public int bias;
deltaY = Y - previousAxis.gyroY; public int sensNumer;
deltaZ = Z - previousAxis.gyroZ; public int sensDenom;
} public const int GyroPitchIdx = 0, GyroYawIdx = 1, GyroRollIdx = 2,
} AccelXIdx = 3, AccelYIdx = 4, AccelZIdx = 5;
} }
public class DS4SixAxis public class DS4SixAxis
{ {
public event EventHandler<SixAxisEventArgs> SixAxisMoved = null; // deltaX/deltaY are set because one or both fingers were already down on a prior sensor reading public event EventHandler<SixAxisEventArgs> SixAccelMoved = null;
public event EventHandler<SixAxisEventArgs> SixAccelMoved = null; // no status change for the touchpad itself... but other sensors may have changed, or you may just want to do some processing private SixAxis sPrev = null, now = null;
private CalibData[] calibrationData = new CalibData[6] { new CalibData(), new CalibData(),
new CalibData(), new CalibData(), new CalibData(), new CalibData()
};
internal int lastGyroX, lastGyroY, lastGyroZ, lastAX, lastAY, lastAZ; // tracks 0, 1 or 2 touches; we maintain touch 1 and 2 separately public DS4SixAxis()
internal byte[] previousPacket = new byte[8];
public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state)
{ {
//bool touchPadIsDown = sensors.TouchButton; sPrev = new SixAxis(0, 0, 0, 0, 0, 0, 0.0);
/*if (!PacketChanged(data, touchPacketOffset) && touchPadIsDown == lastTouchPadIsDown) now = new SixAxis(0, 0, 0, 0, 0, 0, 0.0);
{
if (SixAxisUnchanged != null)
SixAxisUnchanged(this, EventArgs.Empty);
return;
}*/
/* byte touchID1 = (byte)(data[0 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);
byte touchID2 = (byte)(data[4 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);*/
int currentX = (short)((ushort)(gyro[0] << 8) | gyro[1]) / 64;
int currentY = (short)((ushort)(gyro[2] << 8) | gyro[3]) / 64;
int currentZ = (short)((ushort)(gyro[4] << 8) | gyro[5]) / 64;
int AccelX = (short)((ushort)(accel[2] << 8) | accel[3]) / 256;
int AccelY = (short)((ushort)(accel[0] << 8) | accel[1]) / 256;
int AccelZ = (short)((ushort)(accel[4] << 8) | accel[5]) / 256;
SixAxisEventArgs args;
//if (sensors.Touch1 || sensors.Touch2)
{
/* if (SixAxisMoved != null)
{
SixAxis sPrev, now;
sPrev = new SixAxis(lastGyroX, lastGyroY, lastGyroZ, lastAX,lastAY,lastAZ);
now = new SixAxis(currentX, currentY, currentZ, AccelX, AccelY, AccelZ, sPrev);
args = new SixAxisEventArgs(state.ReportTimeStamp, now);
SixAxisMoved(this, args);
} }
lastGyroX = currentX; int temInt = 0;
lastGyroY = currentY; public void setCalibrationData(ref byte[] calibData, bool fromUSB)
lastGyroZ = currentZ; {
lastAX = AccelX; int pitchPlus, pitchMinus, yawPlus, yawMinus, rollPlus, rollMinus,
lastAY = AccelY; accelXPlus, accelXMinus, accelYPlus, accelYMinus, accelZPlus, accelZMinus,
lastAZ = AccelZ;*/ gyroSpeedPlus, gyroSpeedMinus;
calibrationData[0].bias = (short)((ushort)(calibData[2] << 8) | calibData[1]);
calibrationData[1].bias = (short)((ushort)(calibData[4] << 8) | calibData[3]);
calibrationData[2].bias = (short)((ushort)(calibData[6] << 8) | calibData[5]);
if (!fromUSB)
{
pitchPlus = temInt = (short)((ushort)(calibData[8] << 8) | calibData[7]);
yawPlus = temInt = (short)((ushort)(calibData[10] << 8) | calibData[9]);
rollPlus = temInt = (short)((ushort)(calibData[12] << 8) | calibData[11]);
pitchMinus = temInt = (short)((ushort)(calibData[14] << 8) | calibData[13]);
yawMinus = temInt = (short)((ushort)(calibData[16] << 8) | calibData[15]);
rollMinus = temInt = (short)((ushort)(calibData[18] << 8) | calibData[17]);
} }
else
{
pitchPlus = temInt = (short)((ushort)(calibData[8] << 8) | calibData[7]);
pitchMinus = temInt = (short)((ushort)(calibData[10] << 8) | calibData[9]);
yawPlus = temInt = (short)((ushort)(calibData[12] << 8) | calibData[11]);
yawMinus = temInt = (short)((ushort)(calibData[14] << 8) | calibData[13]);
rollPlus = temInt = (short)((ushort)(calibData[16] << 8) | calibData[15]);
rollMinus = temInt = (short)((ushort)(calibData[18] << 8) | calibData[17]);
}
gyroSpeedPlus = temInt = (short)((ushort)(calibData[20] << 8) | calibData[19]);
gyroSpeedMinus = temInt = (short)((ushort)(calibData[22] << 8) | calibData[21]);
accelXPlus = temInt = (short)((ushort)(calibData[24] << 8) | calibData[23]);
accelXMinus = temInt = (short)((ushort)(calibData[26] << 8) | calibData[25]);
accelYPlus = temInt = (short)((ushort)(calibData[28] << 8) | calibData[27]);
accelYMinus = temInt = (short)((ushort)(calibData[30] << 8) | calibData[29]);
accelZPlus = temInt = (short)((ushort)(calibData[32] << 8) | calibData[31]);
accelZMinus = temInt = (short)((ushort)(calibData[34] << 8) | calibData[33]);
int gyroSpeed2x = temInt = (gyroSpeedPlus + gyroSpeedMinus);
calibrationData[0].sensNumer = gyroSpeed2x* SixAxis.GYRO_RES_IN_DEG_SEC;
calibrationData[0].sensDenom = pitchPlus - pitchMinus;
calibrationData[1].sensNumer = gyroSpeed2x* SixAxis.GYRO_RES_IN_DEG_SEC;
calibrationData[1].sensDenom = yawPlus - yawMinus;
calibrationData[2].sensNumer = gyroSpeed2x* SixAxis.GYRO_RES_IN_DEG_SEC;
calibrationData[2].sensDenom = rollPlus - rollMinus;
int accelRange = temInt = accelXPlus - accelXMinus;
calibrationData[3].bias = accelXPlus - accelRange / 2;
calibrationData[3].sensNumer = 2 * SixAxis.ACC_RES_PER_G;
calibrationData[3].sensDenom = accelRange;
accelRange = temInt = accelYPlus - accelYMinus;
calibrationData[4].bias = accelYPlus - accelRange / 2;
calibrationData[4].sensNumer = 2 * SixAxis.ACC_RES_PER_G;
calibrationData[4].sensDenom = accelRange;
accelRange = temInt = accelZPlus - accelZMinus;
calibrationData[5].bias = accelZPlus - accelRange / 2;
calibrationData[5].sensNumer = 2 * SixAxis.ACC_RES_PER_G;
calibrationData[5].sensDenom = accelRange;
}
private void applyCalibs(ref int yaw, ref int pitch, ref int roll,
ref int accelX, ref int accelY, ref int accelZ)
{
CalibData current = calibrationData[0];
temInt = pitch - current.bias;
pitch = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
current = calibrationData[1];
temInt = yaw - current.bias;
yaw = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
current = calibrationData[2];
temInt = roll - current.bias;
roll = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
current = calibrationData[3];
temInt = accelX - current.bias;
accelX = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
current = calibrationData[4];
temInt = accelY - current.bias;
accelY = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
current = calibrationData[5];
temInt = accelZ - current.bias;
accelZ = temInt = (int)(temInt * (current.sensNumer / (float)current.sensDenom));
}
public void handleSixaxis(byte[] gyro, byte[] accel, DS4State state,
double elapsedDelta)
{
int currentYaw = (short)((ushort)(gyro[3] << 8) | gyro[2]);
int currentPitch = (short)((ushort)(gyro[1] << 8) | gyro[0]);
int currentRoll = (short)((ushort)(gyro[5] << 8) | gyro[4]);
int AccelX = (short)((ushort)(accel[1] << 8) | accel[0]);
int AccelY = (short)((ushort)(accel[3] << 8) | accel[2]);
int AccelZ = (short)((ushort)(accel[5] << 8) | accel[4]);
applyCalibs(ref currentYaw, ref currentPitch, ref currentRoll, ref AccelX, ref AccelY, ref AccelZ);
SixAxisEventArgs args = null;
if (AccelX != 0 || AccelY != 0 || AccelZ != 0) if (AccelX != 0 || AccelY != 0 || AccelZ != 0)
{ {
if (SixAccelMoved != null) if (SixAccelMoved != null)
{ {
SixAxis sPrev, now; sPrev.copy(now);
sPrev = new SixAxis(lastGyroX, lastGyroY, lastGyroZ, lastAX, lastAY, lastAZ); now.populate(currentYaw, currentPitch, currentRoll,
now = new SixAxis(currentX, currentY, currentZ, AccelX, AccelY, AccelZ, sPrev); AccelX, AccelY, AccelZ, elapsedDelta, sPrev);
args = new SixAxisEventArgs(state.ReportTimeStamp, now); args = new SixAxisEventArgs(state.ReportTimeStamp, now);
state.Motion = now;
SixAccelMoved(this, args); SixAccelMoved(this, args);
} }
lastGyroX = currentX;
lastGyroY = currentY;
lastGyroZ = currentZ;
lastAX = AccelX;
lastAY = AccelY;
lastAZ = AccelZ;
} }
} }
} }

View File

@ -1,7 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {
@ -11,12 +8,24 @@ namespace DS4Windows
public bool Square, Triangle, Circle, Cross; public bool Square, Triangle, Circle, Cross;
public bool DpadUp, DpadDown, DpadLeft, DpadRight; public bool DpadUp, DpadDown, DpadLeft, DpadRight;
public bool L1, L3, R1, R3; public bool L1, L3, R1, R3;
public bool Share, Options, PS, Touch1, Touch2, TouchButton, TouchRight, TouchLeft; public bool Share, Options, PS, Touch1, Touch2, TouchButton, TouchRight,
TouchLeft, Touch1Finger, Touch2Fingers;
public byte Touch1Identifier, Touch2Identifier; public byte Touch1Identifier, Touch2Identifier;
public byte LX, RX, LY, RY, L2, R2; public byte LX, RX, LY, RY, L2, R2;
public byte FrameCounter; // 0, 1, 2...62, 63, 0.... public byte FrameCounter; // 0, 1, 2...62, 63, 0....
public byte TouchPacketCounter; // we break these out automatically public byte TouchPacketCounter; // we break these out automatically
public byte Battery; // 0 for charging, 10/20/30/40/50/60/70/80/90/100 for percentage of full public byte Battery; // 0 for charging, 10/20/30/40/50/60/70/80/90/100 for percentage of full
public double LSAngle; // Calculated bearing of the LS X,Y coordinates
public double RSAngle; // Calculated bearing of the RS X,Y coordinates
public double LSAngleRad; // Calculated bearing of the LS X,Y coordinates (in radians)
public double RSAngleRad; // Calculated bearing of the RS X,Y coordinates (in radians)
public double LXUnit;
public double LYUnit;
public double RXUnit;
public double RYUnit;
public double elapsedTime = 0.0;
public SixAxis Motion = null;
public static readonly int DEFAULT_AXISDIR_VALUE = 127;
public DS4State() public DS4State()
{ {
@ -24,11 +33,22 @@ namespace DS4Windows
DpadUp = DpadDown = DpadLeft = DpadRight = false; DpadUp = DpadDown = DpadLeft = DpadRight = false;
L1 = L3 = R1 = R3 = false; L1 = L3 = R1 = R3 = false;
Share = Options = PS = Touch1 = Touch2 = TouchButton = TouchRight = TouchLeft = false; Share = Options = PS = Touch1 = Touch2 = TouchButton = TouchRight = TouchLeft = false;
Touch1Finger = Touch2Fingers = false;
LX = RX = LY = RY = 127; LX = RX = LY = RY = 127;
L2 = R2 = 0; L2 = R2 = 0;
FrameCounter = 255; // only actually has 6 bits, so this is a null indicator FrameCounter = 255; // only actually has 6 bits, so this is a null indicator
TouchPacketCounter = 255; // 8 bits, no great junk value TouchPacketCounter = 255; // 8 bits, no great junk value
Battery = 0; Battery = 0;
LSAngle = 0.0;
LSAngleRad = 0.0;
RSAngle = 0.0;
RSAngleRad = 0.0;
LXUnit = 0.0;
LYUnit = 0.0;
RXUnit = 0.0;
RYUnit = 0.0;
elapsedTime = 0.0;
Motion = new SixAxis(0, 0, 0, 0, 0, 0, 0.0);
} }
public DS4State(DS4State state) public DS4State(DS4State state)
@ -59,12 +79,24 @@ namespace DS4Windows
Touch2Identifier = state.Touch2Identifier; Touch2Identifier = state.Touch2Identifier;
TouchButton = state.TouchButton; TouchButton = state.TouchButton;
TouchPacketCounter = state.TouchPacketCounter; TouchPacketCounter = state.TouchPacketCounter;
Touch1Finger = state.Touch1Finger;
Touch2Fingers = state.Touch2Fingers;
LX = state.LX; LX = state.LX;
RX = state.RX; RX = state.RX;
LY = state.LY; LY = state.LY;
RY = state.RY; RY = state.RY;
FrameCounter = state.FrameCounter; FrameCounter = state.FrameCounter;
Battery = state.Battery; Battery = state.Battery;
LSAngle = state.LSAngle;
LSAngleRad = state.LSAngleRad;
RSAngle = state.RSAngle;
RSAngleRad = state.RSAngleRad;
LXUnit = state.LXUnit;
LYUnit = state.LYUnit;
RXUnit = state.RXUnit;
RYUnit = state.RYUnit;
elapsedTime = state.elapsedTime;
Motion = state.Motion;
} }
public DS4State Clone() public DS4State Clone()
@ -100,13 +132,57 @@ namespace DS4Windows
state.TouchRight = TouchRight; state.TouchRight = TouchRight;
state.TouchButton = TouchButton; state.TouchButton = TouchButton;
state.TouchPacketCounter = TouchPacketCounter; state.TouchPacketCounter = TouchPacketCounter;
state.Touch1Finger = Touch1Finger;
state.Touch2Fingers = Touch2Fingers;
state.LX = LX; state.LX = LX;
state.RX = RX; state.RX = RX;
state.LY = LY; state.LY = LY;
state.RY = RY; state.RY = RY;
state.FrameCounter = FrameCounter; state.FrameCounter = FrameCounter;
state.Battery = Battery; state.Battery = Battery;
state.LSAngle = LSAngle;
state.LSAngleRad = LSAngleRad;
state.RSAngle = RSAngle;
state.RSAngleRad = RSAngleRad;
state.LXUnit = LXUnit;
state.LYUnit = LYUnit;
state.RXUnit = RXUnit;
state.RYUnit = RYUnit;
state.elapsedTime = elapsedTime;
state.Motion = Motion;
} }
public void calculateStickAngles()
{
double lsangle = Math.Atan2(-(LY - 127), (LX - 127));
LSAngleRad = lsangle;
lsangle = (lsangle >= 0 ? lsangle : (2 * Math.PI + lsangle)) * 180 / Math.PI;
LSAngle = lsangle;
LXUnit = Math.Abs(Math.Cos(LSAngleRad));
LYUnit = Math.Abs(Math.Sin(LSAngleRad));
double rsangle = Math.Atan2(-(RY - 127), (RX - 127));
RSAngleRad = rsangle;
rsangle = (rsangle >= 0 ? rsangle : (2 * Math.PI + rsangle)) * 180 / Math.PI;
RSAngle = rsangle;
RXUnit = Math.Abs(Math.Cos(RSAngleRad));
RYUnit = Math.Abs(Math.Sin(RSAngleRad));
}
public void rotateLSCoordinates(double rotation)
{
double sinAngle = Math.Sin(rotation), cosAngle = Math.Cos(rotation);
double tempLX = LX - 127.5, tempLY = LY - 127.5;
LX = (Byte)(Global.Clamp(-127.5, (tempLX * cosAngle - tempLY * sinAngle), 127.5) + 127.5);
LY = (Byte)(Global.Clamp(-127.5, (tempLX * sinAngle + tempLY * cosAngle), 127.5) + 127.5);
}
public void rotateRSCoordinates(double rotation)
{
double sinAngle = Math.Sin(rotation), cosAngle = Math.Cos(rotation);
double tempRX = RX - 127.5, tempRY = RY - 127.5;
RX = (Byte)(Global.Clamp(-127.5, (tempRX * cosAngle - tempRY * sinAngle), 127.5) + 127.5);
RY = (Byte)(Global.Clamp(-127.5, (tempRX * sinAngle + tempRY * cosAngle), 127.5) + 127.5);
}
} }
} }

View File

@ -1,20 +1,15 @@
using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DS4Windows namespace DS4Windows
{ {
public class DS4StateExposed public class DS4StateExposed
{ {
private DS4State _state; private DS4State _state;
private byte[] accel = new byte[] { 0, 0, 0, 0, 0, 0 },
gyro = new byte[] { 0, 0, 0, 0, 0, 0 };
public DS4StateExposed() public DS4StateExposed()
{ {
_state = new DS4State(); _state = new DS4State();
} }
public DS4StateExposed(DS4State state) public DS4StateExposed(DS4State state)
{ {
_state = state; _state = state;
@ -38,6 +33,8 @@ namespace DS4Windows
bool Touch1 { get { return _state.Touch1; } } bool Touch1 { get { return _state.Touch1; } }
bool Touch2 { get { return _state.Touch2; } } bool Touch2 { get { return _state.Touch2; } }
bool TouchButton { get { return _state.TouchButton; } } bool TouchButton { get { return _state.TouchButton; } }
bool Touch1Finger { get { return _state.Touch1Finger; } }
bool Touch2Fingers { get { return _state.Touch2Fingers; } }
byte LX { get { return _state.LX; } } byte LX { get { return _state.LX; } }
byte RX { get { return _state.RX; } } byte RX { get { return _state.RX; } }
byte LY { get { return _state.LY; } } byte LY { get { return _state.LY; } }
@ -46,28 +43,58 @@ namespace DS4Windows
byte R2 { get { return _state.R2; } } byte R2 { get { return _state.R2; } }
int Battery { get { return _state.Battery; } } int Battery { get { return _state.Battery; } }
/// <summary> Holds raw DS4 input data from 14 to 19 </summary> public int GyroYaw { get { return _state.Motion.gyroYaw; } }
public byte[] Accel { set { accel = value; } } public int getGyroYaw()
/// <summary> Holds raw DS4 input data from 20 to 25 </summary> {
public byte[] Gyro { set { gyro = value; } } return _state.Motion.gyroYaw;
}
/// <summary> Yaw leftward/counter-clockwise/turn to port or larboard side </summary> public int GyroPitch { get { return _state.Motion.gyroPitch; } }
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> public int getGyroPitch()
public int AccelX { get { return (short)((ushort)(accel[2] << 8) | accel[3]) / 256; } } {
/// <summary> Pitch upward/backward </summary> return _state.Motion.gyroPitch;
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> }
public int AccelY { get { return (short)((ushort)(accel[0] << 8) | accel[1] ) / 256; } }
/// <summary> roll left/L side of controller down/starboard raising up </summary> public int GyroRoll { get { return _state.Motion.gyroRoll; } }
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> public int getGyroRoll()
public int AccelZ { get { return (short)((ushort)(accel[4] << 8) | accel[5]) / 256; } } {
/// <summary> R side of controller upward </summary> return _state.Motion.gyroRoll;
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> }
public int GyroX { get { return (short)((ushort)(gyro[0] << 8) | gyro[1]) / 64; } }
/// <summary> touchpad and button face side of controller upward </summary> public int AccelX { get { return _state.Motion.accelX; } }
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> public int getAccelX()
public int GyroY { get { return (short)((ushort)(gyro[2] << 8) | gyro[3]) / 64; } } {
/// <summary> Audio/expansion ports upward and light bar/shoulders/bumpers/USB port downward </summary> return _state.Motion.accelX;
/// <remarks> Add double the previous result to this delta and divide by three.</remarks> }
public int GyroZ { get { return (short)((ushort)(gyro[4] << 8) | gyro[5]) / 64; } }
public int AccelY { get { return _state.Motion.accelY; } }
public int getAccelY()
{
return _state.Motion.accelY;
}
public int AccelZ { get { return _state.Motion.accelZ; } }
public int getAccelZ()
{
return _state.Motion.accelZ;
}
public int OutputAccelX { get { return _state.Motion.outputAccelX; } }
public int getOutputAccelX()
{
return _state.Motion.outputAccelX;
}
public int OutputAccelY { get { return _state.Motion.outputAccelY; } }
public int getOutputAccelY()
{
return _state.Motion.outputAccelY;
}
public int OutputAccelZ { get { return _state.Motion.outputAccelZ; } }
public int getOutputAccelZ()
{
return _state.Motion.outputAccelZ;
}
} }
} }

View File

@ -1,16 +1,13 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace DS4Windows namespace DS4Windows
{ {
public class TouchpadEventArgs : EventArgs public class TouchpadEventArgs : EventArgs
{ {
public readonly Touch[] touches = null; public readonly Touch[] touches = null;
public readonly System.DateTime timeStamp; public readonly DateTime timeStamp;
public readonly bool touchButtonPressed; public readonly bool touchButtonPressed;
public TouchpadEventArgs(System.DateTime utcTimestamp, bool tButtonDown, Touch t0, Touch t1 = null) public TouchpadEventArgs(DateTime utcTimestamp, bool tButtonDown, Touch t0, Touch t1 = null)
{ {
if (t1 != null) if (t1 != null)
{ {
@ -23,17 +20,23 @@ namespace DS4Windows
touches = new Touch[1]; touches = new Touch[1];
touches[0] = t0; touches[0] = t0;
} }
touchButtonPressed = tButtonDown; touchButtonPressed = tButtonDown;
this.timeStamp = utcTimestamp; timeStamp = utcTimestamp;
} }
} }
public class Touch public class Touch
{ {
public readonly int hwX, hwY, deltaX, deltaY; public int hwX, hwY, deltaX, deltaY;
public readonly byte touchID; public byte touchID;
public readonly Touch previousTouch; public Touch previousTouch;
public Touch(int X, int Y, byte tID, Touch prevTouch = null) internal Touch(int X, int Y, byte tID, Touch prevTouch = null)
{
populate(X, Y, tID, prevTouch);
}
internal void populate(int X, int Y, byte tID, Touch prevTouch = null)
{ {
hwX = X; hwX = X;
hwY = Y; hwY = Y;
@ -55,6 +58,7 @@ namespace DS4Windows
public event EventHandler<TouchpadEventArgs> TouchButtonDown = null; // touchpad pushed down until the button clicks public event EventHandler<TouchpadEventArgs> TouchButtonDown = null; // touchpad pushed down until the button clicks
public event EventHandler<TouchpadEventArgs> TouchButtonUp = null; // touchpad button released public event EventHandler<TouchpadEventArgs> TouchButtonUp = null; // touchpad button released
public event EventHandler<EventArgs> TouchUnchanged = null; // no status change for the touchpad itself... but other sensors may have changed, or you may just want to do some processing public event EventHandler<EventArgs> TouchUnchanged = null; // no status change for the touchpad itself... but other sensors may have changed, or you may just want to do some processing
public event EventHandler<EventArgs> PreTouchProcess = null; // used to publish that a touch packet is about to be processed
public readonly static int TOUCHPAD_DATA_OFFSET = 35; public readonly static int TOUCHPAD_DATA_OFFSET = 35;
internal int lastTouchPadX1, lastTouchPadY1, internal int lastTouchPadX1, lastTouchPadY1,
@ -63,23 +67,35 @@ namespace DS4Windows
internal bool lastIsActive1, lastIsActive2; internal bool lastIsActive1, lastIsActive2;
internal byte lastTouchID1, lastTouchID2; internal byte lastTouchID1, lastTouchID2;
internal byte[] previousPacket = new byte[8]; internal byte[] previousPacket = new byte[8];
private Touch tPrev0, tPrev1, t0, t1;
public DS4Touchpad()
{
tPrev0 = new Touch(0, 0, 0);
tPrev1 = new Touch(0, 0, 0);
t0 = new Touch(0, 0, 0);
t1 = new Touch(0, 0, 0);
}
// We check everything other than the not bothering with not-very-useful TouchPacketCounter. // We check everything other than the not bothering with not-very-useful TouchPacketCounter.
private bool PacketChanged(byte[] data, int touchPacketOffset) private bool PacketChanged(byte[] data, int touchPacketOffset)
{ {
bool changed = false; bool changed = false;
for (int i = 0; i < previousPacket.Length; i++) for (int i = 0, arLen = previousPacket.Length; !changed && i < arLen; i++)
{ {
byte oldValue = previousPacket[i]; //byte oldValue = previousPacket[i];
previousPacket[i] = data[i + TOUCHPAD_DATA_OFFSET + touchPacketOffset]; //previousPacket[i] = data[i + TOUCHPAD_DATA_OFFSET + touchPacketOffset];
if (previousPacket[i] != oldValue) if (previousPacket[i] != data[i + TOUCHPAD_DATA_OFFSET + touchPacketOffset])
changed = true; changed = true;
} }
return changed; return changed;
} }
public void handleTouchpad(byte[] data, DS4State sensors, int touchPacketOffset = 0) public void handleTouchpad(byte[] data, DS4State sensors, int touchPacketOffset = 0)
{ {
PreTouchProcess?.Invoke(this, EventArgs.Empty);
bool touchPadIsDown = sensors.TouchButton; bool touchPadIsDown = sensors.TouchButton;
if (!PacketChanged(data, touchPacketOffset) && touchPadIsDown == lastTouchPadIsDown) if (!PacketChanged(data, touchPacketOffset) && touchPadIsDown == lastTouchPadIsDown)
{ {
@ -87,12 +103,14 @@ namespace DS4Windows
TouchUnchanged(this, EventArgs.Empty); TouchUnchanged(this, EventArgs.Empty);
return; return;
} }
Array.Copy(data, TOUCHPAD_DATA_OFFSET + touchPacketOffset, previousPacket, 0, 8);
byte touchID1 = (byte)(data[0 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F); byte touchID1 = (byte)(data[0 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);
byte touchID2 = (byte)(data[4 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F); byte touchID2 = (byte)(data[4 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x7F);
int currentX1 = data[1 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] + ((data[2 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF) * 255); int currentX1 = ((data[2 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x0F) << 8) | data[1 + TOUCHPAD_DATA_OFFSET + touchPacketOffset];
int currentY1 = ((data[2 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF0) >> 4) + (data[3 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] * 16); int currentY1 = (data[3 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] << 4) | ((data[2 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF0) >> 4);
int currentX2 = data[5 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] + ((data[6 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF) * 255); int currentX2 = ((data[6 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0x0F) << 8) | data[5 + TOUCHPAD_DATA_OFFSET + touchPacketOffset];
int currentY2 = ((data[6 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF0) >> 4) + (data[7 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] * 16); int currentY2 = (data[7 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] << 4) | ((data[6 + TOUCHPAD_DATA_OFFSET + touchPacketOffset] & 0xF0) >> 4);
TouchpadEventArgs args; TouchpadEventArgs args;
if (sensors.Touch1 || sensors.Touch2) if (sensors.Touch1 || sensors.Touch2)
@ -102,39 +120,54 @@ namespace DS4Windows
if (TouchesBegan != null) if (TouchesBegan != null)
{ {
if (sensors.Touch1 && sensors.Touch2) if (sensors.Touch1 && sensors.Touch2)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1), new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX1, currentY1, touchID1); t1.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0, t1);
}
else if (sensors.Touch1) else if (sensors.Touch1)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1)); {
t0.populate(currentX1, currentY1, touchID1);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
else else
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
TouchesBegan(this, args); TouchesBegan(this, args);
} }
} }
else if (sensors.Touch1 == lastIsActive1 && sensors.Touch2 == lastIsActive2 && TouchesMoved != null) else if (sensors.Touch1 == lastIsActive1 && sensors.Touch2 == lastIsActive2 && TouchesMoved != null)
{ {
Touch tPrev, t0, t1; Touch currentT0, currentT1;
if (sensors.Touch1 && sensors.Touch2) if (sensors.Touch1 && sensors.Touch2)
{ {
tPrev = new Touch(lastTouchPadX1, lastTouchPadY1, lastTouchID1); tPrev0.populate(lastTouchPadX1, lastTouchPadY1, lastTouchID1);
t0 = new Touch(currentX1, currentY1, touchID1, tPrev); t0.populate(currentX1, currentY1, touchID1, tPrev0);
tPrev = new Touch(lastTouchPadX2, lastTouchPadY2, lastTouchID2); currentT0 = t0;
t1 = new Touch(currentX2, currentY2, touchID2, tPrev);
tPrev1.populate(lastTouchPadX2, lastTouchPadY2, lastTouchID2);
t1.populate(currentX2, currentY2, touchID2, tPrev1);
currentT1 = t1;
} }
else if (sensors.Touch1) else if (sensors.Touch1)
{ {
tPrev = new Touch(lastTouchPadX1, lastTouchPadY1, lastTouchID1); tPrev0.populate(lastTouchPadX1, lastTouchPadY1, lastTouchID1);
t0 = new Touch(currentX1, currentY1, touchID1, tPrev); t0.populate(currentX1, currentY1, touchID1, tPrev0);
t1 = null; currentT0 = t0;
currentT1 = null;
} }
else else
{ {
tPrev = new Touch(lastTouchPadX2, lastTouchPadY2, lastTouchID2); tPrev0.populate(lastTouchPadX2, lastTouchPadY2, lastTouchID2);
t0 = new Touch(currentX2, currentY2, touchID2, tPrev); t0.populate(currentX2, currentY2, touchID2, tPrev0);
t1 = null; currentT0 = t0;
currentT1 = null;
} }
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0, t1);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, currentT0, currentT1);
TouchesMoved(this, args); TouchesMoved(this, args);
} }
@ -142,22 +175,42 @@ namespace DS4Windows
if (!lastTouchPadIsDown && touchPadIsDown && TouchButtonDown != null) if (!lastTouchPadIsDown && touchPadIsDown && TouchButtonDown != null)
{ {
if (sensors.Touch1 && sensors.Touch2) if (sensors.Touch1 && sensors.Touch2)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1), new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX1, currentY1, touchID1);
t1.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0, t1);
}
else if (sensors.Touch1) else if (sensors.Touch1)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1)); {
t0.populate(currentX1, currentY1, touchID1);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
else else
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
TouchButtonDown(this, args); TouchButtonDown(this, args);
} }
else if (lastTouchPadIsDown && !touchPadIsDown && TouchButtonUp != null) else if (lastTouchPadIsDown && !touchPadIsDown && TouchButtonUp != null)
{ {
if (sensors.Touch1 && sensors.Touch2) if (sensors.Touch1 && sensors.Touch2)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1), new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX1, currentY1, touchID1);
t1.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0, t1);
}
else if (sensors.Touch1) else if (sensors.Touch1)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX1, currentY1, touchID1)); {
t0.populate(currentX1, currentY1, touchID1);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
else else
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(currentX2, currentY2, touchID2)); {
t0.populate(currentX2, currentY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
TouchButtonUp(this, args); TouchButtonUp(this, args);
} }
@ -172,6 +225,7 @@ namespace DS4Windows
lastTouchPadX2 = currentX2; lastTouchPadX2 = currentX2;
lastTouchPadY2 = currentY2; lastTouchPadY2 = currentY2;
} }
lastTouchPadIsDown = touchPadIsDown; lastTouchPadIsDown = touchPadIsDown;
} }
else else
@ -190,11 +244,21 @@ namespace DS4Windows
if ((lastIsActive1 || lastIsActive2) && TouchesEnded != null) if ((lastIsActive1 || lastIsActive2) && TouchesEnded != null)
{ {
if (lastIsActive1 && lastIsActive2) if (lastIsActive1 && lastIsActive2)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(lastTouchPadX1, lastTouchPadY1, touchID1), new Touch(lastTouchPadX2, lastTouchPadY2, touchID2)); {
t0.populate(lastTouchPadX1, lastTouchPadY1, touchID1);
t1.populate(lastTouchPadX2, lastTouchPadY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0, t1);
}
else if (lastIsActive1) else if (lastIsActive1)
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(lastTouchPadX1, lastTouchPadY1, touchID1)); {
t0.populate(lastTouchPadX1, lastTouchPadY1, touchID1);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
else else
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, new Touch(lastTouchPadX2, lastTouchPadY2, touchID2)); {
t0.populate(lastTouchPadX2, lastTouchPadY2, touchID2);
args = new TouchpadEventArgs(sensors.ReportTimeStamp, sensors.TouchButton, t0);
}
TouchesEnded(this, args); TouchesEnded(this, args);
} }

View File

@ -0,0 +1,176 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS

View File

@ -9,10 +9,25 @@
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DS4Windows</RootNamespace> <RootNamespace>DS4Windows</RootNamespace>
<AssemblyName>DS4Windows</AssemblyName> <AssemblyName>DS4Windows</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@ -27,12 +42,16 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType> <DebugType>none</DebugType>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants> <DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<UseVSHostingProcess>false</UseVSHostingProcess>
<LangVersion>6</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
<StartupObject>DS4Windows.Program</StartupObject> <StartupObject>DS4Windows.Program</StartupObject>
@ -52,26 +71,73 @@
<PropertyGroup> <PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<Optimize>true</Optimize>
<DebugType>none</DebugType>
<PlatformTarget>x64</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<DefineConstants>WIN64</DefineConstants>
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<LangVersion>6</LangVersion>
<DebugSymbols>false</DebugSymbols>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<Optimize>true</Optimize>
<DebugType>none</DebugType>
<PlatformTarget>x86</PlatformTarget>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
<LangVersion>6</LangVersion>
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Microsoft.Win32.TaskScheduler, Version=2.8.0.0, Culture=neutral, PublicKeyToken=c416bc1b32d97233, processorArchitecture=MSIL">
<HintPath>..\packages\TaskScheduler.2.8.0\lib\net452\Microsoft.Win32.TaskScheduler.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.IO.Compression" /> <Reference Include="System.IO.Compression" />
<Reference Include="System.IO.Compression.FileSystem" /> <Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.Management" />
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" /> <Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="DS4Control\ControlSerivce.cs" /> <Compile Include="DS4Control\ControlService.cs" />
<Compile Include="DS4Control\DS4LightBar.cs" /> <Compile Include="DS4Control\DS4LightBar.cs" />
<Compile Include="DS4Control\DS4StateFieldMapping.cs" />
<Compile Include="DS4Control\InputMethods.cs" /> <Compile Include="DS4Control\InputMethods.cs" />
<Compile Include="DS4Control\ITouchpadBehaviour.cs" /> <Compile Include="DS4Control\ITouchpadBehaviour.cs" />
<Compile Include="DS4Control\Log.cs" /> <Compile Include="DS4Control\Log.cs" />
@ -98,6 +164,14 @@
<Compile Include="DS4Control\X360Device.designer.cs"> <Compile Include="DS4Control\X360Device.designer.cs">
<DependentUpon>X360Device.cs</DependentUpon> <DependentUpon>X360Device.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="DS4Forms\LanguagePackComboBox.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="DS4Forms\LanguagePackComboBox.Designer.cs">
<DependentUpon>LanguagePackComboBox.cs</DependentUpon>
</Compile>
<Compile Include="DS4Library\Crc32.cs" />
<Compile Include="DS4Library\DS4Audio.cs" />
<Compile Include="DS4Library\DS4Device.cs" /> <Compile Include="DS4Library\DS4Device.cs" />
<Compile Include="DS4Library\DS4Devices.cs" /> <Compile Include="DS4Library\DS4Devices.cs" />
<Compile Include="DS4Library\DS4Sixaxis.cs" /> <Compile Include="DS4Library\DS4Sixaxis.cs" />
@ -106,12 +180,6 @@
<Compile Include="DS4Library\DS4Touchpad.cs" /> <Compile Include="DS4Library\DS4Touchpad.cs" />
<Compile Include="DS4Forms\AdvancedColorDialog.cs" /> <Compile Include="DS4Forms\AdvancedColorDialog.cs" />
<Compile Include="DS4Forms\AdvancedComboBox.cs" /> <Compile Include="DS4Forms\AdvancedComboBox.cs" />
<Compile Include="DS4Forms\Alreadyrunning.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DS4Forms\Alreadyrunning.Designer.cs">
<DependentUpon>Alreadyrunning.cs</DependentUpon>
</Compile>
<Compile Include="DS4Forms\DS4Form.cs"> <Compile Include="DS4Forms\DS4Form.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -187,56 +255,68 @@
<Compile Include="HidLibrary\HidDevices.cs" /> <Compile Include="HidLibrary\HidDevices.cs" />
<Compile Include="HidLibrary\NativeMethods.cs" /> <Compile Include="HidLibrary\NativeMethods.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="DS4Forms\Alreadyrunning.resx">
<DependentUpon>Alreadyrunning.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.ar.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.ar.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.cs.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.cs.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.de-DE.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.de-DE.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.el.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.el.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.es.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.es.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.fi.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.fi.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.fr-FR.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.fr-FR.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.he.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.he.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.hu.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.hu.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.id.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.id.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.it-IT.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.it-IT.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.ja.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.ja.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.ko.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.ko.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.nl.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.nl.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.pl.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.pl.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.pt-BR.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.pt-BR.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
@ -246,27 +326,34 @@
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.ru-RU.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.ru-RU.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.sl.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.sl.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.sv.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.sv.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.tr.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.tr.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.uk.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.uk.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.vi.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.vi.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.zh-Hans.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.zh-Hans.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Form.zh-Hant.resx"> <EmbeddedResource Include="DS4Forms\DS4Form.zh-Hant.resx">
<DependentUpon>DS4Form.cs</DependentUpon> <DependentUpon>DS4Form.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\DS4Keyboard.resx"> <EmbeddedResource Include="DS4Forms\DS4Keyboard.resx">
<DependentUpon>DS4Keyboard.cs</DependentUpon> <DependentUpon>DS4Keyboard.cs</DependentUpon>
@ -505,6 +592,9 @@
<EmbeddedResource Include="DS4Forms\KBM360.zh-Hant.resx"> <EmbeddedResource Include="DS4Forms\KBM360.zh-Hant.resx">
<DependentUpon>KBM360.cs</DependentUpon> <DependentUpon>KBM360.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="DS4Forms\LanguagePackComboBox.resx">
<DependentUpon>LanguagePackComboBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DS4Forms\Options.ar.resx"> <EmbeddedResource Include="DS4Forms\Options.ar.resx">
<DependentUpon>Options.cs</DependentUpon> <DependentUpon>Options.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -1004,6 +1094,7 @@
<EmbeddedResource Include="Properties\Resources.zh-hans.resx" /> <EmbeddedResource Include="Properties\Resources.zh-hans.resx" />
<EmbeddedResource Include="Properties\Resources.zh-Hant.resx" /> <EmbeddedResource Include="Properties\Resources.zh-Hant.resx" />
<None Include="app.manifest" /> <None Include="app.manifest" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings"> <None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator> <Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput> <LastGenOutput>Settings.Designer.cs</LastGenOutput>
@ -1023,18 +1114,7 @@
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<COMReference Include="IWshRuntimeLibrary"> <Content Include="HidLibrary\LICENSE" />
<Guid>{F935DC20-1CF0-11D0-ADB9-00C04FD58A0B}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>0</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>tlbimp</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<Content Include="HidLibrary\LICENSE.htm" />
<Content Include="Resources\360 fades.png" /> <Content Include="Resources\360 fades.png" />
<None Include="Resources\360 map.png" /> <None Include="Resources\360 map.png" />
<None Include="Resources\360 highlight.png" /> <None Include="Resources\360 highlight.png" />
@ -1117,7 +1197,28 @@
<Content Include="Resources\xbox_360_controller.png" /> <Content Include="Resources\xbox_360_controller.png" />
<Content Include="Resources\Y.png" /> <Content Include="Resources\Y.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>rem Copy compiled l18n assemblies to alt folder
GOTO END
if not exist $(TargetDir)Lang mkdir $(TargetDir)Lang
set langs=ar cs de de-DE el es fi fr fr-FR he hu id it it-IT ja ko nl pl ^
pt-BR ro-RO ru-RU sl sv tr uk vi zh-CN zh-Hans zh-Hant
for %25%25l in (%25langs%25) do (
xcopy $(TargetDir)%25%25l $(TargetDir)Lang\%25%25l\ /s /y
)
:END</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild"> <Target Name="BeforeBuild">

View File

@ -83,6 +83,25 @@ namespace DS4Windows
IsExclusive = isExclusive; IsExclusive = isExclusive;
} }
public void OpenFileStream(int reportSize)
{
if (fileStream == null && !safeReadHandle.IsInvalid)
{
fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, reportSize, true);
}
}
public bool IsFileStreamOpen()
{
bool result = false;
if (fileStream != null)
{
result = !fileStream.SafeFileHandle.IsInvalid && !fileStream.SafeFileHandle.IsClosed;
}
return result;
}
public void CloseDevice() public void CloseDevice()
{ {
if (!IsOpen) return; if (!IsOpen) return;
@ -110,6 +129,17 @@ namespace DS4Windows
return NativeMethods.HidD_GetInputReport(safeReadHandle, data, data.Length); return NativeMethods.HidD_GetInputReport(safeReadHandle, data, data.Length);
} }
public bool WriteFeatureReport(byte[] data)
{
bool result = false;
if (IsOpen && safeReadHandle != null)
{
result = NativeMethods.HidD_SetFeature(safeReadHandle, data, data.Length);
}
return result;
}
private static HidDeviceAttributes GetDeviceAttributes(SafeFileHandle hidHandle) private static HidDeviceAttributes GetDeviceAttributes(SafeFileHandle hidHandle)
{ {
@ -129,21 +159,37 @@ namespace DS4Windows
NativeMethods.HidP_GetCaps(preparsedDataPointer, ref capabilities); NativeMethods.HidP_GetCaps(preparsedDataPointer, ref capabilities);
NativeMethods.HidD_FreePreparsedData(preparsedDataPointer); NativeMethods.HidD_FreePreparsedData(preparsedDataPointer);
} }
return new HidDeviceCapabilities(capabilities); return new HidDeviceCapabilities(capabilities);
} }
private void closeFileStreamIO() private void closeFileStreamIO()
{ {
if (fileStream != null) if (fileStream != null)
{
try
{
fileStream.Close(); fileStream.Close();
}
catch (IOException) { }
catch (OperationCanceledException) { }
}
fileStream = null; fileStream = null;
Console.WriteLine("Close fs"); Console.WriteLine("Close fs");
if (safeReadHandle != null && !safeReadHandle.IsInvalid) if (safeReadHandle != null && !safeReadHandle.IsInvalid)
{
try
{
if (!safeReadHandle.IsClosed)
{ {
safeReadHandle.Close(); safeReadHandle.Close();
Console.WriteLine("Close sh"); Console.WriteLine("Close sh");
} }
}
catch (IOException) { }
}
safeReadHandle = null; safeReadHandle = null;
} }
@ -173,6 +219,7 @@ namespace DS4Windows
return ReadStatus.ReadError; return ReadStatus.ReadError;
} }
} }
public ReadStatus ReadFile(byte[] inputBuffer) public ReadStatus ReadFile(byte[] inputBuffer)
{ {
if (safeReadHandle == null) if (safeReadHandle == null)
@ -195,6 +242,25 @@ namespace DS4Windows
} }
} }
public ReadStatus ReadWithFileStream(byte[] inputBuffer)
{
try
{
if (fileStream.Read(inputBuffer, 0, inputBuffer.Length) > 0)
{
return ReadStatus.Success;
}
else
{
return ReadStatus.NoDataRead;
}
}
catch (Exception)
{
return ReadStatus.ReadError;
}
}
public ReadStatus ReadWithFileStream(byte[] inputBuffer, int timeout) public ReadStatus ReadWithFileStream(byte[] inputBuffer, int timeout)
{ {
try try
@ -202,10 +268,10 @@ namespace DS4Windows
if (safeReadHandle == null) if (safeReadHandle == null)
safeReadHandle = OpenHandle(_devicePath, true); safeReadHandle = OpenHandle(_devicePath, true);
if (fileStream == null && !safeReadHandle.IsInvalid) if (fileStream == null && !safeReadHandle.IsInvalid)
fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, inputBuffer.Length, false); fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, inputBuffer.Length, true);
if (!safeReadHandle.IsInvalid && fileStream.CanRead) if (!safeReadHandle.IsInvalid && fileStream.CanRead)
{ {
Task<ReadStatus> readFileTask = new Task<ReadStatus>(() => ReadWithFileStreamTask(inputBuffer)); Task<ReadStatus> readFileTask = new Task<ReadStatus>(() => ReadWithFileStreamTask(inputBuffer));
readFileTask.Start(); readFileTask.Start();
bool success = readFileTask.Wait(timeout); bool success = readFileTask.Wait(timeout);
@ -242,8 +308,52 @@ namespace DS4Windows
} }
} }
return ReadStatus.ReadError;
}
public ReadStatus ReadAsyncWithFileStream(byte[] inputBuffer, int timeout)
{
try
{
if (safeReadHandle == null)
safeReadHandle = OpenHandle(_devicePath, true);
if (fileStream == null && !safeReadHandle.IsInvalid)
fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, inputBuffer.Length, true);
if (!safeReadHandle.IsInvalid && fileStream.CanRead)
{
Task<int> readTask = fileStream.ReadAsync(inputBuffer, 0, inputBuffer.Length);
bool success = readTask.Wait(timeout);
if (success)
{
if (readTask.Result > 0)
{
return ReadStatus.Success;
}
else
{
return ReadStatus.NoDataRead;
}
}
else
{
return ReadStatus.WaitTimedOut;
}
}
}
catch (Exception e)
{
if (e is AggregateException)
{
Console.WriteLine(e.Message);
return ReadStatus.WaitFail;
}
else
{
return ReadStatus.ReadError;
}
}
return ReadStatus.ReadError; return ReadStatus.ReadError;
} }
@ -285,7 +395,7 @@ namespace DS4Windows
} }
if (fileStream == null && !safeReadHandle.IsInvalid) if (fileStream == null && !safeReadHandle.IsInvalid)
{ {
fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, outputBuffer.Length, false); fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, outputBuffer.Length, true);
} }
if (fileStream != null && fileStream.CanWrite && !safeReadHandle.IsInvalid) if (fileStream != null && fileStream.CanWrite && !safeReadHandle.IsInvalid)
{ {
@ -304,25 +414,49 @@ namespace DS4Windows
} }
private SafeFileHandle OpenHandle(String devicePathName, Boolean isExclusive) public bool WriteAsyncOutputReportViaInterrupt(byte[] outputBuffer)
{ {
SafeFileHandle hidHandle;
try try
{ {
if (isExclusive) if (safeReadHandle == null)
{ {
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, NativeMethods.OpenExisting, 0, 0); safeReadHandle = OpenHandle(_devicePath, true);
}
if (fileStream == null && !safeReadHandle.IsInvalid)
{
fileStream = new FileStream(safeReadHandle, FileAccess.ReadWrite, outputBuffer.Length, true);
}
if (fileStream != null && fileStream.CanWrite && !safeReadHandle.IsInvalid)
{
Task writeTask = fileStream.WriteAsync(outputBuffer, 0, outputBuffer.Length);
//fileStream.Write(outputBuffer, 0, outputBuffer.Length);
return true;
} }
else else
{ {
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, NativeMethods.FILE_SHARE_READ | NativeMethods.FILE_SHARE_WRITE, IntPtr.Zero, NativeMethods.OpenExisting, 0, 0); return false;
} }
} }
catch (Exception) catch (Exception)
{ {
throw; return false;
} }
}
private SafeFileHandle OpenHandle(String devicePathName, Boolean isExclusive)
{
SafeFileHandle hidHandle;
if (isExclusive)
{
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, 0, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | NativeMethods.FILE_FLAG_OVERLAPPED, 0);
}
else
{
hidHandle = NativeMethods.CreateFile(devicePathName, NativeMethods.GENERIC_READ | NativeMethods.GENERIC_WRITE, NativeMethods.FILE_SHARE_READ | NativeMethods.FILE_SHARE_WRITE, IntPtr.Zero, NativeMethods.OpenExisting, 0x20000000 | 0x80000000 | NativeMethods.FILE_FLAG_OVERLAPPED, 0);
}
return hidHandle; return hidHandle;
} }
@ -331,6 +465,11 @@ namespace DS4Windows
return NativeMethods.HidD_GetFeature(safeReadHandle.DangerousGetHandle(), inputBuffer, inputBuffer.Length); return NativeMethods.HidD_GetFeature(safeReadHandle.DangerousGetHandle(), inputBuffer, inputBuffer.Length);
} }
public void resetSerial()
{
serial = null;
}
public string readSerial() public string readSerial()
{ {
if (serial != null) if (serial != null)
@ -347,7 +486,12 @@ namespace DS4Windows
else else
{ {
byte[] buffer = new byte[126]; byte[] buffer = new byte[126];
NativeMethods.HidD_GetSerialNumberString(safeReadHandle.DangerousGetHandle(), buffer, (ulong)buffer.Length); #if WIN64
ulong bufferLen = 126;
#else
uint bufferLen = 126;
#endif
NativeMethods.HidD_GetSerialNumberString(safeReadHandle.DangerousGetHandle(), buffer, bufferLen);
string MACAddr = System.Text.Encoding.Unicode.GetString(buffer).Replace("\0", string.Empty).ToUpper(); string MACAddr = System.Text.Encoding.Unicode.GetString(buffer).Replace("\0", string.Empty).ToUpper();
MACAddr = $"{MACAddr[0]}{MACAddr[1]}:{MACAddr[2]}{MACAddr[3]}:{MACAddr[4]}{MACAddr[5]}:{MACAddr[6]}{MACAddr[7]}:{MACAddr[8]}{MACAddr[9]}:{MACAddr[10]}{MACAddr[11]}"; MACAddr = $"{MACAddr[0]}{MACAddr[1]}:{MACAddr[2]}{MACAddr[3]}:{MACAddr[4]}{MACAddr[5]}:{MACAddr[6]}{MACAddr[7]}:{MACAddr[8]}{MACAddr[9]}:{MACAddr[10]}{MACAddr[11]}";
serial = MACAddr; serial = MACAddr;

View File

@ -36,6 +36,37 @@ namespace DS4Windows
productIds.Contains(x.Attributes.ProductId)); productIds.Contains(x.Attributes.ProductId));
} }
public static IEnumerable<HidDevice> Enumerate(int[] vendorIds, params int[] productIds)
{
return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => vendorIds.Contains(x.Attributes.VendorId) &&
productIds.Contains(x.Attributes.ProductId));
}
public static IEnumerable<HidDevice> EnumerateDS4(VidPidInfo[] devInfo)
{
List<HidDevice> foundDevs = new List<HidDevice>();
int devInfoLen = devInfo.Length;
IEnumerable<DeviceInfo> temp = EnumerateDevices();
for (int i = 0, len = temp.Count(); i < len; i++)
{
DeviceInfo x = temp.ElementAt(i);
HidDevice tempDev = new HidDevice(x.Path, x.Description);
bool found = false;
for (int j = 0; !found && j < devInfoLen; j++)
{
VidPidInfo tempInfo = devInfo[j];
if (tempDev.Attributes.VendorId == tempInfo.vid &&
tempDev.Attributes.ProductId == tempInfo.pid)
{
found = true;
foundDevs.Add(tempDev);
}
}
}
return foundDevs;
}
public static IEnumerable<HidDevice> Enumerate(int vendorId) public static IEnumerable<HidDevice> Enumerate(int vendorId)
{ {
return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId); return EnumerateDevices().Select(x => new HidDevice(x.Path, x.Description)).Where(x => x.Attributes.VendorId == vendorId);

View File

@ -0,0 +1,18 @@
Copyright (c) 2010 Ultraviolet Catastrophe
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Some files were not shown because too many files have changed in this diff Show More