为什么鼠标光标在屏幕右边缘时会跳跃,导致奇怪的应用程序行为(例如 eclipse)?

为什么鼠标光标在屏幕右边缘时会跳跃,导致奇怪的应用程序行为(例如 eclipse)?

当我将鼠标移动到屏幕右边缘时,无论进入右边缘时的垂直位置如何,它都会跳到屏幕右边缘顶部向下约 25% 的点。

此后,我注意到 Eclipse 中出现了奇怪的行为,上下文菜单在错误的位置弹出(通常在光标左侧很远的地方)。重新启动 Eclipse 后,Eclipse 中的问题消失了,但在我第一次移动到屏幕右边缘时又出现了。

我的系统是 Mageia 8、Plasma 桌面、Breeze 主题、Linux 5.10.41、AMD64(Ryzen Threadripper 3960X 24 核处理器),配有两个 NVIDIA GPU(GeForce RTX 2080 SUPER),连接一台 4k 显示器。

鼠标跳转总是发生,并且与 Eclipse 是否运行无关。

答案1

造成此问题的原因是我的 xorg.conf 配置了两个屏幕,但我只连接了一台显示器。

这是我原来的 xorg.conf:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 465.24.02

# File generated by XFdrake (rev 262502)
# **********************************************************************
# Refer to the xorg.conf man page for details about the format of
# this file.
# **********************************************************************

Section "ServerLayout"

    #Option "Xinerama"
    Identifier     "layout1"
    Screen         "screen1" 0 0
    Screen         "screen2" RightOf "screen1"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Module"
    Load           "v4l" # Video for Linux
    Load           "glx"
EndSection

Section "ServerFlags"

 # allows the server to start up even if the mouse does not work
    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
    Option         "allowmouseopenfail"
    Option         "DontZap" "False" # disable <Ctrl><Alt><BS> (server abort)
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "us"
    Option         "XkbModel" "pc105"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "Monitor"

    # Apple iMac modes
    Identifier     "monitor1"
    VendorName     "Plug'n Play"
    ModeLine       "1024x768" 78.525 1024 1049 1145 1312 768 769 772 800 +hsync +vsync
    ModeLine       "800x600" 62.357 800 821 901 1040 600 601 604 632 +hsync +vsync
    ModeLine       "640x480" 49.886 640 661 725 832 480 481 484 514 +hsync +vsync
    ModeLine       "832x624" 57 832 876 940 1152 624 625 628 667 -hsync -vsync
    ModeLine       "800x600" 100 800 816 824 840 600 616 624 640 -hsync -vsync
    ModeLine       "1152x768" 78.741 1152 1173 1269 1440 768 769 772 800 +vsync
    ModeLine       "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 65 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 112.62 1024 1076 1248 1420 768 768 780 808 +hsync +vsync
    ModeLine       "1280x1024" 135 1280 1288 1392 1664 1024 1027 1030 1064
    ModeLine       "1280x1024" 134.989 1280 1317 1429 1688 1024 1025 1028 1066 +hsync +vsync
    ModeLine       "768x576" 50.00 768 832 846 1000 576 590 595 630
    ModeLine       "768x576" 63.07 768 800 960 1024 576 578 590 616
EndSection

Section "Monitor"

    # Apple iMac modes
    Identifier     "monitor2"
    ModeLine       "1024x768" 78.525 1024 1049 1145 1312 768 769 772 800 +hsync +vsync
    ModeLine       "800x600" 62.357 800 821 901 1040 600 601 604 632 +hsync +vsync
    ModeLine       "640x480" 49.886 640 661 725 832 480 481 484 514 +hsync +vsync
    ModeLine       "832x624" 57 832 876 940 1152 624 625 628 667 -hsync -vsync
    ModeLine       "800x600" 100 800 816 824 840 600 616 624 640 -hsync -vsync
    ModeLine       "1152x768" 78.741 1152 1173 1269 1440 768 769 772 800 +vsync
    ModeLine       "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 65 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 112.62 1024 1076 1248 1420 768 768 780 808 +hsync +vsync
    ModeLine       "1280x1024" 135 1280 1288 1392 1664 1024 1027 1030 1064
    ModeLine       "1280x1024" 134.989 1280 1317 1429 1688 1024 1025 1028 1066 +hsync +vsync
    ModeLine       "768x576" 50.00 768 832 846 1000 576 590 595 630
    ModeLine       "768x576" 63.07 768 800 960 1024 576 578 590 616
EndSection

Section "Device"
    Identifier     "device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce 635 series and later"
    BusID          "PCI:33:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce 635 series and later"
    BusID          "PCI:74:0:0"
    Screen          0
EndSection

Section "Screen"
    Identifier     "screen1"
    Device         "device1"
    Monitor        "monitor1"
    DefaultDepth    24
    Option         "DPMS"
    SubSection     "Display"
        Depth       24
        Modes      "nvidia-auto-select"
    EndSubSection
EndSection

Section "Screen"
    Identifier     "screen2"
    Device         "device2"
    Monitor        "monitor2"
    DefaultDepth    24
    Option         "DPMS"
    SubSection     "Display"
        Depth       24
        Modes      "nvidia-auto-select"
    EndSubSection
EndSection

如果我注释掉Screen该部分中的第二个部分,并在最后ServerLayout注释掉第二个部分的定义,则问题将得到解决(重新启动后)。Screen鼠标不再在边缘跳跃,并且 Eclipse 上下文菜单始终在光标下方弹出。

此 xorg.conf 文件由 NVIDIA 驱动程序安装程序创建。

这是有效的新 xorg.conf 文件:

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 465.24.02

# File generated by XFdrake (rev 262502)
# **********************************************************************
# Refer to the xorg.conf man page for details about the format of
# this file.
# **********************************************************************

Section "ServerLayout"

    #Option "Xinerama"
    Identifier     "layout1"
    Screen         "screen1" 0 0
#    Screen         "screen2" RightOf "screen1"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Module"
    Load           "v4l" # Video for Linux
    Load           "glx"
EndSection

Section "ServerFlags"

 # allows the server to start up even if the mouse does not work
    #DontZoom # disable <Ctrl><Alt><KP_+>/<KP_-> (resolution switching)
    Option         "allowmouseopenfail"
    Option         "DontZap" "False" # disable <Ctrl><Alt><BS> (server abort)
EndSection

Section "InputDevice"

    # generated from data in "/etc/sysconfig/keyboard"
    Identifier     "Keyboard0"
    Driver         "kbd"
    Option         "XkbLayout" "us"
    Option         "XkbModel" "pc105"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "Monitor"

    # Apple iMac modes
    Identifier     "monitor1"
    VendorName     "Plug'n Play"
    ModeLine       "1024x768" 78.525 1024 1049 1145 1312 768 769 772 800 +hsync +vsync
    ModeLine       "800x600" 62.357 800 821 901 1040 600 601 604 632 +hsync +vsync
    ModeLine       "640x480" 49.886 640 661 725 832 480 481 484 514 +hsync +vsync
    ModeLine       "832x624" 57 832 876 940 1152 624 625 628 667 -hsync -vsync
    ModeLine       "800x600" 100 800 816 824 840 600 616 624 640 -hsync -vsync
    ModeLine       "1152x768" 78.741 1152 1173 1269 1440 768 769 772 800 +vsync
    ModeLine       "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 65 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 112.62 1024 1076 1248 1420 768 768 780 808 +hsync +vsync
    ModeLine       "1280x1024" 135 1280 1288 1392 1664 1024 1027 1030 1064
    ModeLine       "1280x1024" 134.989 1280 1317 1429 1688 1024 1025 1028 1066 +hsync +vsync
    ModeLine       "768x576" 50.00 768 832 846 1000 576 590 595 630
    ModeLine       "768x576" 63.07 768 800 960 1024 576 578 590 616
EndSection

Section "Monitor"

    # Apple iMac modes
    Identifier     "monitor2"
    ModeLine       "1024x768" 78.525 1024 1049 1145 1312 768 769 772 800 +hsync +vsync
    ModeLine       "800x600" 62.357 800 821 901 1040 600 601 604 632 +hsync +vsync
    ModeLine       "640x480" 49.886 640 661 725 832 480 481 484 514 +hsync +vsync
    ModeLine       "832x624" 57 832 876 940 1152 624 625 628 667 -hsync -vsync
    ModeLine       "800x600" 100 800 816 824 840 600 616 624 640 -hsync -vsync
    ModeLine       "1152x768" 78.741 1152 1173 1269 1440 768 769 772 800 +vsync
    ModeLine       "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 65 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
    ModeLine       "1024x768" 112.62 1024 1076 1248 1420 768 768 780 808 +hsync +vsync
    ModeLine       "1280x1024" 135 1280 1288 1392 1664 1024 1027 1030 1064
    ModeLine       "1280x1024" 134.989 1280 1317 1429 1688 1024 1025 1028 1066 +hsync +vsync
    ModeLine       "768x576" 50.00 768 832 846 1000 576 590 595 630
    ModeLine       "768x576" 63.07 768 800 960 1024 576 578 590 616
EndSection

Section "Device"
    Identifier     "device1"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce 635 series and later"
    BusID          "PCI:33:0:0"
    Screen          0
EndSection

Section "Device"
    Identifier     "device2"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "NVIDIA GeForce 635 series and later"
    BusID          "PCI:74:0:0"
    Screen          0
EndSection

Section "Screen"
    Identifier     "screen1"
    Device         "device1"
    Monitor        "monitor1"
    DefaultDepth    24
    Option         "DPMS"
    SubSection     "Display"
        Depth       24
        Modes      "nvidia-auto-select"
    EndSubSection
EndSection

#Section "Screen"
#    Identifier     "screen2"
#    Device         "device2"
#    Monitor        "monitor2"
#    DefaultDepth    24
#    Option         "DPMS"
#    SubSection     "Display"
#        Depth       24
#        Modes      "nvidia-auto-select"
#    EndSubSection
#EndSection

答案2

感谢您展示了如何修复光标穿过屏幕右边缘的问题。有一个简单的解决方案:将 screen2 定义中的 替换为 ,RightOf "screen1"保持0 0其他所有不变。您可以使用您最喜欢的文本编辑器来执行此操作(我使用 gedit),但请记住您必须是超级用户。 CLI命令是: $ sudo gedit /etc/X11/xorg.conf然后查找、替换、保存并重新启动。

相关内容