X11 将鼠标限制在可见区域

Evg*_*nZh 5 x11 mouse xrandr

我目前正在使用 Cinnamon 运行 Linux Mint 17.2。我有2台显示器。

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

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

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

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

此外,即使没有窗口管理器,当我从Xorg什么都没有开始时也是一样的xterm,并且使用xrandr

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

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

有了更多的控制,它可以用来让鼠标“不愿意”离开当前窗口,或者做其他有趣的事情。至少它可以重新实现这个东西,以便它实际上可以将鼠标锁定到诸如 Chrome 浏览器或 OpenGL 游戏之类的应用程序的窗口,而不仅仅是xterm诸如此类。

现在想起来了,我什至可以尝试实现它,如果还没有实现并且我找到了相关代码。

Evg*_*nZh 3

好的,我找到了相关的代码。

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

绝对没有可配置的。好吧,除非您同意dwm的创建者对“配置”一词含义的看法:)
我同意。现在相关的代码位置是randr/rrpointer.crandr/rrcrtc.c:332,1685
如果有人为此创建一个适当的 X srver 扩展,那就太好了。