如何使用 libinput 更改滚动速度?

如何使用 libinput 更改滚动速度?

我正在 Arch Linux、Xfce 4.12 上运行。

我的鼠标滚轮滚动太慢,所以我想增加每次滚动“刻度”的行数。我读到可以通过设置Evdev Scrolling Distancewith 来实现这一点xinput,但是,我正在使用libinput并且没有看到任何与滚动距离相关的内容。

我的鼠标上的输出xinput list-props

Device Enabled (139):   1                                                                                                       
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Accel Speed (275): -0.640000                                                                                           
libinput Accel Speed Default (276): 0.000000                                                                                    
libinput Accel Profiles Available (277):    1, 1                                                                                
libinput Accel Profile Enabled (278):   1, 0                                                                                    
libinput Accel Profile Enabled Default (279):   1, 0                                                                            
libinput Natural Scrolling Enabled (280):   0                                                                                   
libinput Natural Scrolling Enabled Default (281):   0                                                                           
libinput Send Events Modes Available (259): 1, 0                                                                                
libinput Send Events Mode Enabled (260):    0, 0                                                                                
libinput Send Events Mode Enabled Default (261):    0, 0                                                                        
libinput Left Handed Enabled (282): 0                                                                                           
libinput Left Handed Enabled Default (283): 0                                                                                   
libinput Scroll Methods Available (284):    0, 0, 1                                                                             
libinput Scroll Method Enabled (285):   0, 0, 0                                                                                 
libinput Scroll Method Enabled Default (286):   0, 0, 0                                                                         
libinput Button Scrolling Button (287): 2                                                                                       
libinput Button Scrolling Button Default (288): 274                                                                             
libinput Middle Emulation Enabled (289):    0                                                                                   
libinput Middle Emulation Enabled Default (290):    0                                                                           
Device Node (262):  "/dev/input/event1"                                                                                         
Device Product ID (263):    1133, 50487                                                                                         
libinput Drag Lock Buttons (291):   <no items>                                                                                  
libinput Horizonal Scroll Enabled (264):    1                                                  

如何更改滚动速度?

答案1

库输入没有任何类型的“对于每个滚轮,做n线/度”概念作为一个共同方,该设置目前似乎是特定于设备的,因为某些罗技Evdev Scrolling Distance (278)具有可能随“旧”Evdev 驱动程序附带的参数。

这将被视为回归对于我看来的用户体验,最初将可配置的鼠标滚动灵敏度纳入通用工具包(libinput)被拒绝,现在它是拉取请求在未来的版本中 - 可能必须在每个桌面环境中实现函数调用。

解决此类问题的可能性有很多,但取决于 Linux 发行版。

  1. 幸运的是,具有特定于驱动程序的滚动灵敏度 - 通过搜索带有滚动变量的所有输入进行检查:

    x输入列表|切-f2 |切-f2-d'='| \
                xargs -d $'\n' -I'{}' sh -c "xinput list-props'{}' | grep -iq scroll && \
                                        (echo Listing dev id '{}'; xinput list-props '{}')"
    并通过设置特定变量,其中xinput --set-prop <ID> <SUB-ID> <values><ID>可以是设备名称和<SUB-ID>可以是设置名称。

  2. 一般修复是重新修补libinput 代码和重建

  3. 您可以尝试使用 X11 回滚到 udevadm/evdev 接口,然后尝试 X11 变量MOUSE_WHEEL_CLICK_ANGLE

  4. 最后一项的参考,可以使用imwheel模拟鼠标滚动点击乘法值。

    # Should use imwheel --kill --buttons "4 5" to restart imwheel,
    # if the mouse has back/forward buttons, otherwhise imwheel --kill is enough.
    # imwheel must be set to autostart in your DE tools.
    #Edit ~/.imwheelrc to include, where '3' is a multiplier
    ".*"
    None,      Up,   Button4, 3
    None,      Down, Button5, 3
    Control_L, Up,   Control_L|Button4
    Control_L, Down, Control_L|Button5
    Shift_L,   Up,   Shift_L|Button4
    Shift_L,   Down, Shift_L|Button5
    
  5. 鼠标滚轮灵敏度有特定的应用程序设置,例如Chrome 平滑滚动火狐平滑轮 参考

答案2

当前没有用于更改 libinput 设备滚动速度的 api,但是这个博客解释了鼠标滚轮点击如何对应于您可以在 systemd 的 udev 配置文件中更改每个鼠标的移动角度/usr/lib/udev/hwdb.d/70-mouse.hwdb。阅读MOUSE_WHEEL_CLICK_ANGLE此文件开头的注释。

要进行本地更改,请创建一个新文件

 /etc/udev/hwdb.d/71-mouse-local.hwdb

并添加您的首要规则。例如,如果您有 ImExPS/2 鼠标,则可以将每次单击的默认 15 度加倍到 30 度

# ImExPS/2 Logitech Wheel Mouse
mouse:ps2:*:name:ImExPS/2 Logitech Wheel Mouse:
 MOUSE_DPI=400@250
 MOUSE_WHEEL_CLICK_ANGLE=30

重新加载udev数据库

 sudo udevadm hwdb --update
 sudo udevadm trigger /dev/input/event1

答案3

您可以使用以下方法使滚动的“步长”变小,从而使滚动整体变慢:

xinput --set-prop "YOUR TOUCHPAD" "libinput Scrolling Pixel Distance" YOUR_SPEED

添加Option "ScrollPixelDistance" "YOUR_SPEED"到触控板的 xorg conf 中以使其永久化。

以下是更多信息的文档:

https://man.archlinux.org/man/libinput.4#SCROLL_PIXEL_DISTANCE

相关内容