mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-02-27 18:22:41 -08:00
82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
import { BrowserWindow, globalShortcut } from "electron";
|
|
|
|
export interface GlobalShortcutConfig {
|
|
toggleVisibleOverlayGlobal: string | null | undefined;
|
|
toggleInvisibleOverlayGlobal: string | null | undefined;
|
|
}
|
|
|
|
export function registerGlobalShortcutsService(options: {
|
|
shortcuts: GlobalShortcutConfig;
|
|
onToggleVisibleOverlay: () => void;
|
|
onToggleInvisibleOverlay: () => void;
|
|
onOpenYomitanSettings: () => void;
|
|
isDev: boolean;
|
|
getMainWindow: () => BrowserWindow | null;
|
|
}): void {
|
|
const visibleShortcut = options.shortcuts.toggleVisibleOverlayGlobal;
|
|
const invisibleShortcut = options.shortcuts.toggleInvisibleOverlayGlobal;
|
|
const normalizedVisible = visibleShortcut?.replace(/\s+/g, "").toLowerCase();
|
|
const normalizedInvisible = invisibleShortcut
|
|
?.replace(/\s+/g, "")
|
|
.toLowerCase();
|
|
|
|
if (visibleShortcut) {
|
|
const toggleVisibleRegistered = globalShortcut.register(
|
|
visibleShortcut,
|
|
() => {
|
|
options.onToggleVisibleOverlay();
|
|
},
|
|
);
|
|
if (!toggleVisibleRegistered) {
|
|
console.warn(
|
|
`Failed to register global shortcut toggleVisibleOverlayGlobal: ${visibleShortcut}`,
|
|
);
|
|
}
|
|
}
|
|
|
|
if (
|
|
invisibleShortcut &&
|
|
normalizedInvisible &&
|
|
normalizedInvisible !== normalizedVisible
|
|
) {
|
|
const toggleInvisibleRegistered = globalShortcut.register(
|
|
invisibleShortcut,
|
|
() => {
|
|
options.onToggleInvisibleOverlay();
|
|
},
|
|
);
|
|
if (!toggleInvisibleRegistered) {
|
|
console.warn(
|
|
`Failed to register global shortcut toggleInvisibleOverlayGlobal: ${invisibleShortcut}`,
|
|
);
|
|
}
|
|
} else if (
|
|
invisibleShortcut &&
|
|
normalizedInvisible &&
|
|
normalizedInvisible === normalizedVisible
|
|
) {
|
|
console.warn(
|
|
"Skipped registering toggleInvisibleOverlayGlobal because it collides with toggleVisibleOverlayGlobal",
|
|
);
|
|
}
|
|
|
|
const settingsRegistered = globalShortcut.register("Alt+Shift+Y", () => {
|
|
options.onOpenYomitanSettings();
|
|
});
|
|
if (!settingsRegistered) {
|
|
console.warn("Failed to register global shortcut: Alt+Shift+Y");
|
|
}
|
|
|
|
if (options.isDev) {
|
|
const devtoolsRegistered = globalShortcut.register("F12", () => {
|
|
const mainWindow = options.getMainWindow();
|
|
if (mainWindow && !mainWindow.isDestroyed()) {
|
|
mainWindow.webContents.toggleDevTools();
|
|
}
|
|
});
|
|
if (!devtoolsRegistered) {
|
|
console.warn("Failed to register global shortcut: F12");
|
|
}
|
|
}
|
|
}
|