From 2809436d89529ea5a0062ed9c68ad997799c1102 Mon Sep 17 00:00:00 2001 From: imnyang Date: Sun, 24 May 2026 14:17:15 +0900 Subject: [PATCH] feat: add keyboard shortcut to navigate home on 'h' key press --- .../src/components/keyboard-shortcuts.tsx | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/apps/frontend/src/components/keyboard-shortcuts.tsx b/apps/frontend/src/components/keyboard-shortcuts.tsx index 2b89689..8d0775f 100644 --- a/apps/frontend/src/components/keyboard-shortcuts.tsx +++ b/apps/frontend/src/components/keyboard-shortcuts.tsx @@ -7,7 +7,7 @@ export default function KeyboardShortcuts() { const router = useRouter(); useEffect(() => { - function handleKeyDown(event: KeyboardEvent) { + function handleAddKeyDown(event: KeyboardEvent) { // input, textarea, contenteditable에서는 무시 const target = event.target as HTMLElement; if ( @@ -23,8 +23,29 @@ export default function KeyboardShortcuts() { } } - document.addEventListener("keydown", handleKeyDown); - return () => document.removeEventListener("keydown", handleKeyDown); + document.addEventListener("keydown", handleAddKeyDown); + return () => document.removeEventListener("keydown", handleAddKeyDown); + }, [router]); + + useEffect(() => { + function handleHomeKeyDown(event: KeyboardEvent) { + // input, textarea, contenteditable에서는 무시 + const target = event.target as HTMLElement; + if ( + target.tagName === "INPUT" || + target.tagName === "TEXTAREA" || + target.isContentEditable + ) { + return; + } + + if (event.key === "h" || event.key === "H") { + router.push("/"); + } + } + + document.addEventListener("keydown", handleHomeKeyDown); + return () => document.removeEventListener("keydown", handleHomeKeyDown); }, [router]); return null;