#include #include #define FF_QUIT_EVENT (SDL_USEREVENT + 2) int main() { SDL_Window *window = NULL; SDL_Renderer *renderer = NULL; SDL_Init(SDL_INIT_VIDEO); window = SDL_CreateWindow("SDL2 Event", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS); if (window == NULL) { printf("Could not create window: %s\n", SDL_GetError()); return 1; } renderer = SDL_CreateRenderer(window, -1, 0); SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255); SDL_RenderClear(renderer); SDL_RenderPresent(renderer); SDL_Event event; int b_exit = 0; for (;;) { SDL_WaitEvent(&event); switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_a: printf("user press a\n"); break; case SDLK_s: printf("user press s\n"); break; case SDLK_q: printf("user press q\n"); SDL_Event event_quit; event_quit.type = FF_QUIT_EVENT; SDL_PushEvent(&event_quit); break; default: printf("key down 0x%x\n", event.key.keysym.sym); break; } break; case SDL_MOUSEBUTTONDOWN: if (event.button.button == SDL_BUTTON_LEFT) { printf("mouse left press\n"); } else if (event.button.button == SDL_BUTTON_RIGHT) { printf("mouse right press\n"); } else { printf("mouse down %d\n", event.button.button); } break; case SDL_MOUSEMOTION: printf("mouse movie pos(%d,%d)\n", event.button.x, event.button.y); break; case FF_QUIT_EVENT: printf("receive quit event\n"); b_exit = 1; break; default: break; } if (b_exit) break; } if (renderer) SDL_DestroyRenderer(renderer); if (window) SDL_DestroyWindow(window); SDL_Quit(); return 0; }