1
所以我有以下的代码,侦听keydown事件,然后只要它接受一个退出:SDL左控制键被释放时keydown事件被触发
int main(int argc, char** argv) {
SDL_Init(SDL_INIT_VIDEO);
SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF);
SDL_Event _event;
while (1) {
while (SDL_PollEvent(&_event)) {
if (_event.type == SDL_KEYDOWN) {
return 0;
}
}
SDL_GL_SwapBuffers();
}
}
当我运行它,我可以按任意箭头键,字母,数字,F1-F12 ...除了左侧控制键外,几乎可以使用任何按键,程序将立即退出。
但是当我按下左控制键,程序不会退出,直到我发布的关键。
虽然示例没有显示它,但在按住左控制按钮时(例如ctrl + s)按下另一个按键会导致丢失控件keydown事件(以及第二个事件“ s'被按下)。
有什么办法可以禁用左控制键这种奇怪的行为?
顺便说一句,这是在Windows上使用mingw。我还没有用任何其他编译器/操作系统测试过这种行为。
您是否试过[SDL_WM_GrabInput](http://sdl.beuc.net/sdl.wiki/SDL_WM_GrabInput)? –
@Banthar我试过了,但它所做的只是捕捉鼠标。 – Ponkadoodle