No SDL Keypress events being detected

痞子三分冷 提交于 2020-01-11 10:32:09

问题


I am completely stumped as to why this code does not get any SDL keypress events. The other SDL events (removed for clarity) work fine. It does not work on my XP or Vista machines. No compile/link errors, just never recieve a keydown event.

#include "SDL/SDL.h"
// Yes SDL.lib and SDLmain.lib are linked

Uint32 TimeLeft(void)
{
    static Uint32 next_time = 0;
    Uint32 now;
    now = SDL_GetTicks();
    if ( next_time <= now ) {
        next_time = now + tickInterval;
        return 0;
    }
    return(next_time-now);
}

int main( int argc, char **argv )
{
    if( -1 == SDL_Init( SDL_INIT_EVERYTHING ) )
    {
        cerr << "Error: SDL_Init failed" << endl;
        return -1;
    }

    SDL_Event event;

    bool quit = false;

    while( !quit )
    {
        while( SDL_PollEvent( &event ) )
        {
            switch( event.type )
            {
            case SDL_KEYDOWN:
                switch( event.key.keysym.sym )
                {
                case SDLK_ESCAPE:
                case SDLK_q:
                    quit = true;
                    break;
                default:
                    break;
                }
                break;
            case SDL_JOYAXISMOTION:
                // stuff removed
                break;
            case SDL_QUIT:
                quit = true;
                break;
            default:
                break;
            }
        }
        SDL_Delay( TimeLeft() );
    }

    SDL_Quit();

    return 0;
}

回答1:


You'll need to create a window with SDL_SetVideoMode to get mouse and keyboard events.

I don't think you'll have luck trying to SDL_WM_GrabInput the mouse and keyboard without a window. It may also raise security alerts the first time on moderm Windows machines.



来源:https://stackoverflow.com/questions/257275/no-sdl-keypress-events-being-detected

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!