aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-22 20:53:30 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-22 20:53:30 -0700
commit37d587c3aad5566899d094a7119353a1ab900332 (patch)
tree037eac6e91954a348692a994e43c3a41994376a2
parentfe509fc32fe72574b999fc91a39adc686ab10f64 (diff)
fix sdl key stuff and more more support
-rw-r--r--src/library_sdl.js46
-rw-r--r--tests/sdl_key.c4
2 files changed, 38 insertions, 12 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 4377c107..9e9bf10f 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -104,7 +104,7 @@ var LibrarySDL = {
'mousemove': 0x400
},
- keyCodes: { // DOM code ==> SDL code
+ keyCodes: { // DOM code ==> SDL code. See https://developer.mozilla.org/en/Document_Object_Model_%28DOM%29/KeyboardEvent and SDL_keycode.h
38: 1106, // up arrow
40: 1105, // down arrow
37: 1104, // left arrow
@@ -116,7 +116,31 @@ var LibrarySDL = {
17: 305, // control (right, or left)
18: 308, // alt
109: 45, // minus
- 16: 304 // shift
+ 16: 304, // shift
+
+ 96: 88 | 1<<10, // keypad 0
+ 97: 89 | 1<<10, // keypad 1
+ 98: 90 | 1<<10, // keypad 2
+ 99: 91 | 1<<10, // keypad 3
+ 100: 92 | 1<<10, // keypad 4
+ 101: 93 | 1<<10, // keypad 5
+ 102: 94 | 1<<10, // keypad 6
+ 103: 95 | 1<<10, // keypad 7
+ 104: 96 | 1<<10, // keypad 8
+ 105: 97 | 1<<10, // keypad 9
+
+ 112: 58 | 1<<10, // F1
+ 113: 59 | 1<<10, // F2
+ 114: 60 | 1<<10, // F3
+ 115: 61 | 1<<10, // F4
+ 116: 62 | 1<<10, // F5
+ 117: 63 | 1<<10, // F6
+ 118: 64 | 1<<10, // F7
+ 119: 65 | 1<<10, // F8
+ 120: 66 | 1<<10, // F9
+ 121: 67 | 1<<10, // F10
+ 122: 68 | 1<<10, // F11
+ 123: 69 | 1<<10, // F12
},
scanCodes: { // SDL keycode ==> SDL scancode
@@ -164,11 +188,6 @@ var LibrarySDL = {
47: 56, // slash
305: 224, // ctrl
308: 226, // alt
- 1113: 89, // keypad 1
- 1106: 82, // up arrow
- 1105: 81, // down arrow
- 1104: 80, // left arrow
- 1103: 79 // right arrow
},
structs: {
@@ -354,11 +373,18 @@ var LibrarySDL = {
case 'keydown': case 'keyup': {
var down = event.type === 'keydown';
//Module.print('Received key event: ' + event.keyCode);
- var key = SDL.keyCodes[event.keyCode] || event.keyCode;
+ var key = event.keyCode;
if (key >= 65 && key <= 90) {
- key = String.fromCharCode(key).toLowerCase().charCodeAt(0);
+ key += 32; // make lowercase for SDL
+ } else {
+ key = SDL.keyCodes[event.keyCode] || event.keyCode;
+ }
+ var scan;
+ if (key >= 1024) {
+ scan = key - 1024;
+ } else {
+ scan = SDL.scanCodes[key] || key;
}
- var scan = SDL.scanCodes[key] || key;
{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}}
//{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.which', '1', 'i32') }}}
{{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.state', 'down ? 1 : 0', 'i8') }}}
diff --git a/tests/sdl_key.c b/tests/sdl_key.c
index 3747977e..19b0a3d6 100644
--- a/tests/sdl_key.c
+++ b/tests/sdl_key.c
@@ -45,8 +45,8 @@ int main(int argc, char **argv) {
emscripten_run_script("simulateKeyEvent(37)"); // left
emscripten_run_script("simulateKeyEvent(39)"); // right
emscripten_run_script("simulateKeyEvent(32)"); // space
- emscripten_run_script("simulateKeyEvent(97)"); // a
- emscripten_run_script("simulateKeyEvent(98)"); // b
+ emscripten_run_script("simulateKeyEvent(65)"); // a
+ emscripten_run_script("simulateKeyEvent(66)"); // b
emscripten_run_script("simulateKeyEvent(100)"); // trigger the end
if (argc == 1337) one(); // keep it alive