aboutsummaryrefslogtreecommitdiff
path: root/src/library_sdl.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-05-20 17:29:03 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-05-20 17:29:03 -0700
commit085f4996cbb4817748aa55d619f2121babd6f5a6 (patch)
treea30088daca293cd344b49e0e656a3024fd6ffa4b /src/library_sdl.js
parente591fdbe9bf242dc5d0f71fe4889e7925dde1f91 (diff)
SDK key event fixes
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r--src/library_sdl.js33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index a7c53ff3..5868df54 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -13,6 +13,14 @@ mergeInto(Library, {
surfaces: {},
events: [],
+ keyCodes: {
+ 38: 273, // up arrow
+ 40: 274, // down arrow
+ 37: 276, // left arrow
+ 39: 275, // right arrow
+ 17: 305, // control (right, or left)
+ },
+
structs: {
PixelFormat: Runtime.generateStructInfo([
['void*', 'palette'], ['i8', 'BitsPerPixel'], ['i8', 'BytesPerPixel'],
@@ -25,6 +33,12 @@ mergeInto(Library, {
['i8', 'which'],
['i8', 'state'],
['i32', 'keysym']
+ ]),
+ keysym: Runtime.generateStructInfo([
+ ['i8', 'scancode'],
+ ['i32', 'sym'],
+ ['i32', 'mod'],
+ ['i16', 'unicode']
])
},
@@ -73,17 +87,26 @@ mergeInto(Library, {
},
receiveEvent: function(event) {
- SDL.events.push(event);
+ switch(event.type) {
+ case 'keydown': case 'keyup':
+ SDL.events.push(event);
+ }
},
makeCEvent: function(event, ptr) {
switch(event.type) {
case 'keydown': case 'keyup':
var down = event.type === 'keydown';
+ var key = SDL.keyCodes[event.keyCode] || event.keyCode;
{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.type', 'down ? 2 : 3', 'i8') }}}
{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.which', '1', 'i8') }}}
{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.state', 'down ? 1 : 0', 'i8') }}}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym', 'event.keyCode', 'i32') }}}
+
+ {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.scancode', 'key', 'i8') }}}
+ {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.sym', 'key', 'i32') }}}
+ {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.mod', '0', 'i32') }}}
+ //{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.unicode', 'key', 'i32') }}}
+
break;
case 'keypress': break // TODO
default:
@@ -253,7 +276,6 @@ mergeInto(Library, {
},
SDL_SetColors: function(surf, colors, firstColor, nColors) {
- print('zz SDL_SetColors: ' + [surf, colors, firstColor, nColors]);
var surfData = SDL.surfaces[surf];
surfData.colors = [];
for (var i = firstColor; i < nColors; i++) {
@@ -281,6 +303,9 @@ mergeInto(Library, {
SDL_OpenAudio: function(desired, obtained) {
return -1;
- }
+ },
+
+ SDL_LockAudio: function() {},
+ SDL_UnlockAudio: function() {},
});