SDL2 键盘检测不起作用
SDL2 keyboard detection doesn't work
我尝试使用 sdl2 制作一个简单的游戏来处理键盘事件。但主要问题是,无论是在 Clion 嵌入式控制台还是在外部控制台中,我的程序都无法检测到任何事件,只有 SDL_AUDIODEVICEADDED
在程序启动时被捕获了两次。这是我的代码:
#include <iostream>
#include "include/SDL2/SDL_keyboard.h"
#include "include/SDL2/SDL_keycode.h"
#include "include/SDL2/SDL_scancode.h"
#include "include/SDL2/SDL.h"
using namespace std;
int main(int argc, char* argv []) {
SDL_Event event;
bool running = true;
SDL_Init(SDL_INIT_EVERYTHING);
int x, y;
while(running){
if(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT: running = false; break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_q:
running = false;
break;
}
break;
case SDL_MOUSEBUTTONDOWN:
SDL_GetMouseState(&x, &y);
cout << "[SDL_MOUSEBUTTONDOWN] " << "x = " << x << " y = " << y << "\n";
break;
case SDL_MOUSEMOTION:
x = event.motion.x;
y = event.motion.y;
cout << "[SDL_MOUSEMOTION] " << "x = " << x << " y = " << y << "\n";
break;
}
}
}
}
SDL_Init
returns 0.
您需要创建一个 window。
键盘和鼠标事件取决于显示表面。仅捕获 window 内的鼠标操作和 window 处于焦点时的键盘输入。毕竟,您不应该能够接收可能针对其他应用程序的输入。
我尝试使用 sdl2 制作一个简单的游戏来处理键盘事件。但主要问题是,无论是在 Clion 嵌入式控制台还是在外部控制台中,我的程序都无法检测到任何事件,只有 SDL_AUDIODEVICEADDED
在程序启动时被捕获了两次。这是我的代码:
#include <iostream>
#include "include/SDL2/SDL_keyboard.h"
#include "include/SDL2/SDL_keycode.h"
#include "include/SDL2/SDL_scancode.h"
#include "include/SDL2/SDL.h"
using namespace std;
int main(int argc, char* argv []) {
SDL_Event event;
bool running = true;
SDL_Init(SDL_INIT_EVERYTHING);
int x, y;
while(running){
if(SDL_PollEvent(&event)){
switch(event.type){
case SDL_QUIT: running = false; break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_q:
running = false;
break;
}
break;
case SDL_MOUSEBUTTONDOWN:
SDL_GetMouseState(&x, &y);
cout << "[SDL_MOUSEBUTTONDOWN] " << "x = " << x << " y = " << y << "\n";
break;
case SDL_MOUSEMOTION:
x = event.motion.x;
y = event.motion.y;
cout << "[SDL_MOUSEMOTION] " << "x = " << x << " y = " << y << "\n";
break;
}
}
}
}
SDL_Init
returns 0.
您需要创建一个 window。
键盘和鼠标事件取决于显示表面。仅捕获 window 内的鼠标操作和 window 处于焦点时的键盘输入。毕竟,您不应该能够接收可能针对其他应用程序的输入。