feat(icom): PTT and offset split at the operator's hand
The MOX and SPLIT controls lived at the bottom of the Transmit card, below the fold on most layouts — a console whose PTT needs scrolling is not a console. A strip under the mode row now carries the PTT and Split as OFF/+1k/+5k/+10k, DXpedition style, on a new SetIcomSplitOffset that takes the chosen TX offset (0 keeps the old CW/SSB convention). The mode-alignment from the previous fix rides along on every engage.
This commit is contained in:
@@ -5,7 +5,7 @@ import {
|
||||
IcomSetAFGain, IcomSetRFGain, IcomSetNB, IcomSetNBLevel, IcomSetNR, IcomSetNRLevel,
|
||||
IcomSetANF, IcomSetAPF, IcomSetAGC, IcomSetPreamp, IcomSetAtt, IcomSetFilter,
|
||||
AudioMonitorActive, AudioStartMonitor, AudioStopMonitor,
|
||||
IcomSetRFPower, IcomSetMicGain, IcomSetSplit, IcomTune, IcomSetPTT,
|
||||
IcomSetRFPower, IcomSetMicGain, IcomSetSplit, IcomSetSplitOffset, IcomTune, IcomSetPTT,
|
||||
IcomSetScope, IcomScopeData, IcomSetScopeMode, IcomSetScopeEdges, GetCATState, SetCATFrequency, SetCATMode,
|
||||
IcomSetRIT, IcomSetRITOn, IcomSetXITOn,
|
||||
IcomSetAntenna, IcomSetPBTInner, IcomSetPBTOuter, IcomSetManualNotch, IcomSetNotchPos,
|
||||
@@ -786,6 +786,29 @@ export function IcomPanel({ onReportRST, isNetwork = false }: { onReportRST?: (r
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
{/* PTT + split, at the operator's hand under the dial — the Transmit
|
||||
card lower down kept these below the fold, and a console whose PTT
|
||||
needs scrolling is not a console. */}
|
||||
<div className="flex items-center gap-1.5 border-t border-border/60 px-2 py-1.5">
|
||||
<button type="button" onClick={toggleMox}
|
||||
className={cn('flex-1 px-3 py-1.5 rounded-md text-xs font-black tracking-wider border transition-colors',
|
||||
tx ? 'bg-destructive border-destructive text-destructive-foreground animate-pulse' : 'bg-card text-foreground border-border hover:bg-muted')}>
|
||||
{tx ? 'TX ON' : 'PTT'}
|
||||
</button>
|
||||
<span className="text-[10px] font-bold uppercase tracking-wider text-muted-foreground pl-1">Split</span>
|
||||
<button type="button" onClick={() => set({ split: false }, () => IcomSetSplit(false))}
|
||||
className={cn('px-2 py-1.5 rounded-md text-[11px] font-bold border transition-colors',
|
||||
!st.split ? 'bg-primary text-primary-foreground border-primary' : 'bg-card text-muted-foreground border-border hover:bg-muted')}>
|
||||
OFF
|
||||
</button>
|
||||
{[1, 5, 10].map((k) => (
|
||||
<button key={k} type="button" onClick={() => set({ split: true }, () => IcomSetSplitOffset(k * 1000))}
|
||||
className={cn('px-2 py-1.5 rounded-md text-[11px] font-bold border transition-colors',
|
||||
st.split ? 'bg-card text-foreground border-border hover:bg-muted' : 'bg-card text-muted-foreground border-border hover:bg-muted')}>
|
||||
+{k}k
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Live meters — always visible: S (RX, click → RST), Po in watts, SWR. */}
|
||||
|
||||
Reference in New Issue
Block a user