Em Etherpad, existem atalhos para outras ações de negrito, itálico e sublinhado (greve, a ponto de marca, ...)?

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

  •  12-12-2019
  •  | 
  •  

Pergunta

Bem, praticamente tudo que está no título:existem atalhos para executar algo mais do que fazer o texto em negrito, itálico ou sublinhado ?Ou algum plugin que permite fazer isso ?

De acordo com um colega meu, o código fonte não parecem conter tais coisas, mas talvez a gente tenha perdido algo ?

Foi útil?

Solução

Etherpad contém uma embedded rich editor de texto chamado ACE2 (originalmente AppJet Editor de Código), que parece ser responsável pelo atalho de teclado manuseio.

O ace.js arquivo que é incorporado por padrão usada para ser reduzido e, portanto, difícil de ler na versão mais antiga do Etherpad, mas você pode ler os arquivos de origem diretamente no infrastructure/ace parte do código-fonte, a partir do qual o minified versão é produzido.Para mais informações sobre o que tem, da uma olhada no ACE2 readme (LEIAME).Versões mais recentes (pelo menos o etherpad.org queridos) parece incluir o normal ACE2 JS de origem.

O atalho de teclado código de manipulação está localizado em ace2_inner.js, dentro do handleKeyEvent() função.Com base nisso, parece que os atalhos de teclado com suporte out-of-the-box, estão os seguintes (na parte superior do navegador de atalhos, como de Cortar/Copiar/Colar):

  • Entrar - especial etherpad de retorno de carro
  • Guia ou Mudança+Guia - avanço ou diminuir avanço de listas de bala
  • Ctrl+Z - especial etherpad desfazer
  • Ctrl+Y - especial etherpad refazer
  • Ctrl+B - negrito
  • Ctrl+Eu - texto em itálico
  • Ctrl+U - sublinhado
  • Ctrl+H - eliminar
  • Ctrl+S - Guardar uma Revisão

Nada para rasurado ou listas de bala, de fato, e nada que se parece com um fácil mecanismo de extensão para atalhos, de modo que você pode precisar sujar as mãos ;-)

Se você tem sua própria implementação do Etherpad o mais fácil pode ser para modificar o código-fonte de ACE2 para lidar com atalhos adicionais e, em seguida, re-construir o ace2.js minified versão (de acordo com as instruções do Leia-me), se necessário.Aqui está um exemplo de como lidar com Ctrl+S atalho para tachado de alternância, e Ctrl+L para a lista com marcas de alternância.O tachado de atalho desativa o grupo builtin navegador Salvar Como...de atalho, o que eu acho é um bônus, mas se você não gosta do que você pode sempre optar por outra chave de S.
Inserir o seguinte trecho em ace2_inner.js entre semelhantes blocos que lidar com outros atalhos, em torno da linha 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;
}

Se você não pode reconstruir o minified versão você também pode tentar diretamente patch-lo usando o minified nomes.Aqui está o reduzido versão do trecho acima para mim, embora YMMV, eu não verifique se a minimização é estável e reutiliza o mesmo nomes abreviados de cada vez.Procure por "y" (com as aspas) para localizar a versão do minified handleKeyEvent() dentro 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;}

Finalmente, se você não controlar o etherpad implantação talvez você poderia implementar algo semelhante usando um navegador GreaseMonkey script que o padrão de manchas handleKeyEvent() função.Como um ponto de partida para ligar para o editor, tente inspecionar o window.pad* objetos, tais como window.padeditor.Por exemplo, seleccione algum texto no editor e tente o seguinte no console:

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top