为什么 Microsoft Comfort Mouse 4500 的 xinput 中没有与滚动速度相关的内容

为什么 Microsoft Comfort Mouse 4500 的 xinput 中没有与滚动速度相关的内容

在我随意安装任何附加软件之前,我想了解 xinput 的工作原理以及为什么它与鼠标滚动速度无关。

您能启发我吗?

Ubuntu 18.04.1 LTS x64,GNOME 3.28.2(不确定是否重要)。最新。

$ xinput list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad                  id=11   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® Comfort Mouse 4500   id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ HP TrueVision HD Camera: HP Tru           id=8    [slave  keyboard (3)]
    ↳ Intel Virtual Button driver               id=9    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=10   [slave  keyboard (3)]
    ↳ HP Wireless hotkeys                       id=12   [slave  keyboard (3)]
    ↳ HP WMI hotkeys                            id=13   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® Comfort Mouse 4500   id=15   [slave  keyboard (3)]
    ↳ Chicony USB Keyboard                      id=16   [slave  keyboard (3)]
    ↳ Chicony USB Keyboard                      id=17   [slave  keyboard (3)]

“指针”下的鼠标详细信息:

$ xinput list-props 14
Device 'Microsoft Microsoft® Comfort Mouse 4500':
    Device Enabled (142):   1
    Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Natural Scrolling Enabled (289):   0
    libinput Natural Scrolling Enabled Default (290):   0
    libinput Scroll Methods Available (293):    0, 0, 1
    libinput Scroll Method Enabled (294):   0, 0, 0
    libinput Scroll Method Enabled Default (295):   0, 0, 0
    libinput Button Scrolling Button (727): 2
    libinput Button Scrolling Button Default (728): 2
    libinput Middle Emulation Enabled (729):    0
    libinput Middle Emulation Enabled Default (730):    0
    libinput Accel Speed (296): -0.258993
    libinput Accel Speed Default (297): 0.000000
    libinput Accel Profiles Available (731):    1, 1
    libinput Accel Profile Enabled (732):   1, 0
    libinput Accel Profile Enabled Default (733):   1, 0
    libinput Left Handed Enabled (298): 0
    libinput Left Handed Enabled Default (299): 0
    libinput Send Events Modes Available (266): 1, 0
    libinput Send Events Mode Enabled (267):    0, 0
    libinput Send Events Mode Enabled Default (268):    0, 0
    Device Node (269):  "/dev/input/event16"
    Device Product ID (270):    1118, 1900
    libinput Drag Lock Buttons (300):   <no items>
    libinput Horizontal Scroll Enabled (301):   1

仅与滚动相关的部分:

$ xinput 列表属性 14 | grep -i'滚动'
    libinput 自然滚动已启用 (289): 0
    libinput 自然滚动启用默认值 (290):0
    库输入滚动可用方法 (293):0, 0, 1
    库输入滚动已启用方法 (294): 0, 0, 0
    库输入滚动方法启用默认值 (295): 0, 0, 0
    libinput按钮滚动按钮 (727): 2
    libinput按钮滚动按钮默认值(728):2
    libinput 水平滚动已启用(301):1

“键盘”下的鼠标详细信息:

$ xinput list-props 15
Device 'Microsoft Microsoft® Comfort Mouse 4500':
    Device Enabled (142):   1
    Coordinate Transformation Matrix (144): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    libinput Send Events Modes Available (266): 1, 0
    libinput Send Events Mode Enabled (267):    0, 0
    libinput Send Events Mode Enabled Default (268):    0, 0
    Device Node (269):  "/dev/input/event16"
    Device Product ID (270):    1118, 1900

答案1

不会修复,至少,这是目前的状态libinput

解决方法,使用 Udev HWDB(低级修复)

  • udev(1)针对特定鼠标型号的HWDB 设置。

    来源:U&L:使用 libinput 更改滚动速度

    我确认,这是来自 udev 上游代码库的当前解决方案

    1. 检查您的鼠标标识:供应商 ID、产品 ID、设备名称

      鼠标插入时

      sudo lsusb
      

      运行以下命令之一,然后重新连接鼠标

      sudo udevadm monitor -u
      sudo journalctl -k -b -f
      

      并检查systemd/hwdb.d/70-mouse.hwdb/lib/udev/hwdb.d/70-mouse.hwdb或者在系统中查找本地文件。搜索相同或相似的设备。

    2. 打开终端,创建71-mouse-local.hwdb文件

      sudo nano /etc/udev/hwdb.d/71-mouse-local.hwdb
      
    3. 从步骤(1)复制这些行并将它们附加到新文件中,添加滚轮点击角度条目并根据需要设置角度(默认值=15 度/点击,为整数值),如下所示:

      # Microsoft Comfort Mouse 4500
      mouse:usb:v045ep076c:name:Microsoft Microsoft® Comfort Mouse 4500:
       MOUSE_DPI=1000@125
       MOUSE_WHEEL_CLICK_ANGLE=15
      

      如果您在 中找不到您的设备70-mouse.hwdb,请使用步骤 (1) 中收集的信息以这种格式创建它

      mouse:usb:v <VendorID> p <ProductID> :name: <DeviceName> :
      
    4. 保存并关闭

      Ctrl+ O, Ctrl+X

    5. 更新udev硬件数据库,触发相应事件节点的变化

      sudo systemd-hwdb update
      sudo udevadm trigger /dev/input/event16
      

      event16xinput输出所报告。

    笔记

    此答案是针对 OP 案例定制的,但可以针对其他模型进行调整。已将其扩展为更通用的。

    • 完整的上游说明如下:systemd/hwdb.d/70-mouse.hwdb或者在您的系统中查找本地文件70-mouse.hwdb。您也可以在其中查找其他高级功能。

    • MOUSE_WHEEL_CLICK_COUNT一个覆盖MOUSE_WHEEL_CLICK_ANGLE,当角度参数不够精确时使用它。

      MOUSE_WHEEL_CLICK_COUNT默认值为 24 次点击/旋转或点击/360 度,接受整数值

      例子:

      # Microsoft Comfort Mouse 4500
      mouse:usb:v045ep076c:name:Microsoft Microsoft® Comfort Mouse 4500:
       MOUSE_DPI=1000@125
       MOUSE_WHEEL_CLICK_ANGLE=15
       MOUSE_WHEEL_CLICK_COUNT=24
      

      MOUSE_WHEEL_CLICK_ANGLE出于兼容性原因,即使其值与声明的无效,也是必须的MOUSE_WHEEL_CLICK_COUNT

未来,GUI 工具包(高级修复)

  • (2) 可能在 GUI 工具包级别实现。公平地希望,当涉及到大型免费社区项目之间的协作时,就像任意 Unicode 输入的情况一样,它只在 GTK 中实现。

    有些应用程序不会等待这一点,例如某些浏览器和游戏(Firefox、Chromium、SDL 游戏等)。

    上面链接的错误报告中有一个来自 GUI 工具包的错误报告列表。

答案2

udev规则适用于我:

# Microsoft Comfort Mouse 4500
mouse:usb:v045ep076c:name:Microsoft Microsoft® Comfort Mouse 4500:
 MOUSE_DPI=1000@125
 MOUSE_WHEEL_CLICK_ANGLE=35

谢谢

相关内容