Commit e6ca61bdd1

Andrew Kelley <andrew@ziglang.org>
2019-10-16 00:37:09
generated docs: further clean up keyboard shortcut handling
now it's harder to introduce a bug when modifying keyboard shortcut code.
1 parent 725c873
Changed files (1)
lib
std
special
docs
lib/std/special/docs/main.js
@@ -1141,10 +1141,8 @@
     }
 
     function onSearchKeyDown(ev) {
-        switch (ev.which) {
-            case 13:
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
-
+        switch (getKeyString(ev)) {
+            case "Enter":
                 // detect if this search changes anything
                 var terms1 = getSearchTerms();
                 startSearch();
@@ -1157,9 +1155,7 @@
                 ev.preventDefault();
                 ev.stopPropagation();
                 return;
-            case 27:
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
-
+            case "Esc":
                 domSearch.value = "";
                 domSearch.blur();
                 curSearchIndex = -1;
@@ -1167,16 +1163,12 @@
                 ev.stopPropagation();
                 startSearch();
                 return;
-            case 38:
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
-
+            case "Up":
                 moveSearchCursor(-1);
                 ev.preventDefault();
                 ev.stopPropagation();
                 return;
-            case 40:
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
-
+            case "Down":
                 moveSearchCursor(1);
                 ev.preventDefault();
                 ev.stopPropagation();
@@ -1210,21 +1202,35 @@
         renderSearchCursor();
     }
 
-    function getKeyValue(ev) {
-	if("key" in ev && typeof ev.key != "undefined") {
-	    return ev.key
-	}
-	var code = ev.charCode || ev.keyCode;
-	if(code == 27) {
-	    return "Escape"
-	}
-	return String.fromCharCode(code)
+    function getKeyString(ev) {
+        var name;
+        var ignoreShift = false;
+        switch (ev.which) {
+            case 13:
+                name = "Enter";
+                break;
+            case 27:
+                name = "Esc";
+                break;
+            case 38:
+                name = "Up";
+                break;
+            case 40:
+                name = "Down";
+                break;
+            default:
+                ignoreShift = true;
+                name = (ev.key != null) ? ev.key : String.fromCharCode(ev.charCode || ev.keyCode);
+        }
+        if (!ignoreShift && ev.shiftKey) name = "Shift+" + name;
+        if (ev.altKey) name = "Alt+" + name;
+        if (ev.ctrlKey) name = "Ctrl+" + name;
+        return name;
     }
     
     function onWindowKeyDown(ev) {
-        switch (getKeyValue(ev)) {
-            case "Escape":
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
+        switch (getKeyString(ev)) {
+            case "Esc":
                 if (!domHelpModal.classList.contains("hidden")) {
                     domHelpModal.classList.add("hidden");
                     ev.preventDefault();
@@ -1232,7 +1238,6 @@
                 }
                 break;
             case "s":
-                if (ev.shiftKey || ev.ctrlKey || ev.altKey) return;
                 domSearch.focus();
                 domSearch.select();
                 ev.preventDefault();
@@ -1240,7 +1245,6 @@
                 startAsyncSearch();
                 break;
             case "?":
-                if (!ev.shiftKey || ev.ctrlKey || ev.altKey) return;
                 ev.preventDefault();
                 ev.stopPropagation();
                 showHelpModal();