我有一个罗技 MX400 激光鼠标它有 5 个按钮 + 4 个用于垂直/水平滚动。我希望将其设置为按滚轮上的右键将发送Ctrl+ Tab,按左键将发送Ctrl+ Shift+ Tab,而不是水平滚动,这将允许我在浏览器中循环切换选项卡。
此外,如果我可以将中间的按钮重新映射到侧面的按钮之一,那就太好了,因为它真的很难按下。
另一个好处是如果我可以编写一个脚本,使我能够定义哪些按钮可以根据当前处于活动状态的窗口执行哪些操作。
我尝试过使用xmodmap
,但我只知道如何重新排列按钮,而看不到它们发送按键信号。
提前致谢。
按钮图(使用xev
):
Left 1
Middle 2
Right 3
ScrollUp 4
ScrollDown 5
ScrollLeft 6
ScrollRight 7
Backward 8
Forward 9
答案1
答案2
感谢大家提供解决方案。这里有一个更简单/综合的指南(在 Xubuntu 18.04 上完成)。
打开一个终端(例如 xterm/terminal/terminator),成为 root 用户(
sudo su -
)或在命令前使用 sudo:apt install xbindkeys xautomation
使用 检查按钮映射
xev
,为此您不需要 root 权限,因此退出 root 会话(使用exit
)或以用户身份打开另一个终端。xev | grep button
一个小窗口会出现。你必须将鼠标移到该窗口中并按下要重新映射的按钮。终端中的示例输出将是:
state 0x0, button 8, same_screen YES
这是我的鼠标上的第二个侧面按钮,我想将其用作 PAGE_DOWN。
state 0x0, button 9, same_screen YES
这是我想要用作 PAGE_UP 的第一个(是的,顺序是相反的)侧面按钮。
当您拥有所有想要重新映射的按钮时,您可以关闭小 xev 窗口。打开您最喜欢的编辑器(例如 gedit/vi/nano)并编辑配置文件。
vi .xbindkeysrc
如果文件中已经有一些内容,请查看是否已经存在类似的绑定(不太可能,默认情况下不是)并在末尾添加。
#Pagedown press "xte 'keydown Next'" b:8 #Pagedown release "xte 'keyup Next'" b:8 + Release #Pagedup press "xte 'keydown Prior'" b:9 #Pageup release "xte 'keyup Prior'" b:9 + Release
注意:您需要两个条目,一个用于按钮按下,一个用于释放。
按钮 8+9 将映射到“Next”(即 PAGE_DOWN)和“Prior”(即 PAGE_UP)键。如果您想要映射不同的键,可以使用 xev 找到键符号。
xev | grep keysym
像以前一样,在终端中启动它,将鼠标移到小窗口并按下所需的键。
state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
保存并终止 xbindings。
killall xbindkeys ; xbindkeys
您现在可以使用鼠标上的附加侧键。下次重启/登录时将自动加载该设置。killall [...]
如果您更改设置,则只需使用上面的命令即可。
答案3
对于我和我的 Logitech G402 鼠标来说,Piper 鼠标配置工具运行得非常完美!
https://github.com/libratbag/piper
可通过 apt 安装
sudo apt install piper