さて、ほとんどすべてがタイトルにあります。テキストを太字、斜体、または下線を引く以外に実行するショートカットはありますか? またはそれを可能にするプラグインはありますか?
私の同僚によると、ソース コードにはそのようなものは含まれていないようですが、何か見落としているのではないでしょうか?
さて、ほとんどすべてがタイトルにあります。テキストを太字、斜体、または下線を引く以外に実行するショートカットはありますか? またはそれを可能にするプラグインはありますか?
私の同僚によると、ソース コードにはそのようなものは含まれていないようですが、何か見落としているのではないでしょうか?
Etherpad には ACE2 (元は AppJet Code Editor) と呼ばれるリッチテキスト エディタが組み込まれており、キーボード ショートカットの処理を担当しているようです。
デフォルトで埋め込まれているace.js
ファイルは以前は縮小されていたため、以前のバージョンの Etherpad では読みにくかったのですが、縮小版が生成されinfrastructure/ace
たソース コードの部分で元のソース ファイルを直接読み取ることができます。その詳細については、ACE2 の READMEをご覧ください。最近のバージョン (少なくとも etherpad.org のもの) には、通常の ACE2 JS ソースが含まれているようです。
キーボード ショートカットの処理コードは、関数ace2_inner.js
内の にありhandleKeyEvent()
ます。これに基づいて、すぐに使用できるキーボード ショートカットは次のように見えます (切り取り/コピー/貼り付けなどのブラウザーのショートカットに加えて)。
取り消し線や箇条書きリストは実際には何もなく、ショートカットの簡単な拡張メカニズムのように見えるものもないため、手を汚す必要があるかもしれません;-)
Etherpad を独自に展開している場合、最も簡単な方法は、追加のショートカットを処理するように ACE2 のソース コードを変更し、必要に応じて ( READMEace2.js
の指示に従って) 縮小版を再構築することです。これは、取り消し線トグルの+ショートカット、および箇条書きトグルの+を処理する方法の例です。取り消し線のショートカットは、組み込みのブラウザーの名前を付けて保存... ショートカットを無効にします。これはおまけですが、それが気に入らない場合は、いつでも.
次のスニペットを、他のショートカットを処理する似たようなブロックの間に、3200 行目あたりに挿入します。CtrlSCtrlLSace2_inner.js
/* 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;
}
縮小されたバージョンを再構築できない場合は、縮小された名前を使用して直接パッチを適用することもできます。上記のスニペットの縮小版を次に示しますが、YMMV ですが、縮小が安定しているかどうかを確認せず、毎回同じ短縮名を再利用しています。"y" (引用符付き) を検索して、handleKeyEvent()
insideの縮小版を見つけ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;}
最後に、etherpad の展開を制御しない場合は、デフォルトの機能にパッチを適用するブラウザ内のGreaseMonkeyhandleKeyEvent()
スクリプトを使用して、おそらく同様のものを実装できます。エディターにフックするための出発点としてwindow.pad*
、 などのオブジェクトを調べてみてくださいwindow.padeditor
。たとえば、エディターでテキストを選択し、コンソールで次のことを試してください。
> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist')