Added keyboard shortcut for home menu

This commit is contained in:
Prozilla 2023-07-30 10:21:18 +02:00
parent dd15c87731
commit 76a5238fb6
No known key found for this signature in database
GPG key ID: 5858DFE71CAF31EE
2 changed files with 52 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js"
import ApplicationsManager from "../../features/applications/applications.js";
import { ReactSVG } from "react-svg";
import { closeTab } from "../../features/utils/browser.js";
import { useKeyboardListener } from "../../hooks/utils/keyboard.js";
export function HomeMenu({ active, setActive }) {
const windowsManager = useWindowsManager();
@ -13,8 +14,34 @@ export function HomeMenu({ active, setActive }) {
if (active)
classNames.push(styles.Active);
let onlyAltKey = false;
const onKeyDown = (event) => {
console.log(event);
if (event.key === "Alt") {
event.preventDefault();
onlyAltKey = true;
} else {
onlyAltKey = false;
}
}
const onKeyUp = (event) => {
console.log(event);
if (event.key === "Alt" && onlyAltKey) {
event.preventDefault();
setActive(!active);
onlyAltKey = false;
} else {
onlyAltKey = false;
}
}
useKeyboardListener({ onKeyDown, onKeyUp });
return (
<div className={classNames.join(" ")}>
<div className={classNames.join(" ")} onKeyDown={onKeyDown}>
<div className={styles["Container-inner"]}>
<div className={styles.Buttons}>
<button title="Power" onClick={() => { closeTab(); }}>

View file

@ -0,0 +1,24 @@
import { useEffect } from "react";
/**
* Hook that alerts clicks outside of the passed ref
*/
export function useKeyboardListener({ onKeyDown, onKeyUp, onKeyPress }) {
useEffect(() => {
if (onKeyDown)
document.addEventListener("keydown", onKeyDown);
if (onKeyUp)
document.addEventListener("keyup", onKeyUp);
if (onKeyPress)
document.addEventListener("keypress", onKeyPress);
return () => {
if (onKeyDown)
document.removeEventListener("keydown", onKeyDown);
if (onKeyUp)
document.removeEventListener("keyup", onKeyUp);
if (onKeyPress)
document.removeEventListener("keypress", onKeyPress);
};
}, [onKeyDown, onKeyUp, onKeyPress]);
}