diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js index 3650d46ec..58c956b3f 100644 --- a/lib/std/special/docs/main.js +++ b/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,26 +1202,49 @@ renderSearchCursor(); } - function onWindowKeyDown(ev) { + function getKeyString(ev) { + var name; + var ignoreShift = false; switch (ev.which) { + case 13: + name = "Enter"; + break; case 27: - if (ev.shiftKey || ev.ctrlKey || ev.altKey) return; + 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 (getKeyString(ev)) { + case "Esc": if (!domHelpModal.classList.contains("hidden")) { domHelpModal.classList.add("hidden"); ev.preventDefault(); ev.stopPropagation(); } break; - case 83: - if (ev.shiftKey || ev.ctrlKey || ev.altKey) return; + case "s": domSearch.focus(); domSearch.select(); ev.preventDefault(); ev.stopPropagation(); startAsyncSearch(); break; - case 191: - if (!ev.shiftKey || ev.ctrlKey || ev.altKey) return; + case "?": ev.preventDefault(); ev.stopPropagation(); showHelpModal();