X11 将鼠标限制在可见区域

X11 restrict mouse to visible area

我目前 运行 Linux 肉桂薄荷 17.2。我有 2 个显示器。

当我在 Cinnamon 设置中将显示器设置为相邻时,鼠标可以自由移动通过显示器之间共享的边界但无法逃脱可见区域。

也就是说,如果我将监视器设置为仅共享角落,鼠标将有效锁定到当前监视器并且只能通过角落逃到另一个监视器。

但是,将监视器设置为不相邻允许鼠标在整个虚拟帧缓冲区中自由漫游,包括不可见区域。

我认为 Cinnamon 设置了一些控制此行为的标志,但使用 xrandr 更改监视器位置具有相同的效果。

另外,当我开始纯 Xorg 除了 xterm,甚至没有 window 管理器,并使用 [= 配置监视器时也是一样的10=].

当所有显示器相邻时,究竟是什么阻止鼠标离开可见区域? 有没有办法覆盖此行为?

能够控制它可能很有用,例如每次尝试单击边界附近的东西时都阻止鼠标离开监视器,没有 运行 一个繁忙的循环来监视鼠标并在需要时将其移回(并且不会通过使监视器在角落相邻而使帧缓冲区大小加倍)。

有了更多的控制,它可以用于例如让鼠标 "reluctant" 离开当前 window,并可能做其他有趣的事情。至少它可以重新实现 this thing 以便它实际上可以将鼠标锁定到 window 用于 Chrome 浏览器或 OpenGL 游戏之类的应用程序,而不仅仅是 xterm 等.

既然想到了,我什至会尝试实现它,如果还没有,如果我找到相关代码的话。

好的,我找到相关代码了

此行为在 Xorg X 服务器中硬编码在 RandR 扩展中,包括可见区域连续性检查。

绝对没有可配置的。好吧,除非你同意 dwm 的创建者关于 "configuration" 这个词的含义:)
我同意。现在相关的代码位置是 randr/rrpointer.crandr/rrcrtc.c:332,1685.
不过,如果有人为此创建了一个合适的 X 服务器扩展,那就太好了。