From 30f0c99a585d3c9765e876adbe18984ca50d5bf0 Mon Sep 17 00:00:00 2001 From: huzibaca Date: Wed, 4 Dec 2024 13:19:56 +0800 Subject: [PATCH] fix: shift hotkey conversion fixer #2278 --- src/utils/parse-hotkey.ts | 58 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/src/utils/parse-hotkey.ts b/src/utils/parse-hotkey.ts index 12f96dcf..cfb82e85 100644 --- a/src/utils/parse-hotkey.ts +++ b/src/utils/parse-hotkey.ts @@ -10,6 +10,17 @@ const KEY_MAP: Record = { ",": "Comma", ".": "Period", "/": "Slash", + // 数字键映射 + "1": "Digit1", + "2": "Digit2", + "3": "Digit3", + "4": "Digit4", + "5": "Digit5", + "6": "Digit6", + "7": "Digit7", + "8": "Digit8", + "9": "Digit9", + "0": "Digit0", // Option + 特殊字符映射 "–": "Minus", // Option + - "≠": "Equal", // Option + = @@ -57,7 +68,52 @@ const mapKeyCombination = (key: string): string => { }; export const parseHotkey = (key: string) => { let temp = key.toUpperCase(); - console.log(temp); + + // 处理特殊符号到键位的映射 + switch (temp) { + // 数字键符号 + case "!": + return "DIGIT1"; // shift + 1 + case "@": + return "DIGIT2"; // shift + 2 + case "#": + return "DIGIT3"; // shift + 3 + case "$": + return "DIGIT4"; // shift + 4 + case "%": + return "DIGIT5"; // shift + 5 + case "^": + return "DIGIT6"; // shift + 6 + case "&": + return "DIGIT7"; // shift + 7 + case "*": + return "DIGIT8"; // shift + 8 + case "(": + return "DIGIT9"; // shift + 9 + case ")": + return "DIGIT0"; // shift + 0 + // 其他特殊符号 + case "?": + return "SLASH"; // shift + / + case ":": + return "SEMICOLON"; // shift + ; + case "+": + return "EQUAL"; // shift + = + case "_": + return "MINUS"; // shift + - + case '"': + return "QUOTE"; // shift + ' + case "<": + return "COMMA"; // shift + , + case ">": + return "PERIOD"; // shift + . + case "{": + return "BRACKETLEFT"; // shift + [ + case "}": + return "BRACKETRIGHT"; // shift + ] + case "|": + return "BACKSLASH"; // shift + \ + } if (temp.startsWith("ARROW")) { temp = temp.slice(5);