rxvt-unicode (aka urxvt
)で作業を開始しましたが、_gnome-terminal
_およびkonsole
と比較して、マウスホイールのスクロールに問題があることがわかりました。マウスホイールはスクロールバックバッファを通過するために正常に機能しますが、less
/most
またはvim
での自動スクロールには機能しません(vimでは_mouse=a
_はそれを機能させますが、非常に異なる方法で、_gnome-terminal
_/konsole
)とは関係ありません。
マウスホイールが機能するurxvt
とkonsole
にいるときに、less
を_gnome-terminal
_とvim
のように動作させる方法はありますか?
古い質問ですが、これはurxvtでは不可能ですが、それを正確に実行するオプション(secondaryWheel)を追加し、VTEベースの端末のように動作するようにいくつかの変更を加えました。
この新しいオプションの機能は非常に単純です。マウスホイールを使用しているときにセカンダリ画面(*)を表示している場合、スクロールは発生せず、代わりに3つの「偽の」キーストロークが実行中のアプリケーションに送信されます。したがって、ホイールアップは上キーを3回押すのと同じ結果になり、ホイールダウンは下キーを3回押すのと同じ結果になります。
(*)これが「公式」用語であるかどうかはわかりませんが、少なくともurxvtではそのように呼ばれています。
簡単ですが、それでうまくいきます。man
、less
、またはセカンダリ画面を使用するその他のアプリケーションを実行しているときに、マウスホイールを使用して移動できます(またはそのアプリケーションが実行するものなら何でも)上/下キーを押した場合)。
これが実際にVTEベースの端末でどのように行われるかはわかりませんが(チェックしたことはありません)、これでうまくいくので、うまくいきます。
もう少し情報、およびArch LinuxのコードとPKGBUILDへのリンクはそこにあります: http://mywaytoarch.tumblr.com/post/14455320734/scrolling-mouse-wheel-improvments-vte-like- in-urxvt
うまくいけば、これは一部の人に役立つ可能性があります!
いい質問です!私が引用するいくつかの有用な投稿 Linuxの質問-「less」コマンド出力-スクロールできません! および Archlinuxフォーラム-man/lessでマウスホイールを使用 。
Lessはキーボードイベントをリッスンしているだけで、マウスをサポートしていないようです。マウスサポートのエンチャントリクエストは開いています 参照番号272 。
実際の解決策は、別の端末またはポケットベルを使用することです( Vimpager )。
私はこれを非常によく似た質問のために書きました。 https://superuser.com/a/1356948/90006 を参照してください。
これを$ 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