89 lines
2.2 KiB
TypeScript
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,
|
|
};
|