Add initial output curve options

This commit is contained in:
Travis Nickles 2017-06-08 00:37:04 -07:00
parent cda84e6499
commit 751e4f4e7a
5 changed files with 607 additions and 198 deletions

View File

@ -740,6 +740,126 @@ namespace DS4Windows
if (r2Sens != 1.0)
dState.R2 = (byte)Global.Clamp(0, r2Sens * dState.R2, 255);
int lsOutCurveMode = getLsOutCurveMode(device);
if (lsOutCurveMode != 0)
{
double tempX = (dState.LX - 127.5f) / 127.5;
double tempY = (dState.LY - 127.5f) / 127.5;
double signX = tempX >= 0.0 ? 1.0 : -1.0;
double signY = tempY >= 0.0 ? 1.0 : -1.0;
if (lsOutCurveMode == 1)
{
double absX = Math.Abs(tempX);
double absY = Math.Abs(tempY);
double outputX = 0.0;
double outputY = 0.0;
if (absX <= 0.4)
{
outputX = 0.38 * absX;
}
else if (absX <= 0.75)
{
outputX = absX - 0.248;
}
else if (absX > 0.75)
{
outputX = (absX * 1.992) - 0.992;
}
if (absY <= 0.4)
{
outputY = 0.38 * absY;
}
else if (absY <= 0.75)
{
outputY = absY - 0.248;
}
else if (absY > 0.75)
{
outputY = (absY * 1.992) - 0.992;
}
dState.LX = (byte)(outputX * signX * 127.5f + 127.5f);
dState.LY = (byte)(outputY * signY * 127.5f + 127.5f);
}
else if (lsOutCurveMode == 2)
{
double outputX = tempX * tempX;
double outputY = tempY * tempY;
dState.LX = (byte)(outputX * signX * 127.5f + 127.5f);
dState.LY = (byte)(outputY * signY * 127.5f + 127.5f);
}
else if (lsOutCurveMode == 3)
{
double outputX = tempX * tempX * tempX;
double outputY = tempY * tempY * tempY;
dState.LX = (byte)(outputX * 127.5f + 127.5f);
dState.LY = (byte)(outputY * 127.5f + 127.5f);
}
}
int rsOutCurveMode = getRsOutCurveMode(device);
if (rsOutCurveMode != 0)
{
double tempX = (dState.RX - 127.5f) / 127.5;
double tempY = (dState.RY - 127.5f) / 127.5;
double signX = tempX >= 0.0 ? 1.0 : -1.0;
double signY = tempY >= 0.0 ? 1.0 : -1.0;
if (rsOutCurveMode == 1)
{
double absX = Math.Abs(tempX);
double absY = Math.Abs(tempY);
double outputX = 0.0;
double outputY = 0.0;
if (absX <= 0.4)
{
outputX = 0.38 * absX;
}
else if (absX <= 0.75)
{
outputX = absX - 0.248;
}
else if (absX > 0.75)
{
outputX = (absX * 1.992) - 0.992;
}
if (absY <= 0.4)
{
outputY = 0.38 * absY;
}
else if (absY <= 0.75)
{
outputY = absY - 0.248;
}
else if (absY > 0.75)
{
outputY = (absY * 1.992) - 0.992;
}
dState.RX = (byte)(outputX * signX * 127.5f + 127.5f);
dState.RY = (byte)(outputY * signY * 127.5f + 127.5f);
}
else if (rsOutCurveMode == 2)
{
double outputX = tempX * tempX;
double outputY = tempY * tempY;
dState.RX = (byte)(outputX * signX * 127.5f + 127.5f);
dState.RY = (byte)(outputY * signY * 127.5f + 127.5f);
}
else if (rsOutCurveMode == 3)
{
double outputX = tempX * tempX * tempX;
double outputY = tempY * tempY * tempY;
dState.RX = (byte)(outputX * 127.5f + 127.5f);
dState.RY = (byte)(outputY * 127.5f + 127.5f);
}
}
return dState;
}

View File

@ -766,6 +766,18 @@ namespace DS4Windows
return m_Config.btPollRate[index];
}
public static int[] lsOutCurveMode => m_Config.lsOutCurveMode;
public static int getLsOutCurveMode(int index)
{
return m_Config.lsOutCurveMode[index];
}
public static int[] rsOutCurveMode => m_Config.rsOutCurveMode;
public static int getRsOutCurveMode(int index)
{
return m_Config.rsOutCurveMode[index];
}
public static string[] LaunchProgram => m_Config.launchProgram;
public static string[] ProfilePath => m_Config.profilePath;
public static bool[] DistanceProfiles = m_Config.distanceProfiles;
@ -1105,6 +1117,9 @@ namespace DS4Windows
public int[] flashAt = { 0, 0, 0, 0, 0 };
public bool[] mouseAccel = { true, true, true, true, true };
public int[] btPollRate = { 0, 0, 0, 0, 0 };
public int[] lsOutCurveMode = { 0, 0, 0, 0, 0 };
public int[] rsOutCurveMode = { 0, 0, 0, 0, 0 };
public DS4Color[] m_LowLeds = new DS4Color[]
{
new DS4Color(Color.Black),
@ -1294,6 +1309,36 @@ namespace DS4Windows
catch { return 0; }
}*/
private string outputCurveString(int id)
{
string result = "linear";
switch (id)
{
case 0: break;
case 1: result = "enhanced-precision"; break;
case 2: result = "quadratic"; break;
case 3: result = "cubic"; break;
default: break;
}
return result;
}
private int outputCurveId(string name)
{
int id = 0;
switch (name)
{
case "linear": id = 0; break;
case "enhanced-precision": id = 1; break;
case "quadratic": id = 2; break;
case "cubic": id = 3; break;
default: break;
}
return id;
}
public bool SaveProfile(int device, string propath)
{
bool Saved = true;
@ -1377,6 +1422,8 @@ namespace DS4Windows
XmlNode xmlRSC = m_Xdoc.CreateNode(XmlNodeType.Element, "RSCurve", null); xmlRSC.InnerText = rsCurve[device].ToString(); Node.AppendChild(xmlRSC);
XmlNode xmlProfileActions = m_Xdoc.CreateNode(XmlNodeType.Element, "ProfileActions", null); xmlProfileActions.InnerText = string.Join("/", profileActions[device]); Node.AppendChild(xmlProfileActions);
XmlNode xmlBTPollRate = m_Xdoc.CreateNode(XmlNodeType.Element, "BTPollRate", null); xmlBTPollRate.InnerText = btPollRate[device].ToString(); Node.AppendChild(xmlBTPollRate);
XmlNode xmlLsOutputCurveMode = m_Xdoc.CreateNode(XmlNodeType.Element, "LSOutputCurveMode", null); xmlLsOutputCurveMode.InnerText = outputCurveString(lsOutCurveMode[device]); Node.AppendChild(xmlLsOutputCurveMode);
XmlNode xmlRsOutputCurveMode = m_Xdoc.CreateNode(XmlNodeType.Element, "RSOutputCurveMode", null); xmlRsOutputCurveMode.InnerText = outputCurveString(rsOutCurveMode[device]); Node.AppendChild(xmlRsOutputCurveMode);
XmlNode NodeControl = m_Xdoc.CreateNode(XmlNodeType.Element, "Control", null);
XmlNode Key = m_Xdoc.CreateNode(XmlNodeType.Element, "Key", null);
@ -2296,6 +2343,12 @@ namespace DS4Windows
}
catch { btPollRate[device] = 0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/LSOutputCurveMode"); lsOutCurveMode[device] = outputCurveId(Item.InnerText); }
catch { lsOutCurveMode[device] = 0; missingSetting = true; }
try { Item = m_Xdoc.SelectSingleNode("/" + rootname + "/RSOutputCurveMode"); rsOutCurveMode[device] = outputCurveId(Item.InnerText); }
catch { rsOutCurveMode[device] = 0; missingSetting = true; }
try
{
Item = m_Xdoc.SelectSingleNode("/" + rootname + "/ProfileActions");
@ -3326,6 +3379,8 @@ namespace DS4Windows
lsCurve[device] = rsCurve[device] = 0;
gyroSensitivity[device] = 100;
gyroInvert[device] = 0;
lsOutCurveMode[device] = 0;
rsOutCurveMode[device] = 0;
}
}

View File

@ -323,6 +323,11 @@
this.shareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pSToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.alwaysOnToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tPOutCurve = new System.Windows.Forms.TabPage();
this.label9 = new System.Windows.Forms.Label();
this.label10 = new System.Windows.Forms.Label();
this.lsOutCurveComboBox = new System.Windows.Forms.ComboBox();
this.rsOutCurveComboBox = new System.Windows.Forms.ComboBox();
this.advColorDialog = new DS4Windows.AdvancedColorDialog();
((System.ComponentModel.ISupportInitialize)(this.nUDRainbow)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.tBBlueBar)).BeginInit();
@ -405,6 +410,7 @@
((System.ComponentModel.ISupportInitialize)(this.nUDSXS)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nUDSZS)).BeginInit();
this.cMGyroTriggers.SuspendLayout();
this.tPOutCurve.SuspendLayout();
this.SuspendLayout();
//
// lowColorChooserButton
@ -2613,9 +2619,10 @@
// tCSens
//
this.tCSens.Controls.Add(this.tPDeadzone);
this.tCSens.Controls.Add(this.tPCurve);
this.tCSens.Controls.Add(this.antiDeadzoneTabPage);
this.tCSens.Controls.Add(this.maxZoneTabPage);
this.tCSens.Controls.Add(this.tPCurve);
this.tCSens.Controls.Add(this.tPOutCurve);
resources.ApplyResources(this.tCSens, "tCSens");
this.tCSens.Name = "tCSens";
this.tCSens.SelectedIndex = 0;
@ -3419,6 +3426,54 @@
resources.ApplyResources(this.alwaysOnToolStripMenuItem, "alwaysOnToolStripMenuItem");
this.alwaysOnToolStripMenuItem.CheckedChanged += new System.EventHandler(this.SATrigger_CheckedChanged);
//
// tPOutCurve
//
this.tPOutCurve.Controls.Add(this.rsOutCurveComboBox);
this.tPOutCurve.Controls.Add(this.lsOutCurveComboBox);
this.tPOutCurve.Controls.Add(this.label10);
this.tPOutCurve.Controls.Add(this.label9);
resources.ApplyResources(this.tPOutCurve, "tPOutCurve");
this.tPOutCurve.Name = "tPOutCurve";
this.tPOutCurve.UseVisualStyleBackColor = true;
//
// label9
//
resources.ApplyResources(this.label9, "label9");
this.label9.Name = "label9";
//
// label10
//
resources.ApplyResources(this.label10, "label10");
this.label10.Name = "label10";
//
// lsOutCurveComboBox
//
this.lsOutCurveComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.lsOutCurveComboBox.DropDownWidth = 100;
this.lsOutCurveComboBox.FormattingEnabled = true;
this.lsOutCurveComboBox.Items.AddRange(new object[] {
resources.GetString("lsOutCurveComboBox.Items"),
resources.GetString("lsOutCurveComboBox.Items1"),
resources.GetString("lsOutCurveComboBox.Items2"),
resources.GetString("lsOutCurveComboBox.Items3")});
resources.ApplyResources(this.lsOutCurveComboBox, "lsOutCurveComboBox");
this.lsOutCurveComboBox.Name = "lsOutCurveComboBox";
this.lsOutCurveComboBox.SelectedIndexChanged += new System.EventHandler(this.lsOutCurveComboBox_SelectedIndexChanged);
//
// rsOutCurveComboBox
//
this.rsOutCurveComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.rsOutCurveComboBox.DropDownWidth = 100;
this.rsOutCurveComboBox.FormattingEnabled = true;
this.rsOutCurveComboBox.Items.AddRange(new object[] {
resources.GetString("rsOutCurveComboBox.Items"),
resources.GetString("rsOutCurveComboBox.Items1"),
resources.GetString("rsOutCurveComboBox.Items2"),
resources.GetString("rsOutCurveComboBox.Items3")});
resources.ApplyResources(this.rsOutCurveComboBox, "rsOutCurveComboBox");
this.rsOutCurveComboBox.Name = "rsOutCurveComboBox";
this.rsOutCurveComboBox.SelectedIndexChanged += new System.EventHandler(this.rsOutCurveComboBox_SelectedIndexChanged);
//
// Options
//
resources.ApplyResources(this, "$this");
@ -3528,6 +3583,8 @@
((System.ComponentModel.ISupportInitialize)(this.nUDSXS)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nUDSZS)).EndInit();
this.cMGyroTriggers.ResumeLayout(false);
this.tPOutCurve.ResumeLayout(false);
this.tPOutCurve.PerformLayout();
this.ResumeLayout(false);
}
@ -3830,5 +3887,10 @@
private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label btPollRateLabel;
private System.Windows.Forms.ComboBox btPollRateComboBox;
private System.Windows.Forms.TabPage tPOutCurve;
private System.Windows.Forms.ComboBox rsOutCurveComboBox;
private System.Windows.Forms.ComboBox lsOutCurveComboBox;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
}
}

View File

@ -359,6 +359,8 @@ namespace DS4Windows
cBWhileCharging.SelectedIndex = tempWhileCharging;
btPollRateComboBox.SelectedIndex = getBTPollRate(device);
lsOutCurveComboBox.SelectedIndex = getLsOutCurveMode(device);
rsOutCurveComboBox.SelectedIndex = getRsOutCurveMode(device);
try
{
@ -583,6 +585,8 @@ namespace DS4Windows
cBFlashType.SelectedIndex = 0;
cBWhileCharging.SelectedIndex = 0;
btPollRateComboBox.SelectedIndex = 0;
lsOutCurveComboBox.SelectedIndex = 0;
rsOutCurveComboBox.SelectedIndex = 0;
rBTPMouse.Checked = true;
rBSAControls.Checked = true;
ToggleRainbow(false);
@ -1265,6 +1269,8 @@ namespace DS4Windows
FlashColor[device] = new DS4Color(Color.Black);
BTPollRate[device] = btPollRateComboBox.SelectedIndex;
lsOutCurveMode[device] = lsOutCurveComboBox.SelectedIndex;
rsOutCurveMode[device] = rsOutCurveComboBox.SelectedIndex;
L2Deadzone[device] = (byte)Math.Round((nUDL2.Value * 255), 0);
R2Deadzone[device] = (byte)Math.Round((nUDR2.Value * 255), 0);
L2AntiDeadzone[device] = (int)(nUDL2AntiDead.Value * 100);
@ -2781,6 +2787,22 @@ namespace DS4Windows
}
}
private void lsOutCurveComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loading)
{
lsOutCurveMode[device] = lsOutCurveComboBox.SelectedIndex;
}
}
private void rsOutCurveComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (!loading)
{
rsOutCurveMode[device] = rsOutCurveComboBox.SelectedIndex;
}
}
private void Options_Resize(object sender, EventArgs e)
{
fLPSettings.AutoScroll = false;

View File

@ -6046,201 +6046,6 @@ with profile</value>
<data name="&gt;&gt;tPDeadzone.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="nUDLSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 16</value>
</data>
<data name="nUDLSCurve.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
<data name="nUDLSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 20</value>
</data>
<data name="nUDLSCurve.TabIndex" type="System.Int32, mscorlib">
<value>206</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Name" xml:space="preserve">
<value>nUDLSCurve</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;nUDLSCurve.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="nUDRSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>153, 16</value>
</data>
<data name="nUDRSCurve.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
<data name="nUDRSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 20</value>
</data>
<data name="nUDRSCurve.TabIndex" type="System.Int32, mscorlib">
<value>207</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Name" xml:space="preserve">
<value>nUDRSCurve</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;nUDRSCurve.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="lbRSCurve.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbRSCurve.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbRSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>130, 18</value>
</data>
<data name="lbRSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 13</value>
</data>
<data name="lbRSCurve.TabIndex" type="System.Int32, mscorlib">
<value>205</value>
</data>
<data name="lbRSCurve.Text" xml:space="preserve">
<value>RS</value>
</data>
<data name="&gt;&gt;lbRSCurve.Name" xml:space="preserve">
<value>lbRSCurve</value>
</data>
<data name="&gt;&gt;lbRSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbRSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbRSCurve.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lbRSCurvePercent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbRSCurvePercent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbRSCurvePercent.Location" type="System.Drawing.Point, System.Drawing">
<value>208, 18</value>
</data>
<data name="lbRSCurvePercent.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 13</value>
</data>
<data name="lbRSCurvePercent.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbRSCurvePercent.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Name" xml:space="preserve">
<value>lbRSCurvePercent</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="lbLSCurvePercent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbLSCurvePercent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbLSCurvePercent.Location" type="System.Drawing.Point, System.Drawing">
<value>91, 18</value>
</data>
<data name="lbLSCurvePercent.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 13</value>
</data>
<data name="lbLSCurvePercent.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbLSCurvePercent.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Name" xml:space="preserve">
<value>lbLSCurvePercent</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="lbLSCurve.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbLSCurve.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbLSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 18</value>
</data>
<data name="lbLSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 13</value>
</data>
<data name="lbLSCurve.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbLSCurve.Text" xml:space="preserve">
<value>LS</value>
</data>
<data name="&gt;&gt;lbLSCurve.Name" xml:space="preserve">
<value>lbLSCurve</value>
</data>
<data name="&gt;&gt;lbLSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbLSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbLSCurve.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="tPCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="tPCurve.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tPCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 52</value>
</data>
<data name="tPCurve.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tPCurve.Text" xml:space="preserve">
<value>Curve</value>
</data>
<data name="&gt;&gt;tPCurve.Name" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;tPCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tPCurve.Parent" xml:space="preserve">
<value>tCSens</value>
</data>
<data name="&gt;&gt;tPCurve.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="nUDR2AntiDead.Location" type="System.Drawing.Point, System.Drawing">
<value>158, 30</value>
</data>
@ -6470,7 +6275,7 @@ with profile</value>
<value>tCSens</value>
</data>
<data name="&gt;&gt;antiDeadzoneTabPage.ZOrder" xml:space="preserve">
<value>2</value>
<value>1</value>
</data>
<data name="nUDR2Maxzone.Location" type="System.Drawing.Point, System.Drawing">
<value>161, 29</value>
@ -6701,8 +6506,353 @@ with profile</value>
<value>tCSens</value>
</data>
<data name="&gt;&gt;maxZoneTabPage.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="nUDLSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>36, 16</value>
</data>
<data name="nUDLSCurve.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
<data name="nUDLSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 20</value>
</data>
<data name="nUDLSCurve.TabIndex" type="System.Int32, mscorlib">
<value>206</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Name" xml:space="preserve">
<value>nUDLSCurve</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nUDLSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;nUDLSCurve.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="nUDRSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>153, 16</value>
</data>
<data name="nUDRSCurve.RightToLeft" type="System.Windows.Forms.RightToLeft, System.Windows.Forms">
<value>No</value>
</data>
<data name="nUDRSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 20</value>
</data>
<data name="nUDRSCurve.TabIndex" type="System.Int32, mscorlib">
<value>207</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Name" xml:space="preserve">
<value>nUDRSCurve</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nUDRSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;nUDRSCurve.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="lbRSCurve.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbRSCurve.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbRSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>130, 18</value>
</data>
<data name="lbRSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 13</value>
</data>
<data name="lbRSCurve.TabIndex" type="System.Int32, mscorlib">
<value>205</value>
</data>
<data name="lbRSCurve.Text" xml:space="preserve">
<value>RS</value>
</data>
<data name="&gt;&gt;lbRSCurve.Name" xml:space="preserve">
<value>lbRSCurve</value>
</data>
<data name="&gt;&gt;lbRSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbRSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbRSCurve.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="lbRSCurvePercent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbRSCurvePercent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbRSCurvePercent.Location" type="System.Drawing.Point, System.Drawing">
<value>208, 18</value>
</data>
<data name="lbRSCurvePercent.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 13</value>
</data>
<data name="lbRSCurvePercent.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbRSCurvePercent.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Name" xml:space="preserve">
<value>lbRSCurvePercent</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbRSCurvePercent.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="lbLSCurvePercent.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbLSCurvePercent.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbLSCurvePercent.Location" type="System.Drawing.Point, System.Drawing">
<value>91, 18</value>
</data>
<data name="lbLSCurvePercent.Size" type="System.Drawing.Size, System.Drawing">
<value>15, 13</value>
</data>
<data name="lbLSCurvePercent.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbLSCurvePercent.Text" xml:space="preserve">
<value>%</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Name" xml:space="preserve">
<value>lbLSCurvePercent</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbLSCurvePercent.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="lbLSCurve.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="lbLSCurve.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="lbLSCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 18</value>
</data>
<data name="lbLSCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 13</value>
</data>
<data name="lbLSCurve.TabIndex" type="System.Int32, mscorlib">
<value>204</value>
</data>
<data name="lbLSCurve.Text" xml:space="preserve">
<value>LS</value>
</data>
<data name="&gt;&gt;lbLSCurve.Name" xml:space="preserve">
<value>lbLSCurve</value>
</data>
<data name="&gt;&gt;lbLSCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lbLSCurve.Parent" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;lbLSCurve.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="tPCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="tPCurve.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="tPCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 52</value>
</data>
<data name="tPCurve.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tPCurve.Text" xml:space="preserve">
<value>Curve</value>
</data>
<data name="&gt;&gt;tPCurve.Name" xml:space="preserve">
<value>tPCurve</value>
</data>
<data name="&gt;&gt;tPCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tPCurve.Parent" xml:space="preserve">
<value>tCSens</value>
</data>
<data name="&gt;&gt;tPCurve.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="rsOutCurveComboBox.Items" xml:space="preserve">
<value>Linear</value>
</data>
<data name="rsOutCurveComboBox.Items1" xml:space="preserve">
<value>Enhanced Precison</value>
</data>
<data name="rsOutCurveComboBox.Items2" xml:space="preserve">
<value>Quadratic</value>
</data>
<data name="rsOutCurveComboBox.Items3" xml:space="preserve">
<value>Cubic</value>
</data>
<data name="rsOutCurveComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>170, 16</value>
</data>
<data name="rsOutCurveComboBox.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 21</value>
</data>
<data name="rsOutCurveComboBox.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;rsOutCurveComboBox.Name" xml:space="preserve">
<value>rsOutCurveComboBox</value>
</data>
<data name="&gt;&gt;rsOutCurveComboBox.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;rsOutCurveComboBox.Parent" xml:space="preserve">
<value>tPOutCurve</value>
</data>
<data name="&gt;&gt;rsOutCurveComboBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="lsOutCurveComboBox.Items" xml:space="preserve">
<value>Linear</value>
</data>
<data name="lsOutCurveComboBox.Items1" xml:space="preserve">
<value>Enhanced Precision</value>
</data>
<data name="lsOutCurveComboBox.Items2" xml:space="preserve">
<value>Quadratic</value>
</data>
<data name="lsOutCurveComboBox.Items3" xml:space="preserve">
<value>Cubic</value>
</data>
<data name="lsOutCurveComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>39, 15</value>
</data>
<data name="lsOutCurveComboBox.Size" type="System.Drawing.Size, System.Drawing">
<value>71, 21</value>
</data>
<data name="lsOutCurveComboBox.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;lsOutCurveComboBox.Name" xml:space="preserve">
<value>lsOutCurveComboBox</value>
</data>
<data name="&gt;&gt;lsOutCurveComboBox.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lsOutCurveComboBox.Parent" xml:space="preserve">
<value>tPOutCurve</value>
</data>
<data name="&gt;&gt;lsOutCurveComboBox.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="label10.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label10.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label10.Location" type="System.Drawing.Point, System.Drawing">
<value>135, 20</value>
</data>
<data name="label10.Size" type="System.Drawing.Size, System.Drawing">
<value>25, 13</value>
</data>
<data name="label10.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label10.Text" xml:space="preserve">
<value>RS:</value>
</data>
<data name="&gt;&gt;label10.Name" xml:space="preserve">
<value>label10</value>
</data>
<data name="&gt;&gt;label10.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label10.Parent" xml:space="preserve">
<value>tPOutCurve</value>
</data>
<data name="&gt;&gt;label10.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label9.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label9.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label9.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 19</value>
</data>
<data name="label9.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 13</value>
</data>
<data name="label9.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="label9.Text" xml:space="preserve">
<value>LS:</value>
</data>
<data name="&gt;&gt;label9.Name" xml:space="preserve">
<value>label9</value>
</data>
<data name="&gt;&gt;label9.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label9.Parent" xml:space="preserve">
<value>tPOutCurve</value>
</data>
<data name="&gt;&gt;label9.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tPOutCurve.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="tPOutCurve.Size" type="System.Drawing.Size, System.Drawing">
<value>264, 52</value>
</data>
<data name="tPOutCurve.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tPOutCurve.Text" xml:space="preserve">
<value>Out Curve</value>
</data>
<data name="&gt;&gt;tPOutCurve.Name" xml:space="preserve">
<value>tPOutCurve</value>
</data>
<data name="&gt;&gt;tPOutCurve.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tPOutCurve.Parent" xml:space="preserve">
<value>tCSens</value>
</data>
<data name="&gt;&gt;tPOutCurve.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="tCSens.Location" type="System.Drawing.Point, System.Drawing">
<value>281, 55</value>
</data>
@ -7880,7 +8030,7 @@ with profile</value>
<value>advColorDialog</value>
</data>
<data name="&gt;&gt;advColorDialog.Type" xml:space="preserve">
<value>DS4Windows.AdvancedColorDialog, DS4Windows, Version=1.4.71.0, Culture=neutral, PublicKeyToken=null</value>
<value>DS4Windows.AdvancedColorDialog, DS4Windows, Version=1.4.74.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>Options</value>