diff --git a/MainForm.pas b/MainForm.pas index d55ccd4..7beccfa 100644 --- a/MainForm.pas +++ b/MainForm.pas @@ -226,7 +226,8 @@ type // TUN: режим тоновой подстройки. WDSP TXA PostGen генерирует чистый // тон, Drive подменяется на FTXSettings.TUNLevel (через Cal[band]). FTuning: Boolean; - FHWPTTActive: Boolean; // True = hardware PTT нажата + FHWPTTActive: Boolean; // True = hardware PTT нажата + FHWPTTStartedTX: Boolean; // True = TX был включён именно через HWPTT FMuted: Boolean; FVolume: Integer; FAtten: Integer; // RX step attenuator index: 0=0dB 1=10dB 2=20dB @@ -3202,10 +3203,27 @@ begin if HWPTT <> FHWPTTActive then begin FHWPTTActive := HWPTT; - // Hardware PTT игнорируется во время TUN; иначе включает/выключает передачу - // только если кнопка MOX не нажата (приоритет за UI). - if (not FTuning) and (not BtnMOX.Active) then - ApplyMOX(HWPTT); + if not FTuning then + begin + if HWPTT then + begin + // Press: не перекрываем ручной MOX; запоминаем что мы включили TX. + if not BtnMOX.Active then + begin + ApplyMOX(True); + FHWPTTStartedTX := True; + end; + end else + begin + // Release: выключаем TX только если он был включён через HWPTT. + // Нельзя проверять BtnMOX.Active — ApplyMOX(True) сам его выставляет. + if FHWPTTStartedTX then + begin + FHWPTTStartedTX := False; + ApplyMOX(False); + end; + end; + end; end; end;