为什么我可以使用鼠标滚轮在 xfce4-terminal 中滚动手册页?

炸鱼薯*_*德里克 0 terminal-emulator xfce4-terminal

man 本身应该对鼠标滚轮一无所知,并且 xfce4-terminal 窗口的滚动条不会改变,所以......

当窗口从 X 服务器捕获鼠标滚轮事件时,xfce4-terminal 是否向 pty master fd 发送了一些东西?

如果是,它会向 pty 设备写入什么以表现得像我按下了Down键?

还是我完全错过了什么?

Ste*_*itt 6

您的寻呼机在备用屏幕缓冲区中显示其内容,该缓冲区选择“备用滚动模式”(您可以看到这是因为垂直滚动条发生了变化——它不再允许滚动窗口内容),在该模式下,终端会转换鼠标滚轮移动到光标上/下控件。这是很久以前在XTerm中引入的,并在当前终端中得到广泛支持。

要查看用于切换到备用屏幕缓冲区的序列,请运行

tput smcup | od -a
Run Code Online (Sandbox Code Playgroud)

你应该看到esc [ ? 1 0 4 9 h。这是寻呼机发送到终端的内容。?由终端发送给正在运行的应用程序的 CSI B 表示。

如果您的寻呼机是less,您可以通过导出LESS=X到环境来禁用它(这会跳过终端初始化)。