Mausrad scrollen in weniger und vim mit urxvt

17

Ich habe angefangen, mit rxvt-unicode (aka urxvt) zu arbeiten, habe aber ein Problem mit dem Scrollen mit dem Mausrad im Vergleich zu gnome-terminalund gefunden konsole. Das Mausrad funktioniert gut, um den Scrollback-Puffer zu durchlaufen, aber es funktioniert nicht für das automatische Scrollen in less/ mostoder vim(obwohl in vim, mouse=afunktioniert es mit der Einstellung , aber auf eine ganz andere Weise, mit der ich nichts zu tun habe gnome-terminal/ konsole).

Gibt es eine Möglichkeit, das urxvtVerhalten so zu gestalten, wie gnome-terminalund konsolewann lessund vimwo das Mausrad gerade funktioniert?

Adam Batkin
quelle
Eine ähnliche Frage gibt es schon eine Weile bei serverfault, sie wurde jedoch nicht positiv beantwortet: serverfault.com/questions/10308/…
nidi
1
Danke, das hat mich nicht gestört, bis du darauf hingewiesen hast!
Kyle Smith

Antworten:

8

Alte Frage, aber: Während dies in urxvt nicht möglich ist, habe ich einige Änderungen vorgenommen, die eine Option (secondaryWheel) hinzufügen, um genau dies zu tun und das Verhalten von VTE-basierten Terminals zu verbessern.

Was diese neue Option bewirkt, ist ziemlich einfach: Wenn Sie das Mausrad verwenden und sich auf dem Sekundärbildschirm (*) befinden, wird kein Bildlauf ausgeführt, und stattdessen werden 3 "falsche" Tastenanschläge an die ausgeführte Anwendung gesendet. Ein Rad nach oben hat also das gleiche Ergebnis wie das dreimalige Drücken der Aufwärtstaste und ein Rad nach unten das gleiche Ergebnis wie das dreimalige Drücken der Abwärtstaste.

(*) nicht sicher, ob dies der "offizielle" Begriff ist oder nicht, aber zumindest heißt er in urxvt so.

Einfach genug, aber das funktioniert den Trick: jetzt beim Laufen man, lessoder jede andere Anwendung, die den sekundären Bildschirm verwendet, können Sie mit dem Mausrad zu bewegen (oder was auch immer die Anwendung tun würde, wenn Sie die Auf- / Ab - Taste gedrückt).

Es sollte beachtet werden, dass ich nicht sicher bin, ob die Dinge in VTE-basierten Terminals tatsächlich so ablaufen - ich habe es nie überprüft -, aber das macht den Job, also funktioniert es für mich.

Weitere Informationen und Links zu Code & PKGBUILD für Arch Linux finden Sie hier: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

Hoffentlich kann dies für einige hilfreich sein!

Jacky
quelle
1
Irgendwelche Updates zum Patch? Wurde es zur Aufnahme vorgeschlagen?
Blueyed
1

Gute Frage! Ein nützlicher Beitrag Ich werde Linux-Frage zitieren - "weniger" Befehlsausgabe - Ich kann nicht durchblättern! und Archlinux Forum - Verwenden Sie das Mausrad bei Männern / weniger .

Es scheint, als würde weniger nur Tastaturereignisse abhören und Maus nicht unterstützen. Die Verzauberungsanforderung für Mausunterstützung ist unter Ref. 272 geöffnet .

Die wirkliche Lösung besteht darin, ein anderes Terminal oder einen anderen Pager ( Vimpager ) zu verwenden.

DVD
quelle
Behoben
1

Ich habe dies für eine sehr ähnliche Frage geschrieben, siehe /superuser//a/1356948/900060

Fügen Sie dies in $ HOME / .urxvt / ext / vtwheel ein (erstellen Sie die Datei, falls sie nicht existiert):

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

Dann URxvt.perl-ext-common:vtewheelzu deinem .Xresources(oder .Xdefaults) hinzufügen und ausführenxrdb .Xresources

Quelle: https://aur.archlinux.org/cgit/aur.git/tree/vtwheel?h=urxvt-vtwheel

Clara
quelle