补丁在无油 ST 终端中回滚以支持鼠标滚轮

Sar*_*ica 7 c unix x11 terminal

ST终端具有用于滚动回补丁。除了“PageUp”和“PageDown”之外,我想更新所述补丁以启用鼠标滚轮向上和向下信号。我怀疑需要进行一些小的更改,config.h但我对终端代码没有经验,因此我请求帮助。

在源代码中,在config.h这些行中出现:

static Mousekey mshortcuts[] = {
    /* button               mask            string */
    { Button4,              XK_ANY_MOD,     "\031" },
    { Button5,              XK_ANY_MOD,     "\005" },
};
Run Code Online (Sandbox Code Playgroud)

所以,很明显,我们知道 Button4/5 是什么。此外,我们还有这些:

static Shortcut shortcuts[] = {
    /* mask                 keysym          function        argument */
    [...]
    { ShiftMask,            XK_Page_Up,     kscrollup,      {.i = -1} },
    { ShiftMask,            XK_Page_Down,   kscrolldown,    {.i = -1} },
};
Run Code Online (Sandbox Code Playgroud)

因此,天真地,我假设添加另外两个原始数据(一个用于向上轮,一个用于向下轮)可以解决问题。然而,什么?


注:知道suckless建议使用一个终端复用器如TMUX。我已经在用了。但是,有时(很少)我只想使用没有tmux的终端,这个功能会很有用。请不要评论/回答使用tmux,这不是这个问题的内容。

Tho*_*key 4

事情没那么简单。当有人想要向左/向右滚动鼠标轨迹球时,偶尔会出现这个问题。

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

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

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

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