diff -r -u kdebase-4.1.2/apps/konsole/src/TerminalDisplay.cpp kdebase-4.1.2.new/apps/konsole/src/TerminalDisplay.cpp --- kdebase-4.1.2/apps/konsole/src/TerminalDisplay.cpp 2008-06-03 13:34:24.000000000 +0400 +++ kdebase-4.1.2.new/apps/konsole/src/TerminalDisplay.cpp 2008-10-23 03:46:37.000000000 +0400 @@ -2373,44 +2373,6 @@ void TerminalDisplay::keyPressEvent( QKeyEvent* event ) { - bool emitKeyPressSignal = true; - - // Keyboard-based navigation - if ( event->modifiers() == Qt::ShiftModifier ) - { - bool update = true; - - if ( event->key() == Qt::Key_PageUp ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , -1 ); - } - else if ( event->key() == Qt::Key_PageDown ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollPages , 1 ); - } - else if ( event->key() == Qt::Key_Up ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , -1 ); - } - else if ( event->key() == Qt::Key_Down ) - { - _screenWindow->scrollBy( ScreenWindow::ScrollLines , 1 ); - } - else - update = false; - - if ( update ) - { - _screenWindow->setTrackOutput( _screenWindow->atEndOfOutput() ); - - updateLineProperties(); - updateImage(); - - // do not send key press to terminal - emitKeyPressSignal = false; - } - } - _actSel=0; // Key stroke implies a screen update, so TerminalDisplay won't // know where the current selection is. @@ -2423,8 +2385,7 @@ _cursorBlinking = false; } - if ( emitKeyPressSignal ) - emit keyPressedSignal(event); + emit keyPressedSignal(event); event->accept(); } @@ -2798,6 +2759,19 @@ setVTFont(font()); // Trigger an update. } +void TerminalDisplay::scrolled() +{ + _screenWindow->setTrackOutput( _screenWindow->atEndOfOutput() ); + updateLineProperties(); + updateImage(); +} + +void TerminalDisplay::scrollLineUp() { _screenWindow->scrollBy( ScreenWindow::ScrollLines, -1 ); scrolled(); } +void TerminalDisplay::scrollLineDown() { _screenWindow->scrollBy( ScreenWindow::ScrollLines, 1 ); scrolled(); } +void TerminalDisplay::scrollPageUp() { _screenWindow->scrollBy( ScreenWindow::ScrollPages, -1 ); scrolled(); } +void TerminalDisplay::scrollPageDown() { _screenWindow->scrollBy( ScreenWindow::ScrollPages, 1 ); scrolled(); } + + AutoScrollHandler::AutoScrollHandler(QWidget* parent) : QObject(parent) , _timerId(0) diff -r -u kdebase-4.1.2/apps/konsole/src/TerminalDisplay.h kdebase-4.1.2.new/apps/konsole/src/TerminalDisplay.h --- kdebase-4.1.2/apps/konsole/src/TerminalDisplay.h 2008-05-21 12:32:54.000000000 +0400 +++ kdebase-4.1.2.new/apps/konsole/src/TerminalDisplay.h 2008-10-23 03:41:03.000000000 +0400 @@ -481,6 +481,11 @@ */ void setForegroundColor(const QColor& color); + void scrollLineUp(); + void scrollLineDown(); + void scrollPageUp(); + void scrollPageDown(); + signals: /** @@ -657,6 +662,8 @@ // redraws the cursor void updateCursor(); + + void scrolled(); // the window onto the terminal screen which this display // is currently showing. diff -r -u kdebase-4.1.2/apps/konsole/src/Vt102Emulation.cpp kdebase-4.1.2.new/apps/konsole/src/Vt102Emulation.cpp --- kdebase-4.1.2/apps/konsole/src/Vt102Emulation.cpp 2008-06-18 16:41:21.000000000 +0400 +++ kdebase-4.1.2.new/apps/konsole/src/Vt102Emulation.cpp 2008-10-23 03:45:52.000000000 +0400 @@ -942,6 +942,7 @@ } } + void Vt102Emulation::sendKeyEvent( QKeyEvent* event ) { Qt::KeyboardModifiers modifiers = event->modifiers(); @@ -969,7 +970,7 @@ event->key() , modifiers, states ); - + // send result to terminal QByteArray textToSend; @@ -1001,6 +1002,31 @@ textToSend += _codec->fromUnicode(event->text()); sendData( textToSend.constData() , textToSend.length() ); + + if ( entry.command() != KeyboardTranslator::NoCommand && sender() ) { + switch ( entry.command() ) { + + case KeyboardTranslator::ScrollLineUpCommand: + QMetaObject::invokeMethod( sender(), "scrollLineUp" ); + break; + + case KeyboardTranslator::ScrollLineDownCommand: + QMetaObject::invokeMethod( sender(), "scrollLineDown" ); + break; + + case KeyboardTranslator::ScrollPageUpCommand: + QMetaObject::invokeMethod( sender(), "scrollPageUp" ); + break; + + case KeyboardTranslator::ScrollPageDownCommand: + QMetaObject::invokeMethod( sender(), "scrollPageDown" ); + break; + + default: + break; + + } + } } else {