Hotkey Listener
UtilityGlobal keyboard hotkey event handler.
Preview
Press Ctrl+K to trigger
Last pressed: None
Usage
example.jsx
import { HotkeyListener } from "@/components/ui/hotkey-listener";
export default function Example() {
return <HotkeyListener />;
}Source Code
Copy this file into components/ui/hotkey-listener.jsx in your project.
hotkey-listener.jsx
"use client";
import { useEffect } from "react";
function HotkeyListener({ hotkeys = {} }) {
useEffect(() => {
const handler = (e) => {
const parts = [];
if (e.ctrlKey || e.metaKey) parts.push("ctrl");
if (e.shiftKey) parts.push("shift");
if (e.altKey) parts.push("alt");
parts.push(e.key.toLowerCase());
const combo = parts.join("+");
if (hotkeys[combo]) { e.preventDefault(); hotkeys[combo](e); }
};
window.addEventListener("keydown", handler);
return () => window.removeEventListener("keydown", handler);
}, [hotkeys]);
return null;
}
export { HotkeyListener };
Quick Install
Make sure you have the cn() utility set up. It requires clsx and tailwind-merge.
npm install clsx tailwind-merge