2

私が作成したSlyZoom 拡張機能mousedownでは、仮想スライダーを実装したいと考えています。これは、マウス ポインターが on に変化する小さな静的領域として機能する XUL/XBL 要素であり、イベントew-resizeをキャプチャmousemoveして水平方向の動きを検出し、現在のスライダーを変更します。ズームレベル。

これまでのところ、標準のMouseEvent APIを使用し、非常に便利なMouseEvent.mozMovementXを利用して暫定的な解決策を実装しました。これはPointer Lock APIを使用していないときでも存在しているようです。

この例の画像では、(Xubuntu)ew-resizeマウス ポインターが一時的な仮想スライダー (領域) の上にあり、マウス ポインターの後ろに小さな黒い二重矢印があり、 の左側にあります<menulist>

仮想スライダーの例

この画像の右側が画面の右端です。左側は単純にトリミングされています。

ただし、ご想像のとおり、ユーザーが十分なズーム レベルに達する前に、マウス ポインターが定期的にユーザーの画面の端に到達する可能性が非常に高くなります。そのような場合、残念MouseEvent.mozMovementXながら、物理ポインター デバイスがまだ動いていても、 はゼロのままです。

Pointer Lock API を使用して、これを回避しようとしました。ただし、Pointer Lock API は XUL/XBL ドキュメントでは機能しないようです。あれは正しいですか?それとも、Pointer Lock API は XUL/XBL ドキュメントでも機能するはずですか?

いずれにせよ、Pointer Lock APIXBL 要素に対して機能していたとしても、マウス ポインターが非表示になり、望ましくありません。その場合、偽のマウス ポインターを作成することもできると思いますが、それはかなり面倒で、動作が不安定になりがちです。

だから私の質問はこれに要約されます:

XUL/XBL ドキュメントで画面の端を越えたマウスムーブ デルタを正しく検出するにはどうすればよいですか? どういうわけか、これは可能ですか?

4

0 に答える 0