static/tgal.js (keyevent): Discard key events with spurious modifiers. master
authorMark Wooding <mdw@distorted.org.uk>
Thu, 22 Jun 2023 11:15:59 +0000 (12:15 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 22 Jun 2023 11:15:59 +0000 (12:15 +0100)
Allow shift with `^', `<' and `>' because they require that on common
keyboard layouts (though not always), and because pressing shift gives a
different result if it's not needed; forbid modifiers with cursor keys,
space, and backspace.

static/tgal.js

index 33f380d..6e96dc2 100644 (file)
 /* Handle keyboard interaction. */
 addEventListener("keydown", function (ev) {
   var dir;
-  if (ev.key === " " || ev.key === "ArrowRight") dir = "next";
-  else if (ev.key === "Backspace" || ev.key === "ArrowLeft") dir = "prev";
-  else if (ev.key === "^") dir = "up";
+  if (ev.altKey || ev.ctrlKey || ev.metaKey) return;
   else if (ev.key === "<") dir = "first";
   else if (ev.key === ">") dir = "last";
+  else if (ev.key === "^") dir = "up";
+  else if (ev.shiftKey) return;
+  else if (ev.key === " " || ev.key === "ArrowRight") dir = "next";
+  else if (ev.key === "Backspace" || ev.key === "ArrowLeft") dir = "prev";
   else return;
   var elt = document.querySelector("link[rel=" + dir + "]");
   if (!elt) return;