首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在linux和MacOS上交换鼠标按钮

在linux和MacOS上交换鼠标按钮
EN

Stack Overflow用户
提问于 2013-02-11 13:57:58
回答 2查看 428关注 0票数 0

在Windows中,有一个Win32系统调用SwapMouseButton来交换鼠标的主键。现在,我需要这样的系统调用或者在Linux和MacOS上交换鼠标按钮的方法。借此,我想做一个鼠标一键互换的应用。

在C中如何做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-11 15:02:48

我不认为有系统调用可以做到这一点。鼠标由X系统操作,而不是由内核操作。

您可以运行此外壳命令xmodmap -e "pointer = 3 2 1"来交换左右按钮,并运行xmodmap -e "pointer = 1 2 3"来恢复原始设置。

您也可以使用execve从C执行上面的命令。

编辑

system函数实际上更易于使用:

代码语言:javascript
运行
复制
system("xmodmap -e \"pointer = 3 2 1\""); // for swapping buttons
system("xmodmap -e \"pointer = 1 2 3\""); // for restoring functionality
票数 1
EN

Stack Overflow用户

发布于 2014-12-08 10:52:02

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

例如,作为一个外壳命令,在我的系统上,下面的命令在1 2 33 2 1之间切换(并报告)前三个按钮(嗯,它是一个假设,但它已经足够满足我的需求了)。

代码语言:javascript
运行
复制
(xmodmap -pp | grep -q "\b1\b  *\b1\b") && xmodmap -e "pointer = 3 2 1" || xmodmap -e "pointer = 1 2 3"; xmodmap -pp | head -7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14806687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档