generated docs: further clean up keyboard shortcut handling

now it's harder to introduce a bug when modifying keyboard shortcut
code.
master
Andrew Kelley 2019-10-15 18:37:09 -04:00
parent 725c873e81
commit e6ca61bdd1
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
1 changed files with 31 additions and 27 deletions

View File

@ -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();