From 8151ae1b657d714caea9160a4f16c99ea14d16be Mon Sep 17 00:00:00 2001 From: epernod Date: Tue, 18 Nov 2025 08:43:36 +0100 Subject: [PATCH] [src] Fix key event behavior to be able to hold key to move faster --- .../controller/BeamAdapterActionController.h | 2 ++ .../controller/BeamAdapterActionController.inl | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/BeamAdapter/component/controller/BeamAdapterActionController.h b/src/BeamAdapter/component/controller/BeamAdapterActionController.h index d484da9c9..9a98263f6 100644 --- a/src/BeamAdapter/component/controller/BeamAdapterActionController.h +++ b/src/BeamAdapter/component/controller/BeamAdapterActionController.h @@ -59,6 +59,8 @@ class BeamAdapterActionController : public sofa::component::controller::Mechanic /// Method to control the Beam using keyboard and save the actions in @sa d_actions void onKeyPressedEvent(core::objectmodel::KeypressedEvent* kev) override; + void onKeyReleasedEvent(core::objectmodel::KeyreleasedEvent* kev) override; + /// Unused metho for mouse event void onMouseEvent(core::objectmodel::MouseEvent* ev) override { SOFA_UNUSED(ev);} diff --git a/src/BeamAdapter/component/controller/BeamAdapterActionController.inl b/src/BeamAdapter/component/controller/BeamAdapterActionController.inl index 2acdf41be..16c4249eb 100644 --- a/src/BeamAdapter/component/controller/BeamAdapterActionController.inl +++ b/src/BeamAdapter/component/controller/BeamAdapterActionController.inl @@ -23,6 +23,7 @@ #include #include #include +#include namespace beamadapter { @@ -69,10 +70,11 @@ void BeamAdapterActionController::onKeyPressedEvent(core::objectmodel { if (!d_writeMode.getValue()) return; - + /// Control keys for interventonal Radiology simulations: switch (kev->getKey()) { + case 'E': m_currAction = BeamAdapterAction::NO_ACTION; m_exportActions = !m_exportActions; @@ -108,6 +110,16 @@ void BeamAdapterActionController::onKeyPressedEvent(core::objectmodel } +template +void BeamAdapterActionController::onKeyReleasedEvent(core::objectmodel::KeyreleasedEvent* kev) +{ + if (!d_writeMode.getValue()) + return; + + m_currAction = BeamAdapterAction::NO_ACTION; +} + + template void BeamAdapterActionController::onBeginAnimationStep(const double /*dt*/) { @@ -133,7 +145,6 @@ void BeamAdapterActionController::onBeginAnimationStep(const double / } m_lastAction = m_currAction; - m_currAction = BeamAdapterAction::NO_ACTION; } else {