aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-03-23 17:35:13 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-03-23 17:35:13 -0700
commit3ca9645e0b214fce990f2cf63b9c3294fa6b0179 (patch)
tree13c46da667f4785e6155131cf57d528b86ff3ff9
parent6b2a2b6c8a3f416660be36a846a45cf635af2a5d (diff)
alter SDL scancode mask, to help older SDL apps work
-rw-r--r--src/library_sdl.js12
-rw-r--r--system/include/SDL/SDL_keycode.h4
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