Roda do mouse rolando em menos e vim usando urxvt

17

Comecei a trabalhar com o rxvt-unicode (aka urxvt), mas encontrei um problema com a rolagem da roda do mouse, em comparação com gnome-terminale konsole. A roda do mouse funciona bem para passar pelo buffer de rolagem, mas não funciona para rolagem automática em less/ mostou vim(embora no vim, a configuração o mouse=afaça funcionar, mas de uma maneira muito diferente, com a qual não tenho a ver com gnome-terminal/ konsole).

Existe uma maneira de fazer urxvtse comportam como gnome-terminale konsolequando em lesse vimonde a roda do mouse simplesmente funciona?

Adam Batkin
fonte
Uma pergunta semelhante está sobre a
falha do servidor
11
Obrigado, isso não me incomodou até que você apontou!
Kyle Smith #:

Respostas:

8

Pergunta antiga, mas: embora isso não seja possível no urxvt, fiz algumas alterações que adicionam uma opção (secondWheel) para fazer exatamente isso e fazem com que ele se comporte como terminais baseados em VTE.

O que essa nova opção faz é bem simples: ao usar a roda do mouse, se você estiver na tela secundária (*), nenhuma rolagem ocorrerá e, em vez disso, serão pressionadas 3 teclas "falsas" no aplicativo em execução. Portanto, uma roda para cima terá o mesmo resultado que pressionar a tecla Para cima três vezes, e a roda para baixo fará o mesmo que pressionar três vezes a tecla Para baixo.

(*) não tem certeza se esse é o termo "oficial" ou não, mas pelo menos é assim que é chamado no urxvt.

Fácil, mas esse é o truque: agora, quando estiver executando man, lessou qualquer outro aplicativo que use a tela secundária, você pode usar a roda do mouse para se movimentar (ou o que o aplicativo faria, se você pressionasse as teclas Para cima / Para baixo).

Deve-se notar que não tenho certeza se é assim que as coisas são feitas nos terminais baseados em VTE - nunca verifiquei - mas isso faz o trabalho, portanto funciona para mim.

Um pouco mais de informação e links para o código & PKGBUILD para Arch Linux podem ser encontrados lá: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

Espero que isso possa ser útil para alguns!

jjacky
fonte
11
Alguma atualização no patch? Foi sugerido para inclusão?
blueyed
1

Boa pergunta! Em algum post útil, citarei a questão do Linux - comando "less" - não consigo rolar por ele! e Archlinux Forum - Use a roda do mouse em man / less .

Parece que menos estão apenas ouvindo eventos do teclado e não têm suporte para o mouse. A solicitação de encantamento para suporte a mouse está aberta Ref # 272 .

A solução real é usar outro terminal ou pager ( Vimpager ).

DVD
fonte
Corrigido em menos versão 543
Hielke Walinga 14/04/19
1

Eu escrevi isso para uma pergunta muito semelhante, consulte /superuser//a/1356948/900060

Cole isso em $ HOME / .urxvt / ext / vtwheel (crie o arquivo se ele não existir):

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

Em seguida, adicione URxvt.perl-ext-common:vtewheelao seu .Xresources(ou .Xdefaults) e executexrdb .Xresources

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

Clara
fonte