【发布时间】:2016-03-04 00:29:57
【问题描述】:
我正在尝试模拟 SDL 键盘按钮按下(使用 C)。我已经在线查找了 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");
}
}
我从来没有看到打印出“LEFT PRESSED”字符串,尽管当我按下右箭头键(从键盘)时,我看到了相应的输出。似乎从未在状态变量上按下左键。
任何帮助将不胜感激。
【问题讨论】:
-
可能您没有英文键盘并且您的扫描码不同。尝试
SDL_GetScancodeFromKey()从键码中获取扫描码。参考:wiki.libsdl.org/… -
事件类型肯定不正确,但无论如何 - documentation 明确声明
Note: Pushing device input events onto the queue doesn't modify the state of the device within SDL.。
标签: c sdl keyboard-events sdl-2