mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 08:30:12 +01:00
This commit is contained in:
parent
1ad395ceec
commit
3e9f5a34d3
3 changed files with 42 additions and 2 deletions
|
|
@ -311,7 +311,7 @@ export const keymap = {
|
|||
}
|
||||
|
||||
if (["⌘", "⇧", "⌥", "⌃"].includes(keymapStr.substr(keymapStr.length - 1, 1)) ||
|
||||
["⌘A", "⌘X", "⌘C", "⌘V", "⇧⌘V", "⌘/", "⇧↑", "⇧↓", "⇧→", "⇧←", "⇧⇥", "⇧⌘⇥", "⌃⇥", "⌘⇥", "⌃⌘⇥", "⇧⌘→", "⇧⌘←", "⌘Home", "⌘End", "⇧↩", "↩", "PageUp", "PageDown", "⌫", "⌦"].includes(keymapStr)) {
|
||||
["⌘A", "⌘X", "⌘C", "⌘V", "⌘-", "⌘=", "⌘0", "⇧⌘V", "⌘/", "⇧↑", "⇧↓", "⇧→", "⇧←", "⇧⇥", "⇧⌘⇥", "⌃⇥", "⌘⇥", "⌃⌘⇥", "⇧⌘→", "⇧⌘←", "⌘Home", "⌘End", "⇧↩", "↩", "PageUp", "PageDown", "⌫", "⌦"].includes(keymapStr)) {
|
||||
showMessage(tip + "] " + window.siyuan.languages.invalid);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ export abstract class Constants {
|
|||
};
|
||||
// 冲突不使用 "⌘S/Q"
|
||||
// "⌘", "⇧", "⌥", "⌃"
|
||||
// "⌘A", "⌘X", "⌘C", "⌘V", "⇧⌘V", "⌘/", "⇧↑", "⇧↓", "⇧→", "⇧←", "⇧⇥", "⇧⌘⇥", "⌃⇥", "⌘⇥", "⌃⌘⇥", "⇧⌘→", "⇧⌘←",
|
||||
// "⌘A", "⌘X", "⌘C", "⌘V", "⌘-", "⌘=", "⌘0", "⇧⌘V", "⌘/", "⇧↑", "⇧↓", "⇧→", "⇧←", "⇧⇥", "⇧⌘⇥", "⌃⇥", "⌘⇥", "⌃⌘⇥", "⇧⌘→", "⇧⌘←",
|
||||
// "⌘Home", "⌘End", "⇧↩", "↩", "PageUp", "PageDown", "⌫", "⌦" 不可自定义
|
||||
public static readonly SIYUAN_KEYMAP: IKeymap = {
|
||||
general: {
|
||||
|
|
|
|||
|
|
@ -92,6 +92,46 @@ export const matchHotKey = (hotKey: string, event: KeyboardEvent) => {
|
|||
return false;
|
||||
}
|
||||
|
||||
// 是否匹配 ⌃[] / ⌃⌥[] / ⌃⇧[]/ ⌃⌥⇧[]
|
||||
if (hotKey.startsWith("⌃")) {
|
||||
let keyCode = hotKeys.length === 3 ? hotKeys[2] : hotKeys[1];
|
||||
if (hotKeys.length === 4) {
|
||||
keyCode = hotKeys[3];
|
||||
}
|
||||
|
||||
let isMatchKey = (/^[0-9]$/.test(keyCode) ? (event.code === "Digit" + keyCode || event.code === "Numpad" + keyCode) : event.code === "Key" + keyCode) ||
|
||||
event.code === keyCode ||
|
||||
event.key === keyCode; // 小键盘上的 /*-+.
|
||||
if (Constants.KEYCODE[event.keyCode]) {
|
||||
if (event.shiftKey) {
|
||||
isMatchKey = Constants.KEYCODE[event.keyCode][1] === keyCode;
|
||||
} else {
|
||||
isMatchKey = Constants.KEYCODE[event.keyCode][0] === keyCode;
|
||||
}
|
||||
}
|
||||
// 是否匹配 ⌃[]
|
||||
if (isMatchKey && hotKeys.length === 2 &&
|
||||
event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
|
||||
return true;
|
||||
}
|
||||
// ⌃⇧[]
|
||||
if (isMatchKey && hotKey.startsWith("⌃⇧") && hotKeys.length === 3 &&
|
||||
event.ctrlKey && !event.altKey && event.shiftKey && !event.metaKey) {
|
||||
return true;
|
||||
}
|
||||
// ⌃⌥[]
|
||||
if (isMatchKey && hotKey.startsWith("⌃⌥") && hotKeys.length === 3 &&
|
||||
event.ctrlKey && event.altKey && !event.shiftKey && !event.metaKey) {
|
||||
return true;
|
||||
}
|
||||
// ⌃⌥⇧[]
|
||||
if (isMatchKey && hotKey.startsWith("⌃⌥⇧") && hotKeys.length === 4 &&
|
||||
event.ctrlKey && event.altKey && event.shiftKey && !event.metaKey) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// 是否匹配 ⇧⌘[] / ⌘[]
|
||||
const hasShift = hotKeys.length > 2 && (hotKeys[0] === "⇧");
|
||||
if (isCtrl(event) && !event.altKey && ((!hasShift && !event.shiftKey) || (hasShift && event.shiftKey))) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue