# ⌨️ Raccourcis Clavier - PersoNotes Cette documentation liste tous les raccourcis clavier disponibles dans l'application PersoNotes. ## 📋 Liste des Raccourcis ### Navigation | Raccourci | Action | Description | |-----------|--------|-------------| | `Ctrl/Cmd + H` | Accueil | Retourner à la page d'accueil | | `Ctrl/Cmd + D` | Note du jour | Ouvrir la note quotidienne (Daily Note) | | `Ctrl/Cmd + B` | Sidebar | Afficher ou masquer la barre latérale | ### Création | Raccourci | Action | Description | |-----------|--------|-------------| | `Ctrl/Cmd + N` | Nouvelle note | Ouvrir la modale de création de note | | `Ctrl/Cmd + Shift + F` | Nouveau dossier | Ouvrir la modale de création de dossier | ### Édition | Raccourci | Action | Description | |-----------|--------|-------------| | `Ctrl/Cmd + S` | Sauvegarder | Enregistrer la note actuelle | | `Ctrl/Cmd + P` | Prévisualisation | Basculer entre l'éditeur seul et éditeur+preview | ### Recherche | Raccourci | Action | Description | |-----------|--------|-------------| | `Ctrl/Cmd + K` | Recherche | Focus sur le champ de recherche global | ### Paramètres | Raccourci | Action | Description | |-----------|--------|-------------| | `Ctrl/Cmd + ,` | Paramètres | Ouvrir les paramètres (thèmes, polices) | ### Général | Raccourci | Action | Description | |-----------|--------|-------------| | `Escape` | Fermer | Fermer les modales et dialogues ouverts | ## 🖥️ Notes Spécifiques par Plateforme - **Windows/Linux** : Utilisez la touche `Ctrl` - **macOS** : Utilisez la touche `Cmd` (⌘) ## 🎯 Contexte des Raccourcis ### Raccourcis Globaux Ces raccourcis fonctionnent partout dans l'application : - `Ctrl/Cmd + K` (Recherche) - `Ctrl/Cmd + D` (Note du jour) - `Ctrl/Cmd + N` (Nouvelle note) - `Ctrl/Cmd + H` (Accueil) - `Ctrl/Cmd + B` (Sidebar) - `Ctrl/Cmd + ,` (Paramètres) - `Escape` (Fermer modales) ### Raccourcis Contextuels Ces raccourcis fonctionnent uniquement dans certains contextes : - `Ctrl/Cmd + S` : Fonctionne uniquement quand une note est ouverte - `Ctrl/Cmd + /` : Fonctionne uniquement dans l'éditeur ## 🔧 Implémentation Technique Les raccourcis clavier sont gérés par le module `keyboard-shortcuts.js` qui : 1. Écoute tous les événements `keydown` au niveau document 2. Détecte les combinaisons de touches (Ctrl/Cmd, Shift, etc.) 3. Ignore les raccourcis quand l'utilisateur tape dans un champ de saisie (sauf exceptions) 4. Exécute l'action correspondante ## 📝 Ajouter un Nouveau Raccourci Pour ajouter un nouveau raccourci, modifiez le fichier `frontend/src/keyboard-shortcuts.js` : ```javascript this.shortcuts = [ // ... raccourcis existants { key: 'nouvelle-touche', ctrl: true, shift: false, // optionnel description: 'Description du raccourci', action: () => this.maFonction() } ]; ``` Puis ajoutez la méthode correspondante dans la classe : ```javascript maFonction() { // Votre code ici console.log('Raccourci exécuté'); } ``` ## 🎨 Affichage dans l'Interface Les raccourcis sont affichés : - Dans les **tooltips** des boutons (attribut `title`) - Sur la **page d'accueil** dans la section "⌨️ Raccourcis clavier" - Dans cette **documentation** ## ⚡ Performances Le gestionnaire de raccourcis est optimisé pour : - Écouter un seul événement au niveau document - Utiliser une recherche linéaire rapide (< 1ms) - Ne pas interférer avec les champs de saisie - Supporter les raccourcis multi-plateformes ## 🐛 Dépannage ### Le raccourci ne fonctionne pas 1. Vérifiez que vous n'êtes pas dans un champ de saisie (input/textarea) 2. Vérifiez la console du navigateur pour les messages d'erreur 3. Vérifiez que la fonction cible existe et est accessible ### Conflit avec les raccourcis du navigateur Certains raccourcis peuvent entrer en conflit avec le navigateur : - `Ctrl/Cmd + W` : Fermer l'onglet (réservé au navigateur) - `Ctrl/Cmd + T` : Nouvel onglet (réservé au navigateur) - `Ctrl/Cmd + R` : Recharger (réservé au navigateur) Évitez d'utiliser ces combinaisons pour l'application. ## 📚 Références - [MDN - KeyboardEvent](https://developer.mozilla.org/fr/docs/Web/API/KeyboardEvent) - [Web Platform Keyboard Shortcuts](https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/)