diff --git a/doc/user_guide/en/tutorial-example1.adoc b/doc/user_guide/en/tutorial-example1.adoc
index 03623d046..280b69462 100644
--- a/doc/user_guide/en/tutorial-example1.adoc
+++ b/doc/user_guide/en/tutorial-example1.adoc
@@ -84,6 +84,8 @@ call CQ again.)
- Click somewhere on the waterfall to set Rx frequency (green marker
on waterfall scale).
+- Shift-click on the waterfall to set Tx frequency (red marker).
+
- Ctrl-click on the waterfall to set both Rx and Tx frequencies.
- Double-click on a signal in the waterfall to set Rx frequency and
diff --git a/mouse_commands.txt b/mouse_commands.txt
index 929399a2b..0cf030695 100644
--- a/mouse_commands.txt
+++ b/mouse_commands.txt
@@ -5,9 +5,11 @@
Waterfall: |
- Set Rx frequency.
- Double-click to set Rx frequency and decode there.
- Ctrl-click to set Rx and Tx frequencies and decode.
+ | Click to set the Rx frequency.
+ Shift-click to set Tx frequency.
+ Ctrl-click to set Rx and Tx frequencies.
+ Double-clicks decode at the resulting Rx frequency.
+ If Lock Tx=Rx is checked all actions set Tx/Rx.
|
diff --git a/plotter.cpp b/plotter.cpp
index 8f5d12b2a..264c9b748 100644
--- a/plotter.cpp
+++ b/plotter.cpp
@@ -520,11 +520,20 @@ void CPlotter::mousePressEvent(QMouseEvent *event) //mousePressEvent
if(x<0) x=0;
if(x>m_Size.width()) x=m_Size.width();
bool ctrl = (event->modifiers() & Qt::ControlModifier);
- int freq = int(FreqfromX(x)+0.5);
- int tx_freq = m_txFreq;
- if (ctrl or m_lockTxFreq) tx_freq = freq;
+ bool shift = (event->modifiers() & Qt::ShiftModifier);
+ int newFreq = int(FreqfromX(x)+0.5);
+ int oldTxFreq = m_txFreq;
+ int oldRxFreq = m_rxFreq;
- emit setFreq1 (freq, tx_freq);
+ if (ctrl or m_lockTxFreq) {
+ emit setFreq1 (newFreq, newFreq);
+ }
+ else if (shift) {
+ emit setFreq1 (oldRxFreq, newFreq);
+ }
+ else {
+ emit setFreq1(newFreq,oldTxFreq);
+ }
int n=1;
if(ctrl) n+=100;