python - 如何使用python检查鼠标的系统设置是否是左撇子?
问题描述
动机
我打算用python点击鼠标左键做一些自动化测试。
我的开发和测试环境
我的本地开发机(Win10)是左撇子鼠标。这意味着我单击鼠标左键以显示鼠标右键单击菜单。
测试服务器是右手鼠标。我通常使用 TeamViewer 访问测试服务器,我不需要对测试服务器上的鼠标进行额外设置即可访问。我的意思是,对于 TeamViewer,如果我在 TeamViewer 视口中单击鼠标左键,则鼠标右键单击菜单会在测试服务器上弹出。
问题
我使用 pynput(https://pypi.org/project/pynput/)单击鼠标按钮。这是一个测试代码:
def simulate_left_click(): from pynput.mouse import Button, Controller m = Controller() m.press(Button.right)
在我的左撇子本地机器上,此代码不会弹出鼠标右键单击菜单,这是我想要的,而在右撇子的测试服务器上,此代码会弹出鼠标右键单击菜单。这段代码的这种不一致的行为很烦人。
我想做的事
我想写一个函数'is_system_left_handed()',像这样:
def simulate_left_click():
from pynput.mouse import Button, Controller
m = Controller()
if is_system_left_handed():
m.press(Button.right)
else:
m.press(Button.left)
我的问题
- 如何实现函数'is_system_left_handed()'?可能吗?
- 如果不可能,是否有任何其他 python 包可用于此问题?
谢谢
解决方案
使用GetSystemMetrics(SM_SWAPBUTTON)来检测鼠标按钮是否被交换...
SM_SWAPBUTTON = 23
from win32api import GetSystemMetrics
print(GetSystemMetrics(SM_SWAPBUTTON))
PS:需要pywin32: python -m pip install pywin32
推荐阅读
- ruby-on-rails - Ruby on Rails 下载 S3 视频文件
- java - Java中的混合自旋锁/互斥锁
- oracle - Oracle 多列派生列通过连接更新
- ssms-2016 - Apex Sql Complete 锁定 SSMS
- rust - 不能在 mpsc::channel 上使用 Stream::take_while: bool: Future 不满足
- zsh - “1<”完成了什么?
- javascript - 如何使用 Javascript 一次过滤和搜索多个 div?
- http-headers - 我的 API 上没有安全标头是否被认为是不好的做法?
- python - 在类中使用时关闭 aiohttp ClientSession
- c# - System.IO.DirectoryNotFoundException 怎么解决