ST terminal有一个patch for scrolling back。我想更新所述补丁以启用鼠标滚轮上下信号以及" PageUp"和" PageDown"。我怀疑config.h
中的一个小变化是需要的,但我没有终端代码的经验,因此我请求帮助。
在源代码中,在config.h
中出现以下行:
static Mousekey mshortcuts[] = {
/* button mask string */
{ Button4, XK_ANY_MOD, "\031" },
{ Button5, XK_ANY_MOD, "\005" },
};
所以,很明显,我们知道Button4 / 5是什么。另外,我们有这些:
static Shortcut shortcuts[] = {
/* mask keysym function argument */
[...]
{ ShiftMask, XK_Page_Up, kscrollup, {.i = -1} },
{ ShiftMask, XK_Page_Down, kscrolldown, {.i = -1} },
};
所以,天真地,我假设添加另外两个原始(一个用于向上轮,一个用于向下轮)将成功。但是,什么?
注意:我知道 suckless建议使用tmux等终端多路复用器。我已经用过了。但是,有时(很少)我只想使用没有tmux的终端,这个功能会很有用。 请不要评论/回答使用tmux,这不是这个问题的内容。
答案 0 :(得分:2)
不是那么简单。当有人想要左/右滚动鼠标轨迹球时,偶尔会出现这个问题。
表格的左栏是 X事件。这些仅限于预定义符号的组合。
提到了Button4和Button5,因为它们通常用于传递鼠标 wheel 事件。这种情况已经持续了一段时间;在1999年修改xterm(patch #120)之前使用了一个资源文件,使其成为内置功能。</ p>
可能的X事件在C头文件中列出 - X.h - 和X源代码中的表格;没有提供滚轮鼠标事件。例如,X Toolkit库中有一个table列出了所有可能性(对于使用X Toolkit的客户端,例如xterm)。 xev
使用标头定义。
如果X以不同的方式支持滚轮鼠标事件,它可能会为此目的使用新的函数调用,因为现有的信息可能以一种排除易于扩展的方式打包到位字段中。
答案 1 :(得分:1)
现在有一个独立程序scroll,可为任何终端仿真器提供回滚缓冲区。在编写此答案时,它仍处于实验状态,预计会有很多错误。尽管如此,它比st的回滚修补程序对回滚的处理要好。例如。调整终端的大小将包装先前的输出,而不是切断并丢失它们。
要启用它,首先要从suckless website下载/克隆源代码,然后在本地进行构建。
然后在config.def.h
的{{1}}中修改这一行(您必须获取最近的git commit以获得对st
的支持)
scroll
到
char *scroll = NULL;
现在重建char *scroll = "/path/to/scroll";
,然后运行st
。它将自动使用滚动来提供回滚缓冲区。
如手册中所述,不修改st
的课程代码的另一种方法是在安装了st
和st
之后,使用以下命令运行st
:
scroll
答案 2 :(得分:0)
在suckless网站上,有一些scroll back patches允许使用Shift+MouseWheel
滚动以及完整鼠标滚动。最后一个补丁可能会破坏除滚动功能之外的其他mkeys
。