如何将鼠标按钮绑定到键盘键或命令(Linux和X11)

如果鼠标具有其他按钮,则可以将其绑定以执行组合键或执行程序,命令或脚本。仅在使用X11时才有效(不适用于Wayland)。这是因为用于此的工具仅支持X11。
使用以下工具将鼠标按钮绑定到组合键:

  • xbindkeys:一个程序,该程序在X中获取键和鼠标按钮事件并启动关联的shell命令
  • Xev:输出X事件内容的工具
  • xdotool:命令行X11自动化工具。这允许您以编程方式(或手动)模拟键盘输入和鼠标活动(以及更多)。

如果不需要将鼠标按钮绑定到键盘键,而仅将程序,命令或脚本绑定到鼠标按钮,则可以跳过xdotool的安装。1.安装xbindkeys,xev,xdotool。

  • DebianUbuntu,Linux Mint,流行! _OS,Elementary OS和其他基于Debian或Ubuntu的Linux发行版:
sudo apt install xbindkeys x11-utils xdotool
  • 软呢帽:
sudo dnf install xbindkeys xorg-x11-utils xdotool
  • openSUSE:
sudo zypper install xbindkeys xev xdotool
  • Arch Linux或Manjaro:
sudo pacman -S xbindkeys xorg-xev xdotool

在其他Linux发行版上,您必须搜索存储库 xdotoolxevxbindkeys 然后安装它们2。获取鼠标按钮的代码。
要获取鼠标按钮的代码,请运行以下命令:

xev | grep button

然后将焦点放在弹出的小窗口上,并在终端上查看输出。然后按鼠标键以获取代码。当您按下按钮时,代码将显示在您运行xev的终端中。例:

$ xev | grep button

state 0x10, button 8, same_screen YES

在此示例中,您稍后需要的按钮代码是 8.3。获取击键,以便稍后使用鼠标按钮发送(如果将命令/脚本/程序绑定到鼠标按钮,则跳过)。
打开终端并运行此命令( AskUbuntu):

xev | sed -ne '/^KeyPress/,/^$/p'

同样,会弹出一个小窗口,需要聚焦。然后一次按下要重新映射到鼠标的键盘键,然后在终端中观看xev命令的输出。
例如,如果您想绑定 Ctrl + Alt + Up 按下鼠标键 Ctrl之后 Alt 最后 Up。就我而言,这是 xev 按这三个键(第一个键是 Control_L 或左控制键,第二 Alt_L 或离开Alt和第三个 Up

KeyPress event, serial 33, synthetic NO, window 0x2200001,
    root 0x1eb, subw 0x0, time 6741696, (46,-37), root:(728,598),
    state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x2200001,
    root 0x1eb, subw 0x0, time 6743289, (46,-37), root:(728,598),
    state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 36, synthetic NO, window 0x2200001,
    root 0x1eb, subw 0x0, time 6744780, (46,-37), root:(728,598),
    state 0x10, keycode 111 (keysym 0xff52, Up), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

写下密钥代码,keysim或密钥名称。您可以使用这三个中的任何一个。您可以将以下其中一个用于上面的第一个键 370xffe3, 要么 Control_L。本文使用键名(例如: Control_L 这是因为左控制键)易于阅读。
请注意,您还可以使用xbindkeys(xbindkeys -k),但它会读取所有活动密钥,这在某些情况下可能会造成混淆。如果你有 Caps_Lock 要么 Num_Lock 依此类推,我个人更喜欢将xev用于此任务。
都没有 xedxbindkeys -k 显示多媒体键的键代码/键盘符号。如果要将多媒体键重新映射到鼠标按钮,可以通过以下方式获取此类键盘符号的列表: 访问此链接鼠标文章:如何在Ubuntu 18.04或19.10(Gnome)上禁用鼠标加速4。创建xbindkeys配置( ~/.xbindkeysrc)。
您也可以创造天空 ~/.xbindkeysrc 使用该文件或以下命令来生成样本配置文件。

xbindkeys -d > ~/.xbindkeysrc

然后打开 ~/.xbindkeysrc 使用您喜欢的文本编辑器。请注意 .xbindkeysrc 这是您主目录中的一个隐藏文件,因此您必须按 Ctrl + h 在文件管理器中查看它(显示隐藏的文件和文件夹)。要将鼠标按钮绑定到组合键,该行 ~/.xbindkeysrc 文件(可能已经包含一些键绑定,可能包含示例配置,可能为空,无论如何)

"xdotool key 'KEY-COMBINATION'"
       b:MOUSE-BUTTON-CODE

哪里:

  • KEY-COMBINATION 步骤3中获得的击键(以键分隔) + 码)
  • MOUSE-BUTTON-CODE 这是在步骤2中获得的鼠标按钮的代码

例:

"xdotool key 'Control_L+Alt_L+Down'"
       b:8

这将重新映射鼠标按钮8(例如,在我的鼠标上是可以用作Web浏览器中的后退按钮的按钮),如下所示: Control_L+Alt_L+Down 在GNOME Shell中使用它来切换工作空间。
重新映射鼠标的前进按钮(本例中为鼠标按钮9) Control_L+Alt_L+Up (在GNOME Shell中切换工作空间),您需要将此添加到 ~/.xbindkeysrc 档案:

"xdotool key 'Control_L+Alt_L+Up'"
       b:9

另一个例子。绑定键盘媒体键以提高和降低音量至鼠标按钮8和9:

"xdotool key 'XF86AudioRaiseVolume'"
       b:9

"xdotool key 'XF86AudioLowerVolume'"
       b:8

同样,根据需要添加任意数量的按键绑定,但要确保您没有使用现有的按键组合。要将命令,脚本或程序绑定到鼠标按钮,请使用此 ~/.xbindkeysrc 档案:

"COMMAND"
       b:MOUSE-BUTTON-CODE

这里:

  • COMMAND 命令,脚本或程序
  • MOUSE-BUTTON-CODE 这是在步骤2中获得的鼠标按钮的代码

您可能还会喜欢:在Linux(X11)上运行或启动应用程序窗口,并使用单个键盘快捷键跳转。
使用鼠标按钮运行程序的示例:

"firefox"
       b:8

当我按下鼠标按钮9时,它将启动Firefox(例如,在我的鼠标上,该按钮可以用作Web浏览器中的后退按钮)。启动xbindkeys。
现在,您可以使用Terminal启动xbindkeys并输入:

xbindkeys

如果xbindkeys正在运行,则可以发出以下命令以使用新配置。

xbindkeys --poll-rc

在某些情况下,更改xbindkeys配置时此命令失败。我不知道为什么。如果发生这种情况,您可以通过终止xbindkeys进程并重新运行来重新启动它。

killall xbindkeys
xbindkeys

在Ubuntu上,如果发现非空内容,则xbindkeys将在系统引导时自动启动(需要未注释的行)。 ~/.xbindkeysrc 配置文件。如果该工具未在您的Linux发行版上自动启动, xbindkeys 对于您的启动程序。

Sidebar