diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-03-23 16:38:08 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-03-23 16:38:08 -0700 |
commit | 6b2a2b6c8a3f416660be36a846a45cf635af2a5d (patch) | |
tree | 39e900744ed7c2d34b90fb3e2a3b245425d0e735 /tests/sdl_key.c | |
parent | 6a3c3938cd802db8b034c27b743844735f1b6d28 (diff) |
fix sdl keyboard input and add a test
Diffstat (limited to 'tests/sdl_key.c')
-rw-r--r-- | tests/sdl_key.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/tests/sdl_key.c b/tests/sdl_key.c new file mode 100644 index 00000000..633e975f --- /dev/null +++ b/tests/sdl_key.c @@ -0,0 +1,47 @@ +#include <stdio.h> +#include <SDL/SDL.h> +#include <SDL/SDL_ttf.h> +#include <emscripten.h> + +int result = 1; + +void one() { + SDL_Event event; + while (SDL_PollEvent(&event)) { + switch(event.type) { + case SDL_KEYDOWN: + break; + case SDL_KEYUP: + switch (event.key.keysym.sym) { + case SDLK_RIGHT: printf("right\n"); result *= 2; break; + case SDLK_LEFT: printf("left\n"); result *= 3; break; + case SDLK_DOWN: printf("down\n"); result *= 5; break; + case SDLK_UP: printf("up\n"); result *= 7; break; + case SDLK_SPACE: printf("space\n"); result *= 11; break; + case SDLK_a: printf("a\n"); result *= 13; break; + default: { REPORT_RESULT(); emscripten_run_script("throw 'done'"); } + } + break; + default: /* Report an unhandled event */ + printf("I don't know what this event is!\n"); + } + } +} + +int main(int argc, char **argv) { + SDL_Init(SDL_INIT_VIDEO); + SDL_Surface *screen = SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE); + + emscripten_run_script("simulateKeyEvent(38)"); + emscripten_run_script("simulateKeyEvent(40)"); + emscripten_run_script("simulateKeyEvent(37)"); + emscripten_run_script("simulateKeyEvent(39)"); + emscripten_run_script("simulateKeyEvent(32)"); + emscripten_run_script("simulateKeyEvent(97)"); + emscripten_run_script("simulateKeyEvent(100)"); // trigger the end + + if (argc == 1337) one(); // keep it alive + + return 0; +} + |