首页 > 系统相关 >关于 Linux 中模拟鼠标

关于 Linux 中模拟鼠标

时间:2024-03-09 22:00:33浏览次数:34  
标签:游戏 uinput 点击 事件 Linux 模拟 鼠标

问题的背景是我想用自动化脚本来玩 Stardew Valley 的小游戏,刷钱,但是遇到了一系列问题,这里记录我的一些历程。

pyautogui/pydirectinput

pyautogui 是我第一个考虑的方案。虽然可以正常的移动鼠标,点击,但是游戏内却没有点击事件。

搜索发现一般游戏在 windows 下使用的是 directX,所以我尝试在 windows 下使用 pydirectinput 写脚本,但是仍然游戏内没有点击事件。

由于我常用 Linux,所以转战更了解的 Linux

uinput

这是我搜索 Linux 模拟鼠标事件 出来的第一眼可行的方案。

参考已有的脚本,写出来,还是在游戏内部无法检测。

谷歌搜索没有解决方法,疑似是 steam 内单独将 uinput 的虚拟设备给屏蔽掉了。

xdotool

这是在 X 环境下的一个模拟用户输入事件的工具。

但是还是老问题。


由于鼠标本身事件可行,考虑直接利用已有的鼠标进行操作。

evemu

event emulator 是一个基于 libevdev 控制事件的小工具。

测试发现合理。

观察源代码,发现只是将 uinputdevHandler 换成 /dev/input/eventX(物理鼠标事件文件)即可。

手写一遍,问题依旧。

观察事件时间,发现当鼠标点击时间不超过 \(\approx 60ms\) 时,游戏会忽略这个事件。

增加间隔为 \(100ms\),成功。

增大间隔,尝试重新利用 uinput,无用。应该确实是屏蔽了 uinput 的原因。


所写源代码以及尝试放在 jeefies/autoclick 中。

标签:游戏,uinput,点击,事件,Linux,模拟,鼠标
From: https://www.cnblogs.com/jeefy/p/18063446

相关文章

  • Linux/macOS 查看网络接口
    Linux$nmclidevicestatusDEVICETYPESTATECONNECTIONenp0s5ethernetconnectedWiredconnection1docker0bridgeconnected(externally)docker0loloopbackunmanaged......
  • NOIP2024 模拟赛1
    \(2023\)赛年的结束,\(2024\)赛年的开始。我们会继续前行,也永远会。如今走过这世间万般流连翻过岁月不同侧脸措不及防闯入你的笑颜我曾难自拔于世界之大也沉溺于其中梦话不得真假不做挣扎不惧笑话我曾将青春翻涌成她也曾指尖弹出盛夏心之所动且就随缘去吧逆着光......
  • Linux Centos7安装node环境
    1、下载nodeNode.js中文网https://nodejs.cn/download/2、解压tar-xvf****.tar.xz3、配置环境变量vim/etc/profile文件最后增加exportPATH=$PATH:你的目录/binsource/etc/profile让环境变量配置生效4、配置淘宝镜像npmconfigsetregistryhttps://reg......
  • WindTerm的安装及远程连接Linux系统步骤
    目录WindTerm下载WindTerm远程连接LinuxWindTerm下载官网下载链接WindTerm网盘下载链接WindTerm不需要安装,将下载的压缩包解压后直接找到WindTerm.exe执行文件,双击即可运行WindTerm远程连接Linux1.先获取你的Linux的IP地址,以下以Centos7为例系统右建-在终端中打开输入if......
  • 05_Linux相对路径和绝对路径
    Linux相对路径和绝对路径什么是绝对路径?概念:目标位置的完整路径。绝对路径都是从根目录开始,Linux的根目录是/举例:北京海淀区/地球/中国/北京市/海淀区/复兴路/100号什么是相对路径?概念:目标路径是相对于你当前所在位置为基准的路径相对路径一般都是以./开头的举例:我现......
  • SFTP 操作Linux远程服务器的文件
    SFTP操作Linux远程服务器的文件1.列出目录下的文件2.删除/home/username/test.txt3.上传文件到Linux服务器4.下载Linux服务器文件到本地5.下载Linux服务器文件为byte[]添加依赖<dependency><groupId>com.jcraft</groupId><artifactId>......
  • 升级Linux内核版本
    ```shell#查看内核版本,jw版本ceph默认format=2,2.x及之前的的内核版本需手动调整format=1#4.x之前要关闭object-mapfast-diffdeep-flatten功能才能成功映射到内核,这里使用的是centos7.9,内核版本3.10#1.查看当前内核uname-r#2.备份数据#3.添加ELRepo源rpm--impor......
  • Linux文件上传百度云盘轻松解决数据传输和备份
    本文主要的目的就是在Linux环境下通过命令行来使用百度云盘,直接在服务器上打包压缩备份将数据传输到百度网盘,之后可以进行轻松分享,而且还可以支持备份,解决文件的传输和分享难题。插件介绍bypy是一个Python客户端,用于操作百度网盘提供了丰富的命令行操作。该工具能够直接在Li......
  • Linux架构24 ansible之get_url模块, 服务管理模块, 用户管理模块, 定时任务模块, 挂载
    3.get_url模块-name:Downloadfoo.confget_url:url:http://example.com/path/file.confdest:/etc/foo.confmode:'0440'checksum:md5:b5bb9...#公司内部库,验证文件是否为要求的文件checksum:sha256:b5bb9...#另一种验证方式......
  • linux安装nvm和node
    linux安装nvm和node一、环境debian10nodejs二、安装2.1安装NVM运行以下命令下载并运行NVM安装脚本:curlhttps://raw.githubusercontent.com/creationix/nvm/master/install.sh|bash上面的命令将安装NVM并在.bashrc文件中进行所有必需的环境设置。激活所有设......