我有一个轨迹球,上面有一些额外的按钮,我想用它们来自动滚动(减轻滚动手指重复运动带来的压力)。我知道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
。