模拟键盘按钮按下 [SDL 库]
Simulate Keyboard Button Press [SDL Library]
我正在尝试模拟 SDL 键盘按钮按下(使用 C)。我已经在线查看了 SDL 信息页面,但我仍然没有任何东西可以始终如一地工作。
我有以下内容(删除了中断处理、创建 windows 等)
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_GetKeyboardState()
返回的状态数组表示原始键盘的状态,推送事件不会影响它(即使键盘输入生成事件)。
但我认为可以做你想做的事,如果你可以使用 SDL_PollEvent()
而不是 SDL_PumpEvents()
并检查键盘状态数组,
/* Push a single left key event. */
SDL_Event sdlevent = {};
sdlevent.type = SDL_KEYDOWN;
sdlevent.key.keysym.sym = SDLK_LEFT;
SDL_PushEvent(&sdlevent);
while (1) {
SDL_Event ev;
if (SDL_PollEvent(&ev)) {
if(ev.type == SDL_KEYDOWN) {
if (ev.key.keysym.sym == SDLK_LEFT) {
printf("LEFT PRESSED\n");
}
if (ev.key.keysym.sym == SDLK_RIGHT) {
printf("RIGHT PRESSED\n");
}
}
}
}
我正在尝试模拟 SDL 键盘按钮按下(使用 C)。我已经在线查看了 SDL 信息页面,但我仍然没有任何东西可以始终如一地工作。
我有以下内容(删除了中断处理、创建 windows 等)
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_GetKeyboardState()
返回的状态数组表示原始键盘的状态,推送事件不会影响它(即使键盘输入生成事件)。
但我认为可以做你想做的事,如果你可以使用 SDL_PollEvent()
而不是 SDL_PumpEvents()
并检查键盘状态数组,
/* Push a single left key event. */
SDL_Event sdlevent = {};
sdlevent.type = SDL_KEYDOWN;
sdlevent.key.keysym.sym = SDLK_LEFT;
SDL_PushEvent(&sdlevent);
while (1) {
SDL_Event ev;
if (SDL_PollEvent(&ev)) {
if(ev.type == SDL_KEYDOWN) {
if (ev.key.keysym.sym == SDLK_LEFT) {
printf("LEFT PRESSED\n");
}
if (ev.key.keysym.sym == SDLK_RIGHT) {
printf("RIGHT PRESSED\n");
}
}
}
}