Desplazamiento de la rueda del mouse en menos y vim usando urxvt

17

He comenzado a trabajar con rxvt-unicode (aka urxvt) pero encontré un problema con el desplazamiento de la rueda del mouse, en comparación con gnome-terminaly konsole. La rueda del mouse funciona bien para pasar por el búfer de desplazamiento hacia atrás, pero no funciona para el desplazamiento automático en less/ mosto vim(aunque en vim, la configuración lo mouse=ahace funcionar, pero de una manera muy diferente, lo que no tengo que ver con gnome-terminal/ konsole).

¿Hay alguna manera de hacer que se urxvtcomporte como gnome-terminaly konsolecuándo lessy vimdónde funciona la rueda del mouse?

Adam Batkin
fuente
Una pregunta similar ha estado en serverfault por un tiempo, pero no ha recibido una respuesta positiva: serverfault.com/questions/10308/…
nidi
1
¡Gracias, esto no me molestó hasta que lo señaló!
Kyle Smith

Respuestas:

8

Antigua pregunta, pero: si bien esto no es posible en urxvt, hice algunos cambios que agregarán una opción (secondWheel) para hacer exactamente eso y hacer que se comporte como terminales basados ​​en VTE.

Lo que hace esta nueva opción es bastante simple: cuando se usa la rueda del mouse, si está en la pantalla secundaria (*), no se realizará ningún desplazamiento y, en su lugar, se enviarán 3 pulsaciones de teclas "falsas" a la aplicación en ejecución. Entonces, una rueda hacia arriba tendrá el mismo resultado que presionar la tecla Arriba tres veces, y la rueda hacia abajo hará lo mismo que presionar 3 veces la tecla Abajo.

(*) no estoy seguro de si este es el término "oficial" o no, pero al menos así es como se llama en urxvt.

Es bastante fácil, pero eso funciona: ahora, cuando se ejecuta man, lesso cualquier otra aplicación que use la pantalla secundaria, puede usar la rueda del mouse para moverse (o lo que sea que haga dicha aplicación, si presiona las teclas Arriba / Abajo).

Cabe señalar que no estoy seguro de que así es como se hacen las cosas en los terminales basados ​​en VTE, nunca lo comprobé, pero esto funciona, por lo que funciona para mí.

Puede encontrar un poco más de información y enlaces al código y PKGBUILD para Arch Linux aquí: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

¡Espero que esto pueda ser útil para algunos!

jjacky
fuente
1
¿Alguna actualización sobre el parche? ¿Se ha sugerido su inclusión?
Blueyed
1

Escribí esto para una pregunta muy similar, consulte /superuser//a/1356948/900060

Pegue esto en $ HOME / .urxvt / ext / vtwheel (cree el archivo si no existe):

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

Luego agregue URxvt.perl-ext-common:vtewheela su .Xresources(o.Xdefaults ) y ejecutexrdb .Xresources

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

Clara
fuente