有什么方案可以在Windows下实现驱动级的宏吗

需求

我想要实现在某些游戏(DNF)中,某键按住后自动连发,仅游戏内生效,且不影响正常打字,且同时可以响应多个按键。
在此基础上还想要一些高级的可以编程的宏功能,类似自动连招。

当前状况

我之前使用AHK开发了一套工具,上面说的功能都能实现。但是AHK最低的时间间隔只能是16ms(这个好像是和系统时钟有关),并且CPU占用略高,在高负载的时候延迟会变高。
然后有朋友给我推荐了reWASD,这个东西我试过之后,发现cpu占用很低,并且延迟也非常低,但是一个是他收费,一个是他影响打字,并且不太好做宏。
本人更希望可以找到一些免费的方案,以用于给更多的游戏玩家提供方便。

附加情况

本人有一定的node开发经验,但是对win32编程不太擅长,所以手搓驱动估计是不太行了,不知道有没有现成方案可以参考。

信息记载

我尝试使用Interception驱动,但是这个目前有一个问题,就是在响应事件的时候,第一次按下触发后,要等待1秒左右才有后续的触发,有点类似我们键盘平时按住一个字母一样,但是这种并不能满足需求。而且目前我还没测试能不能同时响应多个按键不冲突。

罗技键鼠驱动?

我之前使用AHK开发了一套工具,上面说的功能都能实现。

AHK 的后台按键应该只支持 SendPlay 重放 / ControlSend 投递按键消息,你确定 DNF 里可以直接用,不会封号?

但是AHK最低的时间间隔只能是16ms(这个好像是和系统时钟有关)

AHK 的时间间隔是可以调整的,而且 v2 我记得也取消了默认间隔。

并且CPU占用略高,在高负载的时候延迟会变高。

可以调整进程优先级,不过这样占用就更高了。只是按键连发不应该用到多少 CPU,代码有问题的可能性比较大。

但是对win32编程不太擅长,所以手搓驱动估计是不太行了

手搓驱动就别想了,就算会写,不买证书也过不了反作弊。

我之前写过一个库,可以调用罗技和雷蛇的虚拟键鼠驱动,不过不支持后台按键,虽然创建 Win32 桌面可能能间接实现:

AHK 的后台按键应该只支持 SendPlay 重放 / ControlSend 投递按键消息,你确定 DNF 里可以直接用,不会封号?

我们目前用都是前台用,不需要后台的处理,本质上就是为了省手(这游戏某些职业放技能一秒钟要按四五下,输出一分钟手都废了……)

AHK 的时间间隔是可以调整的,而且 v2 我记得也取消了默认间隔。

这个是AHK的一个问题,他的时钟精度最低应该就是16ms左右,换句话说他最高只能处理16ms精度的事件,我不太清楚v2是否有过优化,但是即使是windows系统本身,最高精度好像也要去到10ms左右。

可以调整进程优先级,不过这样占用就更高了。只是按键连发不应该用到多少 CPU,代码有问题的可能性比较大。

CPU占用高是因为我的工具里面同时启动了很多个进程来处理多个按键的监听。默认AHK一个进程只能监听到一条事件,我如果同时按住A和S,AHK只能响应这两个热键中的同一个。开了多进程后,同时按住A和S,则可以同时触发A的连发和S的连发。这个是核心功能,目前还没有找到更好的方式去处理。而一套连发配置是有可能超过10个按键同时处理连发的,所以占用就很高。

我之前写过一个库,可以调用罗技和雷蛇的虚拟键鼠驱动,不过不支持后台按键,虽然创建 Win32 桌面可能能间接实现

您这个库最开始我设计这套工具的时候就看过了,但是似乎依旧不能解决时间精度低导致不能更高频率发送按键的问题。

===============内容===============

如果还用AHK的话,核心问题就是解决时间精度低的问题,不知道AHK2有没有优化过这个问题。我印象里好像AHK2有官方的多进程实现了,也许可以减少一些CPU的占用。


这是关于AHK官方文档对时间精度的一些说明

我之前以为你说的是这个,默认每 10ms 休眠 10ms。

如果还用AHK的话,核心问题就是解决时间精度低的问题

你截图的文档里不是已经给了更高精度的链接了吗。

说是这么说,但是印象里当初用的时候发现并没有效果。

准备回家用v2再试试看了。

按键精灵+大漠插件可以,不就是后台自动操作键盘嘛。

没有好好审题吧?
我不需要后台的,而且核心问题是效率不够高。

我注意到,新版的Process Lasso的选项\工具中,多了个"系统时钟精度"的工具,里面提到系统时钟精度最高是15.625ms,最低是0.5ms,并且里面可以进行设置,不知道是否对你的程序有所帮助?
虽然我接触过很多很多脚本类软件,现在也很少使用AHK,因为可替代的实在是太多了,但是真的没有注意到哪个是基于驱动级别的,可能只能靠其他人帮忙或者自己手搓了!

玩过两种,一种是软件的驱动,可以用。
叫什么 DD键盘鼠标
https://pub-4b3c9c59266e46f08395dc5a1d16153d.r2.dev/pic%2FAHK调用DD键鼠驱动.rar
另一个是 键盘盒子,有硬件的,买了一个,不会玩,丢那了。

我目前感觉瓶颈应该是在AHK上,不管是用DD还是用楼上的库,最后都没办法解决AHK一个Sleep时间至少要16ms的这个问题。

我昨天下班后试了试官方给的案例和网上找到的案例,虽然似乎确实Sleep了一个很小的值,但是反映到游戏里面的输入效率是连默认的Sleep都赶不上了。