Pixi’VN

Scorciatoie da tastiera

Come creare scorciatoie da tastiera (hotkey) in Pixi’VN utilizzando TanStack Hotkeys, con esempi per il salvataggio/caricamento rapido e i controlli dei minigiochi.

Le scorciatoie da tastiera permettono ai giocatori di attivare azioni direttamente dalla tastiera, come il salvataggio rapido, saltare i dialoghi o controllare un minigioco. Invece di gestire manualmente le chiamate a window.addEventListener("keydown", ...), si consiglia di utilizzare TanStack Hotkeys, una libreria che trasforma l'input da tastiera in un sistema di comandi tipizzato con scope, sequenze, tasti tenuti premuti e rilevamento dei conflitti.

Un elenco di scorciatoie da tastiera comunemente utilizzate nelle visual novel (salvataggio rapido, caricamento rapido, cronologia, impostazioni, ...) è disponibile nelle FAQ.

Utilizzo

Registra una scorciatoia da tastiera con l'hook useHotkey:

import { useHotkey } from "@tanstack/react-hotkeys";

useHotkey("Mod+S", () => {
    quickSave();
});

Il modificatore Mod si risolve automaticamente in Meta (Cmd) su macOS e in Control su Windows/Linux, quindi lo stesso codice funziona su tutte le piattaforme.

Ambito e attivazione condizionale

useHotkey è un hook, quindi registra la scorciatoia quando il componente viene montato e la rimuove automaticamente quando il componente viene smontato — non è necessario rimuovere il listener manualmente, a differenza di un window.addEventListener manuale.

Usa l'opzione target per limitare una scorciatoia da tastiera a un elemento specifico, e enabled per attivarla o disattivarla in base allo stato del gioco, ad esempio mentre è in esecuzione un minigioco:

const panelRef = useRef<HTMLDivElement>(null);

useHotkey("Escape", () => closePanel(), { target: panelRef });
useHotkey("ArrowUp", () => setDirection(0, -1), { enabled: !gameOver });

Per saperne di più

TanStack Hotkeys supporta anche sequenze di tasti (ad es. "G poi D"), tasti tenuti premuti, rilevamento dei conflitti e un pannello devtools. Consulta la documentazione ufficiale per l'elenco completo delle funzionalità.

In questa pagina