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

6979
Adam Batkin

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

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

16
Подобный вопрос уже некоторое время обсуждался на сервере, но не получил положительного ответа: http://serverfault.com/questions/10308/enable-mousewheel-scrolling-in-rxvt-under-cygwin nidi 14 лет назад 0
Спасибо, это не раздражало меня, пока ты не указал на это! Kyle Smith 12 лет назад 1

3 ответа на вопрос

8
jjacky

Старый вопрос, но: хотя это невозможно в 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

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

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

Я написал это для очень похожего вопроса, см. 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->>\n"); if ($event-> eq "4") { # scroll up $self->simulate_keypress(0); return 1; } elsif ($event-> 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

0
dvd

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

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

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