feat(rotator): multiple rotors of any type, plus a CAT PTT hotkey

Settings -> Rotator is now a list like the amplifiers: add/remove rotors,
mix PstRotator / Rotator Genius / ARCO, and a Rotator Genius can drive both
its ports (one entry = two rotors). The compass gains a rotor selector, and
a per-rotor motorized-antenna flag so the boom/pattern paths show only for
the rotor carrying the Ultrabeam/SteppIR.

Also in this batch: a keyboard PTT hotkey (hold-to-talk or toggle, reusing
the audio PTT method with a CAT fallback), and TCI spot push to the
panadapter with click-to-fill of the callsign.
This commit is contained in:
2026-08-04 09:01:21 +02:00
parent 9846354bf9
commit b3fdd0b7fa
11 changed files with 964 additions and 441 deletions
+18 -6
View File
@@ -886,8 +886,8 @@ export function GetRotatorHeading() {
return window['go']['main']['App']['GetRotatorHeading']();
}
export function GetRotatorSettings() {
return window['go']['main']['App']['GetRotatorSettings']();
export function GetRotators() {
return window['go']['main']['App']['GetRotators']();
}
export function GetSPEStatus() {
@@ -1362,6 +1362,14 @@ export function PGXLSetOperate(arg1) {
return window['go']['main']['App']['PGXLSetOperate'](arg1);
}
export function PTTHotkeyDown() {
return window['go']['main']['App']['PTTHotkeyDown']();
}
export function PTTHotkeyUp() {
return window['go']['main']['App']['PTTHotkeyUp']();
}
export function PickADIFMonitorFile() {
return window['go']['main']['App']['PickADIFMonitorFile']();
}
@@ -1706,8 +1714,8 @@ export function SaveRelayAuto(arg1) {
return window['go']['main']['App']['SaveRelayAuto'](arg1);
}
export function SaveRotatorSettings(arg1) {
return window['go']['main']['App']['SaveRotatorSettings'](arg1);
export function SaveRotators(arg1) {
return window['go']['main']['App']['SaveRotators'](arg1);
}
export function SaveStationDevices(arg1) {
@@ -1766,6 +1774,10 @@ export function SendQSORecordingEmail(arg1) {
return window['go']['main']['App']['SendQSORecordingEmail'](arg1);
}
export function SetActiveRotor(arg1) {
return window['go']['main']['App']['SetActiveRotor'](arg1);
}
export function SetAlertEmailTo(arg1) {
return window['go']['main']['App']['SetAlertEmailTo'](arg1);
}
@@ -1970,8 +1982,8 @@ export function TestQRZUpload() {
return window['go']['main']['App']['TestQRZUpload']();
}
export function TestRotator(arg1) {
return window['go']['main']['App']['TestRotator'](arg1);
export function TestRotatorDevice(arg1, arg2) {
return window['go']['main']['App']['TestRotatorDevice'](arg1, arg2);
}
export function TestStationDevice(arg1) {