diff --git a/smx-config/MainWindow.xaml b/smx-config/MainWindow.xaml
index 381c6d9..c599008 100644
--- a/smx-config/MainWindow.xaml
+++ b/smx-config/MainWindow.xaml
@@ -145,8 +145,13 @@ Use if the platform is too sensitive.
+
+ Low thresholds above 140 are recommended. Higher thresholds allow the
+panel to detect releases more quickly.
+
+
diff --git a/smx-config/MainWindow.xaml.cs b/smx-config/MainWindow.xaml.cs
index 40108df..c980c4e 100644
--- a/smx-config/MainWindow.xaml.cs
+++ b/smx-config/MainWindow.xaml.cs
@@ -182,6 +182,19 @@ namespace smx_config
RefreshUploadPadText(args);
RefreshSelectedColorPicker();
+ // Show the threshold warning explanation if any panels are showing the threshold warning icon.
+ bool ShowThresholdWarningText = false;
+ foreach(Tuple activePad in ActivePad.ActivePads())
+ {
+ SMX.SMXConfig config = activePad.Item2;
+ for(int panelIdx = 0; panelIdx < 9; ++panelIdx)
+ {
+ if(config.ShowThresholdWarning(panelIdx))
+ ShowThresholdWarningText = true;
+ }
+ }
+ ThresholdWarningText.Visibility = ShowThresholdWarningText? Visibility.Visible : Visibility.Hidden;
+
// If a second controller has connected and we're on Both, see if we need to prompt
// to sync configs. We only actually need to do this if a controller just connected.
if(args.ConfigurationChanged)
diff --git a/smx-config/Resources/threshold_warning.png b/smx-config/Resources/threshold_warning.png
new file mode 100644
index 0000000..94c2525
Binary files /dev/null and b/smx-config/Resources/threshold_warning.png differ
diff --git a/smx-config/SMX.cs b/smx-config/SMX.cs
index ea03b05..58ff795 100644
--- a/smx-config/SMX.cs
+++ b/smx-config/SMX.cs
@@ -112,6 +112,24 @@ namespace SMX
return masterVersion >= 4 && (configFlags & SMXConfigFlags.PlatformFlags_FSR) != 0;
}
+ // Return true if the low threshold is set too low.
+ //
+ // Higher low threshold values make the panel respond to the panel being released more
+ // quickly. It shouldn't be set too low.
+ public bool ShowThresholdWarning(int panel)
+ {
+ if(!fsr())
+ return false;
+
+ // Don't show warnings for disabled panels.
+ if(!GetEnabledPanels()[panel])
+ return false;
+
+ int lower = panelSettings[panel].fsrLowThreshold[0];
+ int MinimumRecommendedLowThreshold = 140;
+ return lower < MinimumRecommendedLowThreshold;
+ }
+
// enabledSensors is a mask of which panels are enabled. Return this as an array
// for convenience.
public bool[] GetEnabledPanels()
diff --git a/smx-config/SMXConfig.csproj b/smx-config/SMXConfig.csproj
index 6905af4..96f395d 100644
--- a/smx-config/SMXConfig.csproj
+++ b/smx-config/SMXConfig.csproj
@@ -218,6 +218,9 @@
+
+
+