feat: serial CW keyer — add invert (active-LOW) polarity option

Some CW interfaces key on the opposite line level (transmit at rest / key
backwards). New "Invert keying (active-LOW)" toggle flips the asserted level for
both the CW and PTT lines, and the idle state drives both lines to their
inactive level accordingly so an active-low rig isn't left keyed at rest.
Default off = N1MM convention (line HIGH = active).
This commit is contained in:
2026-07-23 18:50:01 +02:00
parent 2c5416500f
commit 43f15f1a2c
5 changed files with 33 additions and 13 deletions
+4 -1
View File
@@ -218,6 +218,7 @@ const (
keyWKEscClears = "winkeyer.esc_clears_call" // ESC also clears the callsign
keyWKSendOnType = "winkeyer.send_on_type" // key characters live as typed
keyWKCWLine = "winkeyer.cw_key_line" // serial engine: "dtr" (CW) / "rts" (PTT) or swapped
keyWKCWInvert = "winkeyer.cw_invert" // serial engine: invert line polarity (active-LOW)
keyClusterAutoConnect = "cluster.auto_connect" // open every enabled server at app start
@@ -13053,7 +13054,7 @@ func (a *App) GetWinkeyerSettings() (WinkeyerSettings, error) {
keyWKEnabled, keyWKPort, keyWKBaud, keyWKWPM, keyWKWeight, keyWKLeadIn,
keyWKTail, keyWKRatio, keyWKFarnsworth, keyWKSidetone, keyWKMode,
keyWKSwap, keyWKAutoSpace, keyWKUsePTT, keyWKSerialEcho, keyWKMacros,
keyWKEngine, keyWKEscClears, keyWKSendOnType, keyWKCWLine)
keyWKEngine, keyWKEscClears, keyWKSendOnType, keyWKCWLine, keyWKCWInvert)
if err != nil {
return out, err
}
@@ -13063,6 +13064,7 @@ func (a *App) GetWinkeyerSettings() (WinkeyerSettings, error) {
if v := m[keyWKCWLine]; v != "" {
out.CWKeyLine = v
}
out.CWInvert = m[keyWKCWInvert] == "1"
if v := m[keyWKEscClears]; v != "" {
out.EscClearsCall = v == "1"
}
@@ -13130,6 +13132,7 @@ func (a *App) SaveWinkeyerSettings(s WinkeyerSettings) error {
keyWKEscClears: boolStr(s.EscClearsCall),
keyWKSendOnType: boolStr(s.SendOnType),
keyWKCWLine: strings.TrimSpace(s.CWKeyLine),
keyWKCWInvert: boolStr(s.CWInvert),
} {
if err := a.settings.Set(a.ctx, k, v); err != nil {
return err