最近在研究 AI 玩 CS2 ,模型训练完毕后测试效果,遇到比较奇葩的情况: Python 几个模拟输入的库均可操作键盘按键、鼠标单击事件,唯独不支持鼠标的移动。(为什么不一起禁用了?) 翻了几个仓库,知道可行的方案是:Andunio 开发板输入、罗技驱动、Kmclass 。目前正在使用罗技驱动,但是有个问题,在移动的过程中,鼠标位置会被重置为(960,540)屏幕中心点,移动到目标点,需要分 3 次移动,速度太慢了。kmclass 驱动因为 ASUS 死活不给关 Security Boot ,W 用不了,而且还不清楚是否支持最新 W10 想问还有没有比较成熟的方案,这些太鸡肋。
1
codehz 211 天前
cs2 用 direct input 的吧,不然没法屏蔽系统层面的鼠标加速()
另外你搞这个不怕封号的吗,还是说不进 vac 服单纯测试效果? |
4
nipvc 211 天前 via iPhone
目前正在使用罗技驱动,但是有个问题,在移动的过程中,鼠标位置会被重置为(960,540)屏幕中心点,移动到目标点,需要分 3 次移动,速度太慢了。
移动到目标点为啥要三次移动?移动到目标点指什么? cs2 鼠标用的 rawinput 接口 |
5
nipvc 211 天前 via iPhone
模拟输入不是直接用 sendinput 就好了?
|
6
zhuxs OP @nipvc 不行啊,用了没有反应:
``` SendInput = ctypes.windll.user32.SendInput def set_pos(x, y): x = 1 + int(x * 65536./1920.) y = 1 + int(y * 65536./1080.) extra = ctypes.c_ulong(0) ii_ = pynput._util.win32.INPUT_union() ii_.mi = pynput._util.win32.MOUSEINPUT(x, y, 0, (0x0001 | 0x8000), 0, ctypes.cast(ctypes.pointer(extra), ctypes.c_void_p)) command=pynput._util.win32.INPUT(ctypes.c_ulong(0), ii_) SendInput(1, ctypes.pointer(command), ctypes.sizeof(command)) ``` 至于罗技是这样的: 从当前位置(x1,y1) 移动到 目标位置(x2,y2)的过程中游戏会重置准星位置为(960,540),重置后鼠标就动不了,需要再次计算位置。 |
7
zhuxs OP 我买了个 CH9329 模块,用 python 给串口发型号看看可行性如何
|
8
zhuxs OP 罗技完整代码:
``` dll_path = os.path.join("..", "驱动", "ghub_device.dll") global gmok, gm # Access global variables try: gm = CDLL(dll_path) gmok = gm.device_open() == 1 if not gmok: print('未安装 ghub 或者 lgs 驱动!!!') exit(); print('初始化成功!') except FileNotFoundError: print('缺少文件') # 鼠标移动 def mouse_xy(x, y, abs_move = False): if gmok: gm.moveR(int(x), int(y), abs_move) ``` |
10
nipvc 210 天前 via iPhone
cs2 写着不支持手柄,手柄能操作 cs2 ,用的 SendInput 接口
|