Ok here is version 2 (attached).  You should be able to spin the Secondary Radio dial while the PSE QSY is sending.  <br><br>Save these two files to your /scripts directory (File | Explore | /scripts directory), then assign to function keys using Tools | Scripts Manager.<br>

<br>PseQSY.wts (assign to F12, perhaps, or use #FREQS in the Alt-C messages):<br><br><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">-- PSEQSY - Send PSE QSY message to the frequency of the Secondary Radio,</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">--          to the nearest 100 Hz, 500 Hz, or 1 kHz.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-- Assign to:   F8, F9, F10, or F12 or user choice.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">-- </span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-- Argument:  none</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-- Time-stamp: "14 September 2010 09:52 UTC"</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">--</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-- Written by N6TV</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">   wtKeyer:Play("-PSE QSY+ #FREQS(0)")   -- Round to nearest whole kHz</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">-- wtKeyer:Play("-PSE QSY+ #FREQS(5)")   -- Round to nearest 500 Hz</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">-- wtKeyer:Play("-PSE QSY+ #FREQS(1)")   -- Round to nearest 100 Hz like $FREQnn msgs variables</span><br style="font-family: courier new,monospace;">

</div><br style="font-family: courier new,monospace;"><div style="margin-left: 40px;"><span style="font-family: courier new,monospace;">-- No further keystroke processing.</span><br style="font-family: courier new,monospace;">

<span style="font-family: courier new,monospace;">return -1</span><br style="font-family: courier new,monospace;"></div><br>FreqS.wts (assign to F10, perhaps, to resend <i>only</i> the QSY frequency):<br><br><div style="margin-left: 40px; font-family: courier new,monospace;">

-- FreqS - Send the frequency of the Secondary Radio, to the nearest 100 Hz, 500 Hz, or 1 kHz.<br>--<br>-- Assign to:   F8, F9, F10, or F12 or user choice, to send QSY FREQ only, if asked for repeat.<br>-- <br>-- Argument:  1, 5, or 0, meaning send the QSY frequency to the nearest 0.1, 0.5, or whole kHz<br>

--            Default:  1 kHz (no fractions).  Fuzzing rounding used (>=0.6 rounds up to next kHz).<br>--<br>-- Time-stamp: "14 September 2010 09:51 UTC"<br>--<br>-- Can be called from CW msgs or another script e.g. for 14020.6<br>

--    wtKeyer:Play( "PSE QSY #FREQS(0)"    )  -- To nearest kHz "14021"<br>--    wtKeyer:Play( "PSE QSY #FREQS(5)" )  -- To nearest 500 Hz "14025R5"<br>--    wtKeyer:Play( "PSE QSY #FREQS(1)" )  -- To nearest 100 Hz "14025R1"<br>

--<br>-- Written by N6TV<br><br>-- Windows MessageBox constant<br>MB_ICONINFORMATION = 0x00000040<br><br>local QSYfreq = ""<br>local freqFrac = ""<br>local argErr = false<br><br>-- Get the VFO A frequency of the secondary radio<br>

local freqS = wtRadioSecondary:GetFreq()<br><br>-- If VFO frequency obtained OK<br>if freqS ~= nil and freqS ~= 0 then<br>   -- Split the frequency into the whole kHz and the fractional kHz, if any.<br>   -- Pattern extracts any string of digits, followed by 0 or 1 decimal point character,<br>

   -- followed by zero or one digit representing fractional kHz (e.g. 3830.8)<br>   _, _, QSYfreq, freqFrac = string.find(freqS, "([%d]+)%.?([%d]?)")<br><br>   -- If no fractional kHz is to be sent, round up if fractional part >= 0.6 kHz<br>

   if wtArg == nil or wtArg == "0" or wtArg == 0 then<br>      if freqFrac >= "6" then<br>     QSYfreq = QSYfreq + 1<br>      end<br>   elseif wtArg == "5" or wtArg == 5 then<br>      -- Send "R5" only if freq ends with .4, .5, or .6, otherwise round up or down<br>

      if freqFrac >= "7" then<br>     QSYfreq = QSYfreq + 1<br>      elseif freqFrac >= "4" then<br>     QSYfreq = QSYfreq .. "R5"<br>      end<br>   elseif wtArg == "1" or wtArg == 1 then<br>

      -- Send Rn just like the $FREQnn message variables do<br>      if freqFrac >= "1" and freqFrac <= "9" then<br>         QSYfreq = QSYfreq .. "R" .. freqFrac<br>      end<br>   else<br>

      argErr = true<br>   end<br>end<br><br>-- Play the secondary radio's frequency, 4 WPM slower than current CW keyer speed.<br>wtKeyer:Play("--" .. QSYfreq .. "++ ?")<br><br>-- Finally, let the user know about any unrecognized arguments passed and ignored.<br>

if argErr then<br>   wtApp:MessageBox("Argument " .. wtArg .. " passed to LUA script " .. <br>     wtCurrentScript .. " ignored.  " ..<br>     "Use 1 for 100 Hz, 5 for 500 Hz, or no argument for 1 kHz rounding.",<br>

      MB_ICONINFORMATION, wtCurrentScript)<br>end<br><br>-- Reset global in case next call specifies no argument<br>wtArg = nil<br><br>-- No further keystroke processing<br>return -1<br></div><br>Please test and report if this works to your liking.  If you don't like the trailing question mark being sent, you can delete it.  Unfortunately the "?" can't be placed after the call to #FREQS(0) as Laurent already mentioned.<br>

<br>73,<br>Bob, N6TV<br>