Revamped UI - Options are now in the same window as the main tool, Can edit profiles without it being selected, Organized Info of controllers, minimum size changes by number of controllers connected

You can now duplicate profiles
Cycle through profiles by holding L1+R1 and swiping left and right on the touchpad
Check for updates options in Hotkeys/About
Small mouse movements with analog fixes
Mouse movement with triggers fixed
Alpha of Auto Profiles implemented, not yet able to use
Minor fixes
This commit is contained in:
jays2kings 2014-05-30 16:39:39 -04:00
parent 3d7eb99184
commit 66d03c3fb9
36 changed files with 2273 additions and 1202 deletions

View File

@ -288,6 +288,26 @@ namespace DS4Control
return String.Empty; 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 "Connecting...";
}
return d.MacAddress;
}
else
return String.Empty;
}
public string getShortDS4ControllerInfo(int index) public string getShortDS4ControllerInfo(int index)
{ {
if (DS4Controllers[index] != null) if (DS4Controllers[index] != null)
@ -307,7 +327,43 @@ namespace DS4Control
{ {
battery = d.Battery + "%"; battery = d.Battery + "%";
} }
return d.ConnectionType + " " + battery; return d.ConnectionType + " " + battery + " (" + System.IO.Path.GetFileNameWithoutExtension(Global.getAProfile(index)) + ")";
}
else
return "None";
}
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 = "Full";
else
battery = d.Battery + "%+";
}
else
{
battery = d.Battery + "%";
}
return battery;
}
else
return "N/A";
}
public string getDS4Status(int index)
{
if (DS4Controllers[index] != null)
{
DS4Device d = DS4Controllers[index];
return d.ConnectionType+"";
} }
else else
return "None"; return "None";
@ -391,39 +447,41 @@ namespace DS4Control
public string GetInputkeys(int ind) public string GetInputkeys(int ind)
{ {
DS4State cState = CurrentState[ind]; DS4State cState = CurrentState[ind];
if (Mapping.getBoolMapping(DS4Controls.Cross, cState)) return "Cross"; if (DS4Controllers[ind] != null)
else if (Mapping.getBoolMapping(DS4Controls.Circle, cState)) return "Circle"; if (Mapping.getBoolMapping(DS4Controls.Cross, cState)) return "Cross";
else if (Mapping.getBoolMapping(DS4Controls.Triangle, cState)) return "Triangle"; else if (Mapping.getBoolMapping(DS4Controls.Circle, cState)) return "Circle";
else if (Mapping.getBoolMapping(DS4Controls.Square, cState)) return "Square"; else if (Mapping.getBoolMapping(DS4Controls.Triangle, cState)) return "Triangle";
else if (Mapping.getBoolMapping(DS4Controls.L1, cState)) return "L1"; else if (Mapping.getBoolMapping(DS4Controls.Square, cState)) return "Square";
else if (Mapping.getBoolMapping(DS4Controls.R1, cState)) return "R1"; else if (Mapping.getBoolMapping(DS4Controls.L1, cState)) return "L1";
else if (Mapping.getBoolMapping(DS4Controls.L2, cState)) return "L2"; else if (Mapping.getBoolMapping(DS4Controls.R1, cState)) return "R1";
else if (Mapping.getBoolMapping(DS4Controls.R2, cState)) return "R2"; else if (Mapping.getBoolMapping(DS4Controls.L2, cState)) return "L2";
else if (Mapping.getBoolMapping(DS4Controls.L3, cState)) return "L3"; else if (Mapping.getBoolMapping(DS4Controls.R2, cState)) return "R2";
else if (Mapping.getBoolMapping(DS4Controls.R3, cState)) return "R3"; else if (Mapping.getBoolMapping(DS4Controls.L3, cState)) return "L3";
else if (Mapping.getBoolMapping(DS4Controls.DpadUp, cState)) return "Up"; else if (Mapping.getBoolMapping(DS4Controls.R3, cState)) return "R3";
else if (Mapping.getBoolMapping(DS4Controls.DpadDown, cState)) return "Down"; else if (Mapping.getBoolMapping(DS4Controls.DpadUp, cState)) return "Up";
else if (Mapping.getBoolMapping(DS4Controls.DpadLeft, cState)) return "Left"; else if (Mapping.getBoolMapping(DS4Controls.DpadDown, cState)) return "Down";
else if (Mapping.getBoolMapping(DS4Controls.DpadRight, cState)) return "Right"; else if (Mapping.getBoolMapping(DS4Controls.DpadLeft, cState)) return "Left";
else if (Mapping.getBoolMapping(DS4Controls.Share, cState)) return "Share"; else if (Mapping.getBoolMapping(DS4Controls.DpadRight, cState)) return "Right";
else if (Mapping.getBoolMapping(DS4Controls.Options, cState)) return "Options"; else if (Mapping.getBoolMapping(DS4Controls.Share, cState)) return "Share";
else if (Mapping.getBoolMapping(DS4Controls.PS, cState)) return "PS"; else if (Mapping.getBoolMapping(DS4Controls.Options, cState)) return "Options";
else if (Mapping.getBoolMapping(DS4Controls.LXPos, cState)) return "LS Right"; else if (Mapping.getBoolMapping(DS4Controls.PS, cState)) return "PS";
else if (Mapping.getBoolMapping(DS4Controls.LXNeg, cState)) return "LS Left"; else if (Mapping.getBoolMapping(DS4Controls.LXPos, cState)) return "LS Right";
else if (Mapping.getBoolMapping(DS4Controls.LYPos, cState)) return "LS Down"; else if (Mapping.getBoolMapping(DS4Controls.LXNeg, cState)) return "LS Left";
else if (Mapping.getBoolMapping(DS4Controls.LYNeg, cState)) return "LS Up"; else if (Mapping.getBoolMapping(DS4Controls.LYPos, cState)) return "LS Down";
else if (Mapping.getBoolMapping(DS4Controls.RXPos, cState)) return "RS Right"; else if (Mapping.getBoolMapping(DS4Controls.LYNeg, cState)) return "LS Up";
else if (Mapping.getBoolMapping(DS4Controls.RXNeg, cState)) return "RS Left"; else if (Mapping.getBoolMapping(DS4Controls.RXPos, cState)) return "RS Right";
else if (Mapping.getBoolMapping(DS4Controls.RYPos, cState)) return "RS Down"; else if (Mapping.getBoolMapping(DS4Controls.RXNeg, cState)) return "RS Left";
else if (Mapping.getBoolMapping(DS4Controls.RYNeg, cState)) return "RS Up"; else if (Mapping.getBoolMapping(DS4Controls.RYPos, cState)) return "RS Down";
else if (Mapping.getBoolMapping(DS4Controls.TouchLeft, cState)) return "Touch Left"; else if (Mapping.getBoolMapping(DS4Controls.RYNeg, cState)) return "RS Up";
else if (Mapping.getBoolMapping(DS4Controls.TouchRight, cState)) return "Touch Right"; else if (Mapping.getBoolMapping(DS4Controls.TouchLeft, cState)) return "Touch Left";
else if (Mapping.getBoolMapping(DS4Controls.TouchMulti, cState)) return "Touch Multi"; else if (Mapping.getBoolMapping(DS4Controls.TouchRight, cState)) return "Touch Right";
else if (Mapping.getBoolMapping(DS4Controls.TouchUpper, cState)) return "Touch Upper"; else if (Mapping.getBoolMapping(DS4Controls.TouchMulti, cState)) return "Touch Multi";
else if (Mapping.getBoolMapping(DS4Controls.TouchUpper, cState)) return "Touch Upper";
else return "nothing";
else return "nothing"; else return "nothing";
} }
bool touchreleased = true; bool touchreleased = true, touchslid = false;
byte[] oldtouchvalue = { 0, 0, 0, 0 }; byte[] oldtouchvalue = { 0, 0, 0, 0 };
protected virtual void CheckForHotkeys(int deviceID, DS4State cState, DS4State pState) protected virtual void CheckForHotkeys(int deviceID, DS4State cState, DS4State pState)
{ {
@ -450,7 +508,7 @@ namespace DS4Control
} }
} }
} }
if (cState.Touch1 && pState.PS) if (cState.TouchButton && pState.PS)
{ {
if (Global.getTouchSensitivity(deviceID) > 0 && touchreleased) if (Global.getTouchSensitivity(deviceID) > 0 && touchreleased)
{ {
@ -472,6 +530,28 @@ namespace DS4Control
touchreleased = true; touchreleased = true;
} }
public virtual string TouchpadSlide(int ind)
{
DS4State cState = CurrentState[ind];
string slidedir = "none";
if (cState.L1 && cState.R1)
if (touchPad[ind].slideright && !touchslid)
{
slidedir = "right";
touchslid = true;
}
else if (touchPad[ind].slideleft && !touchslid)
{
slidedir = "left";
touchslid = true;
}
else if (!touchPad[ind].slideleft && !touchPad[ind].slideright)
{
slidedir = "";
touchslid = false;
}
return slidedir;
}
public virtual void LogDebug(String Data) public virtual void LogDebug(String Data)
{ {
Console.WriteLine(System.DateTime.Now.ToString("G") + "> " + Data); Console.WriteLine(System.DateTime.Now.ToString("G") + "> " + Data);
@ -498,7 +578,9 @@ namespace DS4Control
uint heavyBoosted = ((uint)heavyMotor * (uint)boost) / 100; uint heavyBoosted = ((uint)heavyMotor * (uint)boost) / 100;
if (heavyBoosted > 255) if (heavyBoosted > 255)
heavyBoosted = 255; heavyBoosted = 255;
DS4Controllers[deviceNum].setRumble((byte)lightBoosted, (byte)heavyBoosted); if (deviceNum < 4)
if (DS4Controllers[deviceNum] != null)
DS4Controllers[deviceNum].setRumble((byte)lightBoosted, (byte)heavyBoosted);
} }
public DS4State getDS4State(int ind) public DS4State getDS4State(int ind)

View File

@ -705,28 +705,28 @@ namespace DS4Control
case X360Controls.MouseUp: case X360Controls.MouseUp:
if (MouseDeltaY == 0) if (MouseDeltaY == 0)
{ {
MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState); MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 0);
MouseDeltaY = -Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); MouseDeltaY = -Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY));
} }
break; break;
case X360Controls.MouseDown: case X360Controls.MouseDown:
if (MouseDeltaY == 0) if (MouseDeltaY == 0)
{ {
MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState); MouseDeltaY = getMouseMapping(device, customButton.Key, cState, pState, 1);
MouseDeltaY = Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY)); MouseDeltaY = Math.Abs((MouseDeltaY == -2147483648 ? 0 : MouseDeltaY));
} }
break; break;
case X360Controls.MouseLeft: case X360Controls.MouseLeft:
if (MouseDeltaX == 0) if (MouseDeltaX == 0)
{ {
MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState); MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 2);
MouseDeltaX = -Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); MouseDeltaX = -Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX));
} }
break; break;
case X360Controls.MouseRight: case X360Controls.MouseRight:
if (MouseDeltaX == 0) if (MouseDeltaX == 0)
{ {
MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState); MouseDeltaX = getMouseMapping(device, customButton.Key, cState, pState, 3);
MouseDeltaX = Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX)); MouseDeltaX = Math.Abs((MouseDeltaX == -2147483648 ? 0 : MouseDeltaX));
} }
break; break;
@ -743,15 +743,15 @@ namespace DS4Control
MappedState.RY = cState.RY; MappedState.RY = cState.RY;
InputMethods.MoveCursorBy(MouseDeltaX, MouseDeltaY); InputMethods.MoveCursorBy(MouseDeltaX, MouseDeltaY);
} }
public static DateTime mousenow = DateTime.UtcNow; public static DateTime[] mousenow = { DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow, DateTime.UtcNow };
public static double mvalue = 0; public static double mvalue = 0;
private static int getMouseMapping(int device, DS4Controls control, DS4State cState, DS4State pState) private static int getMouseMapping(int device, DS4Controls control, DS4State cState, DS4State pState, int mnum)
{ {
int deadzone = 10; int deadzone = 10;
double value = 0; double value = 0;
int speed = Global.getButtonMouseSensitivity(device); int speed = Global.getButtonMouseSensitivity(device);
DateTime now = mousenow; DateTime now = mousenow[mnum];
switch (control) switch (control)
{ {
case DS4Controls.LXNeg: case DS4Controls.LXNeg:
@ -801,11 +801,11 @@ namespace DS4Control
case DS4Controls.Square: value = (cState.Square ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; case DS4Controls.Square: value = (cState.Square ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break;
case DS4Controls.Triangle: value = (cState.Triangle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; case DS4Controls.Triangle: value = (cState.Triangle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break;
case DS4Controls.Circle: value = (cState.Circle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break; case DS4Controls.Circle: value = (cState.Circle ? Math.Pow(1.01 + speed / 10000d, 100) - 1 : 0); break;
case DS4Controls.L2: value = ((cState.L2 / 2d) / 127d) * Math.Pow(1.01 + speed / 10000d, 100) - 1; break; case DS4Controls.L2: value = Math.Pow(1.01 + speed / 10000d, cState.L2 / 2d) - 1; break;
case DS4Controls.R2: value = ((cState.R2 / 2d) / 127d) * Math.Pow(1.01 + speed / 10000d, 100) - 1; break; case DS4Controls.R2: value = Math.Pow(1.01 + speed / 10000d, cState.R2 / 2d) - 1; break;
} }
if (value != 0) //if (value != 0)
mvalue = value; //mvalue = value;
bool LXChanged = (Math.Abs(127 - cState.LX) < deadzone); bool LXChanged = (Math.Abs(127 - cState.LX) < deadzone);
bool LYChanged = (Math.Abs(127 - cState.LY) < deadzone); bool LYChanged = (Math.Abs(127 - cState.LY) < deadzone);
@ -815,9 +815,9 @@ namespace DS4Control
now = DateTime.UtcNow; now = DateTime.UtcNow;
if (value <= 1) if (value <= 1)
{ {
if (now >= mousenow + TimeSpan.FromMilliseconds((1 - value)*250)) if (now >= mousenow[mnum] + TimeSpan.FromMilliseconds((1 - value) * 250))
{ {
mousenow = now; mousenow[mnum] = now;
return 1; return 1;
} }
else else

View File

@ -29,12 +29,16 @@ namespace DS4Control
{ {
return "Standard Mode"; return "Standard Mode";
} }
public bool slideleft, slideright;
public virtual void touchesMoved(object sender, TouchpadEventArgs arg) public virtual void touchesMoved(object sender, TouchpadEventArgs arg)
{ {
cursor.touchesMoved(arg); cursor.touchesMoved(arg);
if (Math.Abs(firstTouch.hwX - arg.touches[0].hwX) > 5 && Math.Abs(firstTouch.hwY - arg.touches[0].hwY) > 5) if (Math.Abs(firstTouch.hwX - arg.touches[0].hwX) > 5 && Math.Abs(firstTouch.hwY - arg.touches[0].hwY) > 5)
wheel.touchesMoved(arg); wheel.touchesMoved(arg);
if (arg.touches[0].hwX - firstTouch.hwX > 300 && !slideleft)
slideright = true;
else if (firstTouch.hwX - arg.touches[0].hwX > 300 && !slideright)
slideleft = true;
dev.getCurrentState(s); dev.getCurrentState(s);
synthesizeMouseButtons(); synthesizeMouseButtons();
//Console.WriteLine(arg.timeStamp.ToString("O") + " " + "moved to " + arg.touches[0].hwX + "," + arg.touches[0].hwY); //Console.WriteLine(arg.timeStamp.ToString("O") + " " + "moved to " + arg.touches[0].hwX + "," + arg.touches[0].hwY);
@ -58,6 +62,7 @@ namespace DS4Control
public virtual void touchesEnded(object sender, TouchpadEventArgs arg) public virtual void touchesEnded(object sender, TouchpadEventArgs arg)
{ {
//Console.WriteLine(arg.timeStamp.ToString("O") + " " + "ended at " + arg.touches[0].hwX + "," + arg.touches[0].hwY); //Console.WriteLine(arg.timeStamp.ToString("O") + " " + "ended at " + arg.touches[0].hwX + "," + arg.touches[0].hwY);
slideright = slideleft = false;
if (Global.getTapSensitivity(deviceNum) != 0) if (Global.getTapSensitivity(deviceNum) != 0)
{ {

View File

@ -471,27 +471,28 @@ namespace DS4Control
{ {
protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml"; protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Profiles.xml";
protected XmlDocument m_Xdoc = new XmlDocument(); protected XmlDocument m_Xdoc = new XmlDocument();
//fifth value used to for options, not fifth controller
public int[] buttonMouseSensitivity = { 25, 25, 25, 25, 25 };
public int[] buttonMouseSensitivity = { 25, 25, 25, 25 }; public Boolean[] touchpadJitterCompensation = {true, true, true, true, true};
public Boolean[] lowerRCOn = { false, false, false, false, false };
public Boolean[] touchpadJitterCompensation = {true, true, true, true}; public Boolean[] ledAsBattery = { false, false, false, false, false };
public Boolean[] lowerRCOn = { false, false, false, false }; public Boolean[] flashLedLowBattery = { false, false, false, false, false };
public Boolean[] ledAsBattery = { false, false, false, false }; public Byte[] m_LeftTriggerMiddle = { 0, 0, 0, 0, 0}, m_RightTriggerMiddle = { 0, 0, 0, 0, 0};
public Boolean[] flashLedLowBattery = { false, false, false, false }; public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty, String.Empty };
public Byte[] m_LeftTriggerMiddle = { 0, 0, 0, 0 }, m_RightTriggerMiddle = { 0, 0, 0, 0 }; public Byte[] m_Rumble = { 100, 100, 100, 100, 100 };
public String[] profilePath = { String.Empty, String.Empty, String.Empty, String.Empty }; public Byte[] touchSensitivity = { 100, 100, 100, 100, 100 };
public Byte[] m_Rumble = { 100, 100, 100, 100 }; public Byte[] LSDeadzone = { 0, 0, 0, 0, 0 }, RSDeadzone = { 0, 0, 0, 0, 0};
public Byte[] touchSensitivity = { 100, 100, 100, 100 }; public Byte[] tapSensitivity = { 0, 0, 0, 0, 0 };
public Byte[] LSDeadzone = { 0, 0, 0, 0 }, RSDeadzone = { 0, 0, 0, 0 }; public bool[] doubleTap = { false, false, false, false, false };
public Byte[] tapSensitivity = { 0, 0, 0, 0 }; public int[] scrollSensitivity = { 0, 0, 0, 0, 0 };
public bool[] doubleTap = { false, false, false, false }; public double[] rainbow = { 0, 0, 0, 0, 0 };
public int[] scrollSensitivity = { 0, 0, 0, 0 };
public double[] rainbow = { 0, 0, 0, 0 };
public Byte[][] m_LowLeds = new Byte[][] public Byte[][] m_LowLeds = new Byte[][]
{ {
new Byte[] {0,0,0}, new Byte[] {0,0,0},
new Byte[] {0,0,0}, new Byte[] {0,0,0},
new Byte[] {0,0,0}, new Byte[] {0,0,0},
new Byte[] {0,0,0},
new Byte[] {0,0,0} new Byte[] {0,0,0}
}; };
public Byte[][] m_Leds = new Byte[][] public Byte[][] m_Leds = new Byte[][]
@ -500,9 +501,10 @@ namespace DS4Control
new Byte[] {255,0,0}, new Byte[] {255,0,0},
new Byte[] {0,255,0}, new Byte[] {0,255,0},
new Byte[] {255,0,255}, new Byte[] {255,0,255},
new Byte[] {255,255,255}
}; };
public bool[] flushHIDQueue = { true, true, true, true }; public bool[] flushHIDQueue = { true, true, true, true, true };
public int[] idleDisconnectTimeout = { 0, 0, 0, 0 }; public int[] idleDisconnectTimeout = { 0, 0, 0, 0, 0 };
public Boolean useExclusiveMode = false; public Boolean useExclusiveMode = false;
public Int32 formWidth = 782; public Int32 formWidth = 782;
@ -510,13 +512,13 @@ namespace DS4Control
public Boolean startMinimized = false; public Boolean startMinimized = false;
public double version; public double version;
public DateTime lastChecked; public DateTime lastChecked;
public Dictionary<DS4Controls, DS4KeyType>[] customMapKeyTypes = {null, null, null, null}; public Dictionary<DS4Controls, DS4KeyType>[] customMapKeyTypes = {null, null, null, null, null};
public Dictionary<DS4Controls, UInt16>[] customMapKeys = { null, null, null, null }; public Dictionary<DS4Controls, UInt16>[] customMapKeys = { null, null, null, null, null };
public Dictionary<DS4Controls, String>[] customMapMacros = { null, null, null, null }; public Dictionary<DS4Controls, String>[] customMapMacros = { null, null, null, null, null };
public Dictionary<DS4Controls, X360Controls>[] customMapButtons = { null, null, null, null }; public Dictionary<DS4Controls, X360Controls>[] customMapButtons = { null, null, null, null, null };
public BackingStore() public BackingStore()
{ {
for (int i = 0; i < 4; i++) for (int i = 0; i < 5; i++)
{ {
customMapKeyTypes[i] = new Dictionary<DS4Controls, DS4KeyType>(); customMapKeyTypes[i] = new Dictionary<DS4Controls, DS4KeyType>();
customMapKeys[i] = new Dictionary<DS4Controls, UInt16>(); customMapKeys[i] = new Dictionary<DS4Controls, UInt16>();

View File

@ -102,6 +102,12 @@
<Compile Include="KBM360.Designer.cs"> <Compile Include="KBM360.Designer.cs">
<DependentUpon>KBM360.cs</DependentUpon> <DependentUpon>KBM360.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="MessageTextBox.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MessageTextBox.Designer.cs">
<DependentUpon>MessageTextBox.cs</DependentUpon>
</Compile>
<Compile Include="Options.cs"> <Compile Include="Options.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -115,6 +121,11 @@
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon> <DependentUpon>Resources.resx</DependentUpon>
</Compile> </Compile>
<Compile Include="Resource.es.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resource.es.resx</DependentUpon>
</Compile>
<Compile Include="ScpForm.cs"> <Compile Include="ScpForm.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@ -140,6 +151,9 @@
<EmbeddedResource Include="KBM360.resx"> <EmbeddedResource Include="KBM360.resx">
<DependentUpon>KBM360.cs</DependentUpon> <DependentUpon>KBM360.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="MessageTextBox.resx">
<DependentUpon>MessageTextBox.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Options.resx"> <EmbeddedResource Include="Options.resx">
<DependentUpon>Options.cs</DependentUpon> <DependentUpon>Options.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -148,7 +162,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<LastGenOutput>Resources1.Designer.cs</LastGenOutput> <LastGenOutput>Resources1.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
<EmbeddedResource Include="Resource.es.resx" /> <EmbeddedResource Include="Resource.es.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resource.es.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="ScpForm.resx"> <EmbeddedResource Include="ScpForm.resx">
<DependentUpon>ScpForm.cs</DependentUpon> <DependentUpon>ScpForm.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
@ -181,21 +198,30 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="Resources\USB.png" />
<None Include="Resources\UpperTouch.png" /> <None Include="Resources\UpperTouch.png" />
<None Include="Resources\shell32_copy.png" />
<None Include="Resources\shell32_new.png" />
<None Include="Resources\shell32 delete.png" />
<None Include="Resources\sticks.png" /> <None Include="Resources\sticks.png" />
<None Include="Resources\Touch.png" /> <None Include="Resources\Touch.png" />
<None Include="Resources\Touch states2.png" /> <None Include="Resources\Touch states2.png" />
<None Include="Resources\sticks2.png" /> <None Include="Resources\sticks2.png" />
<None Include="Resources\360 fades.png" /> <None Include="Resources\360 fades.png" />
<None Include="Resources\1401402547_menu-24.png" />
<None Include="Resources\DS4 Controller.png" /> <None Include="Resources\DS4 Controller.png" />
<None Include="Resources\delete.png" />
<None Include="Resources\BT.png" />
<Content Include="Resources\DS4.ico" /> <Content Include="Resources\DS4.ico" />
<None Include="Resources\mouse.png" /> <None Include="Resources\mouse.png" />
<None Include="Resources\rainbow.png" /> <None Include="Resources\rainbow.png" />
<None Include="Resources\rainbowC.png" /> <None Include="Resources\rainbowC.png" />
<None Include="Resources\Pairmode.png" />
<None Include="Resources\LeftTouch.png" /> <None Include="Resources\LeftTouch.png" />
<None Include="Resources\MultiTouch.png" /> <None Include="Resources\MultiTouch.png" />
<None Include="Resources\RightTouch.png" /> <None Include="Resources\RightTouch.png" />
<None Include="Resources\Pairmode.png" /> <None Include="Resources\imageres_new.png" />
<None Include="Resources\none.png" />
<Content Include="Resources\Scp_All.ico" /> <Content Include="Resources\Scp_All.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -28,7 +28,6 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Hotkeys));
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
@ -49,48 +48,68 @@
this.linkInhexSTER = new System.Windows.Forms.LinkLabel(); this.linkInhexSTER = new System.Windows.Forms.LinkLabel();
this.linkJhebbel = new System.Windows.Forms.LinkLabel(); this.linkJhebbel = new System.Windows.Forms.LinkLabel();
this.linkUninstall = new System.Windows.Forms.LinkLabel(); this.linkUninstall = new System.Windows.Forms.LinkLabel();
this.label6 = new System.Windows.Forms.Label();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.label24 = new System.Windows.Forms.Label();
this.label20 = new System.Windows.Forms.Label();
this.label22 = new System.Windows.Forms.Label();
this.label17 = new System.Windows.Forms.Label();
this.label18 = new System.Windows.Forms.Label();
this.label11 = new System.Windows.Forms.Label();
this.label19 = new System.Windows.Forms.Label();
this.label12 = new System.Windows.Forms.Label();
this.label21 = new System.Windows.Forms.Label();
this.label16 = new System.Windows.Forms.Label();
this.label28 = new System.Windows.Forms.Label();
this.label29 = new System.Windows.Forms.Label();
this.label25 = new System.Windows.Forms.Label();
this.label27 = new System.Windows.Forms.Label();
this.label26 = new System.Windows.Forms.Label();
this.label23 = new System.Windows.Forms.Label();
this.lLBUpdate = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// label1 // label1
// //
this.label1.AutoSize = true; this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(26, 31); this.label1.Location = new System.Drawing.Point(3, 110);
this.label1.Name = "label1"; this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(129, 13); this.label1.Size = new System.Drawing.Size(108, 13);
this.label1.TabIndex = 0; this.label1.TabIndex = 0;
this.label1.Text = "Finger on Touchpad + PS"; this.label1.Text = "Click Touchpad + PS";
// //
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(26, 111); this.label3.Location = new System.Drawing.Point(3, 176);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(176, 13); this.label3.Size = new System.Drawing.Size(125, 13);
this.label3.TabIndex = 2; this.label3.TabIndex = 2;
this.label3.Text = "Tap then hold touchpad (if enabled)"; this.label3.Text = "Tap then hold touchpad*";
// //
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(26, 136); this.label4.Location = new System.Drawing.Point(3, 132);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(172, 13); this.label4.Size = new System.Drawing.Size(121, 13);
this.label4.TabIndex = 3; this.label4.TabIndex = 3;
this.label4.Text = "Pad click on lower right (if enabled)"; this.label4.Text = "Pad click on lower right*";
// //
// label5 // label5
// //
this.label5.AutoSize = true; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(226, 31); this.label5.Location = new System.Drawing.Point(193, 110);
this.label5.Name = "label5"; this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(138, 26); this.label5.Size = new System.Drawing.Size(231, 13);
this.label5.TabIndex = 4; this.label5.TabIndex = 4;
this.label5.Text = "Turn off touchpad movment\r\n(pressing still works)"; this.label5.Text = "Turn off touchpad movment (clicking still works)";
// //
// label7 // label7
// //
this.label7.AutoSize = true; this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(226, 111); this.label7.Location = new System.Drawing.Point(193, 176);
this.label7.Name = "label7"; this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(83, 13); this.label7.Size = new System.Drawing.Size(83, 13);
this.label7.TabIndex = 6; this.label7.TabIndex = 6;
@ -99,27 +118,27 @@
// label8 // label8
// //
this.label8.AutoSize = true; this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(226, 136); this.label8.Location = new System.Drawing.Point(193, 132);
this.label8.Name = "label8"; this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(165, 26); this.label8.Size = new System.Drawing.Size(313, 13);
this.label8.TabIndex = 7; this.label8.TabIndex = 7;
this.label8.Text = "Right click (Best used when right \r\nside is used as a mouse button)"; this.label8.Text = "Right click (Best used when right side is used as a mouse button)";
// //
// button1 // button1
// //
this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.button1.Location = new System.Drawing.Point(163, 332); this.button1.Location = new System.Drawing.Point(215, 399);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23); this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 8; this.button1.TabIndex = 8;
this.button1.Text = "Ok"; this.button1.Text = "Done";
this.button1.UseVisualStyleBackColor = true; this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click); this.button1.Click += new System.EventHandler(this.button1_Click);
// //
// label9 // label9
// //
this.label9.AutoSize = true; this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(226, 87); this.label9.Location = new System.Drawing.Point(193, 154);
this.label9.Name = "label9"; this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(83, 13); this.label9.Size = new System.Drawing.Size(83, 13);
this.label9.TabIndex = 10; this.label9.TabIndex = 10;
@ -128,34 +147,36 @@
// label10 // label10
// //
this.label10.AutoSize = true; this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(26, 87); this.label10.Location = new System.Drawing.Point(3, 154);
this.label10.Name = "label10"; this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(171, 13); this.label10.Size = new System.Drawing.Size(175, 13);
this.label10.TabIndex = 9; this.label10.TabIndex = 9;
this.label10.Text = "Two fingers up/down on touchpad"; this.label10.Text = "Two fingers up/down on touchpad*";
// //
// label13 // label13
// //
this.label13.Location = new System.Drawing.Point(2, 171); this.label13.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label13.AutoSize = true;
this.label13.Location = new System.Drawing.Point(3, 224);
this.label13.Name = "label13"; this.label13.Name = "label13";
this.label13.Size = new System.Drawing.Size(397, 57); this.label13.Size = new System.Drawing.Size(184, 13);
this.label13.TabIndex = 14; this.label13.TabIndex = 14;
this.label13.Text = resources.GetString("label13.Text"); this.label13.Text = "When mapping keyboard and mouse:";
this.label13.TextAlign = System.Drawing.ContentAlignment.TopCenter; this.label13.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// label14 // label14
// //
this.label14.AutoSize = true; this.label14.AutoSize = true;
this.label14.Location = new System.Drawing.Point(227, 63); this.label14.Location = new System.Drawing.Point(193, 88);
this.label14.Name = "label14"; this.label14.Name = "label14";
this.label14.Size = new System.Drawing.Size(131, 13); this.label14.Size = new System.Drawing.Size(201, 13);
this.label14.TabIndex = 16; this.label14.TabIndex = 16;
this.label14.Text = "Disconnect Controller (BT)"; this.label14.Text = "Disconnect Controller (Only on Bluetooth)";
// //
// label15 // label15
// //
this.label15.AutoSize = true; this.label15.AutoSize = true;
this.label15.Location = new System.Drawing.Point(27, 63); this.label15.Location = new System.Drawing.Point(3, 88);
this.label15.Name = "label15"; this.label15.Name = "label15";
this.label15.Size = new System.Drawing.Size(103, 13); this.label15.Size = new System.Drawing.Size(103, 13);
this.label15.TabIndex = 15; this.label15.TabIndex = 15;
@ -165,7 +186,7 @@
// //
this.linkProfiles.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkProfiles.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkProfiles.AutoSize = true; this.linkProfiles.AutoSize = true;
this.linkProfiles.Location = new System.Drawing.Point(292, 337); this.linkProfiles.Location = new System.Drawing.Point(378, 404);
this.linkProfiles.Name = "linkProfiles"; this.linkProfiles.Name = "linkProfiles";
this.linkProfiles.Size = new System.Drawing.Size(94, 13); this.linkProfiles.Size = new System.Drawing.Size(94, 13);
this.linkProfiles.TabIndex = 17; this.linkProfiles.TabIndex = 17;
@ -177,7 +198,7 @@
// //
this.linkElectro.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkElectro.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkElectro.AutoSize = true; this.linkElectro.AutoSize = true;
this.linkElectro.Location = new System.Drawing.Point(215, 273); this.linkElectro.Location = new System.Drawing.Point(272, 374);
this.linkElectro.Name = "linkElectro"; this.linkElectro.Name = "linkElectro";
this.linkElectro.Size = new System.Drawing.Size(149, 13); this.linkElectro.Size = new System.Drawing.Size(149, 13);
this.linkElectro.TabIndex = 18; this.linkElectro.TabIndex = 18;
@ -189,7 +210,7 @@
// //
this.linkJays2Kings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkJays2Kings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkJays2Kings.AutoSize = true; this.linkJays2Kings.AutoSize = true;
this.linkJays2Kings.Location = new System.Drawing.Point(95, 273); this.linkJays2Kings.Location = new System.Drawing.Point(17, 374);
this.linkJays2Kings.Name = "linkJays2Kings"; this.linkJays2Kings.Name = "linkJays2Kings";
this.linkJays2Kings.Size = new System.Drawing.Size(60, 13); this.linkJays2Kings.Size = new System.Drawing.Size(60, 13);
this.linkJays2Kings.TabIndex = 18; this.linkJays2Kings.TabIndex = 18;
@ -201,7 +222,7 @@
// //
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(146, 251); this.label2.Location = new System.Drawing.Point(203, 352);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(109, 13); this.label2.Size = new System.Drawing.Size(109, 13);
this.label2.TabIndex = 13; this.label2.TabIndex = 13;
@ -209,19 +230,19 @@
// //
// lbAbout // lbAbout
// //
this.lbAbout.AutoSize = true;
this.lbAbout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbAbout.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbAbout.Location = new System.Drawing.Point(26, 9); this.lbAbout.Location = new System.Drawing.Point(3, 9);
this.lbAbout.Name = "lbAbout"; this.lbAbout.Name = "lbAbout";
this.lbAbout.Size = new System.Drawing.Size(243, 13); this.lbAbout.Size = new System.Drawing.Size(515, 19);
this.lbAbout.TabIndex = 0; this.lbAbout.TabIndex = 0;
this.lbAbout.Text = "DS4Windows - Jays2Kings Build (Version "; this.lbAbout.Text = "DS4Windows - Jays2Kings Build (Version ";
this.lbAbout.TextAlign = System.Drawing.ContentAlignment.TopCenter;
// //
// linkInhexSTER // linkInhexSTER
// //
this.linkInhexSTER.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkInhexSTER.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkInhexSTER.AutoSize = true; this.linkInhexSTER.AutoSize = true;
this.linkInhexSTER.Location = new System.Drawing.Point(38, 300); this.linkInhexSTER.Location = new System.Drawing.Point(95, 374);
this.linkInhexSTER.Name = "linkInhexSTER"; this.linkInhexSTER.Name = "linkInhexSTER";
this.linkInhexSTER.Size = new System.Drawing.Size(159, 13); this.linkInhexSTER.Size = new System.Drawing.Size(159, 13);
this.linkInhexSTER.TabIndex = 18; this.linkInhexSTER.TabIndex = 18;
@ -233,7 +254,7 @@
// //
this.linkJhebbel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkJhebbel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkJhebbel.AutoSize = true; this.linkJhebbel.AutoSize = true;
this.linkJhebbel.Location = new System.Drawing.Point(268, 300); this.linkJhebbel.Location = new System.Drawing.Point(450, 374);
this.linkJhebbel.Name = "linkJhebbel"; this.linkJhebbel.Name = "linkJhebbel";
this.linkJhebbel.Size = new System.Drawing.Size(41, 13); this.linkJhebbel.Size = new System.Drawing.Size(41, 13);
this.linkJhebbel.TabIndex = 18; this.linkJhebbel.TabIndex = 18;
@ -245,7 +266,7 @@
// //
this.linkUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.linkUninstall.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.linkUninstall.AutoSize = true; this.linkUninstall.AutoSize = true;
this.linkUninstall.Location = new System.Drawing.Point(12, 337); this.linkUninstall.Location = new System.Drawing.Point(35, 404);
this.linkUninstall.Name = "linkUninstall"; this.linkUninstall.Name = "linkUninstall";
this.linkUninstall.Size = new System.Drawing.Size(106, 13); this.linkUninstall.Size = new System.Drawing.Size(106, 13);
this.linkUninstall.TabIndex = 17; this.linkUninstall.TabIndex = 17;
@ -253,36 +274,253 @@
this.linkUninstall.Text = "Uninstall VBus Driver"; this.linkUninstall.Text = "Uninstall VBus Driver";
this.linkUninstall.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkUninstall_LinkClicked); this.linkUninstall.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkUninstall_LinkClicked);
// //
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(193, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(59, 13);
this.label6.TabIndex = 14;
this.label6.Text = "Left Touch";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.ColumnCount = 2;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.Controls.Add(this.label24, 0, 11);
this.tableLayoutPanel1.Controls.Add(this.label20, 0, 9);
this.tableLayoutPanel1.Controls.Add(this.label22, 1, 9);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.label17, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.label5, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.label6, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.label18, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label11, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.label10, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.label19, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.label9, 1, 7);
this.tableLayoutPanel1.Controls.Add(this.label12, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.label3, 0, 8);
this.tableLayoutPanel1.Controls.Add(this.label13, 0, 10);
this.tableLayoutPanel1.Controls.Add(this.label21, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.label7, 1, 8);
this.tableLayoutPanel1.Controls.Add(this.label4, 0, 6);
this.tableLayoutPanel1.Controls.Add(this.label15, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.label16, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.label8, 1, 6);
this.tableLayoutPanel1.Controls.Add(this.label14, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.label28, 1, 12);
this.tableLayoutPanel1.Controls.Add(this.label29, 1, 11);
this.tableLayoutPanel1.Controls.Add(this.label25, 0, 12);
this.tableLayoutPanel1.Controls.Add(this.label27, 1, 13);
this.tableLayoutPanel1.Controls.Add(this.label26, 0, 13);
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 31);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 14;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 7.142856F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(513, 318);
this.tableLayoutPanel1.TabIndex = 19;
//
// label24
//
this.label24.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label24.AutoSize = true;
this.label24.Location = new System.Drawing.Point(3, 246);
this.label24.Name = "label24";
this.label24.Size = new System.Drawing.Size(40, 13);
this.label24.TabIndex = 14;
this.label24.Text = "Toggle";
//
// label20
//
this.label20.AutoSize = true;
this.label20.Location = new System.Drawing.Point(3, 198);
this.label20.Name = "label20";
this.label20.Size = new System.Drawing.Size(172, 13);
this.label20.TabIndex = 14;
this.label20.Text = "L1+R1+Touchpad Slide left or right";
//
// label22
//
this.label22.AutoSize = true;
this.label22.Location = new System.Drawing.Point(193, 198);
this.label22.Name = "label22";
this.label22.Size = new System.Drawing.Size(108, 13);
this.label22.TabIndex = 14;
this.label22.Text = "Cycle through profiles";
//
// label17
//
this.label17.AutoSize = true;
this.label17.Location = new System.Drawing.Point(3, 0);
this.label17.Name = "label17";
this.label17.Size = new System.Drawing.Size(129, 13);
this.label17.TabIndex = 14;
this.label17.Text = "Click left side of touchpad";
//
// label18
//
this.label18.AutoSize = true;
this.label18.Location = new System.Drawing.Point(3, 22);
this.label18.Name = "label18";
this.label18.Size = new System.Drawing.Size(135, 13);
this.label18.TabIndex = 14;
this.label18.Text = "Click right side of touchpad";
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(193, 22);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(66, 13);
this.label11.TabIndex = 14;
this.label11.Text = "Right Touch";
//
// label19
//
this.label19.AutoSize = true;
this.label19.Location = new System.Drawing.Point(3, 44);
this.label19.Name = "label19";
this.label19.Size = new System.Drawing.Size(146, 13);
this.label19.TabIndex = 14;
this.label19.Text = "Click touchpad with 2 fingers ";
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(193, 44);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(56, 13);
this.label12.TabIndex = 14;
this.label12.Text = "Multitouch";
//
// label21
//
this.label21.AutoSize = true;
this.label21.Location = new System.Drawing.Point(3, 66);
this.label21.Name = "label21";
this.label21.Size = new System.Drawing.Size(141, 13);
this.label21.TabIndex = 14;
this.label21.Text = "Click upper part of touchpad";
//
// label16
//
this.label16.AutoSize = true;
this.label16.Location = new System.Drawing.Point(193, 66);
this.label16.Name = "label16";
this.label16.Size = new System.Drawing.Size(70, 13);
this.label16.TabIndex = 14;
this.label16.Text = "Upper Touch";
//
// label28
//
this.label28.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label28.AutoSize = true;
this.label28.Location = new System.Drawing.Point(193, 268);
this.label28.Name = "label28";
this.label28.Size = new System.Drawing.Size(160, 13);
this.label28.TabIndex = 14;
this.label28.Text = "Assign multiple keys to one input";
//
// label29
//
this.label29.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label29.AutoSize = true;
this.label29.Location = new System.Drawing.Point(193, 246);
this.label29.Name = "label29";
this.label29.Size = new System.Drawing.Size(313, 13);
this.label29.TabIndex = 14;
this.label29.Text = "Keys are interperted differently. May be needed for certain games";
//
// label25
//
this.label25.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label25.AutoSize = true;
this.label25.Location = new System.Drawing.Point(3, 268);
this.label25.Name = "label25";
this.label25.Size = new System.Drawing.Size(37, 13);
this.label25.TabIndex = 14;
this.label25.Text = "Macro";
//
// label27
//
this.label27.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label27.AutoSize = true;
this.label27.Location = new System.Drawing.Point(193, 295);
this.label27.Name = "label27";
this.label27.Size = new System.Drawing.Size(296, 13);
this.label27.TabIndex = 14;
this.label27.Text = "The key will remain in a \"held down\" state until pressed again";
//
// label26
//
this.label26.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label26.AutoSize = true;
this.label26.Location = new System.Drawing.Point(3, 295);
this.label26.Name = "label26";
this.label26.Size = new System.Drawing.Size(60, 13);
this.label26.TabIndex = 14;
this.label26.Text = "Scan Code";
//
// label23
//
this.label23.AutoSize = true;
this.label23.Location = new System.Drawing.Point(451, 9);
this.label23.Name = "label23";
this.label23.Size = new System.Drawing.Size(58, 13);
this.label23.TabIndex = 3;
this.label23.Text = "*If enabled";
//
// lLBUpdate
//
this.lLBUpdate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.lLBUpdate.AutoSize = true;
this.lLBUpdate.Location = new System.Drawing.Point(-2, 9);
this.lLBUpdate.Name = "lLBUpdate";
this.lLBUpdate.Size = new System.Drawing.Size(96, 13);
this.lLBUpdate.TabIndex = 48;
this.lLBUpdate.TabStop = true;
this.lLBUpdate.Text = "Check for Updates";
this.lLBUpdate.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lLBUpdate_LinkClicked);
//
// Hotkeys // Hotkeys
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(399, 359); this.ClientSize = new System.Drawing.Size(520, 426);
this.Controls.Add(this.lLBUpdate);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.linkJhebbel); this.Controls.Add(this.linkJhebbel);
this.Controls.Add(this.linkInhexSTER); this.Controls.Add(this.linkInhexSTER);
this.Controls.Add(this.linkJays2Kings); this.Controls.Add(this.linkJays2Kings);
this.Controls.Add(this.linkElectro); this.Controls.Add(this.linkElectro);
this.Controls.Add(this.linkUninstall); this.Controls.Add(this.linkUninstall);
this.Controls.Add(this.linkProfiles); this.Controls.Add(this.linkProfiles);
this.Controls.Add(this.label14); this.Controls.Add(this.label23);
this.Controls.Add(this.label15);
this.Controls.Add(this.label13);
this.Controls.Add(this.label2); this.Controls.Add(this.label2);
this.Controls.Add(this.label9);
this.Controls.Add(this.label10);
this.Controls.Add(this.button1); this.Controls.Add(this.button1);
this.Controls.Add(this.label8);
this.Controls.Add(this.label7);
this.Controls.Add(this.label5);
this.Controls.Add(this.label4);
this.Controls.Add(this.label3);
this.Controls.Add(this.lbAbout); this.Controls.Add(this.lbAbout);
this.Controls.Add(this.label1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "Hotkeys"; this.Name = "Hotkeys";
this.Text = "Help"; this.Text = "Help";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
this.PerformLayout(); this.PerformLayout();
@ -310,5 +548,24 @@
private System.Windows.Forms.LinkLabel linkInhexSTER; private System.Windows.Forms.LinkLabel linkInhexSTER;
private System.Windows.Forms.LinkLabel linkJhebbel; private System.Windows.Forms.LinkLabel linkJhebbel;
private System.Windows.Forms.LinkLabel linkUninstall; private System.Windows.Forms.LinkLabel linkUninstall;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label label21;
private System.Windows.Forms.Label label16;
private System.Windows.Forms.Label label19;
private System.Windows.Forms.Label label12;
private System.Windows.Forms.Label label18;
private System.Windows.Forms.Label label17;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.Label label20;
private System.Windows.Forms.Label label22;
private System.Windows.Forms.Label label23;
private System.Windows.Forms.Label label24;
private System.Windows.Forms.Label label25;
private System.Windows.Forms.Label label26;
private System.Windows.Forms.Label label27;
private System.Windows.Forms.Label label28;
private System.Windows.Forms.Label label29;
private System.Windows.Forms.LinkLabel lLBUpdate;
} }
} }

View File

@ -7,6 +7,8 @@ using System.Linq;
using System.Text; using System.Text;
using System.Windows.Forms; using System.Windows.Forms;
using DS4Control; using DS4Control;
using System.Net;
using System.IO;
namespace ScpServer namespace ScpServer
{ {
@ -58,5 +60,45 @@ namespace ScpServer
try { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver\\ScpDriver.exe"); } try { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver\\ScpDriver.exe"); }
catch { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver"); } catch { System.Diagnostics.Process.Start(Global.appdatapath + "\\Virtual Bus Driver"); }
} }
private void lLBUpdate_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Uri url = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/newest%20version.txt"); //Sorry other devs, gonna have to find your own server
WebClient wc = new WebClient();
wc.DownloadFileAsync(url, Global.appdatapath + "\\version.txt");
wc.DownloadFileCompleted += wc_DownloadFileCompleted;
}
void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
Global.setLastChecked(DateTime.Now);
double newversion;
try
{
if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion))
if (newversion > Global.getVersion())
if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
if (!File.Exists("Updater.exe"))
{
Uri url2 = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/Updater.exe");
WebClient wc2 = new WebClient();
wc2.DownloadFile(url2, "Updater.exe");
}
System.Diagnostics.Process.Start("Updater.exe");
this.Close();
}
else
File.Delete(Global.appdatapath + "\\version.txt");
else
{
File.Delete(Global.appdatapath + "\\version.txt");
MessageBox.Show("You are up to date", "DS4 Updater");
}
else
File.Delete(Global.appdatapath + "\\version.txt");
}
catch { };
}
} }
} }

View File

@ -117,10 +117,4 @@
<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="label13.Text" xml:space="preserve">
<value>When mapping as keyboard and mouse:
Toggle - The key will remain in a "held down" state until pressed again
Macro - Assign multiple keys to one input
Scan Code - keys are interperted differently. May be needed for certain games.</value>
</data>
</root> </root>

99
DS4Tool/MessageTextBox.Designer.cs generated Normal file
View File

@ -0,0 +1,99 @@
namespace ScpServer
{
partial class MessageTextBox
{
/// <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.button1 = new System.Windows.Forms.Button();
this.tBProfile = new System.Windows.Forms.TextBox();
this.button2 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.button1.Location = new System.Drawing.Point(195, 5);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.TabIndex = 2;
this.button1.Text = "Save";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// tBProfile
//
this.tBProfile.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText;
this.tBProfile.Location = new System.Drawing.Point(12, 7);
this.tBProfile.Name = "tBProfile";
this.tBProfile.Size = new System.Drawing.Size(177, 20);
this.tBProfile.TabIndex = 239;
this.tBProfile.Text = "<type new name here>";
this.tBProfile.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged);
this.tBProfile.Enter += new System.EventHandler(this.tBProfile_Enter);
this.tBProfile.Leave += new System.EventHandler(this.tBProfile_Leave);
//
// button2
//
this.button2.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.button2.Location = new System.Drawing.Point(276, 5);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(75, 23);
this.button2.TabIndex = 240;
this.button2.Text = "Cancel";
this.button2.UseVisualStyleBackColor = true;
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// MessageTextBox
//
this.AcceptButton = this.button1;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(242)))), ((int)(((byte)(242)))), ((int)(((byte)(242)))));
this.ClientSize = new System.Drawing.Size(359, 35);
this.Controls.Add(this.button2);
this.Controls.Add(this.tBProfile);
this.Controls.Add(this.button1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "MessageTextBox";
this.ShowInTaskbar = false;
this.Text = "Type name of New Profile";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button button1;
private System.Windows.Forms.TextBox tBProfile;
private System.Windows.Forms.Button button2;
}
}

62
DS4Tool/MessageTextBox.cs Normal file
View File

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DS4Control;
namespace ScpServer
{
public partial class MessageTextBox : Form
{
public string oldfilename;
ScpForm yes;
public MessageTextBox(string name, ScpForm mainwindow)
{
InitializeComponent();
oldfilename = name;
yes = mainwindow;
}
private void button1_Click(object sender, EventArgs e)
{
if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|"))
{
System.IO.File.Copy(Global.appdatapath + "\\Profiles\\" + oldfilename + ".xml", Global.appdatapath + "\\Profiles\\" + tBProfile.Text + ".xml", true);
yes.RefreshProfiles();
this.Close();
}
else
MessageBox.Show("Please enter a valid name", "Not valid", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
private void tBProfile_TextChanged(object sender, EventArgs e)
{
if (tBProfile.Text != null && tBProfile.Text != "" && !tBProfile.Text.Contains("\\") && !tBProfile.Text.Contains("/") && !tBProfile.Text.Contains(":") && !tBProfile.Text.Contains("*") && !tBProfile.Text.Contains("?") && !tBProfile.Text.Contains("\"") && !tBProfile.Text.Contains("<") && !tBProfile.Text.Contains(">") && !tBProfile.Text.Contains("|"))
tBProfile.ForeColor = System.Drawing.SystemColors.WindowText;
else
tBProfile.ForeColor = System.Drawing.SystemColors.GrayText;
}
private void tBProfile_Enter(object sender, EventArgs e)
{
if (tBProfile.Text == "<type new name here>")
tBProfile.Text = "";
}
private void tBProfile_Leave(object sender, EventArgs e)
{
if (tBProfile.Text == "")
tBProfile.Text = "<type new name here>";
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

120
DS4Tool/MessageTextBox.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -28,7 +28,6 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Options));
this.bnTouchUpper = new System.Windows.Forms.Button(); this.bnTouchUpper = new System.Windows.Forms.Button();
this.bnTouchMulti = new System.Windows.Forms.Button(); this.bnTouchMulti = new System.Windows.Forms.Button();
this.bnTouchRight = new System.Windows.Forms.Button(); this.bnTouchRight = new System.Windows.Forms.Button();
@ -135,10 +134,12 @@
this.numUDL2 = new System.Windows.Forms.NumericUpDown(); this.numUDL2 = new System.Windows.Forms.NumericUpDown();
this.gBTouchpad = new System.Windows.Forms.GroupBox(); this.gBTouchpad = new System.Windows.Forms.GroupBox();
this.gBOther = new System.Windows.Forms.GroupBox(); this.gBOther = new System.Windows.Forms.GroupBox();
this.nUDSixaxis = new System.Windows.Forms.NumericUpDown();
this.cBControllerInput = new System.Windows.Forms.CheckBox(); this.cBControllerInput = new System.Windows.Forms.CheckBox();
this.gBLightbar = new System.Windows.Forms.GroupBox(); this.gBLightbar = new System.Windows.Forms.GroupBox();
this.gBRumble = new System.Windows.Forms.GroupBox(); this.gBRumble = new System.Windows.Forms.GroupBox();
this.gBDeadzone = new System.Windows.Forms.GroupBox(); this.gBDeadzone = new System.Windows.Forms.GroupBox();
this.btnCancel = new System.Windows.Forms.Button();
this.advColorDialog = new ScpServer.AdvancedColorDialog(); this.advColorDialog = new ScpServer.AdvancedColorDialog();
this.MainPanel.SuspendLayout(); this.MainPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pBController)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pBController)).BeginInit();
@ -175,6 +176,7 @@
((System.ComponentModel.ISupportInitialize)(this.numUDL2)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.numUDL2)).BeginInit();
this.gBTouchpad.SuspendLayout(); this.gBTouchpad.SuspendLayout();
this.gBOther.SuspendLayout(); this.gBOther.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDSixaxis)).BeginInit();
this.gBLightbar.SuspendLayout(); this.gBLightbar.SuspendLayout();
this.gBRumble.SuspendLayout(); this.gBRumble.SuspendLayout();
this.gBDeadzone.SuspendLayout(); this.gBDeadzone.SuspendLayout();
@ -297,7 +299,7 @@
// pBController // pBController
// //
this.pBController.Enabled = false; this.pBController.Enabled = false;
this.pBController.Image = ((System.Drawing.Image)(resources.GetObject("pBController.Image"))); this.pBController.Image = global::ScpServer.Properties.Resources.DS4_Controller;
this.pBController.Location = new System.Drawing.Point(0, 0); this.pBController.Location = new System.Drawing.Point(0, 0);
this.pBController.Name = "pBController"; this.pBController.Name = "pBController";
this.pBController.Size = new System.Drawing.Size(245, 132); this.pBController.Size = new System.Drawing.Size(245, 132);
@ -1300,7 +1302,7 @@
// tBsixaxisAccelZ // tBsixaxisAccelZ
// //
this.tBsixaxisAccelZ.AutoSize = false; this.tBsixaxisAccelZ.AutoSize = false;
this.tBsixaxisAccelZ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisAccelZ.BackColor = System.Drawing.Color.White;
this.tBsixaxisAccelZ.Enabled = false; this.tBsixaxisAccelZ.Enabled = false;
this.tBsixaxisAccelZ.Location = new System.Drawing.Point(394, 6); this.tBsixaxisAccelZ.Location = new System.Drawing.Point(394, 6);
this.tBsixaxisAccelZ.Maximum = 32767; this.tBsixaxisAccelZ.Maximum = 32767;
@ -1315,19 +1317,19 @@
this.flushHIDQueue.AccessibleName = "flushHIDQueue"; this.flushHIDQueue.AccessibleName = "flushHIDQueue";
this.flushHIDQueue.AutoSize = true; this.flushHIDQueue.AutoSize = true;
this.flushHIDQueue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); this.flushHIDQueue.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.flushHIDQueue.Location = new System.Drawing.Point(214, 15); this.flushHIDQueue.Location = new System.Drawing.Point(302, 39);
this.flushHIDQueue.Name = "flushHIDQueue"; this.flushHIDQueue.Name = "flushHIDQueue";
this.flushHIDQueue.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.flushHIDQueue.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
this.flushHIDQueue.Size = new System.Drawing.Size(195, 17); this.flushHIDQueue.Size = new System.Drawing.Size(112, 30);
this.flushHIDQueue.TabIndex = 198; this.flushHIDQueue.TabIndex = 198;
this.flushHIDQueue.Text = "Flush HID queue after each reading"; this.flushHIDQueue.Text = "Flush HID queue \r\nafter each reading";
this.flushHIDQueue.UseVisualStyleBackColor = true; this.flushHIDQueue.UseVisualStyleBackColor = true;
this.flushHIDQueue.CheckedChanged += new System.EventHandler(this.flushHIDQueue_CheckedChanged); this.flushHIDQueue.CheckedChanged += new System.EventHandler(this.flushHIDQueue_CheckedChanged);
// //
// tBsixaxisAccelY // tBsixaxisAccelY
// //
this.tBsixaxisAccelY.AutoSize = false; this.tBsixaxisAccelY.AutoSize = false;
this.tBsixaxisAccelY.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisAccelY.BackColor = System.Drawing.Color.White;
this.tBsixaxisAccelY.Enabled = false; this.tBsixaxisAccelY.Enabled = false;
this.tBsixaxisAccelY.Location = new System.Drawing.Point(347, 6); this.tBsixaxisAccelY.Location = new System.Drawing.Point(347, 6);
this.tBsixaxisAccelY.Maximum = 32767; this.tBsixaxisAccelY.Maximum = 32767;
@ -1349,7 +1351,7 @@
// tBsixaxisAccelX // tBsixaxisAccelX
// //
this.tBsixaxisAccelX.AutoSize = false; this.tBsixaxisAccelX.AutoSize = false;
this.tBsixaxisAccelX.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisAccelX.BackColor = System.Drawing.Color.White;
this.tBsixaxisAccelX.Enabled = false; this.tBsixaxisAccelX.Enabled = false;
this.tBsixaxisAccelX.Location = new System.Drawing.Point(301, 6); this.tBsixaxisAccelX.Location = new System.Drawing.Point(301, 6);
this.tBsixaxisAccelX.Maximum = 32767; this.tBsixaxisAccelX.Maximum = 32767;
@ -1371,7 +1373,7 @@
// tBsixaxisGyroZ // tBsixaxisGyroZ
// //
this.tBsixaxisGyroZ.AutoSize = false; this.tBsixaxisGyroZ.AutoSize = false;
this.tBsixaxisGyroZ.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisGyroZ.BackColor = System.Drawing.Color.White;
this.tBsixaxisGyroZ.Enabled = false; this.tBsixaxisGyroZ.Enabled = false;
this.tBsixaxisGyroZ.Location = new System.Drawing.Point(163, 6); this.tBsixaxisGyroZ.Location = new System.Drawing.Point(163, 6);
this.tBsixaxisGyroZ.Maximum = 32767; this.tBsixaxisGyroZ.Maximum = 32767;
@ -1393,7 +1395,7 @@
// tBsixaxisGyroY // tBsixaxisGyroY
// //
this.tBsixaxisGyroY.AutoSize = false; this.tBsixaxisGyroY.AutoSize = false;
this.tBsixaxisGyroY.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisGyroY.BackColor = System.Drawing.Color.White;
this.tBsixaxisGyroY.Enabled = false; this.tBsixaxisGyroY.Enabled = false;
this.tBsixaxisGyroY.Location = new System.Drawing.Point(116, 6); this.tBsixaxisGyroY.Location = new System.Drawing.Point(116, 6);
this.tBsixaxisGyroY.Maximum = 32767; this.tBsixaxisGyroY.Maximum = 32767;
@ -1406,7 +1408,7 @@
// tBsixaxisGyroX // tBsixaxisGyroX
// //
this.tBsixaxisGyroX.AutoSize = false; this.tBsixaxisGyroX.AutoSize = false;
this.tBsixaxisGyroX.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.tBsixaxisGyroX.BackColor = System.Drawing.Color.White;
this.tBsixaxisGyroX.Enabled = false; this.tBsixaxisGyroX.Enabled = false;
this.tBsixaxisGyroX.Location = new System.Drawing.Point(69, 6); this.tBsixaxisGyroX.Location = new System.Drawing.Point(69, 6);
this.tBsixaxisGyroX.Maximum = 32767; this.tBsixaxisGyroX.Maximum = 32767;
@ -1482,9 +1484,9 @@
// //
// btnRumbleTest // btnRumbleTest
// //
this.btnRumbleTest.Location = new System.Drawing.Point(149, 11); this.btnRumbleTest.Location = new System.Drawing.Point(161, 11);
this.btnRumbleTest.Name = "btnRumbleTest"; this.btnRumbleTest.Name = "btnRumbleTest";
this.btnRumbleTest.Size = new System.Drawing.Size(53, 23); this.btnRumbleTest.Size = new System.Drawing.Size(41, 23);
this.btnRumbleTest.TabIndex = 214; this.btnRumbleTest.TabIndex = 214;
this.btnRumbleTest.Text = "Test"; this.btnRumbleTest.Text = "Test";
this.btnRumbleTest.UseVisualStyleBackColor = true; this.btnRumbleTest.UseVisualStyleBackColor = true;
@ -1643,7 +1645,7 @@
this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText; this.tBProfile.ForeColor = System.Drawing.SystemColors.GrayText;
this.tBProfile.Location = new System.Drawing.Point(77, 9); this.tBProfile.Location = new System.Drawing.Point(77, 9);
this.tBProfile.Name = "tBProfile"; this.tBProfile.Name = "tBProfile";
this.tBProfile.Size = new System.Drawing.Size(269, 20); this.tBProfile.Size = new System.Drawing.Size(185, 20);
this.tBProfile.TabIndex = 238; this.tBProfile.TabIndex = 238;
this.tBProfile.Text = "<type profile name here>"; this.tBProfile.Text = "<type profile name here>";
this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged); this.tBProfile.TextChanged += new System.EventHandler(this.tBProfile_TextChanged);
@ -1652,7 +1654,7 @@
// //
// btnSaveProfile // btnSaveProfile
// //
this.btnSaveProfile.Location = new System.Drawing.Point(352, 7); this.btnSaveProfile.Location = new System.Drawing.Point(268, 7);
this.btnSaveProfile.Name = "btnSaveProfile"; this.btnSaveProfile.Name = "btnSaveProfile";
this.btnSaveProfile.Size = new System.Drawing.Size(78, 23); this.btnSaveProfile.Size = new System.Drawing.Size(78, 23);
this.btnSaveProfile.TabIndex = 237; this.btnSaveProfile.TabIndex = 237;
@ -1789,6 +1791,7 @@
// //
// gBOther // gBOther
// //
this.gBOther.Controls.Add(this.nUDSixaxis);
this.gBOther.Controls.Add(this.cBControllerInput); this.gBOther.Controls.Add(this.cBControllerInput);
this.gBOther.Controls.Add(this.idleDisconnectTimeout); this.gBOther.Controls.Add(this.idleDisconnectTimeout);
this.gBOther.Controls.Add(this.lBButtonMouseSens); this.gBOther.Controls.Add(this.lBButtonMouseSens);
@ -1803,17 +1806,39 @@
this.gBOther.TabStop = false; this.gBOther.TabStop = false;
this.gBOther.Text = "Other"; this.gBOther.Text = "Other";
// //
// nUDSixaxis
//
this.nUDSixaxis.Location = new System.Drawing.Point(386, 16);
this.nUDSixaxis.Maximum = new decimal(new int[] {
4,
0,
0,
0});
this.nUDSixaxis.Minimum = new decimal(new int[] {
1,
0,
0,
0});
this.nUDSixaxis.Name = "nUDSixaxis";
this.nUDSixaxis.Size = new System.Drawing.Size(29, 20);
this.nUDSixaxis.TabIndex = 250;
this.nUDSixaxis.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// cBControllerInput // cBControllerInput
// //
this.cBControllerInput.AutoSize = true; this.cBControllerInput.AutoSize = true;
this.cBControllerInput.Checked = true; this.cBControllerInput.Checked = true;
this.cBControllerInput.CheckState = System.Windows.Forms.CheckState.Checked; this.cBControllerInput.CheckState = System.Windows.Forms.CheckState.Checked;
this.cBControllerInput.Location = new System.Drawing.Point(303, 38); this.cBControllerInput.Location = new System.Drawing.Point(187, 17);
this.cBControllerInput.Name = "cBControllerInput"; this.cBControllerInput.Name = "cBControllerInput";
this.cBControllerInput.RightToLeft = System.Windows.Forms.RightToLeft.Yes; this.cBControllerInput.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
this.cBControllerInput.Size = new System.Drawing.Size(106, 30); this.cBControllerInput.Size = new System.Drawing.Size(194, 17);
this.cBControllerInput.TabIndex = 242; this.cBControllerInput.TabIndex = 242;
this.cBControllerInput.Text = "Use controller to \r\nchange mapping"; this.cBControllerInput.Text = "Use a controller to change mapping";
this.cBControllerInput.UseVisualStyleBackColor = true; this.cBControllerInput.UseVisualStyleBackColor = true;
// //
// gBLightbar // gBLightbar
@ -1865,6 +1890,16 @@
this.gBDeadzone.TabStop = false; this.gBDeadzone.TabStop = false;
this.gBDeadzone.Text = "Deadzone"; this.gBDeadzone.Text = "Deadzone";
// //
// btnCancel
//
this.btnCancel.Location = new System.Drawing.Point(352, 7);
this.btnCancel.Name = "btnCancel";
this.btnCancel.Size = new System.Drawing.Size(75, 23);
this.btnCancel.TabIndex = 249;
this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true;
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
//
// advColorDialog // advColorDialog
// //
this.advColorDialog.AnyColor = true; this.advColorDialog.AnyColor = true;
@ -1875,8 +1910,9 @@
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(244)))), ((int)(((byte)(244))))); this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(885, 297); this.ClientSize = new System.Drawing.Size(889, 297);
this.Controls.Add(this.btnCancel);
this.Controls.Add(this.gBDeadzone); this.Controls.Add(this.gBDeadzone);
this.Controls.Add(this.gBRumble); this.Controls.Add(this.gBRumble);
this.Controls.Add(this.gBLightbar); this.Controls.Add(this.gBLightbar);
@ -1941,6 +1977,7 @@
this.gBTouchpad.PerformLayout(); this.gBTouchpad.PerformLayout();
this.gBOther.ResumeLayout(false); this.gBOther.ResumeLayout(false);
this.gBOther.PerformLayout(); this.gBOther.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nUDSixaxis)).EndInit();
this.gBLightbar.ResumeLayout(false); this.gBLightbar.ResumeLayout(false);
this.gBLightbar.PerformLayout(); this.gBLightbar.PerformLayout();
this.gBRumble.ResumeLayout(false); this.gBRumble.ResumeLayout(false);
@ -2067,6 +2104,8 @@
private System.Windows.Forms.GroupBox gBRumble; private System.Windows.Forms.GroupBox gBRumble;
private System.Windows.Forms.GroupBox gBDeadzone; private System.Windows.Forms.GroupBox gBDeadzone;
private System.Windows.Forms.CheckBox cBControllerInput; private System.Windows.Forms.CheckBox cBControllerInput;
private System.Windows.Forms.Button btnCancel;
private System.Windows.Forms.NumericUpDown nUDSixaxis;
} }
} }
 

View File

@ -11,7 +11,7 @@ namespace ScpServer
public partial class Options : Form public partial class Options : Form
{ {
private DS4Control.Control scpDevice; private DS4Control.Control scpDevice;
private int device; public int device;
private string filename; private string filename;
Byte[] oldLedColor, oldLowLedColor; Byte[] oldLedColor, oldLowLedColor;
Timer inputtimer = new Timer(), sixaxisTimer = new Timer(); Timer inputtimer = new Timer(), sixaxisTimer = new Timer();
@ -21,16 +21,22 @@ namespace ScpServer
private Color reg, full; private Color reg, full;
private Image colored, greyscale; private Image colored, greyscale;
ToolTip tp = new ToolTip(); ToolTip tp = new ToolTip();
public Options(DS4Control.Control bus_device, int deviceNum, string name) ScpForm root;
public Options(DS4Control.Control bus_device, int deviceNum, string name, ScpForm rt)
{ {
InitializeComponent(); InitializeComponent();
device = deviceNum; device = deviceNum;
scpDevice = bus_device; scpDevice = bus_device;
filename = name; filename = name;
colored = pBRainbow.Image; colored = pBRainbow.Image;
root = rt;
greyscale = GreyscaleImage((Bitmap)pBRainbow.Image); greyscale = GreyscaleImage((Bitmap)pBRainbow.Image);
if (deviceNum < 4)
nUDSixaxis.Value = deviceNum + 1;
if (filename != "") if (filename != "")
{ {
Global.setAProfile(4, name);
Global.LoadProfile(deviceNum);
tBProfile.Text = filename; tBProfile.Text = filename;
DS4Color color = Global.loadColor(device); DS4Color color = Global.loadColor(device);
redBar.Value = color.red; redBar.Value = color.red;
@ -92,19 +98,8 @@ namespace ScpServer
sixaxisTimer.Start(); sixaxisTimer.Start();
#region watch sixaxis data #region watch sixaxis data
sixaxisTimer.Tick += sixaxisTimer.Tick += sixaxisTimer_Tick;
(delegate
{
// MEMS gyro data is all calibrated to roughly -1G..1G for values -0x2000..0x1fff
// Enough additional acceleration and we are no longer mostly measuring Earth's gravity...
// We should try to indicate setpoints of the calibration when exposing this measurement....
SetDynamicTrackBarValue(tBsixaxisGyroX, (scpDevice.ExposedState[device].GyroX + tBsixaxisGyroX.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisGyroY, (scpDevice.ExposedState[device].GyroY + tBsixaxisGyroY.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisGyroZ, (scpDevice.ExposedState[device].GyroZ + tBsixaxisGyroZ.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelX, (scpDevice.ExposedState[device].AccelX + tBsixaxisAccelX.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelY, (scpDevice.ExposedState[device].AccelY + tBsixaxisAccelY.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelZ, (scpDevice.ExposedState[device].AccelZ + tBsixaxisAccelZ.Value * 2) / 3);
});
sixaxisTimer.Interval = 1000 / 60; sixaxisTimer.Interval = 1000 / 60;
#endregion #endregion
foreach (System.Windows.Forms.Control control in this.MainPanel.Controls) foreach (System.Windows.Forms.Control control in this.MainPanel.Controls)
@ -131,11 +126,24 @@ namespace ScpServer
inputtimer.Start(); inputtimer.Start();
inputtimer.Tick += InputDS4; inputtimer.Tick += InputDS4;
} }
void sixaxisTimer_Tick(object sender, EventArgs e)
{
// MEMS gyro data is all calibrated to roughly -1G..1G for values -0x2000..0x1fff
// Enough additional acceleration and we are no longer mostly measuring Earth's gravity...
// We should try to indicate setpoints of the calibration when exposing this measurement....
SetDynamicTrackBarValue(tBsixaxisGyroX, (scpDevice.ExposedState[(int)nUDSixaxis.Value -1].GyroX + tBsixaxisGyroX.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisGyroY, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].GyroY + tBsixaxisGyroY.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisGyroZ, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].GyroZ + tBsixaxisGyroZ.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelX, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelX + tBsixaxisAccelX.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelY, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelY + tBsixaxisAccelY.Value * 2) / 3);
SetDynamicTrackBarValue(tBsixaxisAccelZ, (scpDevice.ExposedState[(int)nUDSixaxis.Value - 1].AccelZ + tBsixaxisAccelZ.Value * 2) / 3);
}
private void InputDS4(object sender, EventArgs e) private void InputDS4(object sender, EventArgs e)
{ {
#region DS4Input #region DS4Input
if (Form.ActiveForm == this && cBControllerInput.Checked) if (Form.ActiveForm == root && cBControllerInput.Checked)
switch (scpDevice.GetInputkeys(device)) switch (scpDevice.GetInputkeys((int)nUDSixaxis.Value - 1))
{ {
case ("Cross"): Show_ControlsBn(bnCross, e); break; case ("Cross"): Show_ControlsBn(bnCross, e); break;
case ("Circle"): Show_ControlsBn(bnCircle, e); break; case ("Circle"): Show_ControlsBn(bnCircle, e); break;
@ -358,8 +366,8 @@ namespace ScpServer
private void redBar_ValueChanged(object sender, EventArgs e) private void redBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat); ((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat);
alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value));
reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value);
@ -371,8 +379,8 @@ namespace ScpServer
private void greenBar_ValueChanged(object sender, EventArgs e) private void greenBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat); ((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat);
alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value));
reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value);
@ -384,8 +392,8 @@ namespace ScpServer
private void blueBar_ValueChanged(object sender, EventArgs e) private void blueBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som); ((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som);
alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value)); alphacolor = Math.Max(redBar.Value, Math.Max(greenBar.Value, blueBar.Value));
reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value); reg = Color.FromArgb(redBar.Value, greenBar.Value, blueBar.Value);
@ -398,8 +406,8 @@ namespace ScpServer
private void lowRedBar_ValueChanged(object sender, EventArgs e) private void lowRedBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat); ((TrackBar)sender).BackColor = Color.FromArgb(som, sat, sat);
alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value));
reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value);
@ -412,8 +420,8 @@ namespace ScpServer
private void lowGreenBar_ValueChanged(object sender, EventArgs e) private void lowGreenBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat); ((TrackBar)sender).BackColor = Color.FromArgb(sat, som, sat);
alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value));
reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value);
@ -426,8 +434,8 @@ namespace ScpServer
private void lowBlueBar_ValueChanged(object sender, EventArgs e) private void lowBlueBar_ValueChanged(object sender, EventArgs e)
{ {
int value = ((TrackBar)sender).Value; int value = ((TrackBar)sender).Value;
int sat = 244 - (value < 244 ? value : 244); int sat = 255 - (value < 255 ? value : 255);
int som = 244 + 11 * (int)(value * 0.0039215); int som = 255 + 11 * (int)(value * 0.0039215);
((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som); ((TrackBar)sender).BackColor = Color.FromArgb(sat, sat, som);
alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value)); alphacolor = Math.Max(lowRedBar.Value, Math.Max(lowGreenBar.Value, lowBlueBar.Value));
reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value); reg = Color.FromArgb(lowRedBar.Value, lowGreenBar.Value, lowBlueBar.Value);
@ -476,12 +484,12 @@ namespace ScpServer
{ {
if (((Button)sender).Text == "Test") if (((Button)sender).Text == "Test")
{ {
scpDevice.setRumble((byte)numUDHeavyRumble.Value, (byte)numUDLightRumble.Value, device); scpDevice.setRumble((byte)numUDHeavyRumble.Value, (byte)numUDLightRumble.Value, (int)nUDSixaxis.Value - 1);
((Button)sender).Text = "Stop"; ((Button)sender).Text = "Stop";
} }
else else
{ {
scpDevice.setRumble(0, 0, device); scpDevice.setRumble(0, 0, (int)nUDSixaxis.Value - 1);
((Button)sender).Text = "Test"; ((Button)sender).Text = "Test";
} }
} }
@ -538,6 +546,8 @@ namespace ScpServer
sixaxisTimer.Stop(); sixaxisTimer.Stop();
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
Global.LoadProfile(i); //Refreshes all profiles in case other controllers are using the same profile Global.LoadProfile(i); //Refreshes all profiles in case other controllers are using the same profile
inputtimer.Stop();
sixaxisTimer.Stop();
} }
private void tBProfile_TextChanged(object sender, EventArgs e) private void tBProfile_TextChanged(object sender, EventArgs e)
@ -838,5 +848,10 @@ namespace ScpServer
{ {
tp.Hide(((TrackBar)sender)); tp.Hide(((TrackBar)sender));
} }
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
} }
} }

View File

@ -117,464 +117,6 @@
<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="pBController.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
</value>
</data>
<metadata name="advColorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="advColorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>

View File

@ -154,4 +154,25 @@
<data name="Pairmode" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="Pairmode" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Pairmode.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\Pairmode.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\shell32_copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\shell32_new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="delete" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="newprofile" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\imageres_new.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BT" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\BT.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="none" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\none.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="USB" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\USB.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

View File

@ -70,6 +70,36 @@ namespace ScpServer.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap BT {
get {
object obj = ResourceManager.GetObject("BT", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap copy {
get {
object obj = ResourceManager.GetObject("copy", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap delete {
get {
object obj = ResourceManager.GetObject("delete", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
/// </summary> /// </summary>
@ -90,6 +120,16 @@ namespace ScpServer.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap edit {
get {
object obj = ResourceManager.GetObject("edit", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
@ -120,6 +160,26 @@ namespace ScpServer.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap newprofile {
get {
object obj = ResourceManager.GetObject("newprofile", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap none {
get {
object obj = ResourceManager.GetObject("none", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>
@ -179,5 +239,15 @@ namespace ScpServer.Properties {
return ((System.Drawing.Bitmap)(obj)); return ((System.Drawing.Bitmap)(obj));
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap USB {
get {
object obj = ResourceManager.GetObject("USB", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
} }
} }

0
DS4Tool/Resource.es.Designer.cs generated Normal file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
DS4Tool/Resources/BT.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

BIN
DS4Tool/Resources/USB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
DS4Tool/Resources/none.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

File diff suppressed because it is too large Load Diff

View File

@ -2,57 +2,118 @@
using System.Windows.Forms; using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using DS4Control; using DS4Control;
using DS4Library;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using System.Collections.Generic; using System.Collections.Generic;
using System.Net; using System.Net;
using System.Management; using System.Management;
using System.Drawing;
using Microsoft.Win32; using Microsoft.Win32;
using System.Diagnostics; using System.Diagnostics;
namespace ScpServer namespace ScpServer
{ {
public partial class ScpForm : Form public partial class ScpForm : Form
{ {
double version = 8.2; double version = 9;
private DS4Control.Control rootHub; private DS4Control.Control rootHub;
delegate void LogDebugDelegate(DateTime Time, String Data); delegate void LogDebugDelegate(DateTime Time, String Data);
protected Label[] Pads; protected Label[] Pads, Batteries;
protected ComboBox[] cbs; protected ComboBox[] cbs;
protected Button[] ebns; protected Button[] ebns;
protected Button[] dbns; protected PictureBox[] statPB;
protected Label[] protexts;
protected ToolStripMenuItem[] shortcuts; protected ToolStripMenuItem[] shortcuts;
WebClient wc = new WebClient(); WebClient wc = new WebClient();
Timer test = new Timer(), processcheck = new Timer();
#region Aero
/*[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
public int Left;
public int Right;
public int Top;
public int Bottom;
}
[DllImport("dwmapi.dll")]
public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMargins);
/// <summary>
/// Determins whether the Desktop Windows Manager is enabled
/// and can therefore display Aero
/// </summary>
[DllImport("dwmapi.dll", PreserveSig = false)]
public static extern bool DwmIsCompositionEnabled();
/// <summary>
/// Override the OnPaintBackground method, to draw the desired
/// Glass regions black and display as Glass
/// </summary>
protected override void OnPaintBackground(PaintEventArgs e)
{
base.OnPaint(e);
if (DwmIsCompositionEnabled())
{
e.Graphics.Clear(Color.Black);
// put back the original form background for non-glass area
Rectangle clientArea = new Rectangle(
marg.Left,
marg.Top,
this.ClientRectangle.Width - marg.Left - marg.Right,
this.ClientRectangle.Height - marg.Top - marg.Bottom);
Brush b = new SolidBrush(this.BackColor);
e.Graphics.FillRectangle(b, clientArea);
}
}
MARGINS marg = new MARGINS() { Left = 0, Right = 0, Top = 0, Bottom = 0 };
/// <summary>
/// Use the form padding values to define a Glass margin
/// </summary>
private void trackBar1_Scroll(object sender, EventArgs e)
{
this.Padding = new Padding(this.trackBar1.Value);
int value = (int)trackBar1.Value;
marg = new MARGINS() { Left = value, Right = value, Top = value, Bottom = value };
DwmExtendFrameIntoClientArea(this.Handle, ref marg);
//SetGlassRegion();
//Invalidate();
}*/
#endregion
protected void SetupArrays()
{
Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 };
Batteries = new Label[4] { lBBatt1, lBBatt2, lBBatt3, lBBatt4 };
cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 };
ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 };
statPB = new PictureBox[4] { pBStatus1, pBStatus2, pBStatus3, pBStatus4 };
shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] };
}
public ScpForm() public ScpForm()
{ {
InitializeComponent(); InitializeComponent();
ThemeUtil.SetTheme(lvDebug); ThemeUtil.SetTheme(lvDebug);
Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 }; SetupArrays();
cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 };
ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 };
dbns = new Button[4] { bnDeleteC1, bnDeleteC2, bnDeleteC3, bnDeleteC4 };
protexts = new Label[4] { lbSelPro1, lbSelPro2, lbSelPro3, lbSelPro4 };
shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] };
foreach (ToolStripMenuItem t in shortcuts) foreach (ToolStripMenuItem t in shortcuts)
t.DropDownItemClicked += Profile_Changed_Menu; t.DropDownItemClicked += Profile_Changed_Menu;
CheckDrivers(); CheckDrivers();
Timer test = new Timer(), processcheck = new Timer();
//test.Start(); //test.Start();
processcheck.Start(); //processcheck.Start();
processcheck.Tick += processcheck_Tick; processcheck.Tick += processcheck_Tick;
test.Tick += test_Tick; test.Tick += test_Tick;
} }
void processcheck_Tick(object sender, EventArgs e) void processcheck_Tick(object sender, EventArgs e)
{ {
Process pc = new Process(); //Process[] processes = Process.GetProcessesByName("");
} }
private void test_Tick(object sender, EventArgs e) private void test_Tick(object sender, EventArgs e)
@ -89,6 +150,40 @@ namespace ScpServer
} }
} }
private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
Uri url = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/newest%20version.txt"); //Sorry other devs, gonna have to find your own server
wc.DownloadFile(url, Global.appdatapath + "\\version.txt");
Global.setLastChecked(DateTime.Now);
double newversion;
try
{
if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion))
if (newversion > version)
if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
if (!File.Exists("Updater.exe"))
{
Uri url2 = new Uri("https://dl.dropboxusercontent.com/u/16364552/DS4Tool/Updater.exe");
WebClient wc2 = new WebClient();
wc2.DownloadFile(url2, "Updater.exe");
}
System.Diagnostics.Process.Start("Updater.exe");
this.Close();
}
else
File.Delete(Global.appdatapath + "\\version.txt");
else
{
File.Delete(Global.appdatapath + "\\version.txt");
MessageBox.Show("No new version", "You're up to date");
}
else
File.Delete(Global.appdatapath + "\\version.txt");
}
catch { };
}
private void Check_Version(object sender, System.ComponentModel.AsyncCompletedEventArgs e) private void Check_Version(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{ {
double newversion; double newversion;
@ -96,7 +191,7 @@ namespace ScpServer
{ {
if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion)) if (double.TryParse(File.ReadAllText(Global.appdatapath + "\\version.txt"), out newversion))
if (newversion > version) if (newversion > version)
if (MessageBox.Show("Download now?", "New Version Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes) if (MessageBox.Show("Download now?", "DS4Windows Update Available!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{ {
if (!File.Exists("Updater.exe")) if (!File.Exists("Updater.exe"))
{ {
@ -143,16 +238,7 @@ namespace ScpServer
RegistryKey KeyLoc = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", false); RegistryKey KeyLoc = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", false);
StartWindowsCheckBox.Checked = (KeyLoc.GetValue("DS4Tool") != null); StartWindowsCheckBox.Checked = (KeyLoc.GetValue("DS4Tool") != null);
Pads = new Label[4] { lbPad1, lbPad2, lbPad3, lbPad4 }; SetupArrays();
cbs = new ComboBox[4] { cBController1, cBController2, cBController3, cBController4 };
ebns = new Button[4] { bnEditC1, bnEditC2, bnEditC3, bnEditC4 };
dbns = new Button[4] { bnDeleteC1, bnDeleteC2, bnDeleteC3, bnDeleteC4 };
protexts = new Label[4] { lbSelPro1, lbSelPro2, lbSelPro3, lbSelPro4 };
shortcuts = new ToolStripMenuItem[4] { (ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[0],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[1],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[2],
(ToolStripMenuItem)notifyIcon1.ContextMenuStrip.Items[3] };
if (startMinimizedCheckBox.Checked) if (startMinimizedCheckBox.Checked)
{ {
this.WindowState = FormWindowState.Minimized; this.WindowState = FormWindowState.Minimized;
@ -173,6 +259,13 @@ namespace ScpServer
wc.DownloadFileCompleted += Check_Version; wc.DownloadFileCompleted += Check_Version;
Global.setLastChecked(DateTime.Now); Global.setLastChecked(DateTime.Now);
} }
WinProgs WP = new WinProgs(profilenames.ToArray());
WP.TopLevel = false;
WP.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
WP.Visible = true;
WP.Dock = DockStyle.Fill;
WP.Enabled = false;
tabAutoProfiles.Controls.Add(WP);
} }
List<string> profilenames = new List<string>(); List<string> profilenames = new List<string>();
public void RefreshProfiles() public void RefreshProfiles()
@ -184,6 +277,8 @@ namespace ScpServer
foreach (String s in profiles) foreach (String s in profiles)
if (s.EndsWith(".xml")) if (s.EndsWith(".xml"))
profilenames.Add(Path.GetFileNameWithoutExtension(s)); profilenames.Add(Path.GetFileNameWithoutExtension(s));
lBProfiles.Items.Clear();
lBProfiles.Items.AddRange(profilenames.ToArray());
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
cbs[i].Items.Clear(); cbs[i].Items.Clear();
@ -261,6 +356,16 @@ namespace ScpServer
} }
} }
protected void ShowNotification(object sender, string text)
{
if (Form.ActiveForm != this)
{
this.notifyIcon1.BalloonTipText = text;
notifyIcon1.BalloonTipTitle = "DS4Windows";
notifyIcon1.ShowBalloonTip(1);
}
}
protected void Form_Resize(object sender, EventArgs e) protected void Form_Resize(object sender, EventArgs e)
{ {
if (FormWindowState.Minimized == this.WindowState) if (FormWindowState.Minimized == this.WindowState)
@ -278,11 +383,8 @@ namespace ScpServer
//Added last message alternative //Added last message alternative
if (this.Height > 220) if (this.Height > 220)
lbLastMessage.Visible = false; lbLastMessage.Visible = tabMain.SelectedIndex != 2;
else lbLastMessage.Visible = true; else lbLastMessage.Visible = true;
if (protexts != null)
for (int i = 0; i < 4; i++)
protexts[i].Visible = (this.Width > 665);
} }
protected void btnStartStop_Click(object sender, EventArgs e) protected void btnStartStop_Click(object sender, EventArgs e)
@ -341,10 +443,17 @@ namespace ScpServer
{ {
// If controllers are detected, but not checked, automatically check #1 // If controllers are detected, but not checked, automatically check #1
//bool checkFirst = true; //bool checkFirst = true;
String tooltip = "DS4Windows"; String tooltip = "DS4Windows v" + version;
for (Int32 Index = 0; Index < Pads.Length; Index++) for (Int32 Index = 0; Index < Pads.Length; Index++)
{ {
Pads[Index].Text = rootHub.getDS4ControllerInfo(Index); Pads[Index].Text = rootHub.getDS4MacAddress(Index);
switch (rootHub.getDS4Status(Index))
{
case "USB": statPB[Index].Image = Properties.Resources.USB; break;
case "BT": statPB[Index].Image = Properties.Resources.BT; break;
default: statPB[Index].Image = Properties.Resources.none; break;
}
Batteries[Index].Text = rootHub.getDS4Battery(Index);
if (Pads[Index].Text != String.Empty) if (Pads[Index].Text != String.Empty)
{ {
Pads[Index].Enabled = true; Pads[Index].Enabled = true;
@ -352,9 +461,10 @@ namespace ScpServer
{ {
cbs[Index].Enabled = true; cbs[Index].Enabled = true;
ebns[Index].Enabled = true; ebns[Index].Enabled = true;
dbns[Index].Enabled = true;
protexts[Index].Enabled = true;
shortcuts[Index].Enabled = true; shortcuts[Index].Enabled = true;
Batteries[Index].Enabled = true;
MinimumSize = new Size(MinimumSize.Width, 190 + 29 * Index);
rootHub.DS4Controllers[Index].Report += ScpForm_Report;
} }
// As above // As above
//if (checkFirst && (Pads[Index].Checked && Index != 0)) //if (checkFirst && (Pads[Index].Checked && Index != 0))
@ -366,10 +476,12 @@ namespace ScpServer
Pads[Index].Enabled = false; Pads[Index].Enabled = false;
cbs[Index].Enabled = false; cbs[Index].Enabled = false;
ebns[Index].Enabled = false; ebns[Index].Enabled = false;
dbns[Index].Enabled = false; Batteries[Index].Enabled = false;
protexts[Index].Enabled = false; if (opt != null && opt.device == Index)
if (OptionsDialog[Index] != null) {
OptionsDialog[Index].Close(); opt.Close();
opt = null;
}
shortcuts[Index].Enabled = false; shortcuts[Index].Enabled = false;
// As above // As above
//if (Index == 0) //if (Index == 0)
@ -385,22 +497,139 @@ namespace ScpServer
// Pads[0].Checked = true; // Pads[0].Checked = true;
notifyIcon1.Text = tooltip; notifyIcon1.Text = tooltip;
} }
delegate void HotKeysDelegate(object sender, EventArgs e);
void ScpForm_Report(object sender, EventArgs e)
{
if (InvokeRequired)
Invoke(new HotKeysDelegate(Hotkeys), new object[] { sender, e });
else
Hotkeys(sender, e);
}
void Hotkeys(object sender, EventArgs e)
{
//DS4Device device = (DS4Device)sender;
for (int i = 0; i < 4; i++)
{
string slide = rootHub.TouchpadSlide(0);
if (slide == "left")
{
if (cbs[i].SelectedIndex == 0)
cbs[i].SelectedIndex = cbs[0].Items.Count - 2;
else
cbs[i].SelectedIndex--;
}
else if (slide == "right")
{
if (cbs[i].SelectedIndex == cbs[0].Items.Count - 2)
cbs[i].SelectedIndex = 0;
else
cbs[i].SelectedIndex++;
}
if (slide.Contains("t"))
{
LogDebug(DateTime.Now, "Controller " + (i + 1) + " is now using Profile \"" + cbs[i].Text + "\"");
ShowNotification(this, "Controller " + (i + 1) + " is now using Profile \"" + cbs[i].Text + "\"");
}
}
}
protected void On_Debug(object sender, DS4Control.DebugEventArgs e) protected void On_Debug(object sender, DS4Control.DebugEventArgs e)
{ {
LogDebug(e.Time, e.Data); LogDebug(e.Time, e.Data);
} }
private Options[] OptionsDialog = { null, null, null, null };
private void lBProfiles_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (lBProfiles.SelectedIndex >= 0)
ShowOptions(4, lBProfiles.SelectedItem.ToString());
}
private void tsBNewProfile_Click(object sender, EventArgs e)
{
ShowOptions(4, "");
}
private void tsBNEditProfile_Click(object sender, EventArgs e)
{
if (lBProfiles.SelectedIndex >= 0)
ShowOptions(4, lBProfiles.SelectedItem.ToString());
}
private void tsBDeleteProfle_Click(object sender, EventArgs e)
{
if (lBProfiles.SelectedIndex >= 0)
{
string filename = lBProfiles.SelectedItem.ToString();
if (MessageBox.Show("\"" + filename + "\" cannot be restored.", "Delete Profile?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
System.IO.File.Delete(Global.appdatapath + "\\Profiles\\" + filename + ".xml");
RefreshProfiles();
}
}
}
private void tSBDupProfile_Click(object sender, EventArgs e)
{
string filename = "";
if (lBProfiles.SelectedIndex >= 0)
{
filename = lBProfiles.SelectedItem.ToString();
MessageTextBox MTB = new MessageTextBox(filename, this);
MTB.TopLevel = false;
MTB.Dock = DockStyle.Top;
MTB.Visible = true;
MTB.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
tabProfiles.Controls.Add(MTB);
lBProfiles.SendToBack();
toolStrip1.SendToBack();
toolStrip1.Enabled = false;
lBProfiles.Enabled = false;
MTB.FormClosed += delegate { toolStrip1.Enabled = true; lBProfiles.Enabled = true; };
}
}
//private Options[] OptionsDialog = { null, null, null, null };
Options opt;
private System.Drawing.Size oldsize;
private void ShowOptions(int devID, string profile) private void ShowOptions(int devID, string profile)
{ {
if (OptionsDialog[devID] == null) //if (OptionsDialog[devID] == null)
if (opt == null)
{ {
Options opt; this.Show();
opt = OptionsDialog[devID] = new Options(rootHub, devID, profile); WindowState = FormWindowState.Normal;
toolStrip1.Enabled = false;
opt = new Options(rootHub, devID, profile, this);
opt.Text = "Options for Controller " + (devID + 1); opt.Text = "Options for Controller " + (devID + 1);
opt.Icon = this.Icon; opt.Icon = this.Icon;
opt.FormClosed += delegate { OptionsDialog[devID] = null; RefreshProfiles(); }; opt.TopLevel = false;
opt.Show(); opt.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
opt.Visible = true;
opt.Dock = DockStyle.Fill;
tabProfiles.Controls.Add(opt);
lBProfiles.SendToBack();
toolStrip1.SendToBack();
FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
opt.FormClosed += delegate
{
opt = null;
RefreshProfiles();
FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this.Size = oldsize;
oldsize = new System.Drawing.Size(0, 0);
toolStrip1.Enabled = true;
};
oldsize = this.Size;
if (this.Size.Height < 470)
this.Size = new System.Drawing.Size(this.Size.Width, 470);
if (this.Size.Width < 910)
this.Size = new System.Drawing.Size(910, this.Size.Height);
tabMain.SelectedIndex = 1;
} }
} }
private void editButtons_Click(object sender, EventArgs e) private void editButtons_Click(object sender, EventArgs e)
@ -426,22 +655,9 @@ namespace ScpServer
private void Enable_Controls(int device, bool on) private void Enable_Controls(int device, bool on)
{ {
ebns[device].Enabled = on; ebns[device].Enabled = on;
dbns[device].Enabled = on;
cbs[device].Enabled = on; cbs[device].Enabled = on;
shortcuts[device].Enabled = on; shortcuts[device].Enabled = on;
} }
private void deleteButtons_Click(object sender, EventArgs e)
{
Button bn = (Button)sender;
int tdevice = Int32.Parse(bn.Tag.ToString());
string filename = cbs[tdevice].Items[cbs[tdevice].SelectedIndex].ToString();
if (MessageBox.Show("\"" + filename + "\" cannot be restored.", "Delete Profile?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
{
System.IO.File.Delete(Global.appdatapath + "\\Profiles\\" +filename + ".xml");
Global.setAProfile(tdevice, null);
RefreshProfiles();
}
}
private void hotkeysButton_Click(object sender, EventArgs e) private void hotkeysButton_Click(object sender, EventArgs e)
{ {
@ -504,6 +720,7 @@ namespace ScpServer
else else
ebns[tdevice].Text = "Edit"; ebns[tdevice].Text = "Edit";
} }
ControllerStatusChanged();
} }
private void Profile_Changed_Menu(object sender, ToolStripItemClickedEventArgs e) private void Profile_Changed_Menu(object sender, ToolStripItemClickedEventArgs e)
@ -536,30 +753,25 @@ namespace ScpServer
} }
private void openToolStripMenuItem_Click(object sender, EventArgs e) private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
notifyIcon_Click(sender, e);
}
private void notifyIcon_Click(object sender, EventArgs e)
{ {
this.Show(); this.Show();
WindowState = FormWindowState.Normal; WindowState = FormWindowState.Normal;
} }
private void linkProfiles_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{ {
openProfiles.InitialDirectory = Directory.GetParent(Assembly.GetExecutingAssembly().Location).FullName + @"\Profiles\"; if (e.Button == System.Windows.Forms.MouseButtons.Left)
if (openProfiles.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{ {
string[] files = openProfiles .FileNames; this.Show();
for (int i = 0; i < files.Length; i++) WindowState = FormWindowState.Normal;
{
string[] temp = files[i].Split('\\');
files[i] = temp[temp.Length-1];
File.Copy(openProfiles.FileNames[i], Global.appdatapath + "\\Profiles\\" + files[i], true);
}
RefreshProfiles();
} }
else if (e.Button == System.Windows.Forms.MouseButtons.Middle)
this.Close();
}
private void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
{
this.Show();
WindowState = FormWindowState.Normal;
} }
private void llbHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) private void llbHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@ -583,8 +795,16 @@ namespace ScpServer
protected void Form_Close(object sender, FormClosingEventArgs e) protected void Form_Close(object sender, FormClosingEventArgs e)
{ {
Global.setFormWidth(this.Width); if (oldsize == new System.Drawing.Size(0, 0))
Global.setFormHeight(this.Height); {
Global.setFormWidth(this.Width);
Global.setFormHeight(this.Height);
}
else
{
Global.setFormWidth(oldsize.Width);
Global.setFormHeight(oldsize.Height);
}
Global.Save(); Global.Save();
rootHub.Stop(); rootHub.Stop();
} }
@ -604,6 +824,29 @@ namespace ScpServer
WP.ShowDialog(); WP.ShowDialog();
} }
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
lbLastMessage.Visible = tabMain.SelectedIndex != 2;
if (tabMain.SelectedIndex == 3 && opt == null)
{
if (this.Size.Width < 755 || this.Size.Height < 355)
oldsize = Size;
if (this.Size.Height < 355)
this.Size = new System.Drawing.Size(this.Size.Width, 355);
if (this.Size.Width < 755)
this.Size = new System.Drawing.Size(755, this.Size.Height);
}
else if (oldsize != new System.Drawing.Size(0, 0) && opt == null)
{
Size = oldsize;
oldsize = new System.Drawing.Size(0, 0);
}
}
} }
public class ThemeUtil public class ThemeUtil

View File

@ -6302,4 +6302,255 @@
<metadata name="openProfiles.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="openProfiles.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>449, 17</value> <value>449, 17</value>
</metadata> </metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>568, 17</value>
</metadata>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>568, 17</value>
</metadata>
<data name="tsBDeleteProfile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEpSURBVDhPYxhc4GJ69P+zyRH/oVwMsMXX/f9GL2fs8ucS
gv9/XDnz/8eZHf932ZtgKFqgp/7/9YJJ/193F/1faqaPacipaL//76c2/P8+p/X/x96y/xvN9eCKQJpB
hn+bWgs2YKGhNnZXgGx+3ZD6/0Nb1v+Xdcn/V+ir/wdpfregDy42Q0Eau2YYANn8NMf3//OSULAGkI3P
C4PAYtPlpfBrhgGQzQ/S3P4/SLD7fyfEAIwJ2owMQM5+mBv0/6a/FhwTbTtYc2Mm3GYYvuavR9gQkOZH
7cVgp9+KsgY7G6QJxIaJ4TRkvZM1WDMosO6leqL4GaQJJAaSu5Psjj0a19ib/7+X6Q/2O7YAAxkCkgPh
+fpa2F0B8sI8HTXskkAAksMnPxCAgQEAgp/brMfRrFIAAAAASUVORK5CYII=
</value>
</data>
<data name="tSBDupProfile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVDhPlZCxCsIwEIbziO76CL6CXYNjJl1dMnQpLobu
Lm7ViuCkUwW1jtItcmdPbXoh8YOflHD5+nNCa225iFhg2AXu8jyPk/gEQJSEhsvz3a6PV/yGh8aYT9pR
Hq4BkCQJm14rEuxON2ywKi423VQ47EKS9ukbt0HTPPH0CQCl1FcSajBdHuwk3aNYSomPKR2BC9cAqB81
picINRgvSjucb+1AFXj/dwPaDZ0dgZssy9gGoxnTwAcsjIC//gYICmAACO7ABwl8RAlCEUKIFyWXYHlY
K643AAAAAElFTkSuQmCC
</value>
</data>
<data name="pBStatus4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg==
</value>
</data>
<data name="pBStatus3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg==
</value>
</data>
<data name="pBStatus2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg==
</value>
</data>
<data name="pBStatus1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
1WDefQHxFbbcLCQjmgAAAABJRU5ErkJggg==
</value>
</data>
</root> </root>

View File

@ -32,7 +32,6 @@
this.button2 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button();
this.listBox2 = new System.Windows.Forms.ListBox(); this.listBox2 = new System.Windows.Forms.ListBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.lBProfiles = new System.Windows.Forms.ListBox();
this.comboBox1 = new System.Windows.Forms.ComboBox(); this.comboBox1 = new System.Windows.Forms.ComboBox();
this.comboBox2 = new System.Windows.Forms.ComboBox(); this.comboBox2 = new System.Windows.Forms.ComboBox();
this.comboBox3 = new System.Windows.Forms.ComboBox(); this.comboBox3 = new System.Windows.Forms.ComboBox();
@ -42,6 +41,7 @@
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.SuspendLayout(); this.SuspendLayout();
// //
// listBox1 // listBox1
@ -52,8 +52,6 @@
this.listBox1.Size = new System.Drawing.Size(279, 199); this.listBox1.Size = new System.Drawing.Size(279, 199);
this.listBox1.TabIndex = 0; this.listBox1.TabIndex = 0;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged); this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
this.listBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBox1_KeyDown);
this.listBox1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox1_MouseDoubleClick);
// //
// button2 // button2
// //
@ -72,8 +70,6 @@
this.listBox2.Size = new System.Drawing.Size(220, 199); this.listBox2.Size = new System.Drawing.Size(220, 199);
this.listBox2.TabIndex = 0; this.listBox2.TabIndex = 0;
this.listBox2.SelectedIndexChanged += new System.EventHandler(this.listBox2_SelectedIndexChanged); this.listBox2.SelectedIndexChanged += new System.EventHandler(this.listBox2_SelectedIndexChanged);
this.listBox2.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listBox2_KeyDown);
this.listBox2.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox2_MouseDoubleClick);
// //
// label1 // label1
// //
@ -82,15 +78,6 @@
this.label1.Size = new System.Drawing.Size(717, 19); this.label1.Size = new System.Drawing.Size(717, 19);
this.label1.TabIndex = 3; this.label1.TabIndex = 3;
// //
// lBProfiles
//
this.lBProfiles.FormattingEnabled = true;
this.lBProfiles.Location = new System.Drawing.Point(516, 136);
this.lBProfiles.Name = "lBProfiles";
this.lBProfiles.Size = new System.Drawing.Size(196, 30);
this.lBProfiles.TabIndex = 4;
this.lBProfiles.Visible = false;
//
// comboBox1 // comboBox1
// //
this.comboBox1.FormattingEnabled = true; this.comboBox1.FormattingEnabled = true;
@ -173,11 +160,24 @@
this.label5.TabIndex = 7; this.label5.TabIndex = 7;
this.label5.Text = "Controller 4"; this.label5.Text = "Controller 4";
// //
// label6
//
this.label6.AutoSize = true;
this.label6.BackColor = System.Drawing.Color.Transparent;
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label6.Location = new System.Drawing.Point(530, 129);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(182, 24);
this.label6.TabIndex = 8;
this.label6.Text = "Not yet ready for use";
//
// WinProgs // WinProgs
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(736, 230); this.ClientSize = new System.Drawing.Size(736, 230);
this.Controls.Add(this.label6);
this.Controls.Add(this.label5); this.Controls.Add(this.label5);
this.Controls.Add(this.label4); this.Controls.Add(this.label4);
this.Controls.Add(this.label3); this.Controls.Add(this.label3);
@ -186,7 +186,6 @@
this.Controls.Add(this.comboBox3); this.Controls.Add(this.comboBox3);
this.Controls.Add(this.comboBox2); this.Controls.Add(this.comboBox2);
this.Controls.Add(this.comboBox1); this.Controls.Add(this.comboBox1);
this.Controls.Add(this.lBProfiles);
this.Controls.Add(this.label1); this.Controls.Add(this.label1);
this.Controls.Add(this.bnSave); this.Controls.Add(this.bnSave);
this.Controls.Add(this.button2); this.Controls.Add(this.button2);
@ -205,7 +204,6 @@
private System.Windows.Forms.Button button2; private System.Windows.Forms.Button button2;
private System.Windows.Forms.ListBox listBox2; private System.Windows.Forms.ListBox listBox2;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListBox lBProfiles;
private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.ComboBox comboBox2; private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.ComboBox comboBox3; private System.Windows.Forms.ComboBox comboBox3;
@ -215,5 +213,6 @@
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
} }
} }

View File

@ -19,22 +19,23 @@ namespace ScpServer
public partial class WinProgs : Form public partial class WinProgs : Form
{ {
ToolTip tp = new ToolTip(); ToolTip tp = new ToolTip();
ComboBox[] cbs;
public WinProgs(string[] oc) public WinProgs(string[] oc)
{ {
InitializeComponent(); InitializeComponent();
comboBox1.Text = "(none)"; cbs = new ComboBox[4] { comboBox1, comboBox2, comboBox3, comboBox4 };
comboBox2.Text = "(none)"; for (int i = 0; i < 4; i++)
comboBox3.Text = "(none)"; {
comboBox4.Text = "(none)"; cbs[i].Text = "(none)";
comboBox1.Items.AddRange(oc); cbs[i].Items.AddRange(oc);
comboBox2.Items.AddRange(oc); }
comboBox3.Items.AddRange(oc); try
comboBox4.Items.AddRange(oc); {
foreach (string o in oc) string[] lods = Directory.GetDirectories(@"C:\Program Files (x86)\Steam\steamapps\common");
lBProfiles.Items.Add(o); foreach (string s in lods)
string[] lods = Directory.GetDirectories(@"C:\Program Files (x86)\Steam\SteamApps\common"); listBox1.Items.Add(Path.GetFileName(s));
foreach (string s in lods) }
listBox1.Items.Add(Path.GetFileName(s)); catch { }
if (!File.Exists(Global.appdatapath + @"\Auto Profiles.xml")) if (!File.Exists(Global.appdatapath + @"\Auto Profiles.xml"))
Create(); Create();
//foreach (ListBox.ObjectCollection s in listBox1.Items) //foreach (ListBox.ObjectCollection s in listBox1.Items)
@ -47,21 +48,6 @@ namespace ScpServer
} }
private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
string s = listBox1.SelectedItem.ToString();
string[] lods = Directory.GetFiles(@"C:\Program Files (x86)\Steam\SteamApps\common\" + s, "*.exe", SearchOption.AllDirectories);
listBox2.Items.Clear();
foreach (string st in lods)
if (!st.Contains("setup") && !st.Contains("dotnet") && !st.Contains("SETUP") && !st.Contains("vcredist"))
listBox2.Items.Add(Path.GetFileNameWithoutExtension(st));
}
private void listBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
listBox1_MouseDoubleClick(sender, null);
}
List<string> lods = new List<string>(); List<string> lods = new List<string>();
private void listBox1_SelectedIndexChanged(object sender, EventArgs e) private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{ {
@ -79,35 +65,15 @@ namespace ScpServer
listBox2.Items.Add(Path.GetFileNameWithoutExtension(st)); listBox2.Items.Add(Path.GetFileNameWithoutExtension(st));
} }
private void listBox2_MouseDoubleClick(object sender, MouseEventArgs e)
{
}
private void listBox2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue == 13)
listBox2_MouseDoubleClick(sender, null);
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e) private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{ {
if (listBox2.SelectedIndex >= 0) if (listBox2.SelectedIndex >= 0)
label1.Text = lods[listBox2.SelectedIndex]; {
label1.Text = lods[listBox2.SelectedIndex];
LoadP();
}
} }
private void Controller_CheckedChanged(object sender, EventArgs e)
{
/*if (cBC1.Checked)
Global.setAProfile(0, lBProfiles.SelectedItem.ToString());
if (cBC2.Checked)
Global.setAProfile(1, lBProfiles.SelectedItem.ToString());
if (cBC3.Checked)
Global.setAProfile(2, lBProfiles.SelectedItem.ToString());
if (cBC4.Checked)
Global.setAProfile(3, lBProfiles.SelectedItem.ToString());*/
Save();
}
protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Auto Profiles.xml"; protected String m_Profile = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\DS4Tool\\Auto Profiles.xml";
protected XmlDocument m_Xdoc = new XmlDocument(); protected XmlDocument m_Xdoc = new XmlDocument();
@ -144,12 +110,10 @@ namespace ScpServer
{ {
XmlNode Node; XmlNode Node;
Node = m_Xdoc.SelectSingleNode("Programs"); Node = m_Xdoc.SelectSingleNode("Programs");
//Node = m_Xdoc.CreateComment(String.Format(" Auto-Profile Configuration Data. {0} ", DateTime.Now));
//m_Xdoc.AppendChild(Node);
string programname = listBox2.SelectedItem.ToString(); string programname = listBox2.SelectedItem.ToString();
//if (programname.Contains(" ")) //if (programname.Contains(" "))
programname.Replace(' ', ','); programname = programname.Replace(' ', '_');
XmlNode xmlprogram = m_Xdoc.CreateNode(XmlNodeType.Element, programname, null); XmlNode xmlprogram = m_Xdoc.CreateNode(XmlNodeType.Element, programname, null);
XmlNode xmlController1 = m_Xdoc.CreateNode(XmlNodeType.Element, "Controller1", null); XmlNode xmlController1 = m_Xdoc.CreateNode(XmlNodeType.Element, "Controller1", null);
@ -180,6 +144,42 @@ namespace ScpServer
return Saved; return Saved;
} }
public void LoadP()
{
//try
{
if (File.Exists(m_Profile))
{
XmlNode Item;
m_Xdoc.Load(m_Profile);
string programname = listBox2.SelectedItem.ToString();
programname = programname.Replace(' ', '_');
string[] profiles = new string[4];
for (int i = 0; i < 4; i++)
{
try
{
Item = m_Xdoc.SelectSingleNode("/Programs/" + programname + "/Controller" + (i + 1));
profiles[i] = Item.InnerText;
for (int j = 0; j < cbs[i].Items.Count; j++)
if (cbs[i].Items[j].ToString() == profiles[i])
{
cbs[i].SelectedIndex = j;
break;
}
//else
//cbs[i].Text = "(none)";
}
catch { cbs[i].Text = "(none)"; }
}
}
}
//catch { missingSetting = true; }
//return missingSetting;
//if (missingSetting)
//label1.Content = "Current version not found, please re-run DS4Tool";
}
private void CBProfile_IndexChanged(object sender, EventArgs e) private void CBProfile_IndexChanged(object sender, EventArgs e)
{ {