Ubuntu MATE 17.04 - 禁用鼠标加速会完全停止指针移动

Ubuntu MATE 17.04 - 禁用鼠标加速会完全停止指针移动

一段时间以来,我一直对鼠标的行为感到烦恼,但我一直将其归咎于所用的表面,而不是鼠标。今天我换了更好的鼠标垫表面,发现我无法准确使用鼠标,无论是有线鼠标还是无线鼠标。经过一番探索,我发现鼠标加速默认处于开启状态,大多数建议的解决方案是:
1) 使用命令xset m 0 0(这个命令看起来有效,但感觉不是永久的解决方案)
2) 在/usr/share/X11/xorg.conf.d/内容如下:

Section "InputClass"
           Identifier "My Mouse"
           Driver "libinput"
           MatchIsPointer "yes"
           Option "AccelProfile" "flat"
EndSection

3)使用xinput set-prop [device-id] [Accel Profile Enabled id] 0,1

但问题是,在我使用这些方法将加速度曲线设置为“平坦”后,我的鼠标指针完全停止移动。鼠标可以工作,左键单击\右键单击,它已连接并列出。但任何移动都会被忽略。

例如,我们有这个属性:
libinput Accel Profile Enabled (278): 1, 0
运行命令后xinput set-prop 11 278 0, 1任何鼠标移动都会被忽略。在我运行xinput set-prop 11 278 1, 0一切恢复正常。

我拥有的两个鼠标都出现这种情况。
问题:如何在 Ubuntu MATE 17.04 中正确禁用鼠标加速并设置“平面”配置文件,以及在我的情况下什么会导致问题?

答案1

经过一番搜索,我终于找到了这个问题的核心。

为什么设置平坦(无加速度)配置文件后可以忽略鼠标移动?

这个问题的答案很简单,问题在于库输入指针设置调用Accel Speed。虽然这很令人困惑,但当您使用平坦无加速度配置文件时,此设置实际上将充当大多数用户习惯的“灵敏度”设置,但范围在 0% 到 200% 之间,对应于光标速度。-1 表示 0%,0 表示 100%,1 表示 200% 的光标速度。
据我所知,当您移动鼠标时,您的指针(光标)将移动X + X*As,其中 X 是光标需要移动的基本值,As 是Accel Speed选项。这意味着,如果出于某种原因,此设置的值为 -1,当您尝试使用某些 GUI 来调整鼠标控制灵敏度或手动设置时,可能会发生这种情况,您的鼠标移动将像这样计算“X + X*-1”,这基本上是“XX”,意味着您的光标根本不会移动。

因此,如果您遇到类似的问题,您应该做的第一件事就是查看此选项的值。

1)使用命令列出设备:
xinput list

2) 找到您的鼠标的 ID 并使用此命令查看其选项的当前值:
xinput list-props 12
其中“12”是来自“xinput list”输出的您的设备的 ID。

3)如果“libinput Accel Speed”为 -1 并且您使用平面轮廓,则可以使用命令更改它:
xinput --set-prop 12 'libinput Accel Speed' 0

因此,如果在启用平面配置文件后鼠标卡住,只需切换到控制台\终端并运行这 3 个步骤即可解决问题。

我正在添加用于禁用加速和调整加速速度的解决方案,以防有人在寻找答案时偶然发现这一点。

如何设置平面配置文件\永久禁用鼠标加速

要永久将 libinput 设置为平面配置文件,并且不更改基本灵敏度,您只需编辑此文件:
/usr/share/X11/xorg.conf.d/40-libinput.conf
它应该有一个标识符为“libinput 指针 catchall”的部分。默认情况下,我的看起来像这样:

[...]
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection
[...]

您可以通过在“驱动程序”行后添加两行来强制它使用我们需要的特定设置:

[...]
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
        Option "AccelProfile" "flat"
        Option "AccelSpeed" "0.0"
EndSection
[...]

选项“AccelProfile”将告诉系统使用平坦、无加速度的轮廓。
选项“AccelSpeed”将设置基本指针速度修改器的默认值,这几乎就是灵敏度。将其设置为“1”将使指针速度加倍,-1 将其设置为 0,0.5 将使其达到 150%。

保存更改后,您可以重新启动 GDEservice lightdm restart或手动重新启动 PC,并检查 libinput 是否使用正确的值。

通过运行命令:
xinput list-props {1..50} 2>/dev/null | fgrep 'libinput Accel Profile Enabled ('
您可以检查系统是否使用平面配置文件。

对于平面轮廓,它应该返回 0, 1 值,如下所示:
libinput Accel Profile Enabled (282): 0, 1

并使用类似命令检查加速度值:
xinput list-props {1..50} 2>/dev/null | fgrep 'libinput Accel Speed ('
如果重新启动后,您获得的数值与您设置的值相对应40-libinput.conf文件,一切正常。
如需替代解决方案和更多信息,您可以查找以下链接:
https://wiki.archlinux.org/index.php/Mouse_acceleration#Using_xinput
配置鼠标速度(不是指针加速度!)

相关内容