diff --git a/MANUAL.md b/MANUAL.md index e36039b..d5415c4 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -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. -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. diff --git a/readme.html b/readme.html index 38954ae..04ac3be 100644 --- a/readme.html +++ b/readme.html @@ -860,7 +860,7 @@ Audient USB Audio ASIO Driver — Pair 3 (channels 5/6): Loop-back 1 (L) / L

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.

diff --git a/src/RemSound.App/MainForm.cs b/src/RemSound.App/MainForm.cs index 0c69d32..8304c98 100644 --- a/src/RemSound.App/MainForm.cs +++ b/src/RemSound.App/MainForm.cs @@ -3370,10 +3370,9 @@ public sealed class MainForm : Form var text = statusReadout.Text; 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 → - // General). Read the flag only when the timing already qualifies, so a normal single press never - // touches the config file. - if (withinDoublePressWindow && AppConfig.Load().DoublePressStatusToCopy) + // A quick second press copies the status to the clipboard instead of reading it again, so it can + // be shared. This is a deliberate double-tap, not a key repeat — a single press never reaches here. + if (withinDoublePressWindow) { // 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). diff --git a/src/RemSound.App/PreferencesDialog.cs b/src/RemSound.App/PreferencesDialog.cs index 4d02bfe..2a86406 100644 --- a/src/RemSound.App/PreferencesDialog.cs +++ b/src/RemSound.App/PreferencesDialog.cs @@ -210,15 +210,6 @@ internal sealed class PreferencesDialog : Form 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, // 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 @@ -575,15 +566,6 @@ internal sealed class PreferencesDialog : Form silentlyInstallUpdatesBox.Checked = cfgForLoad.SilentlyInstallUpdates; 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 += (_, _) => { 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 // own tab (2026-06-19); the two logging controls moved off the General tab to lead it. 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("Startup behaviour", startMinimisedBox, startWithUserBox, startWithProfileBox, startupListPanel)); diff --git a/src/RemSound.Core/AppConfig.cs b/src/RemSound.Core/AppConfig.cs index 958ee98..ef064dc 100644 --- a/src/RemSound.Core/AppConfig.cs +++ b/src/RemSound.Core/AppConfig.cs @@ -196,11 +196,6 @@ public sealed class AppConfig public bool? UntickOthersWhenUsingDefaultOutput { get; set; } public bool? UntickOthersWhenUsingDefaultInput { get; set; } - /// 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). - public bool DoublePressStatusToCopy { get; set; } = true; - /// If non-null and a profile with this title exists, RemSound skips the /// startup profile picker and loads this profile directly. Combine with /// + the Windows auto-start registry entry