Etherpad에는 볼드체, 이탤릭체, 밑줄(스트라이크, 글머리 기호 등) 이외의 다른 작업에 대한 단축키가 있나요?

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

  •  12-12-2019
  •  | 
  •  

문제

글쎄, 거의 모든 것이 제목에 있습니다.텍스트를 굵게, 기울임꼴 또는 밑줄로 만드는 것 외에 다른 작업을 수행할 수 있는 단축키가 있습니까?아니면 그렇게 할 수 있는 플러그인이 있나요?

내 동료에 따르면 소스 코드에는 그런 내용이 포함되어 있지 않은 것 같지만 우리가 뭔가를 놓친 것 같습니다.

도움이 되었습니까?

해결책

Etherpad에는 키보드 단축키 처리를 담당하는 것으로 보이는 ACE2(원래 AppJet Code Editor)라는 내장 리치 텍스트 편집기가 포함되어 있습니다.

그만큼 ace.js 기본적으로 내장된 파일은 축소되어 이전 버전의 Etherpad에서는 읽기가 어려웠지만 원본 소스 파일은 Etherpad에서 직접 읽을 수 있습니다. infrastructure/ace 소스코드의 일부, 축소된 버전이 생성됩니다.이에 대한 자세한 내용은 다음을 참조하세요. ACE2의 읽어보기.최신 버전(적어도 etherpad.org 버전)에는 일반 ACE2 JS 소스가 포함되어 있는 것 같습니다.

키보드 단축키 처리 코드는 다음 위치에 있습니다. ace2_inner.js, 내부 handleKeyEvent() 기능.이를 바탕으로 기본적으로 지원되는 키보드 단축키는 다음과 같습니다(잘라내기/복사/붙여넣기와 같은 브라우저 단축키 위에 있음).

  • 입력하다 - 특수 이더넷 패드 캐리지 리턴
  • 또는 옮기다+ - 글머리 기호 목록 들여쓰기 또는 내어쓰기
  • Ctrl 키+ - 특별한 etherpad 실행 취소
  • Ctrl 키+와이 - 특별한 etherpad 다시 실행
  • Ctrl 키+ - 용감한
  • Ctrl 키+ - 이탤릭체
  • Ctrl 키+ - 밑줄
  • Ctrl 키+시간 - 삭제
  • Ctrl 키+에스 - 개정판 저장

실제로 취소선이나 글머리 기호 목록이 없고 바로가기를 위한 쉬운 확장 메커니즘처럼 보이는 것도 없으므로 손을 더럽힐 필요가 있을 수도 있습니다 ;-)

Etherpad를 직접 배포한 경우 가장 쉬운 방법은 ACE2의 소스 코드를 수정하여 추가 단축키를 처리한 다음 다시 빌드하는 것입니다. ace2.js 축소된 버전(설명서의 지침에 따라) 읽어보기) 필요한 경우.다음은 처리 방법의 예입니다. Ctrl 키+에스 취소선 전환 단축키 및 Ctrl 키+ 글머리 기호 목록 토글의 경우.취소선 단축키는 내장 브라우저 다른 이름으로 저장 기능을 비활성화합니다.제가 찾은 바로가기는 보너스이지만 마음에 들지 않으면 언제든지 다른 키를 선택할 수 있습니다. 에스.
다음 스니펫을 삽입하세요. ace2_inner.js 다른 단축키를 처리하는 유사해 보이는 블록 사이(라인 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;
}

축소된 버전을 다시 빌드할 수 없는 경우 축소된 이름을 사용하여 직접 패치를 시도할 수도 있습니다.위 스니펫의 축소된 버전은 다음과 같습니다. YMMV이지만 축소가 안정적이고 매번 동일한 단축 이름을 재사용하는지 확인하지 않았습니다.축소된 버전을 찾으려면 "y"(따옴표 포함)를 검색하세요. handleKeyEvent() 내부에 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 배포를 제어하지 않는다면 브라우저 내에서 비슷한 것을 구현할 수도 있습니다. 그리스몽키 기본값을 패치하는 스크립트 handleKeyEvent() 기능.편집기에 연결하기 위한 시작점으로 window.pad* 다음과 같은 객체 window.padeditor.예를 들어 편집기에서 일부 텍스트를 선택하고 콘솔에서 다음을 시도해 보십시오.

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top