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, };