web-dev-qa-db-fra.com

Roue de la souris défilement en moins et vim en utilisant urxvt

J'ai commencé à travailler avec rxvt-unicode (AKA urxvt) mais a trouvé un problème avec le défilement de la roue de souris, par rapport à gnome-terminal et konsole. La roue de la souris fonctionne bien pour passer à travers le tampon de défilement, mais cela ne fonctionne pas pour le défilement automatique less/most ou vim (cependant dans Vim, réglage mouse=a fait fonctionner, mais de manière très différente, que je n'ai pas à voir avec gnome-terminal/konsole).

Y a-t-il un moyen de faire urxvt se comporter comme gnome-terminal et konsole quand entrer less et vim où la molette de la souris fonctionne simplement?

17
Adam Batkin

Vieille question, mais: tandis que cela n'est pas possible dans UrXVT, j'ai apporté des modifications qui ajouteront une option (roueau secondaire) à faire exactement cela et que cela se comportera comme des terminaux à base de VTE.

Ce que cette nouvelle option fait, c'est assez simple: lors de l'utilisation de la molette de la souris, si vous êtes sur l'écran secondaire (*), aucun défilement ne se produira, et à la place de 3 "faux" Keystrokes seront envoyés à l'application en cours d'exécution. Donc, une roue up aura le même résultat que lorsque vous appuyez sur la touche UP trois fois, et la roue descendra de la même manière que si vous appuyez sur 3 fois la touche BAS.

(*) Je ne sais pas si c'est le terme "officiel" ou non, mais au moins c'est comment cela s'appelle UrXVT.

Assez facile, mais cela fait l'astuce: maintenant lors de l'exécution man, less ou toute autre application utilisant l'écran secondaire, vous pouvez utiliser la molette de la souris pour vous déplacer (ou quelle que soit ladite application faire, si vous avez appuyé sur les touches haut/bas).

Il convient de noter que je ne suis pas sûr que ce soit en fait de la manière dont les choses sont effectuées dans des terminaux basés sur VTE - je n'ai jamais vérifié - mais cela fait le travail, donc cela fonctionne pour moi.

Un peu plus d'informations, et des liens vers le code et pkgbuild for Arch Linux sont disponibles: http://mywaytoarch.tumblr.com/14455320734/14455320734/scrolling-mouse-wheel-improvements-vte- in-urxvt

Espérons que cela peut être utile à certains!

8
jjacky

J'ai écrit cela pour une question très similaire, voir https://superuser.com/a/1356948/90006

Collez ceci en $ home/.urxvt/ext/vtwheel (créez le fichier s'il n'existe pas):

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

Puis ajouter URxvt.Perl-ext-common:vtewheel à ton .Xresources (ou .Xdefaults) et courir xrdb .Xresources

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

1
Clara