Speak-status: drop the double-press-copy Preferences toggle
Andre confirmed (via NVDA speech history) that holding the speak-status hotkey doesn't repeat or spam — so the defensive toggle that let users disable the double-press-to-copy was needless configurability. Removed the Preferences checkbox and the DoublePressStatusToCopy setting; double-press-to-copy (Andre's own idea) stays, now simply always on. There was never any debounce/anti-spam code to remove — the only timing is the 600 ms double-tap detection window, which is the feature itself. Manual updated to drop the toggle line. Held for the next release (the toggle never shipped). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6c36369806
commit
843be9b7fb
@@ -815,7 +815,7 @@ The main window has a **status line** that updates every second with how long yo
|
|||||||
|
|
||||||
This hotkey is the cure. Give **Speak the RemSound status information** a key in the Keyboard shortcuts dialog, and from then on pressing it reads the whole status out loud, wherever you are — even when RemSound is tucked away in the tray or another program is in front. It's unset to start with, so the key is yours to choose.
|
This hotkey is the cure. Give **Speak the RemSound status information** a key in the Keyboard shortcuts dialog, and from then on pressing it reads the whole status out loud, wherever you are — even when RemSound is tucked away in the tray or another program is in front. It's unset to start with, so the key is yours to choose.
|
||||||
|
|
||||||
It reads the status out **a line at a time** — peers, ping, uptime, data rates, totals — so each piece lands as its own short phrase rather than one long run-on, and big totals show in gigabytes once they pass a gigabyte. A quick **double press** of the same hotkey **copies the status to the clipboard** instead of reading it, so you can paste it to someone if you're comparing notes. If you'd rather a double press just read it again, untick **Double-press the speak-status hotkey to copy the status to the clipboard** on the **General** tab of Preferences (it's on by default).
|
It reads the status out **a line at a time** — peers, ping, uptime, data rates, totals — so each piece lands as its own short phrase rather than one long run-on, and big totals show in gigabytes once they pass a gigabyte. A quick **double press** of the same hotkey **copies the status to the clipboard** instead of reading it, so you can paste it to someone if you're comparing notes.
|
||||||
|
|
||||||
This one is just for screen-reader users: it talks straight through your screen reader. It works with the screen readers RemSound's speech helper supports — **NVDA** , JAWS, Window-Eyes, System Access, SuperNova and ZoomText — and falls back to Windows' own built-in speech if none of those is running. If you don't use a screen reader, just leave this one unset.
|
This one is just for screen-reader users: it talks straight through your screen reader. It works with the screen readers RemSound's speech helper supports — **NVDA** , JAWS, Window-Eyes, System Access, SuperNova and ZoomText — and falls back to Windows' own built-in speech if none of those is running. If you don't use a screen reader, just leave this one unset.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -860,7 +860,7 @@ Audient USB Audio ASIO Driver — Pair 3 (channels 5/6): Loop-back 1 (L) / L
|
|||||||
|
|
||||||
<p>This hotkey is the cure. Give <strong>Speak the RemSound status information</strong> a key in the Keyboard shortcuts dialog, and from then on pressing it reads the whole status out loud, wherever you are — even when RemSound is tucked away in the tray or another program is in front. It's unset to start with, so the key is yours to choose.</p>
|
<p>This hotkey is the cure. Give <strong>Speak the RemSound status information</strong> a key in the Keyboard shortcuts dialog, and from then on pressing it reads the whole status out loud, wherever you are — even when RemSound is tucked away in the tray or another program is in front. It's unset to start with, so the key is yours to choose.</p>
|
||||||
|
|
||||||
<p>It reads the status out <strong>a line at a time</strong> — peers, ping, uptime, data rates, totals — so each piece lands as its own short phrase rather than one long run-on, and big totals show in gigabytes once they pass a gigabyte. A quick <strong>double press</strong> of the same hotkey <strong>copies the status to the clipboard</strong> instead of reading it, so you can paste it to someone if you're comparing notes. If you'd rather a double press just read it again, untick <strong>Double-press the speak-status hotkey to copy the status to the clipboard</strong> on the <strong>General</strong> tab of Preferences (it's on by default).</p>
|
<p>It reads the status out <strong>a line at a time</strong> — peers, ping, uptime, data rates, totals — so each piece lands as its own short phrase rather than one long run-on, and big totals show in gigabytes once they pass a gigabyte. A quick <strong>double press</strong> of the same hotkey <strong>copies the status to the clipboard</strong> instead of reading it, so you can paste it to someone if you're comparing notes.</p>
|
||||||
|
|
||||||
<p>This one is just for screen-reader users: it talks straight through your screen reader. It works with the screen readers RemSound's speech helper supports — <strong>NVDA</strong>, JAWS, Window-Eyes, System Access, SuperNova and ZoomText — and falls back to Windows' own built-in speech if none of those is running. If you don't use a screen reader, just leave this one unset.</p>
|
<p>This one is just for screen-reader users: it talks straight through your screen reader. It works with the screen readers RemSound's speech helper supports — <strong>NVDA</strong>, JAWS, Window-Eyes, System Access, SuperNova and ZoomText — and falls back to Windows' own built-in speech if none of those is running. If you don't use a screen reader, just leave this one unset.</p>
|
||||||
|
|
||||||
|
|||||||
@@ -3370,10 +3370,9 @@ public sealed class MainForm : Form
|
|||||||
var text = statusReadout.Text;
|
var text = statusReadout.Text;
|
||||||
if (string.IsNullOrWhiteSpace(text)) text = "No status information available.";
|
if (string.IsNullOrWhiteSpace(text)) text = "No status information available.";
|
||||||
|
|
||||||
// Double press copies to the clipboard — but only if the user has left that on (Preferences →
|
// A quick second press copies the status to the clipboard instead of reading it again, so it can
|
||||||
// General). Read the flag only when the timing already qualifies, so a normal single press never
|
// be shared. This is a deliberate double-tap, not a key repeat — a single press never reaches here.
|
||||||
// touches the config file.
|
if (withinDoublePressWindow)
|
||||||
if (withinDoublePressWindow && AppConfig.Load().DoublePressStatusToCopy)
|
|
||||||
{
|
{
|
||||||
// Second quick press: copy the status to the clipboard so it can be shared. Clipboard access
|
// Second quick press: copy the status to the clipboard so it can be shared. Clipboard access
|
||||||
// needs the UI thread — this runs on it (the hotkey is marshalled onto the owner form).
|
// needs the UI thread — this runs on it (the hotkey is marshalled onto the owner form).
|
||||||
|
|||||||
@@ -210,15 +210,6 @@ internal sealed class PreferencesDialog : Form
|
|||||||
AutoSize = true,
|
AutoSize = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Screen-reader convenience (machine-wide, AppConfig). On by default. When off, a double press of
|
|
||||||
// the speak-status hotkey just reads the status again rather than copying it.
|
|
||||||
private readonly AccessibleCheckBox doublePressCopyBox = new()
|
|
||||||
{
|
|
||||||
Text = "Double-press the speak-status hotkey to copy the status to the clipboard (Alt+&C)",
|
|
||||||
AccessibleName = "Double-press the speak-status hotkey to copy the status to the clipboard",
|
|
||||||
AutoSize = true,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Update settings — startup-check checkbox, frequency dropdown, manual check button,
|
// Update settings — startup-check checkbox, frequency dropdown, manual check button,
|
||||||
// silent-install checkbox. Sits above the logging row so users meet it during setup; the
|
// silent-install checkbox. Sits above the logging row so users meet it during setup; the
|
||||||
// canonical order in the dialog is "things related to the program staying current" before
|
// canonical order in the dialog is "things related to the program staying current" before
|
||||||
@@ -575,15 +566,6 @@ internal sealed class PreferencesDialog : Form
|
|||||||
silentlyInstallUpdatesBox.Checked = cfgForLoad.SilentlyInstallUpdates;
|
silentlyInstallUpdatesBox.Checked = cfgForLoad.SilentlyInstallUpdates;
|
||||||
upnpEnabledBox.Checked = cfgForLoad.UpnpEnabled;
|
upnpEnabledBox.Checked = cfgForLoad.UpnpEnabled;
|
||||||
|
|
||||||
// Double-press-the-speak-status-hotkey-to-copy toggle (machine-wide, AppConfig). On by default.
|
|
||||||
doublePressCopyBox.Checked = cfgForLoad.DoublePressStatusToCopy;
|
|
||||||
doublePressCopyBox.CheckedChanged += (_, _) =>
|
|
||||||
{
|
|
||||||
var cfg = AppConfig.Load();
|
|
||||||
cfg.DoublePressStatusToCopy = doublePressCopyBox.Checked;
|
|
||||||
try { cfg.Save(); } catch { /* harmless — choice just won't survive a restart */ }
|
|
||||||
};
|
|
||||||
|
|
||||||
checkForUpdatesOnStartupBox.CheckedChanged += (_, _) =>
|
checkForUpdatesOnStartupBox.CheckedChanged += (_, _) =>
|
||||||
{
|
{
|
||||||
var cfg = AppConfig.Load();
|
var cfg = AppConfig.Load();
|
||||||
@@ -816,7 +798,7 @@ internal sealed class PreferencesDialog : Form
|
|||||||
// is a field (declared above) so OnShown can focus it when the dialog opens. Logging is its
|
// is a field (declared above) so OnShown can focus it when the dialog opens. Logging is its
|
||||||
// own tab (2026-06-19); the two logging controls moved off the General tab to lead it.
|
// own tab (2026-06-19); the two logging controls moved off the General tab to lead it.
|
||||||
tabs.TabPages.Add(MakeTab("General",
|
tabs.TabPages.Add(MakeTab("General",
|
||||||
browseProfilesFolderButton, acceptRemoteVolumeBox, upnpEnabledBox, upnpStatusLabel, doublePressCopyBox));
|
browseProfilesFolderButton, acceptRemoteVolumeBox, upnpEnabledBox, upnpStatusLabel));
|
||||||
tabs.TabPages.Add(MakeTab("Audio cues", cueGroup));
|
tabs.TabPages.Add(MakeTab("Audio cues", cueGroup));
|
||||||
tabs.TabPages.Add(MakeTab("Startup behaviour",
|
tabs.TabPages.Add(MakeTab("Startup behaviour",
|
||||||
startMinimisedBox, startWithUserBox, startWithProfileBox, startupListPanel));
|
startMinimisedBox, startWithUserBox, startWithProfileBox, startupListPanel));
|
||||||
|
|||||||
@@ -196,11 +196,6 @@ public sealed class AppConfig
|
|||||||
public bool? UntickOthersWhenUsingDefaultOutput { get; set; }
|
public bool? UntickOthersWhenUsingDefaultOutput { get; set; }
|
||||||
public bool? UntickOthersWhenUsingDefaultInput { get; set; }
|
public bool? UntickOthersWhenUsingDefaultInput { get; set; }
|
||||||
|
|
||||||
/// <summary>If true, pressing the "speak status" global hotkey twice in quick succession copies the
|
|
||||||
/// status text to the clipboard (instead of just reading it again). On by default; the user can turn
|
|
||||||
/// it off on the Preferences General tab. Machine-wide; a screen-reader convenience (Andre's idea).</summary>
|
|
||||||
public bool DoublePressStatusToCopy { get; set; } = true;
|
|
||||||
|
|
||||||
/// <summary>If non-null and a profile with this title exists, RemSound skips the
|
/// <summary>If non-null and a profile with this title exists, RemSound skips the
|
||||||
/// startup profile picker and loads this profile directly. Combine with
|
/// startup profile picker and loads this profile directly. Combine with
|
||||||
/// <see cref="StartMinimised"/> + the Windows auto-start registry entry
|
/// <see cref="StartMinimised"/> + the Windows auto-start registry entry
|
||||||
|
|||||||
Reference in New Issue
Block a user