今天我在我的应用程序中为所有不同的键设置了输入。除了虚拟键(例如插入符号或 & 符号)之外,这可以正常工作。通常需要换档才能拿到的钥匙。使用 SDL,这些虚拟键不起作用。因为他们没有注册事件。
if (event.type == SDL_KEYDOWN) {
switch (event.key.keysym.sym) {
case SDLK_CARET:
Keys[KeyCodes::Caret] = KeyState::Down;
break;
case SDLK_UP:
Keys[KeyCodes::Up] = KeyState::Down;
break;
default:
break;
}
我绝对确定我的系统可以使用 Up 等物理键。该程序查询一个键状态,如下所示:
if (Keys[KeyCode] == KeyState::Down) {
lua_pushboolean(L, true);
} else {
lua_pushboolean(L, false);
}
KeyCode 作为参数传入。
那么,为什么使用 SDL 的 KeyDown 事件类型时虚拟键或需要转换才能正常工作的键?是否需要更多代码才能找到它们?还是我傻?