Некоторые пользователи MC не знают, что в Midnigth Commander с некоторых пор работает выделение текста с помощью Shift+Стрелки. Такое выделение работает во всех эмуляторах терминалов, за исключением Konsole. Объясняю, как настроить этот естественный метод выделения, чтоб не мучать себя F3.
Разобъём настройку на два этапа.
Первый этап простой. Называется "Настриваем работу Shift+Left и Shift+Right".
Тут всё просто. Заходим в настройки профиля «Настройка -> Настроить профиль -> Клавиатура -> Именить». Удаляем строки:
Left+Shift-AppScreen | не помню что, уже удалил
Right+Shift-AppScreen | не помню что, уже удалил
Добавляем строки:
Left+Shift | \EO2D
Right+Shift | \EO2C
Сохраняем, и сразу же начнет работать выделение в MC-редакторе по Shift+Влево и Shift+Вправо.
Второй этап сложнее. Называется "Как заставить работать Shift+Up и Shift+Down".
Рецепт для Debian, и видимо подойдет для Ubuntu.
Вначале заходим в настройки профиля «Настройка -> Настроить профиль -> Клавиатура -> Именить». Удаляем строки:
Up+Shift-AppScreen | ScrollLineUp
Down+Shift-AppScreen | ScrollLineDown
Далее с удивлением узнаем, что комбинации клавиш Shift+Up, Shift+Down, Shift+PgUp, Shift+PgDn захардкорены прямо в коде Kondole, поэтому ничего не остается, как править исходники.
Вначале получаем и компилируем исходники Konsole, чтобы удостовериться, что у нас действительно работает компиляция. Весь процесс по шагам написан в этой статье:
http://webhamster.ru/site/page/index/articles/comp/131
Затем находим в исходниках файл:
./kdebase-4.4.5/apps/konsole/src/TerminalDisplay.cpp
В нем находим метод keyPressEvent, и комментируем следующий блок:
// 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;
}
}
Компилируем, устанавливаем полученный пакет, и в Konsole начинают работать Shift+Up и Shift+Down.
В исходниках Konsole присутствует бардак в идеологии, комбинации клавиш для скроллинга вверх и вниз постоянно обрабатываются отдельным кодом, вместо того, чтобы просто обработать событие по клавишам, как оно настроенно в рабочем профиле Konsole. Отсюда и такой нетрадиционный способ исправления.
Любителям английского языка рекомендую активировать в багтрекере KDE4 действия по устранению этого безобразия.