diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-05-20 17:29:03 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-05-20 17:29:03 -0700 |
commit | 085f4996cbb4817748aa55d619f2121babd6f5a6 (patch) | |
tree | a30088daca293cd344b49e0e656a3024fd6ffa4b /src/library_sdl.js | |
parent | e591fdbe9bf242dc5d0f71fe4889e7925dde1f91 (diff) |
SDK key event fixes
Diffstat (limited to 'src/library_sdl.js')
-rw-r--r-- | src/library_sdl.js | 33 |
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() {}, }); |