summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-10-25 23:57:44 -0400
committerGitHub <[email protected]>2020-10-25 23:57:44 -0400
commit1601eaffd7c83888fd804c00eae0b0e8633232ee (patch)
tree72beb1b8b32b82ebfd853c04fe85c1f67e1d4afe
parentMerge pull request #37 from JacobPalecki/GUI (diff)
parentupdate signed (diff)
downloadrawaccel-1.2.0-w7.tar.xz
rawaccel-1.2.0-w7.zip
Merge pull request #38 from a1xd/1.2v1.2.0-w7v1.2.0
1.2.0
-rw-r--r--common/accel-base.hpp1
-rw-r--r--common/rawaccel-settings.h4
-rw-r--r--common/rawaccel.hpp23
-rw-r--r--grapher/Form1.Designer.cs20
-rw-r--r--grapher/Form1.cs1
-rw-r--r--grapher/Models/AccelGUI.cs99
-rw-r--r--grapher/Models/AccelGUIFactory.cs2
-rw-r--r--grapher/Models/Options/ActiveValueLabelXY.cs3
-rw-r--r--grapher/Models/Serialized/GUISettings.cs10
-rw-r--r--grapher/Models/Serialized/RawAccelSettings.cs17
-rw-r--r--grapher/Models/Serialized/SettingsManager.cs25
-rw-r--r--signed/driver/rawaccel.sysbin52552 -> 52560 bytes
-rw-r--r--wrapper/wrapper.cpp2
13 files changed, 127 insertions, 80 deletions
diff --git a/common/accel-base.hpp b/common/accel-base.hpp
index ac7ac4d..b15d695 100644
--- a/common/accel-base.hpp
+++ b/common/accel-base.hpp
@@ -14,6 +14,7 @@ namespace rawaccel {
double weight = 1;
double scale_cap = 0;
double gain_cap = 0;
+ double speed_cap = 0;
};
template <typename Func>
diff --git a/common/rawaccel-settings.h b/common/rawaccel-settings.h
index aeb89e8..e9e158c 100644
--- a/common/rawaccel-settings.h
+++ b/common/rawaccel-settings.h
@@ -4,10 +4,12 @@
#include "accel-base.hpp"
namespace rawaccel {
+
using milliseconds = double;
+ inline constexpr int MAX_POLL_RATE_KHZ = 8;
+ inline constexpr milliseconds DEFAULT_TIME_MIN = 1.0 / MAX_POLL_RATE_KHZ * 0.8;
inline constexpr milliseconds WRITE_DELAY = 1000;
- inline constexpr milliseconds DEFAULT_TIME_MIN = 0.4;
enum class accel_mode {
linear, classic, natural, naturalgain, power, motivity, noaccel
diff --git a/common/rawaccel.hpp b/common/rawaccel.hpp
index ecd3850..b160a42 100644
--- a/common/rawaccel.hpp
+++ b/common/rawaccel.hpp
@@ -195,16 +195,31 @@ namespace rawaccel {
accel_variant accel;
velocity_gain_cap gain_cap;
accel_scale_clamp clamp;
+ double output_speed_cap = 0;
accelerator(const accel_args& args, accel_mode mode, si_pair* lut = nullptr) :
accel(args, mode, lut), gain_cap(args.gain_cap, accel), clamp(args.scale_cap)
- {}
+ {
+ output_speed_cap = maxsd(args.speed_cap, 0);
+ }
+
+ inline double apply(double speed) const {
+ double scale;
- inline double apply(double speed) const {
if (gain_cap.should_apply(speed)) {
- return clamp(gain_cap.apply(speed));
+ scale = gain_cap.apply(speed);
+ }
+ else {
+ scale = accel.apply(speed);
}
- else return clamp(accel.apply(speed));
+
+ scale = clamp(scale);
+
+ if (output_speed_cap > 0 && (scale * speed) > output_speed_cap) {
+ scale = output_speed_cap / speed;
+ }
+
+ return scale;
}
accelerator() = default;
diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs
index a6ae754..6fd9478 100644
--- a/grapher/Form1.Designer.cs
+++ b/grapher/Form1.Designer.cs
@@ -168,6 +168,7 @@ namespace grapher
this.GainChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.VelocityChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
+ this.AutoWriteMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsPanel.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.chartsPanel.SuspendLayout();
@@ -954,7 +955,8 @@ namespace grapher
this.advancedToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.capStyleToolStripMenuItem,
this.offsetStyleToolStripMenuItem,
- this.toolStripMenuItem1});
+ this.toolStripMenuItem1,
+ this.AutoWriteMenuItem});
this.advancedToolStripMenuItem.Name = "advancedToolStripMenuItem";
this.advancedToolStripMenuItem.Size = new System.Drawing.Size(72, 20);
this.advancedToolStripMenuItem.Text = "Advanced";
@@ -965,7 +967,7 @@ namespace grapher
this.gainCapToolStripMenuItem,
this.legacyCapToolStripMenuItem});
this.capStyleToolStripMenuItem.Name = "capStyleToolStripMenuItem";
- this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
+ this.capStyleToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
this.capStyleToolStripMenuItem.Text = "Cap Style";
//
// gainCapToolStripMenuItem
@@ -988,7 +990,7 @@ namespace grapher
this.gainOffsetToolStripMenuItem,
this.legacyOffsetToolStripMenuItem});
this.offsetStyleToolStripMenuItem.Name = "offsetStyleToolStripMenuItem";
- this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
+ this.offsetStyleToolStripMenuItem.Size = new System.Drawing.Size(210, 22);
this.offsetStyleToolStripMenuItem.Text = "Offset Style";
//
// gainOffsetToolStripMenuItem
@@ -1009,7 +1011,7 @@ namespace grapher
this.wholeVectorToolStripMenuItem,
this.byVectorComponentToolStripMenuItem});
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(163, 22);
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(210, 22);
this.toolStripMenuItem1.Text = "Application Style";
//
// wholeVectorToolStripMenuItem
@@ -1279,6 +1281,15 @@ namespace grapher
title6.Text = "Sensitivity";
this.AccelerationChart.Titles.Add(title6);
//
+ // AutoWriteMenuItem
+ //
+ this.AutoWriteMenuItem.Checked = true;
+ this.AutoWriteMenuItem.CheckOnClick = true;
+ this.AutoWriteMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.AutoWriteMenuItem.Name = "AutoWriteMenuItem";
+ this.AutoWriteMenuItem.Size = new System.Drawing.Size(210, 22);
+ this.AutoWriteMenuItem.Text = "Apply Settings On Startup";
+ //
// RawAcceleration
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -1406,6 +1417,7 @@ namespace grapher
private System.Windows.Forms.DataVisualization.Charting.Chart GainChart;
private System.Windows.Forms.DataVisualization.Charting.Chart VelocityChart;
private System.Windows.Forms.DataVisualization.Charting.Chart AccelerationChart;
+ private System.Windows.Forms.ToolStripMenuItem AutoWriteMenuItem;
}
}
diff --git a/grapher/Form1.cs b/grapher/Form1.cs
index 446618b..d62ed6d 100644
--- a/grapher/Form1.cs
+++ b/grapher/Form1.cs
@@ -59,6 +59,7 @@ namespace grapher
legacyCapToolStripMenuItem,
gainOffsetToolStripMenuItem,
legacyOffsetToolStripMenuItem,
+ AutoWriteMenuItem,
ScaleMenuItem,
DPITextBox,
PollRateTextBox,
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index dd1e37d..c08313b 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -33,13 +33,8 @@ namespace grapher
ToggleButton = (CheckBox)toggleButton;
ScaleMenuItem = scaleMenuItem;
Settings = settings;
- Settings.Startup();
- RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
- AccelForm.DoResize();
-
DefaultButtonFont = WriteButton.Font;
SmallButtonFont = new Font(WriteButton.Font.Name, WriteButton.Font.Size * Constants.SmallButtonSizeFactor);
-
MouseWatcher = mouseWatcher;
ScaleMenuItem.Click += new System.EventHandler(OnScaleMenuItemClick);
@@ -50,9 +45,30 @@ namespace grapher
ButtonTimerInterval = Convert.ToInt32(DriverInterop.WriteDelayMs);
ButtonTimer = new Timer();
ButtonTimer.Tick += new System.EventHandler(OnButtonTimerTick);
- SetupButtons();
ChartRefresh = SetupChartTimer();
+
+ bool settingsActive = Settings.Startup();
+ SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
+
+ if (settingsActive)
+ {
+ LastToggleChecked = SettingsNotDefault;
+ ToggleButton.Enabled = LastToggleChecked;
+ RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
+ }
+ else
+ {
+ DriverSettings active = DriverInterop.GetActiveSettings();
+ bool activeNotDefault = !RawAccelSettings.IsDefaultEquivalent(active);
+
+ LastToggleChecked = activeNotDefault;
+ ToggleButton.Enabled = SettingsNotDefault || activeNotDefault;
+ RefreshOnRead(active);
+ }
+
+ SetupButtons();
+ AccelForm.DoResize();
}
#endregion Constructors
@@ -109,6 +125,10 @@ namespace grapher
{
var driverSettings = Settings.RawAccelSettings.AccelerationSettings;
+ var newArgs = ApplyOptions.GetArgs();
+ newArgs.x.speedCap = driverSettings.args.x.speedCap;
+ newArgs.y.speedCap = driverSettings.args.y.speedCap;
+
var settings = new DriverSettings
{
rotation = ApplyOptions.Rotation.Field.Data,
@@ -119,15 +139,16 @@ namespace grapher
},
combineMagnitudes = ApplyOptions.IsWhole,
modes = ApplyOptions.GetModes(),
- args = ApplyOptions.GetArgs(),
+ args = newArgs,
minimumTime = driverSettings.minimumTime
};
- WriteButtonDelay();
+ ButtonDelay(WriteButton);
SettingsErrors errors = Settings.TryUpdateActiveSettings(settings);
if (errors.Empty())
{
- RefreshToggleStateFromNewSettings();
+ SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
+ LastToggleChecked = SettingsNotDefault;
RefreshOnRead(Settings.RawAccelSettings.AccelerationSettings);
}
else
@@ -176,34 +197,23 @@ namespace grapher
ToggleButton.Size = WriteButton.Size;
ToggleButton.Top = WriteButton.Top;
- RefreshToggleStateFromNewSettings();
- SetToggleButtonDefault();
- SetWriteButtonDefault();
+ SetButtonDefaults();
}
- private void RefreshToggleStateFromNewSettings()
+ private void SetButtonDefaults()
{
- SettingsNotDefault = !Settings.RawAccelSettings.IsDefaultEquivalent();
- LastToggleChecked = SettingsNotDefault;
- }
+ ToggleButton.Checked = LastToggleChecked;
+
+ ToggleButton.Font = DefaultButtonFont;
+ ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled";
+ ToggleButton.Update();
- private void SetWriteButtonDefault()
- {
WriteButton.Font = DefaultButtonFont;
WriteButton.Text = Constants.WriteButtonDefaultText;
WriteButton.Enabled = ToggleButton.Checked || !ToggleButton.Enabled;
WriteButton.Update();
}
- private void SetToggleButtonDefault()
- {
- ToggleButton.Checked = LastToggleChecked;
- ToggleButton.Enabled = SettingsNotDefault;
- ToggleButton.Font = DefaultButtonFont;
- ToggleButton.Text = ToggleButton.Checked ? "Enabled" : "Disabled";
- ToggleButton.Update();
- }
-
private void OnScaleMenuItemClick(object sender, EventArgs e)
{
UpdateGraph(Settings.RawAccelSettings.AccelerationSettings);
@@ -220,7 +230,8 @@ namespace grapher
Settings.RawAccelSettings.AccelerationSettings :
DriverInterop.DefaultSettings;
- ToggleButtonDelay();
+ LastToggleChecked = ToggleButton.Checked;
+ ButtonDelay(ToggleButton);
SettingsManager.SendToDriver(settings);
Settings.ActiveAccel.UpdateFromSettings(settings);
@@ -230,8 +241,8 @@ namespace grapher
private void OnButtonTimerTick(object sender, EventArgs e)
{
ButtonTimer.Stop();
- SetToggleButtonDefault();
- SetWriteButtonDefault();
+ ToggleButton.Enabled = SettingsNotDefault;
+ SetButtonDefaults();
}
private void StartButtonTimer()
@@ -240,33 +251,17 @@ namespace grapher
ButtonTimer.Start();
}
- private void WriteButtonDelay()
+ private void ButtonDelay(ButtonBase btn)
{
- WriteButton.Font = SmallButtonFont;
- WriteButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
+ ToggleButton.Checked = false;
+
+ ToggleButton.Enabled = false;
WriteButton.Enabled = false;
- WriteButton.Update();
- if (ToggleButton.Enabled)
- {
- LastToggleChecked = ToggleButton.Checked;
- ToggleButton.Checked = false;
- ToggleButton.Enabled = false;
- ToggleButton.Update();
- }
- StartButtonTimer();
- }
+ btn.Font = SmallButtonFont;
+ btn.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
- private void ToggleButtonDelay()
- {
- LastToggleChecked = ToggleButton.Checked;
- ToggleButton.Checked = false;
- ToggleButton.Enabled = false;
- ToggleButton.Font = SmallButtonFont;
- ToggleButton.Text = $"{Constants.ButtonDelayText} : {ButtonTimerInterval} ms";
ToggleButton.Update();
-
- WriteButton.Enabled = false;
WriteButton.Update();
StartButtonTimer();
diff --git a/grapher/Models/AccelGUIFactory.cs b/grapher/Models/AccelGUIFactory.cs
index 51bbc2b..3dc2a74 100644
--- a/grapher/Models/AccelGUIFactory.cs
+++ b/grapher/Models/AccelGUIFactory.cs
@@ -32,6 +32,7 @@ namespace grapher.Models
ToolStripMenuItem legacyCapToolStripMenuItem,
ToolStripMenuItem gainOffsetToolStripMenuItem,
ToolStripMenuItem legacyOffsetToolStripMenuItem,
+ ToolStripMenuItem autoWriteMenuItem,
ToolStripMenuItem scaleMenuItem,
ToolStripTextBox dpiTextBox,
ToolStripTextBox pollRateTextBox,
@@ -326,6 +327,7 @@ namespace grapher.Models
activeAccel,
accelCalculator.DPI,
accelCalculator.PollRate,
+ autoWriteMenuItem,
showLastMouseMoveMenuItem,
showVelocityGainToolStripMenuItem);
diff --git a/grapher/Models/Options/ActiveValueLabelXY.cs b/grapher/Models/Options/ActiveValueLabelXY.cs
index 1367a6a..381779c 100644
--- a/grapher/Models/Options/ActiveValueLabelXY.cs
+++ b/grapher/Models/Options/ActiveValueLabelXY.cs
@@ -143,7 +143,8 @@ namespace grapher.Models.Options
private void Align (int width)
{
FullWidth = width;
- ShortenedWidth = FullWidth / 2;
+ // ShortenedWidth = FullWidth / 2;
+ ShortenedWidth = FullWidth;
SetYLeft();
Y.Width = ShortenedWidth;
diff --git a/grapher/Models/Serialized/GUISettings.cs b/grapher/Models/Serialized/GUISettings.cs
index c8f87ae..bb35055 100644
--- a/grapher/Models/Serialized/GUISettings.cs
+++ b/grapher/Models/Serialized/GUISettings.cs
@@ -4,6 +4,7 @@ using System;
namespace grapher.Models.Serialized
{
[Serializable]
+ [JsonObject(ItemRequired = Required.Always)]
public class GUISettings
{
#region Constructors
@@ -27,6 +28,9 @@ namespace grapher.Models.Serialized
[JsonProperty(Order = 4)]
public bool ShowVelocityAndGain { get; set; }
+ [JsonProperty(Order = 5)]
+ public bool AutoWriteToDriverOnStartup { get; set; }
+
#endregion Properties
#region Methods
@@ -48,7 +52,8 @@ namespace grapher.Models.Serialized
return DPI == other.DPI &&
PollRate == other.PollRate &&
ShowLastMouseMove == other.ShowLastMouseMove &&
- ShowVelocityAndGain == other.ShowVelocityAndGain;
+ ShowVelocityAndGain == other.ShowVelocityAndGain &&
+ AutoWriteToDriverOnStartup == other.AutoWriteToDriverOnStartup;
}
public override int GetHashCode()
@@ -56,7 +61,8 @@ namespace grapher.Models.Serialized
return DPI.GetHashCode() ^
PollRate.GetHashCode() ^
ShowLastMouseMove.GetHashCode() ^
- ShowVelocityAndGain.GetHashCode();
+ ShowVelocityAndGain.GetHashCode() ^
+ AutoWriteToDriverOnStartup.GetHashCode();
}
#endregion Methods
diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs
index 818bfb6..af87a65 100644
--- a/grapher/Models/Serialized/RawAccelSettings.cs
+++ b/grapher/Models/Serialized/RawAccelSettings.cs
@@ -117,13 +117,18 @@ namespace grapher.Models.Serialized
public bool IsDefaultEquivalent()
{
- bool wholeOrNoY = AccelerationSettings.combineMagnitudes ||
- AccelerationSettings.modes.y == AccelMode.noaccel;
+ return IsDefaultEquivalent(AccelerationSettings);
+ }
+
+ public static bool IsDefaultEquivalent(DriverSettings accelSettings)
+ {
+ bool wholeOrNoY = accelSettings.combineMagnitudes ||
+ accelSettings.modes.y == AccelMode.noaccel;
- return AccelerationSettings.sensitivity.x == 1 &&
- AccelerationSettings.sensitivity.y == 1 &&
- AccelerationSettings.rotation == 0 &&
- AccelerationSettings.modes.x == AccelMode.noaccel &&
+ return accelSettings.sensitivity.x == 1 &&
+ accelSettings.sensitivity.y == 1 &&
+ accelSettings.rotation == 0 &&
+ accelSettings.modes.x == AccelMode.noaccel &&
wholeOrNoY;
}
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs
index 8712c87..f13ba81 100644
--- a/grapher/Models/Serialized/SettingsManager.cs
+++ b/grapher/Models/Serialized/SettingsManager.cs
@@ -14,12 +14,14 @@ namespace grapher.Models.Serialized
ManagedAccel activeAccel,
Field dpiField,
Field pollRateField,
+ ToolStripMenuItem autoWrite,
ToolStripMenuItem showLastMouseMove,
ToolStripMenuItem showVelocityAndGain)
{
ActiveAccel = activeAccel;
DpiField = dpiField;
PollRateField = pollRateField;
+ AutoWriteMenuItem = autoWrite;
ShowLastMouseMoveMenuItem = showLastMouseMove;
ShowVelocityAndGainMoveMenuItem = showVelocityAndGain;
}
@@ -36,6 +38,8 @@ namespace grapher.Models.Serialized
private Field PollRateField { get; set; }
+ private ToolStripMenuItem AutoWriteMenuItem { get; set; }
+
private ToolStripMenuItem ShowLastMouseMoveMenuItem { get; set; }
private ToolStripMenuItem ShowVelocityAndGainMoveMenuItem { get; set; }
@@ -92,12 +96,7 @@ namespace grapher.Models.Serialized
PollRateField.SetToEntered(RawAccelSettings.GUISettings.PollRate);
ShowLastMouseMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowLastMouseMove;
ShowVelocityAndGainMoveMenuItem.Checked = RawAccelSettings.GUISettings.ShowVelocityAndGain;
- }
-
- public void UpdateActiveAccelFromFileSettings(DriverSettings settings)
- {
- TryUpdateAccel(settings);
- UpdateFieldsFromGUISettings();
+ AutoWriteMenuItem.Checked = RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup;
}
public SettingsErrors TryUpdateAccel(DriverSettings settings)
@@ -126,11 +125,13 @@ namespace grapher.Models.Serialized
DPI = (int)DpiField.Data,
PollRate = (int)PollRateField.Data,
ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked,
- ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked
+ ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked,
+ AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked
};
}
- public void Startup()
+ // Returns true when file settings are active
+ public bool Startup()
{
if (RawAccelSettings.Exists())
{
@@ -138,8 +139,11 @@ namespace grapher.Models.Serialized
{
RawAccelSettings = RawAccelSettings.Load(() => MakeGUISettingsFromFields());
UpdateFieldsFromGUISettings();
- UpdateActiveAccelFromFileSettings(RawAccelSettings.AccelerationSettings);
- return;
+ if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup)
+ {
+ TryUpdateAccel(RawAccelSettings.AccelerationSettings);
+ }
+ return RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup;
}
catch (JsonException e)
{
@@ -151,6 +155,7 @@ namespace grapher.Models.Serialized
DriverInterop.GetActiveSettings(),
MakeGUISettingsFromFields());
RawAccelSettings.Save();
+ return true;
}
#endregion Methods
diff --git a/signed/driver/rawaccel.sys b/signed/driver/rawaccel.sys
index 94872fe..a390fc4 100644
--- a/signed/driver/rawaccel.sys
+++ b/signed/driver/rawaccel.sys
Binary files differ
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp
index a921801..ee88112 100644
--- a/wrapper/wrapper.cpp
+++ b/wrapper/wrapper.cpp
@@ -33,6 +33,8 @@ public value struct AccelArgs
[JsonProperty("legacyCap")]
double scaleCap;
double gainCap;
+ [JsonProperty(Required = Required::Default)]
+ double speedCap;
};
generic <typename T>