关于 Linux 中模拟鼠标
问题的背景是我想用自动化脚本来玩 Stardew Valley 的小游戏,刷钱,但是遇到了一系列问题,这里记录我的一些历程。
pyautogui/pydirectinput
pyautogui
是我第一个考虑的方案。虽然可以正常的移动鼠标,点击,但是游戏内却没有点击事件。
搜索发现一般游戏在 windows
下使用的是 directX
,所以我尝试在 windows
下使用 pydirectinput
写脚本,但是仍然游戏内没有点击事件。
由于我常用 Linux
,所以转战更了解的 Linux
uinput
这是我搜索 Linux 模拟鼠标事件
出来的第一眼可行的方案。
参考已有的脚本,写出来,还是在游戏内部无法检测。
谷歌搜索没有解决方法,疑似是 steam
内单独将 uinput
的虚拟设备给屏蔽掉了。
xdotool
这是在 X
环境下的一个模拟用户输入事件的工具。
但是还是老问题。
由于鼠标本身事件可行,考虑直接利用已有的鼠标进行操作。
evemu
event emulator
是一个基于 libevdev
控制事件的小工具。
测试发现合理。
观察源代码,发现只是将 uinput
的 devHandler
换成 /dev/input/eventX
(物理鼠标事件文件)即可。
手写一遍,问题依旧。
观察事件时间,发现当鼠标点击时间不超过 时,游戏会忽略这个事件。
增加间隔为 ,成功。
增大间隔,尝试重新利用 uinput
,无用。应该确实是屏蔽了 uinput
的原因。
所写源代码以及尝试放在 jeefies/autoclick 中。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?