From a1c7d0b5f8b0f2fb588f255ddf5076c2f570bdd4 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 18 May 2016 23:12:48 -0400 Subject: [PATCH] Universal [ nudge ] keys --- src/AppFrame.cpp | 48 +++++++++++++++++++++++++++++++++++++----------- src/AppFrame.h | 3 +++ 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 82c6f0e..3057311 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -1810,6 +1810,20 @@ FrequencyDialog::FrequencyDialogTarget AppFrame::getFrequencyDialogTarget() { return target; } +void AppFrame::gkNudgeLeft(DemodulatorInstance *demod, int snap) { + if (demod) { + demod->setFrequency(demod->getFrequency()-snap); + demod->updateLabel(demod->getFrequency()); + } +} + +void AppFrame::gkNudgeRight(DemodulatorInstance *demod, int snap) { + if (demod) { + demod->setFrequency(demod->getFrequency()+snap); + demod->updateLabel(demod->getFrequency()); + } +} + int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) { if (!this->IsActive()) { return -1; @@ -1824,6 +1838,18 @@ int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) { } } + #ifdef wxHAS_RAW_KEY_CODES + switch (event.GetRawKeyCode()) { + case 30: + gkNudgeRight(lastDemod, snap); + return 1; + case 33: + gkNudgeLeft(lastDemod, snap); + return 1; + } + #endif + + switch (event.GetKeyCode()) { case WXK_UP: case WXK_NUMPAD_UP: @@ -1838,19 +1864,11 @@ int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) { case 'V': return 1; case ']': - if (lastDemod) { - lastDemod->setFrequency(lastDemod->getFrequency()+snap); - lastDemod->updateLabel(lastDemod->getFrequency()); - } + gkNudgeRight(lastDemod, snap); return 1; - break; case '[': - if (lastDemod) { - lastDemod->setFrequency(lastDemod->getFrequency()-snap); - lastDemod->updateLabel(lastDemod->getFrequency()); - } + gkNudgeLeft(lastDemod, snap); return 1; - break; case 'A': case 'F': case 'L': @@ -1885,7 +1903,6 @@ int AppFrame::OnGlobalKeyDown(wxKeyEvent &event) { wxGetApp().getDemodMgr().setActiveDemodulator(demod, false); } return 1; - break; default: break; } @@ -1906,6 +1923,15 @@ int AppFrame::OnGlobalKeyUp(wxKeyEvent &event) { DemodulatorInstance *lastDemod = wxGetApp().getDemodMgr().getLastActiveDemodulator(); +#ifdef wxHAS_RAW_KEY_CODES + switch (event.GetRawKeyCode()) { + case 30: + return 1; + case 33: + return 1; + } +#endif + switch (event.GetKeyCode()) { case WXK_SPACE: if (!demodTuner->getMouseTracker()->mouseInView()) { diff --git a/src/AppFrame.h b/src/AppFrame.h index 5b89b6f..6abd443 100644 --- a/src/AppFrame.h +++ b/src/AppFrame.h @@ -84,6 +84,9 @@ public: void updateModemProperties(ModemArgInfoList args); void setMainWaterfallFFTSize(int fftSize); + void gkNudgeLeft(DemodulatorInstance *demod, int snap); + void gkNudgeRight(DemodulatorInstance *demod, int snap); + int OnGlobalKeyDown(wxKeyEvent &event); int OnGlobalKeyUp(wxKeyEvent &event);