настройка горячих клавиш mc в gnome-termunal
Долго мучился с настройкой горячих клавиш встроенного редактора mcedit для выделения и перемещения по тексту (Shift и Ctrl + стрелки, Home, End, PgUp, PgDown) в двух эмуляторах - konsole и gnome-terminal. Для konsole здесь в форуме рецепты есть, а для gnome-terminal - вроде бы, нету. К сожалению, обработка нужных кодов «захардкордена», т.е нужные изменения можно внести только правкой исходников и пересборкой библиотеки vte, на которую опирается gnome-terminal (сам gnome-terminal править не нужно). Предлагаю свой патч и инструкции по применению.
Мой патч успешно работает в системе:
Scientific Linux 6.1, KDE 4.3.4, Gnome-terminal 2.31.3 <- vte 0.25.1 . Возможно, для Вашей системы патч следует подправить.
Экспериментально было выяснено, что для нормальной работы mcedit нужно обеспечить выдачу следующих esc-последовательностей:
Home End PgUp PgDwn Up Down
<> [OH ([1~) [OF ([4~) [5~ [6~ [A [B
Alt +<> [1;3H [1;3F [5;3~ [6;3~ [1;3A [1;3B
Shiht+<> [1;2H [1;2F [5;2~ [6;2~ [1;2A [1;2B
Ctrl +<> [1;5H [1;5F [5;5~ [6;5~ [1;5A [1;5B
Ctrl+Shiht+<> [1;6H [1;6F - - - -
Ctrl+ Alt+<> [1;7H [1;7F - - - -
Shiht+ Alt+<> [1;4H [1;4F [5;4~ [6;4~ [1;4A [1;4B
Ctrl+Shiht+Alt+<>[1;8H [1;8F - - - -
Сочетания двух функциональных клавиш получить не удалось. У меня Ctrl+Shift переключают раскладки. В моей версии gnome-terminal выделение в редакторе по Shift+стрелки работало правильно, скроллинг истории команд вне mc по Shift+стрелки зачем-то был переключен на Alt+Shift+стрелки, Shift + любая клавиша - выдача esc-последовательностей «наверх» была заблокирована, но после «разблокирования» коды для всех срелок и PgUp, PgDown оказались настроены правильно, коды для Home и End настроены не были. Патч решает эти проблемы + :
- делает выдачу двойного \e\e gj Esc (было: Esc -> \e, Alt+Esc -> \e\e)
- изменяет код выдачи Секд+Enter на \e\n (позволяет вбрасывать имя текущего файла в командную строку для Ctrl+Enter в добавление к Alt+Enter)
- делает линию курсора-подчёркивания толще на 1 пиксел.
Любые из этих изменений Вы можете переделать по своему вкусу правкой патча, кромет того, для Ваших версий «дословно» патч может и не подойти.
Скачивание пакетов исходников и инструкции по пересборке на примере rpm-based дистрибутива:
1) подготовка дерева rpmbuild:
$ yum install yum-utils rpmdevtools - ставим нужные пакеты
$ rpmdev-setuptree - подготовка rpmbuild - директорий в home
2) скачивание исходников и проверка сборки:
$ cd ~/rpmbuild/SRPMS
$ yumdownloader --source vte - cкачивание исходного кода. vte-0.25.1-7.el6.src.rpm скачен в текущую директорию.
$ sudo yum-builddep vte - установка всех необходимых devel-пакетов (sudo apt-get build-dep vte - то же для пакета vte в apt-get - системе)
$ rpm -ivh vte-0.25.1-7.el6.src.rpm - будут установлены необходимые архивы и патчи в SOURCES, файл spec в SPEC.
Проверка, что всё нормально собирается:
$ cd ../SPEC
$ rpmbuild -bp --target=`uname -m` vte.spec - сборка дерева исходников
$ rpmbuild -bb --target=`uname -m` vte.spec - сборка двух пакетов rpm, помещаются в директорию ~/rpmbuild/PRMS/i686. Этот шаг необходим, т.к. в именно на этом шаге создаются makefile и прочие служебные файлы во всех директориях. Теперь, если перейти в ~/rpmbuild/BUILD/vte-0.25.1, то можно пересобирать и устанавливать проект vte командой
$ sudo make install
Либо просто из директории ~/rpmbuild/PRMS/i686
$ sudo rpm -ivh vte-0.25.1-7.el6.i686.rpm
3) добавление патча и сборка изменённого vte:
Добавить патч в виде файла vte-0.25.1-cursor-and-mc-keys.patch в директорию ~/rpmbuild/SOURCES . Добавить в файл ~/rpmbuild/SPEC/vte.spec строки (в нужное место):
Patch5: vte-0.25.1-cursor-and-mc-keys.patch
%patch5 -p1 -d src -F 2 -b .cursor-and-mc-keys
повторно собрать дерево исходников:
$ rpmbuild -bp --target=`uname -m` vte.spec
повторно собрать makefile
$ rpmbuild -bb --target=`uname -m` vte.spec
Далее либо
$ sudo rpm -ivh --force ../RPMS/i685/vte-0.25.1-7.el6.i686.rpm ,
либо
$ cd ../BUILD/vte-025.1; sudo make install
Пока не разобрался, как здесь прикреплять файлы, поэтому патч размещаю в следующем сообщении. Буду благодарен, если его люди знающие доведут до сведения разработчиков. На сайте gnome изменения вносятся как-то с трудом....