Прокручування коліс миші менше і vim, використовуючи urxvt


17

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

Чи є спосіб змусити urxvtсебе вести себе як gnome-terminalі konsoleколи, lessі vimде колесо миші просто працює?


Аналогічне питання було на ServerFault на деякий час, але не отримав позитивної відповіді: serverfault.com/questions/10308 / ...
НІДІ

1
Дякую, це мене не дратувало, поки ви цього не вказали!
Кайл Сміт

Відповіді:


8

Старе питання, але: поки це неможливо в urxvt, я вніс деякі зміни, які додадуть опцію (SecondWheel) зробити саме це, і змусять себе поводитись як термінали на основі VTE.

Те, що ця нова опція робить, досить проста: при використанні колеса миші, якщо ви перебуваєте на вторинному екрані (*), прокрутка не відбудеться, і замість цього 3-х «фальшивих» натискань клавіш буде надіслано запущеній програмі. Отже, колесо вгору матиме такий самий результат, як тричі натиснути клавішу Вгору, а колесо вниз зробить те саме, що натиснути клавішу 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 Питання - "менше" вихід команди - я не можу прокрутити її! та Archlinux Forum - Використовуйте колесо миші в людині / менше .

Здається, менше слухає події на клавіатурі і не підтримує миша. Запит зачарування підтримки миші відкрито №№ 272 .

Справжнє рішення - використовувати інший термінал або пейджер ( Vimpager ).


Виправлено у меншій версії 543
Hielke Walinga

1

Я написав це для дуже схожого питання, див /superuser//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.