diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index 2200ae78d..428cbc35f 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -657,12 +657,6 @@ const fileTreeKeydown = (app: App, event: KeyboardEvent) => { hasClosestByClassName(target, "protyle", true)) { return false; } - if (!window.siyuan.menus.menu.element.classList.contains("fn__none") && - (event.code.startsWith("Arrow") || event.code === "Enter") && - !event.altKey && !event.shiftKey && isNotCtrl(event)) { - event.preventDefault(); - return true; - } if (event.shiftKey) { if (event.key === "ArrowUp") { const startEndElement = getStartEndElement(liElements); diff --git a/app/src/menus/Menu.ts b/app/src/menus/Menu.ts index 9bf2fef10..1938cf01b 100644 --- a/app/src/menus/Menu.ts +++ b/app/src/menus/Menu.ts @@ -2,6 +2,7 @@ import {getEventName, updateHotkeyTip} from "../protyle/util/compatibility"; import {setPosition} from "../util/setPosition"; import {hasClosestByClassName} from "../protyle/util/hasClosest"; import {isMobile} from "../util/functions"; +import {Constants} from "../constants"; export class Menu { public element: HTMLElement; @@ -255,18 +256,19 @@ export const bindMenuKeydown = (event: KeyboardEvent) => { if (window.siyuan.menus.menu.element.contains(target) && (target.tagName === "INPUT" || target.tagName === "TEXTAREA")) { return false; } - if (event.code === "ArrowDown" || event.code === "ArrowUp") { + const eventCode = Constants.KEYCODELIST[event.keyCode] + if (eventCode === "↓" || eventCode === "↑") { const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current"); let actionMenuElement; if (!currentElement) { - if (event.code === "ArrowUp") { + if (eventCode === "↑") { actionMenuElement = getActionMenu(window.siyuan.menus.menu.element.lastElementChild.lastElementChild, false); } else { actionMenuElement = getActionMenu(window.siyuan.menus.menu.element.lastElementChild.firstElementChild, true); } } else { currentElement.classList.remove("b3-menu__item--current", "b3-menu__item--show"); - if (event.code === "ArrowUp") { + if (eventCode === "↑") { actionMenuElement = getActionMenu(currentElement.previousElementSibling, false); if (!actionMenuElement) { actionMenuElement = getActionMenu(currentElement.parentElement.lastElementChild, false); @@ -288,7 +290,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => { } } return true; - } else if (event.code === "ArrowRight") { + } else if (eventCode === "→") { const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current"); if (!currentElement) { return true; @@ -306,7 +308,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => { } window.siyuan.menus.menu.showSubMenu(subMenuElement); return true; - } else if (event.code === "ArrowLeft") { + } else if (eventCode === "←") { const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__submenu .b3-menu__item--current"); if (!currentElement) { return true; @@ -318,7 +320,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => { currentElement.classList.remove("b3-menu__item--current"); } return true; - } else if (event.code === "Enter") { + } else if (eventCode === "↩") { const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current"); if (!currentElement) { return false; diff --git a/app/src/protyle/wysiwyg/keydown.ts b/app/src/protyle/wysiwyg/keydown.ts index df3a7f3bd..6fd1dd51c 100644 --- a/app/src/protyle/wysiwyg/keydown.ts +++ b/app/src/protyle/wysiwyg/keydown.ts @@ -147,9 +147,9 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { } // https://github.com/siyuan-note/siyuan/issues/2261 if (isNotCtrl(event) && !event.shiftKey && !event.altKey) { - if (Constants.KEYCODELIST[event.keyCode] === "Slash") { + if (Constants.KEYCODELIST[event.keyCode] === "/") { protyle.hint.enableSlash = true; - } else if (Constants.KEYCODELIST[event.keyCode] === "Backslash" ) { + } else if (Constants.KEYCODELIST[event.keyCode] === "\\") { protyle.hint.enableSlash = false; hideElements(["hint"], protyle); // 此处不能返回,否则无法撤销 https://github.com/siyuan-note/siyuan/issues/2795 @@ -169,7 +169,7 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { } if (!window.siyuan.menus.menu.element.classList.contains("fn__none") && - (event.code.startsWith("Arrow") || event.code === "Enter") && + (["←", "↑", "→", "↓"].includes(Constants.KEYCODELIST[event.keyCode]) || Constants.KEYCODELIST[event.keyCode] === "↩") && !event.altKey && !event.shiftKey && isNotCtrl(event)) { event.preventDefault(); return;