我认为EitherMouse应该在这里提及。当我必须使用Windows框时,我对此感到非常满意。它使管理多鼠标设置变得轻而易举。
您可以在其网站上下载该工具:http : //www.twomouse.com/
为了后人的缘故,我还将在此处包括针对GNU / Linux的解决方案。我认为最好的方法是定义一个自定义的Xorg InputClass部分配置。只要检测到鼠标,该设置就会生效。这是我的配置文件/etc/X11/xorg.conf.d/50-mouses-config.conf
:
Section "InputClass"
Identifier "Lachesis Left Handed"
MatchUSBID "1532:000c"
Option "ButtonMapping" "3 2 1"
EndSection
该Identifier
值不重要。可以使用以下lsusb
命令找到USB ID 。要查看可用的按钮,xev
可以在按下鼠标按钮时使用该工具获取按钮ID。该命令xinput list
可用于获取系统上所有输入设备及其xinput ID的列表。您可以使用以下命令来获取设备按钮的完整列表xinput get-button-map N
,其中N是设备的xinput ID,例如xinput get-button-map 10
。您可以尝试使用以下xinput set-button-map N *mapping*
命令修改设备按钮的映射,例如:xinput set-button-map 10 3 2 1
您必须重新启动X会话才能使新的Xorg配置生效。出现问题时,Xorg.log(tail -f /var/log/Xorg.0.log
)可能会为您提供有关发生问题的线索。
一个xinput set-button-map
替代的,可以使用,但是少动(将被检测到您的设备时不被自动应用)。可以将以下脚本配置为在启动时运行(在Ubuntu中,有一个启动应用程序GUI进行设置)。由于某些原因,如果仅从〜/ .profile文件中调用脚本,它将无法正常工作。MOUSE_NAME变量对应于xinput list
命令输出中为鼠标指定的任何名称。
#!/bin/bash
MOUSE_NAME="Razer Razer Lachesis"
BUTTONS_MAP="3 2 1"
while read -r line; do
raw_line=$(grep "$MOUSE_NAME" | grep "pointer")
if [ ! -z "$raw_line" ]; then
mouse_id=$(echo "$raw_line" | cut -d '=' -f2 | sed 's/\t.*//g')
echo "Found ${MOUSE_NAME}'s id: $mouse_id"
xinput set-button-map $mouse_id $BUTTONS_MAP
break
fi
done < <(xinput list)