Kółko myszy przewijane w mniej i vim za pomocą urxvt

17

Zacząłem pracować z rxvt-unicode (aka urxvt), ale znalazłem problem z przewijaniem kółka myszy w porównaniu do gnome-terminali konsole. Kółko myszy działa dobrze podczas przeglądania bufora przewijania, ale nie działa w przypadku automatycznego przewijania w less/ mostlub vim(chociaż w vimie ustawienie mouse=apowoduje, że działa, ale w zupełnie inny sposób, z którym nie mam do czynienia gnome-terminal/ konsole).

Czy istnieje sposób, aby urxvtzachowywać się jak gnome-terminali konsolekiedy lessi vimgdzie kółko myszy po prostu działa?

Adam Batkin
źródło
Podobne pytanie
dotyczyło błędu serwera
1
Dzięki, to mnie nie denerwowało, dopóki tego nie zauważyłeś!
Kyle Smith

Odpowiedzi:

8

Stare pytanie, ale: chociaż nie jest to możliwe w urxvt, wprowadziłem kilka zmian, które dodadzą opcję (wtórne koło), aby to zrobić dokładnie i sprawią, że będzie się zachowywać jak terminale oparte na VTE.

To, co robi ta nowa opcja, jest dość proste: jeśli używasz kółka myszy, jeśli jesteś na ekranie pomocniczym (*), nie nastąpi przewijanie, a zamiast tego zostaną wysłane 3 „fałszywe” naciśnięcia klawiszy do uruchomionej aplikacji. Tak więc, kółko w górę będzie miało taki sam efekt, jak trzykrotne naciśnięcie klawisza W górę, a kółko w dół wykona to samo, co trzykrotne naciśnięcie klawisza W dół.

(*) nie jestem pewien, czy jest to termin „oficjalny”, czy nie, ale przynajmniej tak to się nazywa w urxvt.

Dość łatwe, ale to załatwia sprawę: teraz, gdy działa man,less lub dowolna inna aplikacja korzystająca z dodatkowego ekranu, możesz poruszać się po kółku myszy (lub cokolwiek, co powiedziałaby aplikacja, gdybyś naciskał klawisze góra / dół).

Należy zauważyć, że nie jestem pewien, czy tak właśnie się dzieje w terminalach opartych na VTE - nigdy nie sprawdzałem - ale to działa, więc działa dla mnie.

Trochę więcej informacji oraz linki do kodu i PKGBUILD dla Arch Linux można znaleźć tam: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

Mam nadzieję, że niektórym może to być pomocne!

jjacky
źródło
1
Jakieś aktualizacje dotyczące łatki? Czy zasugerowano włączenie?
niebieskawy
1

Fajne pytanie! Przydatny post zacytuję pytanie o Linuksa - wynik polecenia „mniej” - nie mogę go przewijać! i Archlinux Forum - Użyj kółka myszy w man / less .

Wygląda na to, że mniej słucha tylko zdarzeń z klawiatury i nie obsługuje myszy. Żądanie zaklęcia dotyczące obsługi myszy jest otwarte Ref # 272 .

Prawdziwym rozwiązaniem jest użycie innego terminala lub pagera ( Vimpager ).

płyta DVD
źródło
Naprawiono w mniejszej wersji 543
Hielke Walinga
1

Napisałem to na bardzo podobne pytanie, patrz /superuser//a/1356948/900060

Wklej to w $ HOME / .urxvt / ext / vtwheel (utwórz plik, jeśli nie istnieje):

#! 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 ();
}

Następnie dodaj URxvt.perl-ext-common:vtewheeldo swojego .Xresources(lub .Xdefaults) i uruchomxrdb .Xresources

Źródło: https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

Clara
źródło