2010-05-21 5 views
1

Firefox 확장 기능 (Firefox의 모든 영역에서 작동 할 것입니다)을 등록 할 수있는 Firefox 부가 기능을 개발할 과제가 주어졌습니다. 이전에 기록 된 입력을 기반으로 XMLRPC 요청을 실행합니다. 여기에있는 아이디어는 사용자가 키보드 단축키를 통해 실행하고자하는 많은 잠재적 인 XMLRPC 요청이있을 것이라는 점입니다.Firefox 부가 기능 개발 : 글로벌 동적 맞춤 키보드 단축키 등록

현재 애드온은 Firefox 오버레이를 통해 사전 정의 된 정적 키보드 단축키를 처리 할 수 ​​있습니다. 달성하고자하는 것은 사용자가 자신의 동적 사용자 정의 키보드 단축키를 등록 할 수 있도록하는 것입니다.

현재이 기능 중 일부는 Keyconfig이라고하는 추가 기능이 있습니다. 나는 자신의 바로 가기를 정의하기 위해 두 번째 부가 기능을 설치하라고 사용자에게 요구하는 것에 열중하지 않습니다. 또한 Keyconfig에서 동적 키보드 단축키 등록 메소드를 사용하면 동적 단축키를 사용하기 전에 모든 Firefox 창을 닫아야합니다. 내가 알고 싶은 무엇

은 다음과 같습니다

  • 는 XPCOM 컴포넌트 부가 기능은 파이어 폭스 내에서 동적 키보드 단축키를 등록하는 가장 좋은 방법이 있나요?
  • 미리보기 창을 닫지 않고 모든 Firefox 창에서 즉시 사용할 수 있도록 키보드 바로 가기를 등록하는 방법이 있습니까?

답변

1

나는,하지만 작업 동료의 도움으로, 우리가 낸 "는 파이어 폭스 부가 기능은? 내에서 동적 키보드 단축키를 등록하는 가장 좋은 방법 XPCOM 컴포넌트인가"에 응답 할 수없는거야 동적 키보드 단축키를 사용하여 즉시 사용할 수 있도록하는 방법을 설명합니다. 그것이 크롬 창 과정이 모든 키 누름 이벤트 콜백을 실행하므로, 지독한 해킹 낱알

window.onkeypress = callback; 

; 다시로드 할 필요없이 기본 Firefox 크롬 창에 동적 키보드 단축키를 사용할 수 있습니다.

init: function() { 
    var sidebarElement = document.getElementById("sidebar"); 

    sidebarElement.addEventListener("fooKeyboardShortcut", function shortcutKeyListener(anEvent) { 
     fooOverlay.shortcutMap = sidebarElement.contentWindow.foo.getShortcutKeysMap(); 
    }, true); 
}, 

:

하는이 키보드 단축키는 사이드 바에서 정의되는 작업을 얻으려면, 나는 사이드 바에서 사용자 정의 이벤트를 수신하는 오버레이 자바 스크립트의 초기화에 리스너() 메소드를 만들었습니다 그런 다음 사이드 바의 객체가지도에 대한 상태 변경시 이러한 이벤트 중 하나를 실행하여 이벤트 리스너가지도를 Firefox 오버레이의 객체에 할당합니다. 매핑 키 다음의 키를 이벤트 데이터 멤버의 복합 해시 :

  • Alt 키
  • ctrlKey
  • metaKey
  • shiftKey
  • charCode 값

그것은 여기 주목할 가치가있다, 그게 keyCode은 항상 '0'값을 갖고있는 것처럼 보이지 않으므로 사용할 수 없습니다. charCode에 올바른 값이 있습니다.

각 키의 값은 사이드 바 객체가 원하는 XMLRPC 호출을 실행하기위한 콜백 키입니다.

이 바로 가기 키 맵은 각 키 누르기에 대해 쿼리되고 일치하는 항목이 있으면; 콜백 키는 미리 등록 된 사이드 바 콜백에 사용됩니다.

관련 문제