Files
VRCT/src-ui/app/_app_controllers/GlobalHotKeyController.jsx

44 lines
1.6 KiB
JavaScript

import { appWindow } from "@tauri-apps/api/window";
import { register, unregisterAll, isRegistered } from "@tauri-apps/api/globalShortcut";
import { invoke } from "@tauri-apps/api/tauri";
import { useEffect, useRef } from "react";
import { store } from "@store";
export const GlobalHotKeyController = () => {
const is_initialized = useRef(false);
useEffect(() => {
if (is_initialized.current) return;
const registerShortcuts = async () => {
const shortcut = "Alt+Y";
const is_already_registered = await isRegistered(shortcut);
if (is_already_registered) return;
await register(shortcut, async () => {
const activeWindowTitle = await invoke("get_active_window_title");
if (activeWindowTitle.includes("VRChat")) {
console.log("Shortcut triggered, setFocus");
appWindow.unminimize();
await appWindow.setFocus();
store.text_area_ref.current?.focus();
} else {
console.log("Active window is not VRChat.");
}
});
};
registerShortcuts();
is_initialized.current = true;
return () => {
unregisterAll().catch((error) => {
console.error("Failed to unregister shortcuts:", error);
});
};
}, []);
return null;
};