我有一个带有按钮的鼠标,可以切换鼠标滚轮上的摩擦力。这样,如果我愿意的话,我可以快速滚动。
然而,在 tmux 中,当我使用“无摩擦”模式时,即使我停止鼠标滚轮,它也会继续滚动。我认为发生这种情况是因为 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
current 不支持平滑/无摩擦/惯性滚动tmux
,主要是由于其无法控制的原因。
tmux
通过终端控制序列接收鼠标输入,因此它受到终端提供的内容的限制。终端序列的流行参考是控制台代码(4),但这根本没有提到鼠标滚轮。然而,XTerm 控制序列确实定义了一些基本的轮子序列,因此 xterm 兼容的终端也将支持这些序列。
目前,tmux
鼠标滚轮的处理只需要这两个简单的按钮事件:“向上滚轮”和“向下滚轮”。它也是丢弃车轮释放事件 (故意地)。
未来的终端模拟器可能会引入更多转义序列,例如包含滚动大小的滚轮事件。如果发生这种情况(或者已经存在),那么tmux
还需要更新以识别这些序列并适当地处理它们。