LINUX.ORG.RU

[Пользователям MC] Как заставить работать выделение по Shift+Стрелки в Konsole KDE4


1

1


Некоторые пользователи 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 действия по устранению этого безобразия.


Ответ на: комментарий от Slavaz

патч сырой, сейчас попробую его облагородить...

Slavaz ★★★★★
()

Всё, получилось облагородить.
https://bugzilla.redhat.com/show_bug.cgi?id=673628

Сам патч:
https://bugzilla.redhat.com/attachment.cgi?id=475902

Скачиваем исходники, скачиваем патч
wget -O shift-arrows.patch 'https://bugzilla.redhat.com/attachment.cgi?id=475902'

и кладём его в корень распакованных исходников. Потом выполняем:
patch -p1 <shift-arrows.patch

далее компилим, устанавливаем в систему и запускаем konsole.
Всё. хоткеи править не надо - там будет ужё всё исправлено, чтобы shift+стрелки заработали.

xintrea, спасибо за shift+стрелки в моём preffered терминале :)
Лень - это такая фиговая штука.. пока не пнут - не полетишь...


P.S. патч для KDE-4.5.5 Обладателям других версий вероятно придётся подточить чуток напильником, если не повезёт...

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Отлично. Завтра посмотрю, седня ничо не соображаю.

xintrea
() автор топика
Ответ на: комментарий от Slavaz

Да, таки дай ссылку на bugs.kde.org с облагороженым патчем.

xintrea
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.