diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-08-26 10:51:56 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-08-26 10:51:56 -0700 |
commit | fc56aa8d28bbc5ef66a0a5f21c12892f320098b7 (patch) | |
tree | 94eb9b467fd031dee4e1c5b190b151cf5e2d9bc6 | |
parent | 5eb4366a249d3a302b476fc1734aaa923f7323c3 (diff) | |
parent | e216f3200c6d8ab52c58b814a663be08a68279ff (diff) |
Merge pull request #1507 from ToadKing/sdl-alpha-keys
SDL alpha keys fix
-rw-r--r-- | src/library_sdl.js | 7 | ||||
-rw-r--r-- | tests/sdl_pumpevents.c | 16 | ||||
-rw-r--r-- | tests/test_browser.py | 2 |
3 files changed, 23 insertions, 2 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index 5b2f8379..1fb75724 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -547,7 +547,12 @@ var LibrarySDL = { switch (event.type) { case 'keydown': case 'keyup': { var down = event.type === 'keydown'; - var code = SDL.keyCodes[event.keyCode] || event.keyCode; + var code = event.keyCode; + if (code >= 65 && code <= 90) { + code += 32; // make lowercase for SDL + } else { + code = SDL.keyCodes[event.keyCode] || event.keyCode; + } {{{ makeSetValue('SDL.keyboardState', 'code', 'down', 'i8') }}}; // TODO: lmeta, rmeta, numlock, capslock, KMOD_MODE, KMOD_RESERVED diff --git a/tests/sdl_pumpevents.c b/tests/sdl_pumpevents.c index 64becaad..e765d285 100644 --- a/tests/sdl_pumpevents.c +++ b/tests/sdl_pumpevents.c @@ -40,6 +40,20 @@ int loop2() return r; } +int alphakey() +{ + unsigned i; + int r = 0; + + SDL_PumpEvents(); + + const Uint8 *keys = SDL_GetKeyState(NULL); + if (keys[SDLK_a]) + r = 4; + + return r; +} + int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_EVERYTHING); @@ -49,6 +63,8 @@ int main(int argc, char *argv[]) result += loop1(); emscripten_run_script("keydown(39);"); // right result += loop2(); + emscripten_run_script("keydown(65);"); // A + result += alphakey(); REPORT_RESULT(); return 0; } diff --git a/tests/test_browser.py b/tests/test_browser.py index 4b42eedd..1c9cbfad 100644 --- a/tests/test_browser.py +++ b/tests/test_browser.py @@ -805,7 +805,7 @@ If manually bisecting: document.dispatchEvent(event); } ''') - self.btest('sdl_pumpevents.c', expected='3', args=['--pre-js', 'pre.js']) + self.btest('sdl_pumpevents.c', expected='7', args=['--pre-js', 'pre.js']) def test_sdl_audio(self): shutil.copyfile(path_from_root('tests', 'sounds', 'alarmvictory_1.ogg'), os.path.join(self.get_dir(), 'sound.ogg')) |