Как правильно определить дельты движений мыши за пределами экрана в XUL?

Для созданного мною расширения SlyZoom я хочу реализовать виртуальный слайдер: элемент XUL/XBL, который действует как небольшая статическая область, где на mousedownуказатель мыши изменится на ew-resize и я захватить mousemove события для обнаружения горизонтального движения, для изменения текущего уровня масштабирования.

До сих пор я реализовал пробное решение, используя стандартный MouseEvent API и очень удобный MouseEvent.mozMovementX, который, кажется, присутствует даже тогда, когда я не использую API Pointer Lock.

В этом примере изображения вы видите (Xubuntu) ew-resize указатель мыши над временным виртуальным ползунком, который является областью, с маленькой черной двойной стрелкой за указателем мыши в левой части <menulist>:

Пример виртуального слайдера

Правая сторона этого изображения - правый край экрана;левая сторона просто обрезана.

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

Я пытался обойти это с помощью API блокировки указателя. Однако создается впечатление, что API блокировки указателя не работает для документов XUL/XBL. Это верно? Или API-интерфейс Pointer Lock должен работать и для документов XUL/XBL?

В любом случае, даже если бы API-интерфейс Pointer Lock работал для моего элемента XBL, он бы скрывал указатель мыши, а это нежелательно. Хотя я полагаю, что в этом случае я мог бы попытаться создать указатель искусственной мыши, но, боюсь, это довольно громоздко и склонно к ошибочному поведению.

Итак, мой вопрос сводится к следующему:

Как правильно определить дельты перемещения мыши за края экрана в документах XUL/XBL? Возможно ли это как-нибудь?

0 ответов

Другие вопросы по тегам