"use client"; import { useState, useEffect } from "react"; import { Keyboard, Info, RotateCcw } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; export default function KeyboardPage() { const [lastEvent, setLastEvent] = useState(null); useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { e.preventDefault(); // Prevent standard browser actions setLastEvent({ key: e.key === " " ? "Space" : e.key, code: e.code, keyCode: e.keyCode, altKey: e.altKey, ctrlKey: e.ctrlKey, shiftKey: e.shiftKey, metaKey: e.metaKey, location: e.location, repeat: e.repeat }); }; window.addEventListener("keydown", handleKeyDown); return () => window.removeEventListener("keydown", handleKeyDown); }, []); return (

键盘按键检测

实时检测并显示键盘按键的详细事件属性

{!lastEvent ? (
请按下键盘上的任意按键
) : ( <>
Key {lastEvent.key}
)}
什么是 KeyCode?

虽然 `keyCode` 在现代 Web 开发中已被废弃,推荐使用 `key` 和 `code`,但许多旧系统和特定的底层交互仍在使用它。`key` 代表字符本身,而 `code` 代表键盘上的物理位置。

); } function DetailCard({ label, value }: { label: string; value: any }) { return (
{label} {value}
); } function ModifierTag({ active, label }: { active: boolean; label: string }) { return (
{label}
); }