From 28f8a42846061257fb8eab6648f24fae7316e08c Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Mon, 5 Oct 2026 18:15:29 +0100 Subject: [PATCH] feat(hotkeys): chaque raccourci se desactive (Suppr pendant la capture) Off = vk 0, non enregistre : la combinaison reste libre pour les autres applis. Combinaisons retenues en pref DPAPI et rejouees au demarrage, pour qu'un raccourci coupe le reste coffre ferme. Esc annule enfin la capture au lieu de fermer les reglages. Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 13 +++++++++++++ delphi-backend/UMainForm.pas | 22 ++++++++++++++++++---- index.html | 2 +- js/app.autofill.js | 5 ++++- js/app.js | 19 ++++++++++++++++++- 5 files changed, 54 insertions(+), 7 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0b70d43..b4d02d8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -198,6 +198,19 @@ Retour Delphi → JS via `WebBrowser.ExecuteJavaScript('Bridge.onX(...)')`. Combos autofill configurables depuis Settings (synced en DB via `settings_json`). +**Desactiver un raccourci (2026-10-05)** : clic sur le bouton, puis **Suppr** +(ou Retour arriere) → `key: ''` → vk 0, que Delphi n'enregistre pas ; libelle +*Off*. Les combinaisons sont aussi **retenues en pref DPAPI `hotkeys`** (la +requete `autofill/hotkeys` telle quelle, hors suspension de capture) et +**rejouees au demarrage** a la place des valeurs par defaut : `settings_json` +n'arrive qu'apres la connexion, et un `Ctrl+Shift+A` desactive restait pris +tant que le coffre etait ferme. Piege corrige au passage : l'Esc des reglages +(ecouteur `document` en capture, enregistre avant) fermait Settings au lieu +d'annuler la capture — il ignore Esc tant qu'un `[data-capturing="1"]` existe. +**La barrette remplit meme raccourcis coupes** : `onAutofillRequest` recoit +`fromBar`, l'option « Autofill with global hotkey » ne bloque que les +raccourcis. + ## Fill bar (remplir à la souris) Menu du tray → **Fill bar** : une barrette de trois diff --git a/delphi-backend/UMainForm.pas b/delphi-backend/UMainForm.pas index 389527d..0d13cd6 100644 --- a/delphi-backend/UMainForm.pas +++ b/delphi-backend/UMainForm.pas @@ -364,7 +364,13 @@ begin FBridge.OnNewEntryHotkey := BridgeNewEntryHotkey; FBridge.OnQuickSearchRequest := BridgeQuickSearchRequest; FBridge.OnQuickSearchHotkey := BridgeQuickSearchHotkey; - FBridge.RegisterAutofillHotkey; // Ctrl+Shift+L active from startup + // Les combinaisons de la derniere session (dont les raccourcis desactives), + // sinon les valeurs par defaut. + var LSavedHotkeys := PM.UserPrefs.GetPref('hotkeys'); + if LSavedHotkeys <> '' then + HandleBridgeCommand('autofill/hotkeys', LSavedHotkeys) + else + FBridge.RegisterAutofillHotkey; // Ctrl+Shift+L active from startup FBridge.ApplyTitleBarTheme(True); // dark by default, JS may toggle later // Apres le theme et apres OnTrayRestore : la barrette se peint elle-meme, et // son bouton Open passe par cet evenement. @@ -1146,6 +1152,13 @@ begin // Ids, not labels: JS owns the wording AND uses them to flag the exact // row in Settings. A combo the user cleared (vk=0) is never listed. var LFailed := ''; + // RETENU EN PREF DPAPI pour etre rejoue au demarrage : les combinaisons + // vivent dans settings_json, lu seulement apres la connexion - un raccourci + // desactive restait donc pris par les valeurs par defaut tant que le coffre + // etait ferme. Pas la suspension de la capture (sans full_vk). Rien de + // secret dedans. + if GetParam('full_vk') <> '' then + PM.UserPrefs.SetPref('hotkeys', AParams); // Quick-search combo is set unconditionally (independent of the // autofill enabled flag) so the picker stays armed even when the // autofill hotkeys are turned off. @@ -1198,9 +1211,10 @@ begin // One notification for the whole batch, naming the combos that failed — // empty string = everything registered. LFailed := LFailed.TrimRight([',', ' ']); - WebBrowser.ExecuteJavaScript( - 'if(window.Bridge&&Bridge.onAutofillHotkeysResult)' + - 'Bridge.onAutofillHotkeysResult("' + LFailed.Replace('"', '') + '")'); + if FBrowserInitialized then + WebBrowser.ExecuteJavaScript( + 'if(window.Bridge&&Bridge.onAutofillHotkeysResult)' + + 'Bridge.onAutofillHotkeysResult("' + LFailed.Replace('"', '') + '")'); end // execute: JS has matched an entry, decrypted the password, and is diff --git a/index.html b/index.html index 8170d91..a4c57c7 100644 --- a/index.html +++ b/index.html @@ -734,7 +734,7 @@

- Click a button, then press your new combo. Needs Ctrl, Alt or Win + a letter / digit / F-key. + Click a button, then press your new combo. Needs Ctrl, Alt or Win + a letter / digit / F-key. Press Delete instead to turn that hotkey off.