@@ -37,6 +37,8 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
3737 , mRightMouseButtonInput( new Qt3DInput::QActionInput() )
3838 , mShiftAction( new Qt3DInput::QAction() )
3939 , mShiftInput( new Qt3DInput::QActionInput() )
40+ , mCtrlAction( new Qt3DInput::QAction() )
41+ , mCtrlInput( new Qt3DInput::QActionInput() )
4042 , mWheelAxis( new Qt3DInput::QAxis() )
4143 , mMouseWheelInput( new Qt3DInput::QAnalogAxisInput() )
4244 , mTxAxis( new Qt3DInput::QAxis() )
@@ -82,6 +84,11 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
8284 mShiftInput ->setSourceDevice ( mKeyboardDevice );
8385 mShiftAction ->addInput ( mShiftInput );
8486
87+ // Keyboard ctrl
88+ mCtrlInput ->setButtons ( QVector<int >() << Qt::Key_Control );
89+ mCtrlInput ->setSourceDevice ( mKeyboardDevice );
90+ mCtrlAction ->addInput ( mCtrlInput );
91+
8592 // Keyboard Pos Tx
8693 mKeyboardTxPosInput ->setButtons ( QVector<int >() << Qt::Key_Right );
8794 mKeyboardTxPosInput ->setScale ( 1 .0f );
@@ -110,6 +117,7 @@ QgsCameraController::QgsCameraController( Qt3DCore::QNode *parent )
110117 mLogicalDevice ->addAction ( mMiddleMouseButtonAction );
111118 mLogicalDevice ->addAction ( mRightMouseButtonAction );
112119 mLogicalDevice ->addAction ( mShiftAction );
120+ mLogicalDevice ->addAction ( mCtrlAction );
113121 mLogicalDevice ->addAxis ( mWheelAxis );
114122 mLogicalDevice ->addAxis ( mTxAxis );
115123 mLogicalDevice ->addAxis ( mTyAxis );
@@ -221,7 +229,8 @@ void QgsCameraController::frameTriggered( float dt )
221229 int dy = mMousePos .y () - mLastMousePos .y ();
222230 mLastMousePos = mMousePos ;
223231
224- mCameraData .dist -= mCameraData .dist * mWheelAxis ->value () * 10 * dt;
232+ double scaling = ( mCtrlAction ->isActive () ? 0.1 : 1.0 );
233+ mCameraData .dist -= scaling * mCameraData .dist * mWheelAxis ->value () * 10 * dt;
225234
226235 if ( mRightMouseButtonAction ->isActive () )
227236 {
0 commit comments