首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SDL2键盘检测不起作用

SDL2键盘检测不起作用
EN

Stack Overflow用户
提问于 2017-06-27 10:25:38
回答 1查看 1.2K关注 0票数 1

我试着用sdl2制作一个简单的游戏来处理键盘事件。但主要的问题是,无论是在Clion嵌入式控制台还是在外部控制台,我的程序都无法检测到任何事件,在程序开始时只捕获两次SDL_AUDIODEVICEADDED。这是我的密码:

代码语言:javascript
运行
复制
#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返回0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 10:49:50

你需要创建一个窗口。

键盘和鼠标事件取决于显示面。当窗口处于焦点时,只有窗口和键盘输入中的鼠标操作才会被捕获。毕竟,您不应该能够接收可能针对其他应用程序的输入。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44777929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档