diff options
Diffstat (limited to 'emccpre.js')
| -rw-r--r-- | emccpre.js | 25 |
1 files changed, 10 insertions, 15 deletions
@@ -157,26 +157,21 @@ function initPuzzle() { } }; - // Set up keyboard handlers. We expect ordinary keys (with a - // charCode) to be handled by onkeypress, but function keys - // (arrows etc) to be handled by onkeydown. - // - // We also call event.preventDefault() in both handlers. This - // means that while the canvas itself has focus, _all_ keypresses - // go only to the puzzle - so users of this puzzle collection in - // other media can indulge their instinct to press ^R for redo, - // for example, without accidentally reloading the page. - key = Module.cwrap('key', 'void', - ['number', 'number', 'number', 'number']); + // Set up keyboard handlers. We do all the actual keyboard + // handling in onkeydown; but we also call event.preventDefault() + // in both the keydown and keypress handlers. This means that + // while the canvas itself has focus, _all_ keypresses go only to + // the puzzle - so users of this puzzle collection in other media + // can indulge their instinct to press ^R for redo, for example, + // without accidentally reloading the page. + key = Module.cwrap('key', 'void', ['number', 'number', 'string', + 'string', 'number', 'number']); onscreen_canvas.onkeydown = function(event) { - key(event.keyCode, event.charCode, + key(event.keyCode, event.charCode, event.key, event.char, event.shiftKey ? 1 : 0, event.ctrlKey ? 1 : 0); event.preventDefault(); }; onscreen_canvas.onkeypress = function(event) { - if (event.charCode != 0) - key(event.keyCode, event.charCode, - event.shiftKey ? 1 : 0, event.ctrlKey ? 1 : 0); event.preventDefault(); }; |