Hotkey
Analise, rotule, anuncie e compare atalhos de teclado, com ⌘ nas plataformas Apple e Ctrl em todas as outras.
- 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.jsonAdiciona o utilitário e tudo de que ele depende ao seu projeto.
Copie e cole o código a seguir no seu projeto.
lib/hotkey.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Escreva cada atalho uma vez, como uma string, e use a mesma string para exibi-lo, anunciá-lo e compará-lo. mod significa ⌘ nas plataformas Apple e Ctrl em todas as outras. É quase sempre o que você quer, já que Ctrl+K em um Mac e ⌘K no Windows soam errados.
As teclas são separadas por + e não diferenciam maiúsculas de minúsculas. Teclas nomeadas usam o valor KeyboardEvent.key em minúsculas, como enter, tab, pageup ou f5. Use space para a barra de espaço.
parseHotkey retorna um array por acorde, com os aliases resolvidos e os modificadores ordenados na ordem da Apple: Control, Option, Shift, Command. Todo rótulo construído a partir dele é lido na ordem que as pessoas esperam ver.
As plataformas Apple usam símbolos sem separador, como os menus os mostram. Windows e Linux usam palavras unidas por +. Símbolos são difíceis de ler em voz alta, então spokenKey fornece o nome que um leitor de tela deve anunciar. <Kbd keys> mostra o símbolo e coloca o nome falado em texto visualmente oculto.
useIsApple() escolhe a plataforma. Retorna true no servidor e durante a hidratação, e depois a resposta real, então um visitante de Windows vê brevemente ⌘ antes de Ctrl em vez de receber um erro de hidratação.
Listener de atalhos
matchesHotkey verifica um evento keydown contra um hotkey. Os modificadores precisam corresponder exatamente, então mod+b não dispara para mod+shift+b.
- Letras e dígitos também correspondem pela tecla física, então
alt+kfunciona em um Mac, onde Option+K digita˚. - Letras com Shift correspondem:
shift+kcorresponde aoKque o Shift produz. - Ele compara um único acorde. Para sequências como
g i, acompanhe você mesmo o acorde anterior. - Ignora atalhos sem modificadores enquanto o foco está em um campo de texto, para que digitar uma letra nunca dispare um comando.
| Exportação | Descrição |
|---|---|
parseHotkey(hotkey) | string[][]: um array por acorde, com os aliases resolvidos e os modificadores ordenados. |
formatHotkey(hotkey, apple) | O rótulo de um acorde, como ⇧⌘K ou Shift+Ctrl+K. |
keyLabel(key, apple) | O rótulo visível de um nome de tecla. |
spokenKey(key, apple) | O nome que um leitor de tela deve anunciar para uma tecla. |
matchesHotkey(event, hotkey) | Se um KeyboardEvent corresponde a um acorde, com modificadores exatos. |
isApplePlatform() | Lê navigator.platform. true no servidor. |
useIsApple() | isApplePlatform como um hook seguro para hidratação. |
Kbd e Command.
- CommandUma lista pesquisável de ações, inline ou como paleta ⌘K, com páginas, atalhos e correspondências destacadas.
- KbdTeclas para atalhos que mostram os símbolos certos em cada plataforma, são lidas corretamente por leitores de tela e afundam com as teclas reais.
- SidebarUma barra lateral de app que recolhe para ícones ou fora da tela, permanece fixa sob o seu cabeçalho e vira uma sheet com deslize no celular.