如何将输入延迟(键盘和鼠标)引入我的系统?

How can I introduce input lag (keyboard and mouse) to my system?

(我在 QA 工作,这确实是合法使用。)

我正在尝试想出一种方法来为键盘和鼠标引入强制输入延迟(在 Windows 中)。就像,当我在键盘上按下 'A' 时,我想在 OS 处理 A 之前引入一个非常轻微的延迟。或者如果我移动鼠标,我想要相同的鼠标速度,但是只是在它开始之前有同样的轻微延迟。这种延迟需要存在于任何线程中,而不仅仅是启动进程的线程。但是,延迟不必每次都精确到毫秒。

我什至不确定如何进行设置。我可以用我们可能需要的任何 language/environment 来编写它,我只是不确定从哪里开始。我认为像 AutoHotkey 这样的东西可以通过本质上使任意键调用一个在发送该键之前稍微延迟的宏来做我想做的事情,但我不确定我可能需要调用什么函数才能实现它。或者,也许 C 中有一种方法可以在 OS 开始之前获取输入。我只是不确定。

任何人都可以向我指出一些可以完成此任务的资源或 language/function(s) 吗? (或者甚至是已经存在的程序或服务。)

如果你想要纯软件解决方案,恐怕你需要为你的键盘和鼠标开发一个过滤驱动程序。开发成本很高。

相反,您可以将鼠标和键盘插入其他地方,让输入消息通过网络,然后引​​入网络延迟。您可以使用第二台 PC + VNC 软件,或第二台 PC + software USB/IP, or hardware USB/IP device like this one.

有一个简单但不太可靠的方法。

您可以开发系统范围的 WH_KEYBOARD_LL 和 WH_MOUSE_LL 挂钩,丢弃原始消息,并在一段时间后使用 SendInput API 发送延迟的消息。这应该在大多数情况下有效,但是在某些情况下它不会,例如我不希望大多数电子游戏因为原始输入而发生任何事情。