将鼠标按钮映射到滚动行为

将鼠标按钮映射到滚动行为

我有一个轨迹球,上面有一些额外的按钮,我想用它们来自动滚动(减轻滚动手指重复运动带来的压力)。我知道xev我想使用的按钮编号以及如何将额外的按钮映射到滚轮按钮。我目前拥有的是:

xinput --set-button-map 9 1 2 3 4 5 6 7 8 9 4 5 12

(9 是轨迹球的指针 ID)。这确实正确地使所选的额外按钮上下滚动……一次一行。因此,与滚轮行为实际上没有区别,几乎符合我的预期。

我想要的是按住按钮 10 和 11 时进行连续滚动。与倾斜滚轮类似。xev显示倾斜滚轮实际上注册为按钮 6 和 7 的重复按下和释放事件。

所以,我的问题是,设置这个的最简单方法是什么?按钮 10 保持模拟按钮 4 的重复按下和释放,按钮 11 执行相同操作以模拟按钮 5。也许具有可配置的重复延迟和重复率?


ETA:
一个简单的解决方案就是将按钮 6 和 7 分别映射到 5 和 4。但这并不理想,因为我会失去水平滚动。

我还发现 Chromexinput完全忽略了该命令!如果我错了,请纠正我,但为了使用 xinput2 而不是 xinput1,您必须使用驱动evdev程序而不是libinput中的默认驱动程序Xorg。我通过添加一个配置文件来管理它:

Section "InputClass"  
  Identifier      "Evdev Mouse"  
  MatchProduct    "HUGE"  
  Driver          "evdev"  
  Option          "ButtonMapping" "1 2 3 4 5 5 4 8 9 4 5 12"  
EndSection  

MatchProduct(根据你的喜好改变字符串)

现在它也可以在 Chrome 中使用。但最初的问题仍然存在:如何将按钮 10 和 11 映射到重复4 和 5 的新闻发布?

答案1

灵感来自我使用的帖子

滚动文件

#!/bin/bash
while true
do
    xte "key $1"
    sleep 0.1
done

和 ~/.xbindkeysrc

"~/scroll.sh Down"
  b:8
"killall scroll.sh"
  b:8 + Release
"~/scroll.sh Up"
  b:9
"killall scroll.sh"
  b:9 + Release

您可能应该用我的按钮替换正确的按钮 b:10 和 b:11。

然后运行

killall xbindkeys
xbindkeys

更新
最近我用https://github.com/philipl/evdevremapkeys它允许滚动映射和许多其他操作。但它需要 root 权限。
示例配置:

# ~/evdevremapkeys.yaml
devices:
- input_name: 'Compx 2.4G Receiver'
  input_phys: 'usb-0000:00:14.0-3/input1' # replace with your device
  output_name: remap-mouse
  remappings:
   BTN_EXTRA:
   - code: REL_WHEEL
     type: EV_REL
     value: 1
     repeat: true
     rate: .1
   BTN_SIDE:
   - code: REL_WHEEL
     type: EV_REL
     value: -1
     repeat: true
     rate: .1

运行python3 evdevremapkeys.py -h以查找您的设备。
从 开始sudo python3 evdevremapkeys.py -f ~/evdevremapkeys.yaml

相关内容