Я не могу ответить " Является ли компонент XPCOM лучшим способом регистрации динамических сочетаний клавиш из надстройки Firefox? ", но с помощью коллеги по работе у нас есть выяснил способ создания динамических сочетаний клавиш и их немедленного использования.
window.onkeypress = callback;
Будучи вопиющим хаком, он будет выполнять обратный вызов для каждого события нажатия клавиши, которое обрабатывает окно Chrome; он позволяет динамическому сочетанию клавиш в главном окне Firefox chrome без перезагрузки.
Чтобы это работало с определениями сочетаний клавиш на боковой панели, я создал прослушиватель в методе init () оверлея JavaScript, который прослушивает пользовательское событие с боковой панели:
init: function() {
var sidebarElement = document.getElementById("sidebar");
sidebarElement.addEventListener("fooKeyboardShortcut", function shortcutKeyListener(anEvent) {
fooOverlay.shortcutMap = sidebarElement.contentWindow.foo.getShortcutKeysMap();
}, true);
},
Объект на боковой панели затем запустит одно из этих событий при любом изменении состояния карты, в результате чего прослушиватель событий назначит карту объекту в оверлее Firefox. Ключ сопоставления представляет собой составной хэш следующих элементов данных события нажатия клавиши:
- * 1014 клавишу Alt *
- ctrlKey
- metaKey
- shiftKey
- charCode
Здесь стоит отметить, что keyCode не может использоваться, так как кажется, что он все время имеет значение '0'; но charCode имеет правильное значение.
Значением для каждого ключа является ключ обратного вызова для объекта боковой панели для выполнения требуемого вызова XMLRPC.
Эта карта сочетаний клавиш запрашивается для каждого нажатия клавиши, и если есть совпадение; ключ обратного вызова используется для предварительно зарегистрированного обратного вызова боковой панели