Hotkey
Tastenkürzel parsen, beschriften, ansagen und abgleichen, mit ⌘ auf Apple-Plattformen und Strg überall sonst.
- Apple
- ⇧⌘K
- Windows and Linux
- Shift+Ctrl+K
- Screen readers
- Shift Command K
- parseHotkey
- [["shift","mod","k"]]
Click outside the field and press Shift Command Kmatched 0×
pnpm dlx shadcn@latest add https://hextaui.com/r/hotkey.jsonFügt das Utility und alles, wovon es abhängt, zu deinem Projekt hinzu.
Kopiere den folgenden Code und füge ihn in dein Projekt ein.
lib/hotkey.ts Passe die Importpfade an dein Projekt-Setup an.
Schreibe jedes Kürzel einmal als String und verwende denselben String, um es anzuzeigen, anzusagen und abzugleichen. mod bedeutet ⌘ auf Apple-Plattformen und Strg überall sonst. Das ist fast immer, was du willst, da sich Strg+K auf einem Mac und ⌘K unter Windows beide falsch anfühlen.
Tasten werden durch + getrennt und unterscheiden nicht zwischen Groß- und Kleinschreibung. Benannte Tasten verwenden den kleingeschriebenen KeyboardEvent.key-Wert, etwa enter, tab, pageup oder f5. Verwende space für die Leertaste.
parseHotkey gibt pro Akkord ein Array zurück, mit aufgelösten Aliassen und in Apples Reihenfolge sortierten Modifiern: Control, Option, Shift, Command. Jedes daraus gebaute Label liest sich in der Reihenfolge, in der man es zu sehen erwartet.
Apple-Plattformen verwenden Symbole ohne Trennzeichen, so wie Menüs sie zeigen. Windows und Linux verwenden Wörter, die mit + verbunden sind. Symbole sind schwer vorzulesen, daher liefert spokenKey den Namen, den ein Screenreader stattdessen ansagen soll. <Kbd keys> zeigt das Symbol und legt den gesprochenen Namen in visuell verborgenen Text.
useIsApple() wählt die Plattform. Es gibt auf dem Server und während der Hydration true zurück, dann die echte Antwort, sodass ein Windows-Besucher kurz ⌘ vor Strg sieht, statt einen Hydration-Fehler zu bekommen.
Kürzel-Listener
matchesHotkey prüft ein keydown-Event gegen einen Hotkey. Modifier müssen exakt passen, sodass mod+b nicht für mod+shift+b auslöst.
- Buchstaben und Ziffern werden auch über die physische Taste abgeglichen, sodass
alt+kauf einem Mac funktioniert, wo Option+K ein˚tippt. - Umgeschaltete Buchstaben passen:
shift+kpasst auf dasK, das Shift erzeugt. - Es gleicht einen Akkord ab. Für Sequenzen wie
g iverfolge den vorherigen Akkord selbst. - Überspringt Kürzel ohne Modifier, solange der Fokus in einem Textfeld liegt, sodass das Tippen eines Buchstabens nie einen Befehl auslöst.
| Export | Beschreibung |
|---|---|
parseHotkey(hotkey) | string[][]: ein Array pro Akkord, mit aufgelösten Aliassen und sortierten Modifiern. |
formatHotkey(hotkey, apple) | Das Label für einen Akkord, etwa ⇧⌘K oder Shift+Ctrl+K. |
keyLabel(key, apple) | Das sichtbare Label für einen Tastennamen. |
spokenKey(key, apple) | Der Name, den ein Screenreader für eine Taste ansagen soll. |
matchesHotkey(event, hotkey) | Ob ein KeyboardEvent zu einem Akkord passt, mit exakten Modifiern. |
isApplePlatform() | Liest navigator.platform. Auf dem Server true. |
useIsApple() | isApplePlatform als hydration-sicherer Hook. |
Kbd und Command.
- CommandEine durchsuchbare Liste von Aktionen, inline oder als ⌘K-Palette, mit Seiten, Tastenkürzeln und hervorgehobenen Treffern.
- KbdTastenkappen für Tastenkürzel, die auf jeder Plattform die richtigen Symbole zeigen, korrekt vorgelesen werden und sich wie echte Tasten eindrücken.
- SidebarEine App-Seitenleiste, die zu Icons oder off-canvas einklappt, unter deinem Header fixiert bleibt und auf Smartphones zu einem wischbaren Sheet wird.