使用libinput更改滚动速度


16

我的鼠标滚轮滚动得太慢,因此我想增加每个滚动“刻度”的行数。我读到可以通过设置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                                                  

如何更改滚动速度?我在Arch Linux Xfce 4.12上运行。


1
现在有一个要求 libinput实现此功能的功能(由@clel提供)。
n.st

Answers:


4

当前没有用于更改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

1
There is no current api for changing the scroll speed for libinput devices:此后是否发生了变化?
orschiro

1
@orschiro我得到的印象不是api。希望可以在udev中正确识别和配置所有设备,从而无需用户配置。查看所有libinput博客。特别是1.4对应于完成libinput的初始TODO列表。
meuh

4
在Ubuntu 16.10中,系统udev conf位于/lib/udev/hwdb.d/70-mouse.hwdb中
Jonas Berlin

2
无论如何用触摸板做同样的事情?
Francesco '18

1
@daboross是的。有两个方面需要考虑:上面的答案只是试图标准化设备的输出,以便例如当用户在两只不同的鼠标上进行相同量的移动时,尽管有报告,系统仍可以计算出它们是等效的由于硬件不同。第二个方面是,这应代表多少屏幕移动,并由面对用户的复杂软件(例如图形工具包,窗口系统,屏幕dpi等)决定。
meuh 18/09/16

3

Libinput没有任何形式的“为每个车轮滚动,做ñ线/度”的概念作为共同当事人,设置似乎是特定于设备现在,一些罗技具有的参数Evdev Scrolling Distance (278)是可能与“旧”来了Evdev驱动程序包括。

在我看来,这将被认为是用户体验的回归,其中一开始,拒绝将可配置的鼠标滚动灵敏度包含到通用工具包(libinput)中,现在它是将来版本中拉取请求的一部分–可能必须在每个桌面环境中实现函数调用。

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

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

    xinput列表| 切-f2 | 切-f2 -d'='| \
                xargs -d $'\ n'-I'{}'sh -c“ xinput list-props'{}'| grep -iq滚动&& \
                                        (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 SmoothScrollFirefox SmoothWheel ref


1
Libinput转换在许多方面已成为UX回归,几乎所有这些都归因于用户对其硬件行为的控制...鉴于这种情况正在发生,这是不幸的。
道格拉斯·加斯凯尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.