The radio has a keyer and a command to feed it (KY), so an FTDX10 needs no
WinKeyer and no second cable, exactly as the Icom CI-V and Flex CWX engines
already do. The rig keys with its own timing, which is why the spacing is right
where a PC keying a line through USB latency drifts.
Text is filtered to what the keyer can actually send: an unsupported byte does
not produce an error on a Yaesu, it can abort the whole buffer, so the rest of a
macro would vanish silently. It is then fed in 24-character pieces, waiting for
room between them — the rig DROPS what does not fit, again with no error, so a
contest CQ would lose its tail.
STOP is the honest gap. Yaesu documents no buffer-clear, so it drops the
transmitter (TX0) instead: nothing queued reaches the air, which is what Escape
means to an operator. It deliberately does NOT send "KY0;" — a plausible-looking
clear that the rig would read as the CHARACTER zero and transmit.
A test caught a real one on the way: tabs and newlines were dropped as
"unsupported", gluing the words either side together, so a macro written on two
lines went out as CQCQ. Whitespace now becomes a word gap before filtering.
Settings warn when the Yaesu keyer is selected without the Yaesu CAT backend —
otherwise it simply never keys, with nothing on screen saying why.
Send path follows the CAT reference and how Hamlib drives these rigs; NOT yet
verified on the air.
'wk.escClears':'ESC clears the callsign too (otherwise ESC only stops transmission)',
'wk.esm':'ESM — Enter Sends Message (CW)',
'wk.esmHint':'In CW with the keyer on, Enter fires a macro by QSO stage instead of logging: empty callsign → F1 (CQ); callsign entered → F2 (report) and focus jumps to RST; Enter in RST → F3 (TU), which logs if the macro contains <LOGQSO>.',
'wk.engWinkeyer':'WinKeyer (K1EL, serial)','wk.engSerial':'Serial port (DTR=CW / RTS=PTT)','wk.engIcom':'Icom CI-V (rig keyer)','wk.engYaesu':'Yaesu (rig keyer)','wk.catWarnYaesu':'The Yaesu keyer needs the Yaesu CAT backend — CAT is currently {backend}.','wk.engFlex':'FlexRadio (CWX)','wk.engTci':'TCI (coming soon)',
'wk.icomNote':"Icom CI-V keys CW through the rig's own keyer over the existing CAT connection (command 0x17) — it reuses the CAT COM port set in Settings → CAT, so there's nothing else to wire up here. Put the rig in CW mode. Weight, ratio, sidetone, paddle mode… are configured on the radio; only the speed is set from here (the rig's KEY SPEED).",
'wk.flexNote':"FlexRadio keys CW through the radio's CWX keyer over the existing SmartSDR CAT connection — no WinKeyer or SmartCAT needed. It reuses the connection set in Settings → CAT, so there's nothing else to wire up here. Put a slice in CW mode. Only the speed is set from here; weight, sidetone and break-in are configured on the radio (break-in must be on for CW to actually transmit).",
'wk.catWarnIcom':'Your CAT backend is set to {backend}. Icom CI-V CW needs the CAT backend set to Icom and connected — change it under Settings → CAT interface, otherwise sending CW will fail.',
@@ -346,7 +346,7 @@ const en: Dict = {
'adx.introPart1':'Every ADIF 3.1.7 field not shown in the other tabs. Pick a field to add it, or type a custom/vendor tag (e.g. ','adx.introPart2':'). Stored losslessly and exported in the ','adx.fullMode':'full','adx.introPart3':' ADIF mode.','adx.addFieldPh':'Add ADIF field…','adx.showDeprecated':'Show deprecated','adx.noExtra':'No extra ADIF fields. Use the picker above to add one.','adx.deprecated':'deprecated','adx.intl':'intl','adx.nonStandard':'non-standard','adx.removeField':'Remove field',
'wkp.sourceHint':'CW output: WK = WinKeyer hardware · CI-V = the Icom rig’s own keyer (over CAT, no extra hardware)','wkp.civReady':'Icom CI-V ready','wkp.civOffline':'Icom not connected (Settings → CAT)','wkp.cwxReady':'Flex CWX ready','wkp.cwxOffline':'Flex not connected (Settings → CAT)',
'wkp.sourceHint':'CW output: WK = WinKeyer hardware · CI-V = the Icom rig’s own keyer (over CAT, no extra hardware)','wkp.rigReady':'Rig keyer ready','wkp.rigOffline':'Rig CAT offline','wkp.civReady':'Icom CI-V ready','wkp.civOffline':'Icom not connected (Settings → CAT)','wkp.cwxReady':'Flex CWX ready','wkp.cwxOffline':'Flex not connected (Settings → CAT)',
'wkp.cwSpeed':'CW speed (WPM)','wkp.faster':'Faster','wkp.slower':'Slower','wkp.cwText':'CW text','wkp.sendOnTypeHint':'Key each character live as you type (backspace removes un-sent chars)','wkp.sendOnType':'send on type','wkp.phLive':'Type — sent live…','wkp.phEnter':'Type and press Enter to send…','wkp.clear':'Clear','wkp.send':'Send','wkp.abort':'Abort (clear keyer buffer)','wkp.stop':'Stop',
'wkp.breakIn':'Break-in','wkp.breakInHint':"The rig's CW keyer only transmits when break-in is SEMI or FULL. OFF keys the sidetone but stays in receive.",'wkp.bkOff':'OFF','wkp.bkOffWarn':"won't transmit — set SEMI or FULL",
'wkp.autoCallHint':'Click a CQ macro (one whose text contains CQ) to resend it on a loop — message, gap, repeat — until you send another macro (e.g. a report), press Stop, or hit ESC. Non-CQ macros send once.','wkp.autoCall':'Auto-call','wkp.gap':'gap','wkp.gapHint':'Seconds to wait after the message before resending','wkp.loopHint':'click a CQ macro to loop it','wkp.macroN':'Macro {n}',
@@ -574,7 +574,7 @@ const fr: Dict = {
'wk.escClears':"ÉCHAP efface aussi l'indicatif (sinon ÉCHAP arrête seulement la transmission)",
'wk.esm':'ESM — Entrée envoie le message (CW)',
'wk.esmHint':"En CW avec le keyer actif, Entrée envoie un macro selon l'étape du QSO au lieu de loguer : indicatif vide → F1 (CQ) ; indicatif saisi → F2 (report) et le focus passe au RST ; Entrée dans le RST → F3 (TU), qui logue si le macro contient <LOGQSO>.",
'wk.engWinkeyer':'WinKeyer (K1EL, série)','wk.engSerial':'Port série (DTR=CW / RTS=PTT)','wk.engIcom':'Icom CI-V (keyer de la radio)','wk.engFlex':'FlexRadio (CWX)','wk.engTci':'TCI (bientôt)',
'wk.engWinkeyer':'WinKeyer (K1EL, série)','wk.engSerial':'Port série (DTR=CW / RTS=PTT)','wk.engIcom':'Icom CI-V (keyer de la radio)','wk.engYaesu':'Yaesu (keyer de la radio)','wk.catWarnYaesu':'Le keyer Yaesu nécessite le backend CAT Yaesu — le CAT est actuellement : {backend}.','wk.engFlex':'FlexRadio (CWX)','wk.engTci':'TCI (bientôt)',
'wk.icomNote':"L'Icom CI-V manipule la CW via le keyer interne de la radio sur la connexion CAT existante (commande 0x17) — il réutilise le port COM CAT défini dans Réglages → CAT, rien d'autre à câbler ici. Mets la radio en mode CW. Poids, ratio, sidetone, mode paddle… se règlent sur la radio ; seule la vitesse est définie ici (KEY SPEED de la radio).",
'wk.flexNote':"FlexRadio manipule la CW via le keyer CWX de la radio sur la connexion SmartSDR CAT existante — pas besoin de WinKeyer ni de SmartCAT. Il réutilise la connexion définie dans Réglages → CAT, rien d'autre à câbler ici. Mets une slice en mode CW. Seule la vitesse est définie ici ; poids, sidetone et break-in se règlent sur la radio (le break-in doit être activé pour que la CW parte vraiment).",
'wk.catWarnIcom':"Ton backend CAT est réglé sur {backend}. La CW Icom CI-V nécessite le backend CAT réglé sur Icom et connecté — change-le dans Réglages → Interface CAT, sinon l'envoi CW échouera.",
@@ -741,7 +741,7 @@ const fr: Dict = {
'ctp.stopContest':'Arrêter le contest','ctp.startContest':'Démarrer le contest','ctp.activeHint':'Le formulaire de saisie affiche Env/Reç et un badge DUPE ; les QSO sont marqués avec ce contest.','ctp.inactiveHint':'Choisis un contest, règle la fenêtre, puis Démarrer.','ctp.scoreboard':'Tableau des scores','ctp.estimate':'estimation','ctp.qsos':'QSO','ctp.mult':'Mult','ctp.scoreEst':'Score (est.)','ctp.last60':'Dernières 60 min','ctp.band':'Bande',
'adx.introPart1':'Tous les champs ADIF 3.1.7 non affichés dans les autres onglets. Choisis un champ à ajouter, ou saisis un tag personnalisé/constructeur (ex. ','adx.introPart2':'). Stocké sans perte et exporté en mode ADIF ','adx.fullMode':'complet','adx.introPart3':'.','adx.addFieldPh':'Ajouter un champ ADIF…','adx.showDeprecated':'Afficher les obsolètes','adx.noExtra':'Aucun champ ADIF supplémentaire. Utilise le sélecteur ci-dessus pour en ajouter un.','adx.deprecated':'obsolète','adx.intl':'intl','adx.nonStandard':'non standard','adx.removeField':'Supprimer le champ',
'wkp.sending':'Émission…','wkp.connectedV':'Connecté (v{version})','wkp.disconnected':'Déconnecté','wkp.comPort':'Port COM','wkp.noPorts':'Aucun port','wkp.refreshPorts':'Rafraîchir les ports','wkp.connect':'Connecter','wkp.disconnect':'Déconnecter','wkp.hide':'Masquer / désactiver le WinKeyer',
'wkp.sourceHint':'Sortie CW : WK = WinKeyer matériel · CI-V = le keyer interne de l’Icom (via CAT, sans matériel en plus)','wkp.civReady':'Icom CI-V prêt','wkp.civOffline':'Icom non connecté (Réglages → CAT)','wkp.cwxReady':'Flex CWX prêt','wkp.cwxOffline':'Flex non connecté (Réglages → CAT)',
'wkp.sourceHint':'Sortie CW : WK = WinKeyer matériel · CI-V = le keyer interne de l’Icom (via CAT, sans matériel en plus)','wkp.rigReady':'Keyer radio prêt','wkp.rigOffline':'CAT radio hors ligne','wkp.civReady':'Icom CI-V prêt','wkp.civOffline':'Icom non connecté (Réglages → CAT)','wkp.cwxReady':'Flex CWX prêt','wkp.cwxOffline':'Flex non connecté (Réglages → CAT)',
'wkp.cwSpeed':'Vitesse CW (WPM)','wkp.faster':'Plus rapide','wkp.slower':'Plus lent','wkp.cwText':'Texte CW','wkp.sendOnTypeHint':'Manipule chaque caractère en direct à la frappe (retour arrière supprime les caractères non émis)','wkp.sendOnType':'émission à la frappe','wkp.phLive':'Tape — émis en direct…','wkp.phEnter':'Tape et appuie sur Entrée pour émettre…','wkp.clear':'Effacer','wkp.send':'Émettre','wkp.abort':'Interrompre (vider le tampon du manipulateur)','wkp.stop':'Stop',
'wkp.breakIn':'Break-in','wkp.breakInHint':"Le manipulateur interne de la radio n'émet que si le break-in est SEMI ou FULL. OFF génère la tonalité mais reste en réception.",'wkp.bkOff':'OFF','wkp.bkOffWarn':"n'émettra pas — mettre SEMI ou FULL",
'wkp.autoCallHint':"Clique une macro CQ (dont le texte contient CQ) pour la réémettre en boucle — message, pause, répétition — jusqu'à envoyer une autre macro (ex. un report), appuyer sur Stop ou ESC. Les macros non-CQ ne sont émises qu'une fois.",'wkp.autoCall':'Appel auto','wkp.gap':'pause','wkp.gapHint':'Secondes à attendre après le message avant de réémettre','wkp.loopHint':'clique une macro CQ pour la boucler','wkp.macroN':'Macro {n}',
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.