A thread on the Elecraft Mailing List in March of 2013 was discussing the use of self-modifying macros to chain multiple functions on a single button.
The examples given were for operating split (cycling though various split values) and for modifying the TX EQ for various applications.
The original idea creator, Mark Goldberg, added a few more decent examples.
If you are going to modify these for your own needs, you would benefit from having the K3 & KX3 programming manual at hand. Version E11 from page 6 covers some useful ideas.
Update 2015-01-08: Frank, KG6EYC, has found
a bug in the sub-rx disabling code and has provided updated, tested
macros for the split loop. This involved adding
SB0; to the
NORM macros. I haven't tested on the KX3 yet, but Frank says it
works well on his KRX3 equipped K3.
Accordingly the sample macros were (for the KX3):
TX EQ Settings
1 RAGCHEW TE+06+06+00-06+00+04+08+12;MN110;SWT27;DELAY;SWH18;DELAY;MN255; 2 DX TE+00+00+00-06+00+04+08+12;MN110;SWT20;DELAY;SWH18;DELAY;MN255; 3 VERYDX TE-06-06+00-06+00+04+08+12;MN110;SWT28;DELAY;SWH18;DELAY;MN255; 4 FLAT TE+00+00+00+00+00+00+00+00;MN110;SWT19;DELAY;SWH18;DELAY;MN255;
1 RAGCHEW TE+06+06+00+06+00+04+08+12;MN110;SWT12;SWH45;MN255; 2 DX TE+00+00+00-06+00+04+08+12;MN110;SWT13;SWH45;MN255; 3 VERYDX TE-06-06+00-06+00+04+08+12;MN110;SWT24;SWH45;MN255; 4 FLAT TE+00+00+00+00+00+00+00+00;MN110;SWT11;SWH45;MN255;
5 SPLIT+5 SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH26;MN255; 6 SPLIT+10 SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH26;MN255; 7 SPLIT+15 SWT25;SWT25;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH26;MN255; 8 NORM LK0;FR0;SB0;MN110;SWT21;SWH26;MN255;
5 SPLIT+5 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH47;MN255; 6 SPLIT+10 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT33;SWH47;MN255; 7 SPLIT+15 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;UPB7;UPB7;RT0;XT0;BW$0280;MN110;SWT34;SWH47;MN255; 8 NORM LK0;FR0;SB0;MN110;SWT27;SWH47;MN255;
How do these work?
These RELY on being programmed into the specific memory / macro slots
shown above. That is because after setting the transmit EQ
TE.....;) the remainder of the macro is reprogramming the macro
button to be the following (or first) macro.
A quick summary of button codes useful in these examples:
Both buttons are accessed with either a hold 'H' action or a tap 'T' so the appropriate macro codes for the PFx buttons are, for example:
The general flow of each of the chained macros is:
- Set radio configuration desired.
- Enter macro-set mode.
- Select the next macro number to assign to PFx
- Push and hold PFx.
Here it is again - with explanations for each section. If we were to re-write this in slightly more abstract form it would be (note this isn't something the radio understands):
1 RAGCHEW TE+06+06+00-06+00+04+08+12;MN110;SWT27;DELAY;SWH18;DELAY;MN255;
: Set the Transmit Eq parameters.
: Select the Macro Menu funciton.
SWT27; (KX3) or
: Tap numeric keypad '2' (program macro slot 2 into PFx specified below.). This is the effective 'chaining' of macros effect. Slot 2 will program 3, 3 will setup 4 and 4 will cycle back to 1.
DELAY; : Waste some time so you can see the macro name when
executing - there is debate over the need for this. I don't do it on
SWH18; (KX3) or
: Push and hold
PF1 - putting this on the
: See above.
: Exit menu mode.
The rest of these should now be natural and obvious.
Admittedly these are the examples from the mailing list without much modification but I wanted to document my experiences here in case someone else wants to try this and really understand what is going on.
The split macros are a bit more complex; let's look deeper:
Note that I don't do CW, so I'm using rather large splits. The
programming manual on page 8 shows the values for
UP[B]x; and you can select them from this table:
| n offsets | |---|-------| | 0 | 1 Hz | | 1 | 10 Hz | | 2 | 20 Hz | | 3 | 50 Hz | | 4 | 1 kHz | | 5 | 2 kHz | | 6 | 3 kHz | | 7 | 5 kHz | | 8 |100 Hz | | 9 |200 Hz |
Example command for the K3:
5 SPLIT+5 SWT13;SWT13;FT0;SB0;FT1;SB1;LK1;UPB7;RT0;XT0;BW$0280;MN110;SWT29;SWH47;MN255;
A>B. Twice. This sets \(VFO_B\) to be the same as \(VFO_A\) in all regards.
: Select transmit on \(VFO_A\).
: Turn OFF SUB / Dual Watch.
: Select transmit on \(VFO_B\).
: Turn ON Sub-RX / Dual-watch.
: Lock \(VFO_A\). (Protect listening frequency from accidental change.)
: Increment \(VFO_B\) by 5 kHZ (see table above).
: RIT off.
: XIT off.
: Set \(VFO_B\) bandwidth to 2800 Hz. (Modify to your ear /
liking). Since \(VFO_B\) is where you will TX and listening can be
useful at times, I set this to 2.8 kHz. If you like, you can set
this to the 1.8 kHz narrow SSB filter if you have it installed.
: Macro menu function start. (Begin chaining the next one).
: Tap numeric button 6. (The next macro to execute on PF2 press.)
: Hold PF2 to assign macro to PF2.
: MN255 menu mode.
Initial Button Setup
Once you load these macros, you have to assign PF1 and PF2 to a macro from their loop (respectively). This is done with the following sequence:
CONFIG- Hold until in the configuration menu.
VFO B- Turn \(VFO_B\) until you see
MACRO nin the \(VFO_B\) display and
(1)- Press keypad
1to bring up macro 1 - which is in the
PF1- Press and hold
PF1to assign the initial macro to the PF key.
Repeat the above, assigning Macro 5 to
PF2 (or any one of the PF2 loop macros).
There are endless variants on this but I've been very happy with
these. To be honest I don't use the TX ones much and might put the
'norm' setting without chaining onto
PF1 and keep the split
PF2. Up to you to play around and decide what you
Thanks to Wayne Burdick (N6KR), Mark Goldberg, and Jim Sheldon (W0EB) in the original thread.
2016-05-17 : Also thanks to @themonkeybutler for pointing out a typo.