web-dev-qa-db-ja.com

urxvtを使用してemacsでmousewheelを介してカーソルスクロールを有効にするにはどうすればよいですか?

マウスホイールモードはemacsで有効になっていますが、カーソルは他のターミナルエミュレーターや他のディストリビューションのようにスクロールしません。私はたくさんの掘り下げをしましたが、答えを見つけることができないようです。ここでもurxvtを使用しており、たとえばウィンドウ内のテキストを上下にスクロールすると、マウスホイールを動かすと、実行中のアプリケーションのログ出力が発生します。 emacsでは、マウスホイールには何も起こりません。スクロールホイールが上矢印/下矢印を押すのと同じ結果を引き起こす可能性があると思います。

2
rabbitfeetz

私はまだこれを特にemacsでテストしていませんが、これによりvimlessmanなどを使用するときにマウスのスクロールが可能になります。これを$ HOME/.urxvt/ext/vtwheelに貼り付けます(ファイルが存在しない場合は作成します)。

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

次に、URxvt.Perl-ext-common:vtewheel.Xresources(または.Xdefaults)に追加し、xrdb .Xresourcesを実行します。

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

1
Clara