在Windows中,有一个Win32系统调用SwapMouseButton来交换鼠标的主按钮。现在,我需要这样的系统调用或方式来交换Linux和MacOS上的鼠标按钮。 通过这个,我想做一键鼠标按钮交换应用程序。
你将如何在C中做到这一点?
答案 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 3
和3 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