如何避免鼠标卡在多个不同尺寸的显示器上

Sam*_*ing 5 multiple-monitors

我有两个显示器。一个是 1920x1080(左屏幕),另一个是 1440x900(右屏幕)。

现在,我已将其设置为使两个显示器的顶部对齐。这样,当我将鼠标放在左屏幕的最顶部并将鼠标移动到右侧时,它将无缝移动到右屏幕。但是,如果我的鼠标位于左屏幕底部 180 像素,并且我将鼠标向右移动,它不会移动到右屏幕,因此我必须先向上移动鼠标,然后再将其移动到右侧,因为右侧屏幕比左侧屏幕小。

我想要的功能:如果我位于左屏幕的底部并将鼠标移动到右侧,它应该出现在右屏幕的底部。

小智 1

我已经敲出了一些似乎可以在我的机器上运行的东西。我还没有成功地用多个显示器进行测试,但我认为这些设置适合您。它要求您安装 xdotool。

如果它有效,请将其放入您的 .rclocal 中,如此处所述它将在启动时运行。

#! /bin/bash
# Cursor relocation script by Cass May <cass@cassm.net>

# definitions of "hot zone", which triggers cursor relocation
XZONE="1919"
YZONE="900"

#target for cursor relocation
XTARGET="1920"
YTARGET="899"

while true; do
    # grab cursor position, and extract x and y position
    CURSORPOSITION="$(xdotool getmouselocation)"
    XPOS="$(grep -o '[0-9]\+' <<< "$CURSORPOSITION" | awk 'NR==1{print $1}')"
    YPOS="$(grep -o '[0-9]\+' <<< "$CURSORPOSITION" | awk 'NR==2{print $1}')"

    # perform tests. If you wish to reconfigure this behaviour, and do
    # not know where to start, look up bash numerical comparison operators.
    if [[ "$XPOS" -eq "$XZONE" ]] && [[ "$YPOS" -ge "$YZONE" ]]
    then
        xdotool mousemove "$XTARGET" "$YTARGET"
    fi
    sleep 0.1
done
Run Code Online (Sandbox Code Playgroud)


Jas*_*son 0

发生这种情况的原因是因为您的左显示器高度为 1080 像素,而右显示器高度为 900 像素。由于两者在顶部对齐,因此如果向右移动鼠标,鼠标将平滑移动。向左,反之亦然。

但这不适用于底部边缘,因为左屏幕底部的高度比右屏幕高 180 像素。根据这个问题,这是X窗口系统中的一个已知错误

如果您使用的是 NVIDIA 硬件和驱动程序,所示的解决方案可能适合您,但否则您可能会陷入困境。我在使用不同分辨率的双显示器运行 Windows 7 时没有遇到此问题。