我尝试了多种方法来制作虚拟按键算法,该算法适用于视频游戏模拟器(特别是VisualBoyAdvance)。到目前为止,我的所有尝试都没有成功,因为模拟输入在模拟器中不起作用(但是,物理按键非常合适,因此它不是映射问题。)
我尝试过这么简单:
#include <iostream>
#include <Windows.h>
int main()
{
while (true)
{
keybd_event(0x67, 0, 0, 0);
Sleep(1000);
}
}
以及
#include <iostream>
#include <Windows.h>
INPUT ip;
int main()
{
while (1)
{
// Set up a generic keyboard event.
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0; // hardware scan code for key
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
// Press the "NUMPAD-7" key
ip.ki.wVk = 0x67; // virtual-key code
ip.ki.dwFlags = 0; // 0 for key press
SendInput(1, &ip, sizeof(INPUT));
Sleep(100);
// Release the "NUMPAD-7" key
ip.ki.dwFlags = KEYEVENTF_KEYUP; // KEYEVENTF_KEYUP for key release
SendInput(1, &ip, sizeof(INPUT));
Sleep(900);
}
}
这两个程序都成功地每秒输入一次'7'到所选的任何文本编辑器中,但是当我选择了VisualBoyAdvance时(我已将NUMPAD-7键映射到A按钮),没有任何反应。但是,如果我然后按下NUMPAD-7,它会响应A按钮按下它应该。
我做错了什么?如何在视频游戏模拟器中使用此代码。