Fill in the macros from N1MM's function key page
Going down N1MM's published list, the ones a contest operator would miss:
| | |
|---|---|
| `{LASTEXCH}` | what the last station sent, built from the boxes the contest asks for |
| `{ROVERQTH}` | where a rover is now |
| `{TIME}`, `{DATE}`, `{TIMEGMT}`, `{DATEGMT}` | the clock and the calendar |
| `{ESC}`, `{CTRL-A}` to `{CTRL-Z}` | the control characters a TNC reads as commands |
| `{CTRLHOME}` | the cursor back in the callsign box |
| `{F1}` to `{F12}` | another of this radio's keys, where `{CTRLF1}` is the other radio's |
| `{CQ}` | makes any key a CQ key: it starts running and carries alternating CQ on |
| `{DIGQTCS}`, `{DIGQTCR}` | opens the WAE QTC window the way asked for |
| `{CLEARRIT}` | the receive offset back to zero, which is rigctld's `J 0` |
| `{FORCELOG}` | logs what is in the boxes, holes and all |
`{FORCELOG}` is the one that gives something up. `LogContact` refuses an entry
that is short or holds a value the contest will not take, so that a caller who
has not checked cannot log nonsense; `LogContactAnyway` is the way past it,
because a contact in the log with a hole in it can be filled in afterwards and
one that was never logged cannot. It still needs a callsign, and the status
line says the row will need fixing before the log goes in.
A key that names itself would send for ever, so a key sending another key
ignores the macro a second time down.
What is still passed over is written down in the README and unfinished.md.
Advanced voicing is the one that matters: N1MM says a callsign or a serial by
playing a recording per letter out of `LettersFiles`, which is why `!` and `#`
say nothing on phone here and why F5 is empty in N1MM's own SSB file too. The
three packet BBS date formats are passed over because there is nothing here to
check a guess at them against.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
This commit is contained in:
@@ -156,7 +156,7 @@ macros that are filled in:
|
||||
| `*`, `{MYCALL}` | your callsign |
|
||||
| `!`, `{CALL}` | the call being worked, or the last one logged when the box is empty |
|
||||
| `#` | the serial number for this contact, or the last one when the box is empty |
|
||||
| `{LASTCALL}`, `{PREVNR}` | the call and the serial of the contact just logged |
|
||||
| `{LASTCALL}`, `{PREVNR}`, `{LASTEXCH}` | the call, the serial and the exchange of the contact just logged |
|
||||
| `{EXCH}` | the sent exchange from the contest setup |
|
||||
| `{SENTRST}`, `{SENTRSTCUT}` | the report you send, plain or in cut numbers |
|
||||
| `{NAME}`, `{NAMEANDSPACE}`, `{CHNAME}` | the other operator's name, from the entry window or the call history file |
|
||||
@@ -164,13 +164,20 @@ macros that are filled in:
|
||||
| `{GRIDBEARING}`, `{REVGRIDBEARING}`, `{KMGRIDDISTANCE}` | bearing and distance between the two |
|
||||
| `{FREQ}`, `{FREQROUND}` | this radio's frequency in kilohertz, with `R` for the decimal point on CW |
|
||||
| `{OTHERFREQ}`, `{OTHERFREQROUND}`, `{OTHERMHZ}`, `{OTHERBAND}`, `{LRMHZ}`, `{RRMHZ}` | the other radio, for passing a station |
|
||||
| `{TIMESTAMP}`, `{TIME2}` | the time now |
|
||||
| `{TIMESTAMP}`, `{TIME2}` | the time now, as `2026-09-11 07:45` and as `0745` |
|
||||
| `{TIME}`, `{DATE}`, `{TIMEGMT}`, `{DATEGMT}` | the clock and the calendar the way this machine writes them, local or UTC |
|
||||
| `{ROVERQTH}` | where a rover is now, from the station data |
|
||||
| `{ESC}`, `{CTRL-A}` to `{CTRL-Z}` | the control characters a TNC reads as commands |
|
||||
| `{WAVDIR}` | the folder the voice keyer plays from, which is named after whoever is at the microphone |
|
||||
|
||||
The action macros run rather than standing for text: `{WIPE}`, `{LOG}`,
|
||||
`{RUN}`, `{S&P}`, `{SPACE}`, `{SPOTME}`, `{STOPTX}`, `{FREQUP}`, `{FREQDN}`,
|
||||
`{PGUP}`, `{PGDN}`, `{JUMPRX}`, `{JUMPRXTX}`, `{STACKANOTHER}`, `{SOCALLSTACK}`,
|
||||
`{LOGTHENPOP}`, `{LOGTHENNEXT}`, `{CLRSTACK}`, `{CTRLF1}` to `{CTRLF12}` to send
|
||||
`{LOGTHENPOP}`, `{LOGTHENNEXT}`, `{CLRSTACK}`, `{CTRLHOME}` to put the cursor
|
||||
back in the callsign box, `{CLEARRIT}` to put the receive offset back to zero,
|
||||
`{FORCELOG}` to log a contact the checks refuse, `{CQ}` to make a key a CQ key,
|
||||
`{DIGQTCS}` and `{DIGQTCR}` to open the WAE QTC window, `{F1}` to `{F12}` to
|
||||
send another of this radio's keys, `{CTRLF1}` to `{CTRLF12}` to send
|
||||
on the other radio, `{TELNET sh/dx}` to put a command on the cluster, and
|
||||
`{OTRSP TX2}` to send one to the SO2R box. An action runs before the message
|
||||
goes out, unless it stands after `{END}`, and then it runs once the message has
|
||||
@@ -182,9 +189,17 @@ How far `{FREQUP}` and the rest move the radio is `FrequencyStepHertz` and
|
||||
`PageStepHertz` in `settings.json`, 100 Hz and 1 kHz out of the box; N1MM asks
|
||||
for the same two numbers in its Configurer.
|
||||
|
||||
The rest of N1MM's action macros — the CAT families, audio, rotators, stereo,
|
||||
the digital TNC macros, `{SETWAVDIR}` — are read and passed over, so a message
|
||||
that holds one still sends the right characters.
|
||||
`{CQ}` is for a station whose CQ is not on F1: the key it stands in starts
|
||||
running and carries alternating CQ on, which F1 does by itself. `{FORCELOG}`
|
||||
logs whatever is in the boxes, holes and all — it still needs a callsign, and
|
||||
the status line says the row will need fixing before the log goes in.
|
||||
|
||||
The rest of N1MM's macros — the CAT families, audio, rotators, stereo,
|
||||
`{SETWAVDIR}`, `{SwapContests}`, `{VARYMSG1}` and `{VARYMSG2}`, `{COMMENT}`,
|
||||
`{FORCELOGNOTE}`, `{CONDJUMP}`, `{QSYCQ}`, `{CLUSTER}` and the two needed-QSO
|
||||
macros — are read and passed over, so a message that holds one still sends the right
|
||||
characters. So are `{TIME1}`, `{DATE1}` and `{DAYTIME}`, which are packet BBS
|
||||
date formats this has no way to check.
|
||||
|
||||
### The voice keyer
|
||||
|
||||
|
||||
Reference in New Issue
Block a user