2014-10-18 2 views
1

У меня есть надстройка Firefox, которая прислушивается к событиям смены ключей при активном окне браузера, но также хочу получать события, когда окно браузера не активно. В настоящее время я добавляю слушателей событий во все окна браузера, и я попытался создать горячую клавишу Firefox, но у нее такая же ограниченная область, как и метод окна браузера.Слушайте событие keydown без окна браузера active

Я знаю, что могу сделать это с помощью Windows API, так что, может быть, мой единственный вариант - создать плагин?

+0

Да, вам нужно сделать плагин, или предпочтительный способ: использовать js-ctypes. для окон используются перехватчики: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx – Noitidart

+0

Хе-хе, я только что обнаружил js-ctypes случайно прошлой ночью, в то время как чтение на XPCOM для Firefox. Конечно, похоже, что это сработает, но я еще не пробовал зарегистрировать горячую клавишу через Windows API. –

+1

В Mac OS X вам нужно будет использовать API Accessibility, поэтому вам нужно будет дать пользователю одноразовое приглашение, чтобы разрешить доступность Firefox, если они еще не предоставили его. – Noitidart

ответ

1

Это не напрямую возможно. Браузер не может передать событие на расширение, если браузер не получает событие из оконной системы. Предположительно, вы могли бы создать специальный плагин OS/windowsing, который позволяет использовать API для оконной системы, чтобы обычно получать такие события (при условии, что это разрешено API-интерфейсом оконной системы).

Кажется, что вы хотите получать события, которые происходят в системе окон, которые не предназначены для любого окна браузера. Оконные системы обычно не пропускают события пользовательского интерфейса к окнам, которые не активны или каким-то образом не управляются. Таким образом, браузер не имеет информации о том, что такие события произошли.

В целом это, вероятно, нарушит ожидания пользователя относительно того, как будет работать браузер и система окон. Вы должны серьезно подумать над тем, подходит ли это дополнение для этого дополнения. Возможной причиной этого может быть добавление, которое добавляет горячую клавишу на системном уровне, чтобы вывести последнее окно/вкладку в начало системы окон. В таком случае, когда это явно функция надстройки, разумно это сделать. Как минимум, вы можете столкнуться с другими горячими клавишами системного уровня окна, которые либо по умолчанию, либо заданы пользователем. Следует позаботиться о том, чтобы как минимум разрешить пользователю изменять горячую клавишу, назначенную для любой функции, которую вы создаете.

+0

Спасибо за ответ Макиен. Явная цель моей надстройки - создать горячую клавишу, чтобы мои пользователи не были удивлены поведением. Я не могу сосчитать это как ответ, хотя, поскольку у меня нет больше информации о том, как выполнить мою цель, чем то, что я упомянул в моем вопросе. –

Смежные вопросы