diff --git a/docs/commands-keybindings.md b/docs/commands-keybindings.md index a74a79a..2ab0f48 100644 --- a/docs/commands-keybindings.md +++ b/docs/commands-keybindings.md @@ -84,5 +84,6 @@ Mostra una dashboard grafica centrata con lo stato di salute dell'estensione: - **Primo tocco (`F12`)**: Avvia la registrazione audio tramite `ffmpeg`, riproduce il suono sci-fi *Power Up* e mostra la barra di stato live `๐Ÿ”ด REGISTRAZIONE... MM:SS / MM:SS`. - **Secondo tocco (`F12`)**: Interrompe la registrazione, riproduce il suono *Deactivate*, ottimizza l'audio (soppressione silenzio), invia la traccia a Gemini per la trascrizione e trasmette il prompt risultante a `pi`. -### Tasto `Esc` / `Escape` โ€” Annullamento Registrazione -- Durante una registrazione audio attiva, premere `Esc` o `Escape` abortisce immediatamente il processo `ffmpeg`, rimuove il file temporaneo, riproduce il tono acustico di cancellazione e cancella l'indicatore di stato. +### Tasto `Ctrl+Esc` โ€” Annullamento Registrazione +- Durante una registrazione audio attiva, premere `Ctrl+Esc` abortisce immediatamente il processo `ffmpeg`, rimuove il file temporaneo, riproduce il tono acustico di cancellazione e cancella l'indicatore di stato. +- `Esc` da solo รจ riservato alla combinazione built-in di pi (`app.interrupt`), quindi l'estensione usa `Ctrl+Esc` per evitare il conflitto. diff --git a/docs/vocal-workflow.md b/docs/vocal-workflow.md index 95cec25..6ade2e1 100644 --- a/docs/vocal-workflow.md +++ b/docs/vocal-workflow.md @@ -41,7 +41,7 @@ Alla pressione del tasto **F12**: - Viene avviato un sottoprocesso `ffmpeg` che cattura dal dispositivo PulseAudio predefinito (`-f pulse -i default`). - L'audio viene campionato a 16.000 Hz in mono (`-ac 1 -ar 16000`). - Viene attivato un timer TUI che aggiorna dinamicamente lo stato di `pi`: - `๐Ÿ”ด REGISTRAZIONE... 00:14 / 02:00 (Esc per annullare)` + `๐Ÿ”ด REGISTRAZIONE... 00:14 / 02:00 (Ctrl+Esc per annullare)` ### 2. Feedback Acustici Sci-Fi Procedurali (`playSound`) Per non dipendere da file audio esterni, i suoni di feedback vengono generati proceduralmente usando il filtro `aevalsrc` di `ffmpeg` e riprodotti tramite `paplay` (fallback su `aplay` o `ffplay`): diff --git a/extensions/index.ts b/extensions/index.ts index d4f2034..2ddd15d 100644 --- a/extensions/index.ts +++ b/extensions/index.ts @@ -840,7 +840,7 @@ function startRecording(ctx?: any): string { const maxSecStr = String(maxDur % 60).padStart(2, "0"); ctx.ui.setStatus( "agy-rec", - `๐Ÿ”ด REGISTRAZIONE... ${elapsedMinStr}:${elapsedSecStr} / ${maxMinStr}:${maxSecStr} (Esc per annullare)`, + `๐Ÿ”ด REGISTRAZIONE... ${elapsedMinStr}:${elapsedSecStr} / ${maxMinStr}:${maxSecStr} (Ctrl+Esc per annullare)`, ); }; updateStatus(); @@ -2149,7 +2149,7 @@ export default function agyExtension(pi: ExtensionAPI) { if (!recording) { startRecording(ctx); playSound("start"); - ctx.ui.notify("๐ŸŽ™๏ธ Registrazione avviata (F12 per fermare, Esc per annullare)", "info"); + ctx.ui.notify("๐ŸŽ™๏ธ Registrazione avviata (F12 per fermare, Ctrl+Esc per annullare)", "info"); return; } @@ -2266,19 +2266,7 @@ export default function agyExtension(pi: ExtensionAPI) { }, }); - pi.registerShortcut("escape", { - description: "Annulla la registrazione microfono in corso", - handler: async (ctx) => { - if (recording) { - await cancelRecording(); - ctx.ui.setStatus("agy-rec", ""); - ctx.ui.notify("โŒ Registrazione annullata", "info"); - playSound("cancel"); - } - }, - }); - - pi.registerShortcut("esc", { + pi.registerShortcut("ctrl+escape", { description: "Annulla la registrazione microfono in corso", handler: async (ctx) => { if (recording) {