<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"><title>Macros</title></head><body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 204);" alink="#000099" link="#000099" vlink="#990099"> <div style="text-align: center;"> <h1>Macros</h1> <div style="text-align: left;">Macros are short text statements that contain imbedded references to text data used by the program fldigi. Macro definition files(s) are located in the $HOME/.fldigi/macros/ directory and all have the extention ".mdf". The default set of macros are contained in the file $HOME/.fldigi/macros/<span style="font-weight: bold;">macros.mdf</span>. Fldigi will create this file with a set of default macros on its first execution.<br> <br> Fldigi supports up to 48 macro definitions in sets of 12. Macro definitions are not recursive, that is; a macro cannot reference another macro or itself.<br> <br> The imbedded references are similar to those used by DigiPan and other fine modem programs. The imbedded reference is an uppercase plain text descriptor contained with the <> brackets. <br> <br> <table style="text-align: left; width: 80%; margin-left: auto; margin-right: auto; background-color: rgb(226, 253, 255);" border="1" cellpadding="2" cellspacing="1"> <tbody> <tr> <td style="vertical-align: top; text-align: center;">Tag<br> </td> <td style="vertical-align: top; text-align: center;">Description<br> </td> <td style="vertical-align: top; text-align: center;">Tag<br> </td> <td style="vertical-align: top; text-align: center;">Description<br> </td> </tr> <tr> <td style="vertical-align: top;"><FREQ></td> <td style="vertical-align: top;">my frequency</td> <td style="vertical-align: top;"><RX></td> <td style="vertical-align: top;">receive, places ^r tag at end of expanded macro<br> always the last macro tag executed<br> </td> </tr> <tr> <td style="vertical-align: top;"><MODE></td> <td style="vertical-align: top;">mode</td> <td style="vertical-align: top;"><TX></td> <td style="vertical-align: top;">transmit</td> </tr> <tr> <td style="vertical-align: top;"><MYCALL></td> <td style="vertical-align: top;">my call</td> <td style="vertical-align: top;"><TX/RX><br> </td> <td style="vertical-align: top;">toggle T/R<br> </td> </tr> <tr> <td style="vertical-align: top;"><MYLOC> <br> </td> <td style="vertical-align: top;">my locator</td> <td style="vertical-align: top;"><SRCHUP></td> <td style="vertical-align: top;">search UP for signal</td> </tr> <tr> <td style="vertical-align: top;"><MYNAME></td> <td style="vertical-align: top;">my name</td> <td style="vertical-align: top;"><SRCHDN></td> <td style="vertical-align: top;">search DOWN for signal</td> </tr> <tr> <td style="vertical-align: top;"><MYQTH></td> <td style="vertical-align: top;">my QTH</td> <td style="vertical-align: top;"><GOHOME></td> <td style="vertical-align: top;">return to sweet spot</td> </tr> <tr> <td style="vertical-align: top;"><MYRST></td> <td style="vertical-align: top;">my RST</td> <td style="vertical-align: top;"><GOFREQ:NNNN></td> <td style="vertical-align: top;">move to autdo freq NNNN</td> </tr> <tr> <td style="vertical-align: top;"><VER></td> <td style="vertical-align: top;">Fldigi version</td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><FILE:></td> <td style="vertical-align: top;">insert text file</td> </tr> <tr> <td style="vertical-align: top;"><CALL> <br> </td> <td style="vertical-align: top;">other call</td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><NAME></td> <td style="vertical-align: top;">other name</td> <td style="vertical-align: top;"><IDLE:NN.nn></td> <td style="vertical-align: top;">idle signal for NN.nn sec</td> </tr> <tr> <td style="vertical-align: top;"><QTH></td> <td style="vertical-align: top;">other QTH</td> <td style="vertical-align: top;"><TIMER:NN></td> <td style="vertical-align: top;">repeat every NN sec</td> </tr> <tr> <td style="vertical-align: top;"><LOC></td> <td style="vertical-align: top;">other locator</td> <td style="vertical-align: top;"><TUNE:NN></td> <td style="vertical-align: top;">tune signal for NN sec</td> </tr> <tr> <td style="vertical-align: top;"><RST></td> <td style="vertical-align: top;">other RST</td> <td style="vertical-align: top;"><WAIT:NN></td> <td style="vertical-align: top;">delay xmt for NN sec</td> </tr> <tr> <td style="vertical-align: top;"><INFO1></td> <td style="vertical-align: top;">S/N etc. in status bar<br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><INFO2></td> <td style="vertical-align: top;">IMD etc. in status bar<br> </td> <td style="vertical-align: top;"><CWID></td> <td style="vertical-align: top;">CW identifier</td> </tr> <tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><ID> <br> </td> <td style="vertical-align: top;">mode ID</td> </tr> <tr> <td style="vertical-align: top;"><CLRRX></td> <td style="vertical-align: top;">clear RX pane</td> <td style="vertical-align: top;"><TEXT></td> <td style="vertical-align: top;">video text</td> </tr> <tr> <td style="vertical-align: top;"><GET></td> <td style="vertical-align: top;">text to NAME/QTH</td> <td style="vertical-align: top;"><TXRSID:on|off|t></td> <td style="vertical-align: top;">Tx RSID on,off,toggle</td> </tr> <tr> <td style="vertical-align: top;"><LOG></td> <td style="vertical-align: top;">save QSO data immediate<br> </td> <td style="vertical-align: top;"><RXRSID:on|off|t></td> <td style="vertical-align: top;">Rx RSID on,off,toggle</td> </tr> <tr> <td style="vertical-align: top;"><LNW><br> </td> <td style="vertical-align: top;">insert ^L tag into TX text stream<br> save log entries to logbook when ^L<br> is reached.<br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><QSOTIME></td> <td style="vertical-align: top;">QSO time (HHMM)</td> <td style="vertical-align: top;"><POST:+/-nn.n></td> <td style="vertical-align: top;">CW QSK post-timing</td> </tr> <tr> <td style="vertical-align: top;"><ILDT></td> <td style="vertical-align: top;">LDT in iso-8601 format</td> <td style="vertical-align: top;"><PRE:nn.n></td> <td style="vertical-align: top;">CW QSK pre-timing</td> </tr> <tr> <td style="vertical-align: top;"><LDT></td> <td style="vertical-align: top;">Local datetime</td> <td style="vertical-align: top;"><RISE:nn.n></td> <td style="vertical-align: top;">CW rise time</td> </tr> <tr> <td style="vertical-align: top;"><IZDT></td> <td style="vertical-align: top;">ZDT in iso-8601 format</td> <td style="vertical-align: top;"><WPM:NN></td> <td style="vertical-align: top;">CW WPM</td> </tr> <tr> <td style="vertical-align: top;"><ZDT> <br> </td> <td style="vertical-align: top;">UTC datetime</td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><LT><br> </td> <td style="vertical-align: top;">current local time as HHMM<br> </td> <td style="vertical-align: top;"><ZT><br> </td> <td style="vertical-align: top;">current Zulu time as HHMMZ<br> </td> </tr> <tr> <td style="vertical-align: top;"><LD><br> </td> <td style="vertical-align: top;">current local date as YYYY-MM-DD<br> </td> <td style="vertical-align: top;"><ZD><br> </td> <td style="vertical-align: top;">current Zulu date as YYYY-MM-DD Z<br> </td> </tr> <tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><AFC:on|off|t> <br> </td> <td style="vertical-align: top;">AFC on,off,toggle</td> </tr> <tr> <td style="vertical-align: top;"><CNTR></td> <td style="vertical-align: top;">contest counter</td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><DECR></td> <td style="vertical-align: top;">decrement counter</td> <td style="vertical-align: top;"><LOCK:on|off|t></td> <td style="vertical-align: top;">LOCK on,off,toggle</td> </tr> <tr> <td style="vertical-align: top;"><INCR></td> <td style="vertical-align: top;">increment counter</td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> <tr> <td style="vertical-align: top;"><XOUT></td> <td style="vertical-align: top;">insert exchange out text from contest dialog<br> </td> <td style="vertical-align: top;"><MACROS:></td> <td style="vertical-align: top;">change macro defs file</td> </tr><tr> <td style="vertical-align: top;"><XBEG><br> </td> <td style="vertical-align: top;">mark start of "Exchange Out" text<br> </td> <td style="vertical-align: top;"><MAPIT><br> </td> <td style="vertical-align: top;">open default browser to maps.google.com<br>trying Postal Address / Lat-Lon / Locator in order<br> </td> </tr> <tr> <td style="vertical-align: top;"><XEND><br> </td> <td style="vertical-align: top;">mark end of "Exchange Out" text, save to field<br> </td> <td style="vertical-align: top;"><MAPIT:adr/lat/loc><br> </td> <td style="vertical-align: top;">Map starting with Postal Address / Lat-Lon / Locator in order. <MAPIT:adr> is the same as <MAPIT><br> </td> </tr> <tr> <td style="vertical-align: top;"><SAVEXCHG><br> </td> <td style="vertical-align: top;">save entire expanded macro text to "Exchange Out"<br> </td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><br> </td> </tr> </tbody> </table><br> Macro tags are also assigned to each supported modem type and sub-modem type that is supported by fldigi:<br> <br> <table style="text-align: left; width: 100%; background-color: rgb(226, 253, 255);" border="1" cellpadding="2" cellspacing="1"> <tbody> <tr> <td style="vertical-align: top;"><MODEM:CW></td> <td style="vertical-align: top;"><MODEM:MFSK-8></td> <td style="vertical-align: top;"><MODEM:BPSK31></td> <td style="vertical-align: top;"><MODEM:OLIVIA></td> <td style="vertical-align: top;"><MODEM:THOR4></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomEX4></td> <td style="vertical-align: top;"><MODEM:MFSK16></td> <td style="vertical-align: top;"><MODEM:BPSK63></td> <td style="vertical-align: top;"><MODEM:OLIVIA:250:8></td> <td style="vertical-align: top;"><MODEM:THOR5></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomEX5></td> <td style="vertical-align: top;"><MODEM:MFSK-32></td> <td style="vertical-align: top;"><MODEM:BPSK63F></td> <td style="vertical-align: top;"><MODEM:OLIVIA:500:8></td> <td style="vertical-align: top;"><MODEM:THOR8></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomEX8></td> <td style="vertical-align: top;"><MODEM:MFSK-4></td> <td style="vertical-align: top;"><MODEM:BPSK125><br> </td> <td style="vertical-align: top;"><MODEM:OLIVIA:500:16></td> <td style="vertical-align: top;"><MODEM:THOR11></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomX11></td> <td style="vertical-align: top;"><MODEM:MFSK-11></td> <td style="vertical-align: top;"><MODEM:BPSK250></td> <td style="vertical-align: top;"><MODEM:OLIVIA:1000:8></td> <td style="vertical-align: top;"><MODEM:THOR16></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomX16></td> <td style="vertical-align: top;"><MODEM:MFSK-22></td> <td style="vertical-align: top;"><MODEM:BPSK500></td> <td style="vertical-align: top;"><MODEM:OLIVIA:1000:32></td> <td style="vertical-align: top;"><MODEM:THOR22></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:DomX22></td> <td style="vertical-align: top;"><MODEM:MFSK-31></td> <td style="vertical-align: top;"><MODEM:QPSK31></td> <td style="vertical-align: top;"><MODEM:RTTY></td> <td style="vertical-align: top;"><MODEM:THROB1></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:FELDHELL></td> <td style="vertical-align: top;"><MODEM:MFSK-64></td> <td style="vertical-align: top;"><MODEM:QPSK63></td> <td style="vertical-align: top;"><MODEM:RTTY:170:45.45:5></td> <td style="vertical-align: top;"><MODEM:THROB2></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:SLOWHELL></td> <td style="vertical-align: top;"><MODEM:MT63-500></td> <td style="vertical-align: top;"><MODEM:QPSK125></td> <td style="vertical-align: top;"><MODEM:RTTY:170:50:5></td> <td style="vertical-align: top;"><MODEM:THROB4></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:HELLX5></td> <td style="vertical-align: top;"><MODEM:MT63-1XX></td> <td style="vertical-align: top;"><MODEM:QPSK250></td> <td style="vertical-align: top;"><MODEM:RTTY:850:75:5></td> <td style="vertical-align: top;"><MODEM:THRBX1></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:HELLX9></td> <td style="vertical-align: top;"><MODEM:MT63-2XX></td> <td style="vertical-align: top;"><MODEM:QPSK500></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:THRBX2></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:FSK-HELL></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:PSK125R></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:THRBX4></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:FSK-H105></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:PSK250R></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:WWV></td> </tr> <tr> <td style="vertical-align: top;"><MODEM:HELL80></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:PSK500R></td> <td style="vertical-align: top;"><br> </td> <td style="vertical-align: top;"><MODEM:ANALYSIS></td> </tr> </tbody> </table> <br> <br> Local references are specified during the program configuration and can be changed during program operation.<br> <br> Remote references are all part of the qso log field definitions and are routinely changed from contact to contact.<br> <br> Global references are for items like Greenwich Mean Time.<br> <br> The macros.mdf file can be edited with any ascii text editor such as kedit, gedit, geany, nano etc. But it is much easier to use the built-in macro editor provided in the program.<br> <br> Right click on any macro key (or the alternate set) and a macro editing dialog opens with the current copy of that macro and its label. This looks very similar to the DigiPan macro editor at the urging of Skip Teller, KH6TY.<br> <br> <div style="text-align: center;"><img style="width: 778px; height: 219px;" alt="" src="images/macro-editor.png"><br> </div> <br> The Text box is a mini-editor with a very limited set of control functions. You can mark, bound and select text for deletion (ctrl-X), copy (ctrl-C), and paste (ctrl-V). Marked text can also be deleted with the delete or the backspace keys. Marked text modification can also be invoked by using the mouse right click after highlighting. <br><br>The macro reference in the pick list can be transfered to the current editing cursor location. Highlight the desired macro reference and then press the double << arrow key for each occurance of the reference to be put into the macro text. You can change the label name but any more than 8 characters may exceed the width of the button for the default sized main dialog.<br> <br> The <TIMER:NN> and <IDLE:NN> macro tags should have the NN replaced with the time interval in seconds.<br> <br> <div style="margin-left: 40px;"><TX><IDLE:5>CQ CQ de <MYCALL> <MYCALL> k<RX><TIMER:20><br> </div> <ul> <li>will enable the PTT</li><li>cause 5 seconds of idle signal</li><li>send the CQ CQ de W1HKJ W1HKJ k</li> <li>disable PTT</li> <li>and count down 20 seconds before repeating the macro</li> <li>after sending the text the count down timer button (upper right hand corner of main dialog) will display the current timer value in seconds. Press this button to disable the timer. </li><li>the timer be disabled if the Escape key is pressed, the T/R is pressed, and macro key is pressed, or if a callsign is copied from the Rx text area to the callsign logbook entry.</li><li>the time will be disabled if any mouse activity occurs in the waterfall control.</li> </ul> The label associated with each macro key can be individually annotated with a symbol. Here are the symbols that are recognized by the button label drawing routine:<br> <div style="text-align: center;"><img style="width: 300px; height: 320px;" alt="" src="images/symbols.gif"><br> </div> <br> <p>The @ sign may also be followed by the following optional "formatting" characters, in this order:</p> <ul> <li>'#' forces square scaling, rather than distortion to the widget's shape.</li> <li>+[1-9] or -[1-9] tweaks the scaling a little bigger or smaller.</li> <li>'$' flips the symbol horizontaly, '%' flips it verticaly.</li> <li>[0-9] - rotates by a multiple of 45 degrees. '5' and '6' do no rotation while the others point in the direction of that key on a numeric keypad. '0', followed by four more digits rotates the symbol by that amount in degrees.</li> </ul> <p>Thus, to show a very large arrow pointing downward you would use the label string "@+92->". </p> Here are my macro buttons suitably annotated:<br> <br> <div style="text-align: center;"><img style="width: 789px; height: 23px;" alt="" src="images/macrobuttons.png"><br> </div> <br>There are 4 sets of 12 macro functions. You can move between the 4 sets using the keyboard and the mouse.<br><ol><li>Left click on the "1" button to move to set #2. Right click on the "1" button to move to set #4.</li><li>Move the mouse to anywhere on the macro buttons. Use the scroll wheel to move forward & backward through the macro sets</li><li>Press the Alt-1, Alt-2, Alt-3 or Alt-4 to immediately change to that macro set.</li></ol> <ul> <li> The label for CQ is "CQ @>|", denoting that both <TX> and <RX> are present in the macro text. </li> </ul> <ul> <li> The label for QSO is "QSO @>>", denoting that only <TX> is present in the macro text. </li> </ul> <ul> <li> The label for KN is "KN @||", denoting that only <RX> is present in the macro text. </li> </ul> <br> You could use any label that is symbolic to the function required. Refer to the <a href="http://www.fltk.org/doc-1.1/common.html#labels">FLTK web site</a> for a full list of label types.<br> <br> If you modify the macros and do not save them ("Files/Save Macros" on the main window) fldigi will prompt you to save the macros when you exit the program if you have the <a href="ConfigUI.html">"Nag me"</a> option selected.<br><br>The <EXEC>...</EXEC> macro tag provides a way to create external shell scripts and programs that can interact with fldigi. See <a href="execmacro.html">Exec Macro</a> to learn more about the <EXEC> macro tag.<br> <h2>Using contest macro tags</h2> Refer to <a href="Contest-How-To.html">Contest-How-To</a><br> <br><div style="text-align: center;"><a style="font-weight: bold;" href="index.html">Contents</a><br></div> <br> </div> </div> </body></html>