This commit is contained in:
Vanessa 2022-09-09 11:17:19 +08:00
parent cc52aff0cb
commit 31c2f647e4
2 changed files with 20 additions and 10 deletions

View file

@ -202,10 +202,11 @@ export const keymap = {
if (event.ctrlKey && !event.metaKey && isMac()) { if (event.ctrlKey && !event.metaKey && isMac()) {
keymapStr += "⌃"; keymapStr += "⌃";
} }
if (event.altKey) {
keymapStr += "⌥";
}
if (event.shiftKey) { if (event.shiftKey) {
keymapStr += "⇧"; keymapStr += "⇧";
} else if (event.altKey) {
keymapStr += "⌥";
} }
if (isCtrl(event)) { if (isCtrl(event)) {
keymapStr += "⌘"; keymapStr += "⌘";

View file

@ -52,15 +52,24 @@ export const matchHotKey = (hotKey: string, event: KeyboardEvent) => {
} }
if (hotKey.startsWith("⌥")) { 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 && isMatchKey) {
if ((hotKeys.length === 3 ? isCtrl(event) : !isCtrl(event)) && event.altKey && !event.shiftKey && return true;
( }
(/^[0-9]$/.test(keyCode) ? (event.code === "Digit" + keyCode || event.code === "Numpad" + keyCode) : event.code === "Key" + keyCode) || // ⌥⇧⌘[]
event.code === keyCode || if (hotKey.startsWith("⌥⇧⌘") && hotKeys.length === 4 && event.altKey && event.shiftKey && isCtrl(event) && isMatchKey) {
(event.code === "Period" && keyCode === ".") || return true;
(event.code === "BracketLeft" && keyCode === "[") || (event.code === "BracketRight" && keyCode === "]") }
)) { // ⌥⇧[]
if (hotKey.startsWith("⌥⇧") && hotKeys.length === 3 && event.altKey && event.shiftKey && !isCtrl(event) && isMatchKey) {
return true; return true;
} }
return false; return false;