Hotkey Listener

Utility

Global 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