shithub: puzzles

Download patch

ref: f693794ff543cb0765ca115d76376bad8e2f5190
parent: f9449af87a4f5420aa7683d3f15110bfa2f1bf17
author: Ben Harris <bjh21@bjh21.me.uk>
date: Sat Nov 26 18:08:31 EST 2022

js: Make soft-key labels generate key events when clicked

This makes the app page a little easier to test on desktop browsers that
don't have SoftLeft and SoftRight keys.

--- a/emccpre.js
+++ b/emccpre.js
@@ -567,6 +567,25 @@
         }
     }, true);
 
+    // Arrange that the softkey labels are clickable.  This logically
+    // belongs as a click handler, but by the time the click event
+    // fires, the input focus is in the wrong place.
+    function button_to_key(key) {
+        return function(mevent) {
+            mevent.stopPropagation();
+            mevent.preventDefault();
+            var kevent = new KeyboardEvent("keydown", {
+                key: key, view: window, bubbles: true});
+            document.activeElement.dispatchEvent(kevent);
+        };
+    }
+    for (var elem of document.querySelectorAll(".lsk"))
+        elem.addEventListener("mousedown", button_to_key("SoftLeft"));
+    for (var elem of document.querySelectorAll(".csk"))
+        elem.addEventListener("mousedown", button_to_key("Enter"));
+    for (var elem of document.querySelectorAll(".rsk"))
+        elem.addEventListener("mousedown", button_to_key("SoftRight"));
+
     document.addEventListener("keydown", function(event) {
         // Key to open the menu on KaiOS.
         if (event.key == "SoftRight" &&