瀏覽代碼

:art: fix https://github.com/siyuan-note/siyuan/issues/5836

Vanessa 2 年之前
父節點
當前提交
31c2f647e4
共有 2 個文件被更改,包括 20 次插入10 次删除
  1. 3 2
      app/src/config/keymap.ts
  2. 17 8
      app/src/protyle/util/hotKey.ts

+ 3 - 2
app/src/config/keymap.ts

@@ -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 += "⌘";

+ 17 - 8
app/src/protyle/util/hotKey.ts

@@ -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 &&
-            (
-                (/^[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 true;
         }
         }
         return false;
         return false;