diff --git a/app/src/config/keymap.ts b/app/src/config/keymap.ts index 1fa228972..23c3c5fde 100644 --- a/app/src/config/keymap.ts +++ b/app/src/config/keymap.ts @@ -202,10 +202,11 @@ export const keymap = { if (event.ctrlKey && !event.metaKey && isMac()) { keymapStr += "⌃"; } + if (event.altKey) { + keymapStr += "⌥"; + } if (event.shiftKey) { keymapStr += "⇧"; - } else if (event.altKey) { - keymapStr += "⌥"; } if (isCtrl(event)) { keymapStr += "⌘"; diff --git a/app/src/protyle/util/hotKey.ts b/app/src/protyle/util/hotKey.ts index 86ad46445..ea27cc658 100644 --- a/app/src/protyle/util/hotKey.ts +++ b/app/src/protyle/util/hotKey.ts @@ -52,15 +52,24 @@ export const matchHotKey = (hotKey: string, event: KeyboardEvent) => { } if (hotKey.startsWith("⌥")) { + let keyCode = hotKeys.length === 3 ? hotKeys[2] : hotKeys[1]; + if (hotKeys.length === 4) { + keyCode = hotKeys[3]; + } + const isMatchKey = (/^[0-9]$/.test(keyCode) ? (event.code === "Digit" + keyCode || event.code === "Numpad" + keyCode) : event.code === "Key" + keyCode) || + event.code === keyCode || + (event.code === "Period" && keyCode === ".") || + (event.code === "BracketLeft" && keyCode === "[") || (event.code === "BracketRight" && keyCode === "]"); // 是否匹配 ⌥[] / ⌥⌘[] - const keyCode = hotKeys.length === 3 ? hotKeys[2] : hotKeys[1]; - if ((hotKeys.length === 3 ? isCtrl(event) : !isCtrl(event)) && event.altKey && !event.shiftKey && - ( - (/^[0-9]$/.test(keyCode) ? (event.code === "Digit" + keyCode || event.code === "Numpad" + keyCode) : event.code === "Key" + keyCode) || - event.code === keyCode || - (event.code === "Period" && keyCode === ".") || - (event.code === "BracketLeft" && keyCode === "[") || (event.code === "BracketRight" && keyCode === "]") - )) { + if ((hotKeys.length === 3 ? isCtrl(event) : !isCtrl(event)) && event.altKey && !event.shiftKey && isMatchKey) { + return true; + } + // ⌥⇧⌘[] + if (hotKey.startsWith("⌥⇧⌘") && hotKeys.length === 4 && event.altKey && event.shiftKey && isCtrl(event) && isMatchKey) { + return true; + } + // ⌥⇧[] + if (hotKey.startsWith("⌥⇧") && hotKeys.length === 3 && event.altKey && event.shiftKey && !isCtrl(event) && isMatchKey) { return true; } return false;