マウスホイールが止まるとスクロールを停止

マウスホイールが止まるとスクロールを停止

マウスホイールの摩擦を切り替えるボタン付きのマウスがあります。これにより、必要に応じてすばやくスクロールできます。

ただし、tmuxで「frictionless」モードを使用すると、マウスホイールを停止してもスクロールし続けます。 tmuxがすべての主要なイベントを計算し、マウス自体がまだスクロールしているかどうかにかかわらず、その行だけをスクロールするので、これが起こると思います。ただし、これは複数の水平ウィンドウと左端のウィンドウでのみ発生します。

マウスホイールが停止したときにスクロールを止めるようにtmuxに指示する方法はありますか?または、マウスホイールを別の方向に回すとスクロールが止まりますか?

私は現在xfce4-terminal 0.6.3-3でtmux 2.2を使用しています。この動作は xterm や urxvt では発生しません。

xev出力:

スクロール:

ButtonPress event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335774900, (128,158), root:(2049,204),
    state 0x10, button 4, same_screen YES

ButtonRelease event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335774900, (128,158), root:(2049,204),
    state 0x810, button 4, same_screen YES

下にスクロール:

ButtonPress event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335776189, (128,158), root:(2049,204),
    state 0x10, button 5, same_screen YES

ButtonRelease event, serial 25, synthetic NO, window 0x4a00001,
    root 0x4b2, subw 0x0, time 335776189, (128,158), root:(2049,204),
    state 0x1010, button 5, same_screen YES

「無摩擦」モードを使用するかどうかに関係なく、イベントは同じです。

答え1

tmux現時点では、主に制御できない理由のため、滑らかな/摩擦のない/慣性スクロールはサポートされていません。

tmuxマウス入力は端末制御シーケンスを介して受信されるので、端末が提供するものによって制限される。端末シーケンスへの一般的な参照は次のとおりです。コンソールコード(4)しかし、マウスホイールはまったく言及されていません。しかし、XTerm制御シーケンスいくつかの基本ホイールシーケンスは実際に定義されているので、xterm互換端末はこれらのシーケンスもサポートします。

現在のtmuxマウスホイールを処理するには、2つの簡単なボタンイベントのみが必要です。「ホイールを上にスクロール」と「ホイールを下にスクロール」。それもホイール解除イベントのキャンセル (意図的に)。

将来のターミナルエミュレータでは、スクロールサイズを含むホイールイベントなど、より多くのエスケープシーケンスを導入できます。このようなことが発生したり、すでに存在している場合は、tmuxこれらのシーケンスを認識して適切に処理するために更新も必要です。

関連情報