我在 kUbuntu 18.04 上通过 xbindkeys 配置了我的 Logitech MX-Revolution 鼠标。我在滚轮(左/右滑动)上设置了额外的按钮来播放下一首/上一首歌曲。
我的问题是,我的罗技鼠标上的按键映射相当于在我的触控板上向左/向右滚动(手指滑动)。由于我的联想 Thinkpad 也有一个带有物理鼠标按钮的轨迹点,所以它也相当于在向左/向右移动轨迹点的同时按下鼠标中键。
我如何告诉 xbindkeys,如果我在 Logitech 鼠标上使用按键事件,它应该只播放下一首/上一首歌曲?如何为不同的输入设备分别设置 xbindkeys?
这是我的 .xbindkeysrc 文件:
######### MultimediaControl #########
# backward button => previous song
"xte 'key XF86AudioPrev'"
m:0x0 + b:6
# forward button => next song
"xte 'key XF86AudioNext'"
m:0x0 + b:7
#################################
提前致谢!
有一个很棒的工具的解决方法
xinput
在您的情况下,您总共有 3 个鼠标设备,其中 2 个是内置的,一个是您的外接鼠标。
首先我们需要获取这 3 个设备的 ID。
xinput list
示例输出:
我有 3 个设备是鼠标输入
例如,当罗技 USB 接收器鼠标 id=16 鼠标滚轮向上和鼠标滚轮向下时,我想绑定两个命令,即按钮 b:4 和 b:5
如果我的
~/.xbindkeysrc
内容如下所示,所有 3 台设备都将执行相同的功能。xmodmap -pp
并查看有多少按钮可用。从
man xmodmap
示例输出
xmodmap -pp
这意味着即使我们没有 20 个物理按钮,我们也可以配置特定按钮来执行这 20 个中的其他按钮的操作。
~/.xbindkeysrc
文件内容,如下所示。内容:
killall xbindkeys; xbindkeys
所以现在很清楚,如果我按下 b:19 和 b:20,我的命令就会运行。
现在的诀窍是将 id=16 b:4 和 b:5 的罗技鼠标物理按钮的按钮映射到 b:19 和 b:20
从
man xinput
xinput --set-button-map 16 1 2 3 19 20
例子:
完成,现在您可以
~/.xbindkeysrc
使用罗技鼠标滚轮向上和向下运行您的两个命令,而其他两个设备具有向上和向下滚动的原始功能。此按钮映射在注销或重新启动后不会持续存在。
xinput --set-button-map 16 1 2 3 19 20
以在系统启动时运行。请注意,如果您以后更改罗技鼠标的 USB 插槽,id 可能与 xinput 列表不同,这将不起作用。您需要获取 id 并在启动命令中更改它。