Колесо мыши прокручивается в меньше и vim с помощью urxvt


17

Я начал работать с rxvt-unicode (aka urxvt), но обнаружил проблему с прокруткой колесика мыши по сравнению с gnome-terminalи konsole. Колесо мыши работает нормально для прохождения буфера прокрутки, но оно не работает для автоматической прокрутки в less/ mostили vim(хотя в vim настройка mouse=aзаставляет его работать, но совсем по-другому, что мне не нужно делать с gnome-terminal/ konsole).

Есть ли способ заставить urxvtсебя вести себя как gnome-terminalи konsoleкогда lessи vimгде колесо мыши просто работает?


Аналогичный вопрос уже некоторое время был о сбое сервера, но не получил положительного ответа: serverfault.com/questions/10308/…
nidi

1
Спасибо, это не раздражало меня, пока ты не указал на это!
Кайл Смит

Ответы:


8

Старый вопрос, но: хотя это невозможно в urxvt, я внес некоторые изменения, которые добавят опцию (secondWheel), чтобы сделать именно это, и заставить ее вести себя как терминалы на основе VTE.

То, что делает эта новая опция, довольно просто: при использовании колесика мыши, если вы находитесь на дополнительном экране (*), прокрутка не произойдет, и вместо этого 3 «поддельных» нажатия клавиш будут отправлены в работающее приложение. Таким образом, поворот колеса вверх будет иметь тот же результат, что и нажатие клавиши «Вверх» три раза, а поворот колеса вниз - так же, как нажатие кнопки «Вниз» 3 раза.

(*) не уверен, является ли это «официальным» термином или нет, но, по крайней мере, так он называется в urxvt.

Это достаточно просто, но это делает трюк: теперь , когда работает man, lessили любое другое приложение , которое использует вторичный экран, вы можете использовать колесо мыши для перемещения (или что - то сказали , приложение будет делать, если вы нажали клавиши вверх / вниз).

Следует отметить, что я не уверен, что именно так все и делается в терминалах на основе VTE - я никогда не проверял - но это делает работу, поэтому она работает для меня.

Немного больше информации и ссылки на код & PKGBUILD для Arch Linux можно найти там: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

Надеюсь, это может быть полезно для некоторых!


1
Какие-нибудь обновления на патче? Было ли это предложено для включения?
синеватый

1

Хороший вопрос! Несколько полезных постов я процитирую Linux Вопрос - вывод команды "less" - я не могу прокрутить ее! и Archlinux Forum - Используйте колесо мыши в человеке / меньше .

Кажется, что меньше просто слушают события клавиатуры и не поддерживают мышь. Запрос на зачарование для поддержки мыши открыт в Ref # 272 .

Реальное решение - использовать другой терминал или пейджер ( Vimpager ).


Исправлено в меньшей версии 543
Хильке Валинга

1

Я написал это для очень похожего вопроса, см. Https://superuser.com/a/1356948/900060

Вставьте это в $ HOME / .urxvt / ext / vtwheel (создайте файл, если он не существует):

#! perl

# Implements a scrollwheel just like in good old vt100's mices

sub simulate_keypress {
    my ($self, $type) = @_; #type: 0:up, 1:down

    my $keycode_up = 111;
    my $keycode_down = 116;

    my $numlines = 3;

    my $keycode = 0;
    if ($type eq 0) {
        $keycode = $keycode_up;
    } elsif ($type eq 1) {
        $keycode = $keycode_down;
    } else {
        return;
    }

    for (my $i = 0 ; $i ne $numlines ; $i++) {
        $self->key_press(0,$keycode);
        $self->key_release(0,$keycode);
    }
}

sub on_button_release {
    my ($self, $event) = @_;

    #my $res_ss = $self->resource("secondaryScroll");
    #warn("ressource ss is <$res_ss>");

    !$self->current_screen and return ();

    #warn("foo, event: <$event->{button}>\n");
    if ($event->{button} eq "4") { # scroll up
        $self->simulate_keypress(0);
        return 1;
    } elsif ($event->{button} eq "5") { # scroll down
        $self->simulate_keypress(1);
        return 1;
    }

    return ();
}

Затем добавьте URxvt.perl-ext-common:vtewheelв свой .Xresources(или .Xdefaults) и запуститеxrdb .Xresources

Источник: https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.