[83] Pointer Lock は、マウスカーソルを非表示とし、 特定の要素のみがマウスの移動量や各種操作のイベントを受信できる状態 (固定状態) とする機能群です。
[84] ゲームや3次元モデルの表示などで通常のマウスによる操作を無効化し、 特別な動作モードを実現したい場合に使うことができます。
[22] pointerlockchange
イベントは、 Pointer Lock
の状態変更を通知するために使われます >>21。
[24] 利用者エージェントは、 Pointer Lock の開始時と終了時に、
pointerlockchange
イベントを送信しなければなりません >>21。
[87] スクリプトは、 pointerlockchange
イベントを受信したら、
pointerLockElement
IDL属性を確認することで、
要求した要素に関する固定状態への移行に成功したしたかを判断できます。
[23] pointerlockerror
イベントは、 Pointer Lock
の状態変更の誤りを通知するために使われます >>21。
[60] Document
インターフェイスは、
onpointerlockchange
,
onpointerlockerror
両IDL属性を持ちます。それぞれ、
pointerlockchange
,
pointerlockerror
各イベントのイベントハンドラーIDL属性です。 >>59
[32] requestPointerLock
メソッドは、
次のようにしなければなりません >>31。
[44] 文書は、Pointer Lock要求不能フラグを持ちます。初期値は偽です。
[46] engagement gesture が発火される際は、 影を含む根のPointer Lock要求不能フラグを偽に設定しなければなりません >>31。
[47] Pointer Lock要求不能フラグにより、利用者が Pointer Lock
状態を解除した場合にスクリプトから再度 Pointer Lock
を開始することは拒否されます。これによって、むやみやたらに Pointer Lock
状態に入らせようとするのを拒み、利用者に他の動作を行う機会を与えます。
(exitPointerLock
により解除からの requestPointerLock
は拒絶されないので、自動的に解除と再設定を繰り返す必要がある場合はこの制限にかかりません。)
>>31
[51] 対象が他の要素に変わる場合、新旧両要素で
pointerlockchange
を発火しなければならないことになりますが、
その順序は不明です。また新旧が同じ場合にどうするべきなのかも不明です。
[69] 利用者エージェントは、元のマウスカーソル位置を持ちます。 固定状態が終了すると、開始前の位置で再度マウスカーソルが表示されるようになります >>62。座標の他、マルチディスプレイの場合はどの画面に表示されていたかも復元されることが当然に期待されるものと思われます。 元のマウスカーソル位置は、他に固定状態下でのマウスイベントの座標値の決定にも使われます。
[52] 利用者エージェントは対象を持ちます。
初期状態は null
です。これが非 null
の値なら、
固定状態です。
[53] 固定状態では、利用者の動作に起因して利用者エージェントが発火するすべてのマウスイベントの対象は、 対象としなければなりません >>31。
[54] 固定状態では、マウスカーソルを隠さなければなりません >>31。
[58] 固定状態では、利用者エージェントはマウスカーソルの概念が必要なマウスイベント
(mouseover
, mouseout
, drag
, drop
など)
を発火してはなりません >>31。
[74] 次の場合に、固定状態を終了しなければなりません。exitPointerLock
exitPointerLock
にしかありませんが、
他の方法での終了時も同様と思われます。[78] navigate などで活性文書ではなくなったときも終了する必要がありそうですが、 なぜか規定がありません。
[79] ダイアログ表示時の扱いは不明です。 最低でも、モーダルダイアログが操作できなくなってしまわないような配慮が必要です。
[80] 全画面表示に入ったり、解除されたりしたこと自体を理由に終了してはなりません。 しかし default unlock gesture などで同時に終了することはあり得ます。 >>71
[77] 固定状態の終了は、次のようにしなければなりません >>62。pointerlockchange
イベントを対象について通知 (>>25) します。null
に設定します。
[61] exitPointerLock
は、次のようにしなければなりません >>62。
[70] 利用者エージェントは、利用者に default unlock gesture を常に提供しなければなりません。これは、固定状態を終了させるものです。 >>71
[72] 鍵盤入力が利用できる場合、 ESC を default unlock gesture とするべきです >>71。
[73] default unlock gesture は全画面の終了の方法を同じとするべきです >>71。
[25] 両イベントの通知は、イベント型、対象について、
次のようにしなければなりません >>21。
[29] 画面の拡大鏡ソフトウェアは、普通マウスの移動によって画面上の拡大範囲を変更しますが、 Pointer Lock が有効な間は鍵盤操作で変更するようにしなければならず、 Webブラウザーとそのようなソフトウェアとで協調が必要です >>21。
[85] sandbox
により、Pointer Lock の利用を拒否できます。
[86] allow-pointer-lock
により、
砂箱化時に例外的に Pointer Lock を許可することを記述できます。
[7] Webapps/PointerLockFeatures - W3C Wiki ( 版) <https://www.w3.org/wiki/Webapps/PointerLockFeatures>
[8] Moving XHR, DOM Parsing and Pointer Lock to Github (Arthur Barstow 著, 版) <https://lists.w3.org/Archives/Public/www-archive/2015Aug/0001.html>
[9] Pointer Lock ( 版) <https://w3c.github.io/pointerlock/>
[10] Create FeatureRequests.md. · w3c/pointerlock@7aebdfc ( 版) <https://github.com/w3c/pointerlock/commit/7aebdfcb7b1aa6bef190acee1a0a170e3d118edd>
[11] [pointerlock] Oct 2015 Pointer Lock Status (Vincent Scheib 著, 版) <https://lists.w3.org/Archives/Public/public-webapps/2015OctDec/0116.html>
[12] CFC: Republish Pointer Lock as CR ( (Léonie Watson著, )) <https://lists.w3.org/Archives/Public/public-webapps/2016AprJun/0127.html>
[13] Pointer Lock () <https://www.w3.org/TR/2016/CR-pointerlock-20160705/>
[14] CfC: Pointer Lock to Proposed Recommendation; deadline August 20 (Xiaoqian Wu著, ) <https://lists.w3.org/Archives/Public/public-webapps/2016JulSep/0054.html>
[15] Pointer Lock () <https://www.w3.org/TR/2016/PR-pointerlock-20160830/>
[16] Fwd: Pointer Lock is a W3C Proposed Recommendation (Call for Review) (Léonie Watson著, ) <https://lists.w3.org/Archives/Public/public-webapps/2016JulSep/0083.html>
[17] w3c/pointerlock: Pointer Lock () <https://github.com/w3c/pointerlock>
[18] Fwd: Pointer Lock is now a W3C Recommendation (chaals@yandex-team.ru著, ) <https://lists.w3.org/Archives/Public/public-webapps/2016OctDec/0015.html>
[19] Pointer Lock () <https://www.w3.org/TR/2016/REC-pointerlock-20161027/>
[82] Pointer Lock 仕様書は、未だに10年以上前の、アルゴリズム的でない方法で規定されていて、 その意図する動作は非常に曖昧です。同じく曖昧な UI Events を暗黙裡に猿パッチする形になっていて、 とても曖昧です。
[88] Update Summary of changes: Now relative to W3C Recommendation 27 Octo… (scheib著, ) <https://github.com/w3c/pointerlock/commit/01fefaa0d264189eae831fc099a45610208d58df>
[89] CFC notification: Publish FPWD of Pointer Lock 2.0 (closes 14th Nov 2016) (Léonie Watson著, ) <https://lists.w3.org/Archives/Public/public-webapps/2016OctDec/0024.html>
[90] Pointer Lock 2.0 () <https://www.w3.org/TR/2016/WD-pointerlock-2-20161122/>
[91] FPWD of Pointer Lock 2.0 (Léonie Watson著, ) <https://lists.w3.org/Archives/Public/public-webapps/2016OctDec/0030.html>
[92] Update ED to pointerlock-2 (scheib著, ) <https://github.com/w3c/pointerlock/commit/5caaf81899b5e6157dee4e7f63b4870d6a37b552>
[93] Record published v2 FPWD. (scheib著, ) <https://github.com/w3c/pointerlock/commit/a2af723e21146205f17cf9876f56f87ef32cb1ad>
[94] Record published v1 REC. (scheib著, ) <https://github.com/w3c/pointerlock/commit/7ca1b4a26ebf593a2b85371deaaf214b051ce57b>
[95] Ask for web-platform-tests in CONTRIBUTING.md (#20) (foolip著, ) <https://github.com/w3c/pointerlock/commit/0f1eaa16bdf681505e9f52ccc5f2e1bbfa271873>
[96] 455882 - Treat file:// URLs as having unique origin - chromium - Monorail ( ()) <https://bugs.chromium.org/p/chromium/issues/detail?id=455882>
[97] Change of editor for Pointer Lock (Léonie Watson著, ) <https://lists.w3.org/Archives/Public/public-webapps/2018JanMar/0000.html>
[98] Update the editor (NavidZ著, ) <https://github.com/w3c/pointerlock/commit/b0b9773999c0845b23c7fa1f532b189f9f06efa1>
[99] Update the editor by NavidZ · Pull Request #30 · w3c/pointerlock () <https://github.com/w3c/pointerlock/pull/30>
[100] Update the editor (NavidZ著, ) <https://github.com/w3c/pointerlock/commit/b0b9773999c0845b23c7fa1f532b189f9f06efa1>