在linux和MacOS上交换鼠标按钮

时间:2013-02-11 05:57:58

标签: c linux

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

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

2 个答案:

答案 0 :(得分:1)

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

修改

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

system("xmodmap -e \"pointer = 3 2 1\""); // for swapping buttons
system("xmodmap -e \"pointer = 1 2 3\""); // for restoring functionality

答案 1 :(得分:0)

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

e.g。作为一个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