如何将鼠标按钮绑定到键?

Cal*_*ers 21 mouse scripts input-devices

我有一个罗技 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
Run Code Online (Sandbox Code Playgroud)

luk*_*asz 21

xbindkeysXTE可以帮助你。

例如,我的 .xbindkeysrc 文件如下所示:

# close the window under the mouse cursor
"xte 'mouseclick 1' && xte 'keydown Alt_L' 'key F4' 'keyup Alt_L'"
  b:8+Release

# double click
"xte 'mouseclick 1' 'mouseclick 1'"
  b:9
Run Code Online (Sandbox Code Playgroud)


小智 6

感谢大家的解决方案。这是一个更简单的/组合指南(在 Xubuntu 18.04 上完成)。

  1. 打开终端(如 xterm/terminal/terminator),成为 root ( sudo su -) 或在命令前使用 sudo:

    apt install xbindkeys xautomation
    
    Run Code Online (Sandbox Code Playgroud)
  2. 检查按钮映射xev,为此您不需要root权限,因此退出root会话(with exit)或以用户身份打开另一个终端。

    xev | grep button
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将出现一个小窗口。您必须将鼠标移入该窗口并按下要重新映射的按钮。终端中的示例输出将是:

    state 0x0, button 8, same_screen YES
    
    Run Code Online (Sandbox Code Playgroud)

    这是我鼠标上的第二个侧键,我想用作 PAGE_DOWN。

    state 0x0, button 9, same_screen YES
    
    Run Code Online (Sandbox Code Playgroud)

    这是我想用作 PAGE_UP 的第一个(是的,顺序颠倒了)侧边按钮。

  4. 当您拥有要重新映射的所有按钮时,您可以关闭小 xev 窗口。打开您喜欢的编辑器(例如 gedit/vi/nano)并编辑配置文件。

    vi .xbindkeysrc
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果文件中已经有一些内容,请查看是否已经存在类似的绑定(不太可能,默认情况下不是)并在末尾添加。

    #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
    
    Run Code Online (Sandbox Code Playgroud)

    注意:您需要两个条目,一个用于按钮按下,一个用于释放。

  6. 按钮 8+9 将映射到“Next”(即 PAGE_DOWN)和“Prior”(PAGE_UP)键。如果你想映射不同的键,你可以用 xev 找到键符。

    xev | grep keysym
    
    Run Code Online (Sandbox Code Playgroud)
  7. 像以前一样,在终端中启动它,将鼠标移动到小窗口并按下想要的键。

    state 0x0, keycode 117 (keysym 0xff56, Next), same_screen YES,
    
    Run Code Online (Sandbox Code Playgroud)
  8. 保存并杀死 xbindings。

    killall xbindkeys ; xbindkeys
    
    Run Code Online (Sandbox Code Playgroud)

您现在可以使用鼠标上的附加侧键。该设置将在下次重新启动/登录时自动加载。killall [...]如果您更改设置,您只需要上面的命令。