Roda mouse bergulir lebih sedikit dan vim menggunakan urxvt

17

Saya sudah mulai bekerja dengan rxvt-unicode (alias urxvt) tetapi menemukan masalah dengan bergulir mouse-wheel, dibandingkan dengan gnome-terminaldan konsole. Roda mouse berfungsi dengan baik untuk melewati buffer scrollback, tetapi itu tidak berfungsi untuk menggulir otomatis di less/ mostatau vim(meskipun dalam vim, pengaturan mouse=amembuatnya berfungsi, tetapi dengan cara yang sangat berbeda, yang tidak harus saya lakukan dengan gnome-terminal/ konsole).

Apakah ada cara untuk urxvtberperilaku seperti gnome-terminaldan konsolekapan di lessdan di vimmana roda mouse Hanya Bekerja?

Adam Batkin
sumber
Pertanyaan serupa telah ada di serverfault untuk sementara waktu, tetapi belum menerima jawaban positif: serverfault.com/questions/10308/…
nidi
1
Terima kasih, ini tidak mengganggu saya sampai Anda menunjukkannya!
Kyle Smith

Jawaban:

8

Pertanyaan lama, tetapi: sementara ini tidak mungkin di urxvt, saya membuat beberapa perubahan yang akan menambahkan opsi (secondaryWheel) untuk melakukan hal itu, dan membuatnya berperilaku seperti terminal berbasis VTE.

Apa yang dilakukan opsi baru ini, cukup sederhana: saat menggunakan roda mouse, jika Anda berada di layar sekunder (*) maka tidak akan ada bergulir, dan sebagai gantinya 3 penekanan tombol "palsu" akan dikirim ke aplikasi yang sedang berjalan. Jadi, roda ke atas akan memiliki hasil yang sama dengan menekan tombol Naik tiga kali, dan roda ke bawah akan melakukan hal yang sama dengan menekan 3 kali tombol Bawah.

(*) tidak yakin apakah ini istilah "resmi" atau tidak, tapi setidaknya begitulah sebutannya di urxvt.

Cukup mudah, tetapi itu cukup membantu: sekarang saat berjalan man, lessatau aplikasi lain yang menggunakan layar sekunder, Anda dapat menggunakan roda mouse untuk bergerak (atau apa pun yang dikatakan aplikasi akan dilakukan, jika Anda menekan tombol Atas / Bawah).

Perlu dicatat bahwa saya tidak yakin ini benar-benar bagaimana hal-hal dilakukan di terminal berbasis VTE - saya tidak pernah memeriksa - tetapi ini berfungsi, jadi itu bekerja untuk saya.

Sedikit info lagi, dan tautan ke kode & PKGBUILD untuk Arch Linux dapat ditemukan di sana: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like-in-urxvt

Semoga ini bisa bermanfaat bagi sebagian orang!

jacky
sumber
1
Adakah pembaruan di patch? Apakah sudah disarankan untuk dimasukkan?
blueyed
1

Pertanyaan bagus! Beberapa posting berguna saya akan mengutip Pertanyaan Linux - "kurang" perintah output-Saya tidak dapat menggulirnya! dan Archlinux Forum - Gunakan Roda Mouse secara manual / kurang .

Sepertinya kurang hanya mendengarkan acara keyboard dan tidak memiliki dukungan untuk mouse. Permintaan pesona untuk dukungan mouse terbuka pada Ref # 272 .

Solusi sebenarnya adalah dengan menggunakan terminal atau pager lain ( Vimpager ).

DVD
sumber
Diperbaiki dalam versi kurang dari 543
Hielke Walinga
1

Saya menulis ini untuk pertanyaan yang sangat mirip, lihat /superuser//a/1356948/900060

Rekatkan ini di $ HOME / .urxvt / ext / vtwheel (buat file jika tidak ada):

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

Kemudian tambahkan URxvt.perl-ext-common:vtewheelke .Xresources(atau .Xdefaults) Anda dan jalankanxrdb .Xresources

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

Clara
sumber