mirror of
https://github.com/imsyy/SPlayer.git
synced 2025-11-25 03:14:57 +08:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { ipcMain } from "electron";
|
|
import { isShortcutRegistered, registerShortcut, unregisterShortcuts } from "../shortcut";
|
|
import mainWindow from "../windows/main-window";
|
|
|
|
/**
|
|
* 初始化快捷键 IPC 主进程
|
|
* @returns void
|
|
*/
|
|
const initShortcutIpc = (): void => {
|
|
const mainWin = mainWindow.getWin();
|
|
|
|
// 快捷键是否被注册
|
|
ipcMain.handle("is-shortcut-registered", (_, shortcut: string) => isShortcutRegistered(shortcut));
|
|
|
|
// 注册快捷键
|
|
ipcMain.handle("register-all-shortcut", (_, allShortcuts: any): string[] | false => {
|
|
if (!mainWin || !allShortcuts) return false;
|
|
// 卸载所有快捷键
|
|
unregisterShortcuts();
|
|
// 注册快捷键
|
|
const failedShortcuts: string[] = [];
|
|
for (const key in allShortcuts) {
|
|
const shortcut = allShortcuts[key].globalShortcut;
|
|
if (!shortcut) continue;
|
|
// 快捷键回调
|
|
const callback = () => mainWin.webContents.send(key);
|
|
const isSuccess = registerShortcut(shortcut, callback);
|
|
if (!isSuccess) failedShortcuts.push(shortcut);
|
|
}
|
|
return failedShortcuts;
|
|
});
|
|
|
|
// 卸载所有快捷键
|
|
ipcMain.on("unregister-all-shortcut", () => unregisterShortcuts());
|
|
};
|
|
|
|
export default initShortcutIpc;
|