在Windows中,有一个Win32系统调用SwapMouseButton来交换鼠标的主键。现在,我需要这样的系统调用或者在Linux和MacOS上交换鼠标按钮的方法。借此,我想做一个鼠标一键互换的应用。
在C中如何做到这一点呢?
发布于 2013-02-11 15:02:48
我不认为有系统调用可以做到这一点。鼠标由X系统操作,而不是由内核操作。
您可以运行此外壳命令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
发布于 2014-12-08 10:52:02
我不知道输出是否可靠/可移植,但xmodmap -pp
会报告当前的指针按钮映射,因此根据您的用例,您可以使用它来切换状态。
例如,作为一个外壳命令,在我的系统上,下面的命令在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
https://stackoverflow.com/questions/14806687
复制相似问题