0

在 Windows 中,有一个 Win32 系统调用 SwapMouseButton 来交换鼠标的主按钮。现在,我需要这样的系统调用或在 Linux 和 MacOS 上交换鼠标按钮的方法。通过这个,我想制作一键式鼠标按钮交换应用程序。

你将如何在 C 中做到这一点?

4

2 回答 2

1

我认为没有系统调用可以做到这一点。鼠标是由 X 系统操作的,而不是由内核操作的。
您可以运行此 shell 命令xmodmap -e "pointer = 3 2 1"来交换左右按钮,并运行xmodmap -e "pointer = 1 2 3"以恢复原始设置。
您也可以使用execveC执行上述命令。

编辑

system功能实际上更易于使用:

system("xmodmap -e \"pointer = 3 2 1\""); // for swapping buttons
system("xmodmap -e \"pointer = 1 2 3\""); // for restoring functionality
于 2013-02-11T07:02:47.637 回答
0

我不知道输出是否可靠/便携,但xmodmap -pp会报告当前的指针按钮映射,因此根据您的用例,您可以使用它来切换状态。

例如,作为一个shell 命令,在我的系统上,以下切换(并报告)和之间的前三个按钮1 2 33 2 1嗯,这是一个假设,但它足以满足我的要求)。

(xmodmap -pp | grep -q "\b1\b  *\b1\b") && xmodmap -e "pointer = 3 2 1" || xmodmap -e "pointer = 1 2 3"; xmodmap -pp | head -7
于 2014-12-08T02:52:01.503 回答