diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp index 7810fe40c4ee94338a4b41d26e313977bbb8f138..0abcd118f9316177f24564bee0b55974184be57e 100644 --- a/src/TerminalDisplay.cpp +++ b/src/TerminalDisplay.cpp @@ -2257,6 +2257,9 @@ void TerminalDisplay::pasteSelection() void TerminalDisplay::keyPressEvent( QKeyEvent* event ) { + bool emitKeyPressSignal = true; + + // XonXoff flow control if (event->modifiers() & Qt::ControlModifier) { if ( event->key() == Qt::Key_S ) @@ -2265,6 +2268,7 @@ void TerminalDisplay::keyPressEvent( QKeyEvent* event ) emit flowControlKeyPressed(false /*output enabled*/); } + // Keyboard-based navigation if ( event->modifiers() == Qt::ShiftModifier ) { bool update = true; @@ -2291,9 +2295,12 @@ void TerminalDisplay::keyPressEvent( QKeyEvent* event ) if ( update ) { _screenWindow->setTrackOutput( _screenWindow->atEndOfOutput() ); - + updateLineProperties(); updateImage(); + + // do not send key press to terminal + emitKeyPressSignal = false; } } @@ -2309,7 +2316,8 @@ void TerminalDisplay::keyPressEvent( QKeyEvent* event ) _cursorBlinking = false; } - emit keyPressedSignal(event); + if ( emitKeyPressSignal ) + emit keyPressedSignal(event); event->accept(); }