From 37c15ecad620ab906d7210cdc7197f9efcad2818 Mon Sep 17 00:00:00 2001 From: Zaki <18zaki18@gmail.com> Date: Sat, 9 May 2026 19:13:58 +0100 Subject: [PATCH] Fix Ctrl+A: use e.key instead of e.code, move before generic Ctrl guard Ctrl+A was selecting page text instead of entries. Switched from e.code === 'KeyA' (layout-dependent) to e.key === 'a'. Moved handler before the generic Ctrl+key else-if chain and before the combined preventDefault block, with its own e.preventDefault() and early return. Handles both 'a' and 'A' key values. --- js/app.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/js/app.js b/js/app.js index 0ab3002..3c323ae 100644 --- a/js/app.js +++ b/js/app.js @@ -1422,10 +1422,19 @@ document.addEventListener('keydown', function(e) { // Prevent browser defaults for ALL our shortcuts BEFORE dispatching const code = e.code; - if (code === 'KeyN' || code === 'KeyF' || code === 'KeyT' || code === 'KeyL' || code === 'KeyS' || code === 'KeyA') { + if (code === 'KeyN' || code === 'KeyF' || code === 'KeyT' || code === 'KeyL' || code === 'KeyS') { e.preventDefault(); } + if (e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey && (e.key === 'a' || e.key === 'A') && !isInput && document.getElementById('authSection').classList.contains('hidden')) { + e.preventDefault(); + getFilteredEntries(view === 'grouped' || view === 'detail').forEach(e => selectedIds.add(e.id)); + updateBatchBar(); + render(); + playSound('click'); + return; + } + if (code === 'KeyN') { if (!isInput && !document.getElementById('addModal').classList.contains('show')) openAdd(); } else if (code === 'KeyF') { @@ -1438,12 +1447,5 @@ document.addEventListener('keydown', function(e) { } else if (code === 'KeyS') { if (document.getElementById('addModal').classList.contains('show')) addEntry(); else if (document.getElementById('editModal').classList.contains('show')) saveEdit(); - } else if (code === 'KeyA') { - if (!isInput && document.getElementById('authSection').classList.contains('hidden')) { - getFilteredEntries(view === 'grouped' || view === 'detail').forEach(e => selectedIds.add(e.id)); - updateBatchBar(); - render(); - playSound('click'); - } } }); \ No newline at end of file