Files
2026-06-19 18:45:55 +08:00

89 lines
2.2 KiB
TypeScript

import {app, BrowserWindow, globalShortcut} from "electron";
import {AppsMain} from "../app/main";
const eventListeners = {};
// 连续点击的快捷键
let continuousKeys = [];
const addKeyInput = (key: string, expire = 1000) => {
let now = Date.now();
continuousKeys.push({key, expire: now + expire});
continuousKeys = continuousKeys.filter(item => item.expire > now);
for (let i = continuousKeys.length - 1; i >= 0; i--) {
const key = continuousKeys
.filter((o, oIndex) => oIndex >= i)
.map(o => o.key)
.join("|");
if (eventListeners[key]) {
eventListeners[key]();
break;
}
}
};
const addMultiKeyListener = (keys: string[], callback: Function) => {
if (!Array.isArray(keys)) {
keys = [keys];
}
const key = keys.join("|");
eventListeners[key] = callback;
};
const createKeyInputListener = (key: string) => {
return () => {
addKeyInput(key);
};
};
const keyMap = {
"CommandOrControl+Shift+H": createKeyInputListener("CommandOrControl+Shift+H"),
};
const ready = () => {
register();
};
const destroy = () => {
globalShortcut.unregisterAll();
};
const register = () => {
globalShortcut.unregisterAll();
app.on("browser-window-focus", () => {
for (let key in keyMap) {
globalShortcut.register(key, keyMap[key]);
}
});
app.on("browser-window-blur", () => {
for (let key in keyMap) {
globalShortcut.unregister(key);
}
});
addMultiKeyListener(["CommandOrControl+Shift+H", "CommandOrControl+Shift+H", "CommandOrControl+Shift+H"], () => {
let focusedWindow = BrowserWindow.getFocusedWindow();
if (focusedWindow) {
if (focusedWindow.webContents.isDevToolsOpened()) {
focusedWindow.webContents.closeDevTools();
} else {
focusedWindow.webContents.openDevTools({
mode: "detach",
activate: false,
title: "FocusedWindow",
});
}
}
});
};
export const KeysMain = {
register,
};
export default {
ready,
destroy,
};