如何使用 libinput 禁用轨迹点滚动?

如何使用 libinput 禁用轨迹点滚动?

更新:现在中键单击模拟不再起作用,所以我比以往任何时候都更加陷入困境。按下按钮 1 和 3 就像按下中间按钮一样充当滚轮。

我有一个带有轨迹点的联想键盘,但需要能够中键单击和拖动。虽然大多数文章都说如何启用滚轮模拟,但我遇到了相反的问题:滚动功能默认情况下处于打开状态,我无法将其关闭。我可以通过中间仿真来解决这个问题,但这很尴尬,因为我需要用两只手来做。以下是报告的属性:

$ xinput list-props 'pointer:Lenovo ThinkPad Compact USB Keyboard with TrackPoint'
Device 'Lenovo ThinkPad Compact USB Keyboard with TrackPoint':
        Device Enabled (155):   1
        Coordinate Transformation Matrix (157): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
        libinput Natural Scrolling Enabled (290):       0
        libinput Natural Scrolling Enabled Default (291):       0
        libinput Scroll Methods Available (292):        0, 0, 1
        libinput Scroll Method Enabled (293):   0, 0, 0
        libinput Scroll Method Enabled Default (294):   0, 0, 1
        libinput Button Scrolling Button (295): 2
        libinput Button Scrolling Button Default (296): 2
        libinput Middle Emulation Enabled (297):        0
        libinput Middle Emulation Enabled Default (298):        0
        libinput Accel Speed (299):     0.000000
        libinput Accel Speed Default (300):     0.000000
        libinput Accel Profiles Available (301):        1, 1
        libinput Accel Profile Enabled (302):   1, 0
        libinput Accel Profile Enabled Default (303):   1, 0
        libinput Left Handed Enabled (304):     0
        libinput Left Handed Enabled Default (305):     0
        libinput Send Events Modes Available (275):     1, 0
        libinput Send Events Mode Enabled (276):        0, 0
        libinput Send Events Mode Enabled Default (277):        0, 0
        Device Node (278):      "/dev/input/event24"
        Device Product ID (279):        6127, 24647
        libinput Drag Lock Buttons (306):       <no items>
        libinput Horizontal Scroll Enabled (307):       0
        Evdev Wheel Emulation (391):    0

您可以看到我已经禁用了可用的滚动方法和水平滚动。甚至还添加了 Evdev 属性。唯一可能仍然有帮助的明显事情是更改滚动按钮(属性 295),但我无法让它工作:

$ xinput set-int-prop 'pointer:Lenovo ThinkPad Compact USB Keyboard with TrackPoint' 295 8 3
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  131 (XInputExtension)
  Minor opcode of failed request:  57 ()
  Serial number of failed request:  19
  Current serial number in output stream:  20

我正在使用 Arch Linux。在理想的情况下,我可以找到一个动态解决方案,让我可以使用 shell 脚本随意启用和禁用滚轮。但出于绝望,我也对涉及 xorg.conf 的解决方案或其他需要重新启动 X 服务器以启用或禁用轮子的方法感兴趣。

答案1

尝试这个:

xinput set-prop <device> 295 3

这似乎不是一个 int 道具。

答案2

对于轨迹点 libinput 默认为按钮滚动,通常称为鼠标滚轮模拟或虚拟滚动。更改此值取决于您的窗口管理器,但它将反映该 libinput api。

例如,在 sway 中,您可以调用swaymsg -t get_inputs -r来获取系统输入的 json 列表、它们的标识符以及当前应用的 libinput 设置。然后您可以使用它们来设置所需的滚动方法。例如,我的相关设备是'2:10:TPPS/2_Elan_TrackPoint'。如果我想禁用按钮滚动,我可以将 更改scroll_method为其他按键事件on_button_down,也可以将 或设置scroll_buttondisable另一个按键事件(这里的默认值是 274,对应于我的鼠标中键);您可以使用上一个命令检查默认值,get_inputs以便可以打开和关闭该行为。一如既往地看到手册页更多细节。

相关内容