diff options
-rw-r--r-- | src/library_sdl.js | 12 | ||||
-rw-r--r-- | system/include/SDL/SDL_keycode.h | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js index c26b50fa..21c1292e 100644 --- a/src/library_sdl.js +++ b/src/library_sdl.js @@ -92,10 +92,10 @@ mergeInto(LibraryManager.library, { keyboardState: null, keyCodes: { // DOM code ==> SDL code - 38: 1073741906, // up arrow - 40: 1073741905, // down arrow - 37: 1073741904, // left arrow - 39: 1073741903, // right arrow + 38: 1106, // up arrow + 40: 1105, // down arrow + 37: 1104, // left arrow + 39: 1103, // right arrow 17: 305, // control (right, or left) 18: 308, // alt 109: 45, // minus @@ -239,7 +239,7 @@ mergeInto(LibraryManager.library, { switch(event.type) { case 'keydown': case 'keyup': SDL.events.push(event); - {{{ makeSetValue('SDL.keyboardState', 'SDL.keyCodes[event.keyCode] || event.keyCode', 'event.type == "keydown"', 'i8') }}}; + break; } //event.preventDefault(); return false; @@ -269,6 +269,8 @@ mergeInto(LibraryManager.library, { {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.mod', '0', 'i32') }}} //{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.unicode', 'key', 'i32') }}} + {{{ makeSetValue('SDL.keyboardState', 'SDL.keyCodes[event.keyCode] || event.keyCode', 'event.type == "keydown"', 'i8') }}}; + break; case 'keypress': break // TODO default: diff --git a/system/include/SDL/SDL_keycode.h b/system/include/SDL/SDL_keycode.h index 5be1f715..472ca28e 100644 --- a/system/include/SDL/SDL_keycode.h +++ b/system/include/SDL/SDL_keycode.h @@ -41,7 +41,9 @@ */ typedef Sint32 SDL_Keycode; -#define SDLK_SCANCODE_MASK (1<<30) +// XXX Emscripten: We use a mask of 10, which is closer to old SDL, and gives +// a better chance of SDL 1.X apps working +#define SDLK_SCANCODE_MASK (1<<10) #define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) enum |