Dans Etherpad, existe-t-il des raccourcis pour d'autres actions que le gras, l'italique et le soulignement (grève, puce, …) ?

StackOverflow https://stackoverflow.com//questions/10698889

  •  12-12-2019
  •  | 
  •  

Question

Eh bien, à peu près tout est dans le titre :existe-t-il des raccourcis pour effectuer autre chose que mettre du texte en gras, en italique ou souligné ?Ou n'importe quel plugin permettant de le faire ?

D'après un de mes collègues, le code source ne semble pas contenir de telles choses, mais peut-être avons-nous raté quelque chose ?

Était-ce utile?

La solution

Etherpad contient un éditeur de texte enrichi intégré appelé ACE2 (à l'origine AppJet Code Editor), qui semble être responsable de la gestion des raccourcis clavier.

Le ace.js Le fichier intégré par défaut était minifié et donc difficile à lire dans l'ancienne version d'Etherpad, mais vous pouvez lire les fichiers source d'origine directement dans le fichier infrastructure/ace une partie du code source, à partir de laquelle la version minifiée est produite.Pour plus d'informations à ce sujet, consultez README d'ACE2.Les versions plus récentes (au moins celles d'Etherpad.org) semblent inclure la source ACE2 JS normale.

Le code de gestion des raccourcis clavier se trouve dans ace2_inner.js, à l'intérieur de handleKeyEvent() fonction.Sur cette base, il semble que les raccourcis clavier pris en charge par défaut soient les suivants (en plus des raccourcis du navigateur tels que Couper/Copier/Coller) :

  • Entrer - retour chariot spécial Ethernet
  • Languette ou Changement+Languette - listes à puces en retrait ou en retrait
  • Ctrl+Z - annulation d'un Etherpad spécial
  • Ctrl+Oui - refaire un Ethernet spécial
  • Ctrl+B - audacieux
  • Ctrl+je - italique
  • Ctrl+U - souligner
  • Ctrl+H - supprimer
  • Ctrl+S - Enregistrer une révision

Rien pour les listes barrées ou à puces en effet, et rien qui ressemble à un mécanisme d'extension simple pour les raccourcis, vous devrez donc peut-être vous salir les mains ;-)

Si vous disposez de votre propre déploiement d'Etherpad, le plus simple serait de modifier le code source d'ACE2 pour gérer des raccourcis supplémentaires, puis de reconstruire le ace2.js version minifiée (selon les instructions du LISEZMOI) si besoin.Voici un exemple de la façon de gérer Ctrl+S raccourci pour la bascule barrée, et Ctrl+L pour basculer la liste à puces.Le raccourci barré désactive le navigateur intégré Enregistrer sous...raccourci, ce que je trouve être un bonus, mais si vous n'aimez pas ça, vous pouvez toujours opter pour une autre touche que S.
Insérez l'extrait suivant dans ace2_inner.js entre des blocs d'apparence similaire qui gèrent d'autres raccourcis, autour de la ligne 3200 :

/* Ctrl+S toggles striketrough, and prevents triggering the browser's Save dialog */
if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "s" &&
    (evt.metaKey ||  evt.ctrlKey)) {
  // ctrl/cmd-s (strikethrough toggle)
  fastIncorp(13); // don't ask me ;-)
  evt.preventDefault();
  toggleAttributeOnSelection('strikethrough');
  specialHandled = true;
}
if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "l" &&
    (evt.ctrlKey)) {
  // ctrl/cmd-L (bullet list toggle)
  fastIncorp(9); // seriously, don't ask me ;-)
  evt.preventDefault();
  doInsertUnorderedList();
  specialHandled = true;
}

Si vous ne parvenez pas à reconstruire la version minifiée, vous pouvez également essayer de la corriger directement en utilisant les noms minifiés.Voici pour moi la version minifiée de l'extrait ci-dessus, bien que YMMV, je n'ai pas vérifié si la minification est stable et réutilise les mêmes noms raccourcis à chaque fois.Recherchez "y" (avec les guillemets) pour localiser la version minifiée de handleKeyEvent() à l'intérieur ace.js:

if ((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="s"&&(i.metaKey || i.ctrlKey)){G(13);\\ni.preventDefault();c("strikethrough");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="l"&&(i.metaKey||i.ctrlKey)){G(9);\\ni.preventDefault();As();Cp=true;}

Enfin, si vous ne contrôlez pas le déploiement d'Etherpad, vous pourriez peut-être implémenter quelque chose de similaire à l'aide d'un navigateur intégré. Mécano script qui corrige la valeur par défaut handleKeyEvent() fonction.Comme point de départ pour vous connecter à l'éditeur, essayez d'inspecter le window.pad* des objets, tels que window.padeditor.Par exemple, sélectionnez du texte dans l'éditeur et essayez ce qui suit dans la console :

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top