shithub: puzzles

Download patch

ref: e6faebeb9a1856c9ea7140eb650b48ada0adc923
parent: 43c89dd5e118cf244b8eb978b13fecfe2240e9e7
author: Ben Harris <[email protected]>
date: Tue Oct 25 06:24:15 EDT 2022

js: Remove keypress handler

At least in modern browsers (and I suspect in all browsers), cancelling
a keydown event ensures that the subsequent keypress event doesn't fire.
See <https://w3c.github.io/uievents/#keys-cancelable-keys>.

So there's no point in having a handler on keypress events that just
tries to cancel them as well.  Removing the handler doesn't do much now,
but it opens the possibility of being a bit more selective about which
keydown events we cancel.

--- a/emccpre.js
+++ b/emccpre.js
@@ -304,9 +304,8 @@
         }
     };
 
-    // 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
+    // Set up keyboard handlers. We call event.preventDefault()
+    // in the keydown handler. 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,
@@ -316,9 +315,6 @@
     onscreen_canvas.onkeydown = function(event) {
         key(event.keyCode, event.key, event.char, event.location,
             event.shiftKey ? 1 : 0, event.ctrlKey ? 1 : 0);
-        event.preventDefault();
-    };
-    onscreen_canvas.onkeypress = function(event) {
         event.preventDefault();
     };