useHeldKeys
Şu anda basılı tutulan tuşlar; tek bir pencere dinleyicisi kümesi üzerinden tüm abonelerle paylaşılır.
[]pnpm dlx shadcn@latest add https://hextaui.com/r/use-held-keys.jsonHook'u ve bağımlı olduğu her şeyi projenize ekler.
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
hooks/use-held-keys.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Tuşlara basılmasına değil basılı tutulmasına tepki veren her şey için kullanın: aşağı basılan tuş başlıkları, ⌘'yi basılı tutarken beliren kısayol ipuçları veya sürüklerken kopyalamak için Alt gibi bir aracı değiştiren değiştirici tuşlar.
Hook'u çağıran her bileşen tek bir depoyu paylaşır. İlk abone window üzerine pasif keydown ve keyup dinleyicileri ekler, aboneliği bırakan son abone onları kaldırır. Elli dinleyen tuş başlığı olan bir sayfada yine tek bir dinleyici çifti vardır.
Dinleyiciler yalnızca olayları okur. preventDefault asla çağırmazlar ve React'in kendi işleyicilerinden sonra window üzerinde dururlar; böylece bir alana yazmak asla gecikmez veya değişmez.
- Harfler ve rakamlar fiziksel tuş olan
event.code'dan gelir; bu yüzden Mac'te Option+K basılı tutulduğunda da˚yerinekbildirilir. - Tuş tekrarı yok sayılır ve bir tuş basılıyken hiçbir şey yeniden işlenmez.
- macOS, ⌘ basılıyken diğer tuşlar için
keyupgöndermez. ⌘ bırakıldığında depo yalnızca hâlâ basılı olan değiştirici tuşları tutar; böylece harfler takılı kalamaz. - Pencere odağı kaybedince veya sekme gizlenince her şey bırakılır. Uygulama değiştiren bir kısayol hiçbir şeyi basılı bırakmaz.
Basılan tuş başlıkları
<Kbd listen> bu hook üzerine kuruludur. Her tuş başlığı, tuşu basılı tutulurken basılır.
- Dinlemeyi durdurmak için
falseverin. Hook o zaman boş bir küme döndürür ve dinleyici eklemez; bu yüzden koşulsuz çağırmak ucuzdur. - Küme yalnızca bir tuş basıldığında veya bırakıldığında değiştirilir; böylece kimliği memo veya effect bağımlılığı olarak çalışır.
- Bir eylemi tetikleyen kısayollar için bunun yerine bir keydown işleyicisinde
Hotkey'denmatchesHotkeykullanın. Tuşları basılı tutmak durum göstermek içindir, komut çalıştırmak için değil. - Sunucuda ve hydration öncesinde küme boştur.
| Prop | Tür | Varsayılan |
|---|---|---|
enabledDinlenip dinlenmeyeceği. false olduğunda hiçbir şey eklenmez. | boolean | – |
| Döndürür | Açıklama |
|---|---|
ReadonlySet<string> | Şu anda basılı tutulan tuşların adları. |
listen prop'ları üzerinden Kbd ve KbdGroup.