我已经使用atxmega创建了一个NES控制器的接口,该接口通过串行发送密钥。问题在于读取输入并相应发送keybd_events的程序。
if(szBuff[0] & BTN_LEFT) {
keybd_event(VkKeyScan('j'), 0, 0, 0);
keybd_event(VkKeyScan('j'), 0, KEYEVENTF_KEYUP, 0);
}
问题是,它无法在NES模拟器中被识别为“j”,而在浏览器中却是如此。
答案 0 :(得分:0)
如果没有解释任天堂模拟器如何工作,很难回答这个问题。但是您必须向VkKeyScan()提供虚拟密钥代码。这是'J',而不是'j'。只要未按下Shift键,Windows就会将其转换为生成“j”的WM_CHAR消息。
请注意,keybd_event()采用虚拟密钥和扫描代码。您将扫描代码作为虚拟密钥传递。修正:
keybd_event('J', VkKeyScan('J'), 0, 0);