1
我试图模拟一个SDL键盘按钮按(使用C)。我已经在线查阅了SDL信息页面,但是我仍然没有任何一贯的工作。模拟键盘按钮按[SDL库]
我有以下(去除中断处理,窗口等创建)
while(1){
SDL_Event user_event;
user_event.type = SDL_SCANCODE_LEFT;
SDL_PushEvent(&user_event);
SDL_PumpEvents();
const Uint8 *state = SDL_GetKeyboardState(NULL);
if (state[SDL_SCANCODE_LEFT]) {
printf("LEFT PRESSED");
}
if (state[SDL_SCANCODE_RIGHT]) {
printf("RIGHT PRESSED");
}
}
我从来没有看到“按住左键”字符串打印出来,但是当我按下右箭头键(键盘)我看到了相应的输出。看起来像左键按下从不被推入状态变量。
任何帮助将不胜感激。
也许你没有英文键盘和你的扫描码是不同的。尝试使用'SDL_GetScancodeFromKey()'从键码获得扫描码。参考:https://wiki.libsdl.org/SDL_GetScancodeFromKey?highlight=%28%5CbCategoryKeyboard%5Cb%29%7C%28CategoryEnum%29%7C%28CategoryStruct%29 – Lasoloz
事件类型肯定是不正确的,但无论如何 - [文档]( https://wiki.libsdl.org/SDL_PushEvent)明确指出'注意:将设备输入事件推入队列不会修改SDL中设备的状态。 – keltar