修补程序在无可挑剔的ST终端中向后滚动以支持鼠标滚轮

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,这不是这个问题的内容.

最佳答案 事情并非那么简单.当有人想要左/右滚动鼠标轨迹球时,偶尔会出现这个问题.

在表的左列是一个X事件.这些仅限于预定义符号的组合.

提到了Button4和Button5,因为它们通常用于传递鼠标滚轮事件.这种情况已经持续了一段时间;在1999年(patch #120)修改xterm之前使用了一个资源文件,使其成为内置功能.

可能的X事件在C头文件(X.h)和X源代码中的表中列出;没有提供滚轮鼠标事件.例如,X Toolkit库中有一个table列出了所有可能性(对于使用X Toolkit的客户端,例如xterm). xev使用标头定义.

如果X以不同的方式支持滚轮鼠标事件,它可能会为此目的使用新的函数调用,因为现有的信息可能以一种排除容易扩展的方式打包到位字段中.

点赞