除了控制面板->鼠标之外,还有其他方法可以交换鼠标左键/右键吗

除了控制面板->鼠标之外,还有其他方法可以交换鼠标左键/右键吗

几年前,我开始用左手使用鼠标。我没花多长时间就学会了——只用了几周。从那时起,我的右肩就开始出现问题。

自从我使用左侧的鼠标并交换了按钮后,现在在使用右侧鼠标的电脑上使用远程桌面访问我的电脑时,效果就不好了。

另外,我工作时的主计算机连接了两个鼠标,一个通过 USB,另一个通过 PS/2。最好将左侧鼠标的按钮配置为交换,将右侧鼠标的按钮配置为正常。这样我就可以双向工作了。

有没有办法配置驱动程序,或者是否有可用的增强型驱动程序,让我可以通过鼠标控制它,而不是在 Windows UI 中全局设置左/右交换。

答案1

您可以使用X-鼠标按钮控制交换鼠标按钮。

X-Mouse Button Control 通过拦截点击来执行更改,因此这些更改会传递到任何远程桌面会话。但我认为它没有针对每个鼠标的设置。

答案2

Microsoft Intellipoint 鼠标驱动程序处理交换按钮功能的方式与标准鼠标驱动程序不同,远程桌面可以正常工作:在物理连接的鼠标上单击左键将作为右键单击发送到远程计算机。当从其他地方连接到计算机时,Intellipoint 不会交换按钮。

但是,Intellipoint 软件不会在非 Intellipoint 鼠标上切换按钮。因此,我的家庭工作站在键盘左侧有一个 Intellipoint 鼠标,在键盘右侧有一个随附的戴尔鼠标。对于惯用左手和右手的用户来说,效果都很好。

我的工作电脑有两个戴尔鼠标,运行的是 XP。幸运的是,这两个鼠标的硬件 ID 不同,因此我修改了 Intellipoint 驱动程序安装程序中的 .inf 文件,并使其确信其中一个鼠标是 Microsoft 制造的。

然而,上次尝试时我无法让它在 Win7 下运行,因此当我的新工作电脑到货时,我可能会买一个微软鼠标来配合使用。

一个陷阱:你必须打开标准的“交换按钮”功能离开在安装 Intellipoint 之前。否则,当您从其他地方远程桌面连接到该 PC 时,按钮会交换。

第三方鼠标驱动程序也可能比标准驱动程序运行得更好。

答案3

我认为这里值得一提的是 EitherMouse。当我必须使用 Windows 机器时,我对它非常满意。它使管理多鼠标设置变得轻而易举。

您可以从其网站下载该工具:http://www.eithermouse.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)

答案4

我的 Penguin Ambidextrous Vertical 鼠标在远程会话中工作得很好。另外,我只需要一只鼠标。如果我想从左到右或从右到左切换,我只需点击一个切换开关。我的联想 x230 内置的轨迹点和轨迹板不会将我的设置传送到远程会话中。这让我在路上进行远程会话时很抓狂。

相关内容