/
738.txt
184 lines (143 loc) · 8.16 KB
/
738.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
* 仕様書
[REFS[
- [20] [CITE@en[Pointer Lock]] ([TIME[2016-10-19 08:10:29 +09:00]]) <https://w3c.github.io/pointerlock/>
-- [21] [CITE@en[Pointer Lock]] ([TIME[2016-10-19 08:10:29 +09:00]]) <https://w3c.github.io/pointerlock/#h-pointerlockchange-and-pointerlockerror-events>
-- [31] [CITE@en[Pointer Lock]] ([TIME[2016-10-19 08:10:29 +09:00]]) <https://w3c.github.io/pointerlock/#widl-Element-requestPointerLock-void>
]REFS]
* API
** メソッド
[30]
[FIG(short list)[
- [CODE(DOMm)@en[requestPointerLock]]
]FIG]
** イベント
[22] [DFN[[CODE[pointerlockchange]]]] [[イベント]]は、 [[Pointer Lock]]
の状態変更を通知するために使われます [SRC[>>21]]。
[24] [[Pointer Lock]] の開始時と終了時には、
[CODE[pointerlockchange]] [[イベント]]を送信しなければ[MUST[なりません]] [SRC[>>21]]。
[23] [DFN[[CODE[pointerlockerror]]]] [[イベント]]は、 [[Pointer Lock]]
の状態変更の[[誤り]]を通知するために使われます [SRC[>>21]]。
[25] 両[[イベント]]の通知は、[VAR[イベント型]]、[VAR[対象]]について、
次のようにしなければ[MUST[なりません]] [SRC[>>21]]。
[FIG(steps)[
= [26] [[タスクをキューに追加]]します。
[FIG(list members)[ [27] [[タスク]]
: [F[処理]] :
[FIG(steps)[
= [28] [[イベントを発火]]します。
[FIG(list members middle)[
: [VAR[名前]] : [VAR[イベント型]]
: [VAR[対象]] : [VAR[対象]]の[F[節点文書]]
]FIG]
]FIG]
: [F[タスク源]] : ?
]FIG]
]FIG]
[29] 画面の[[拡大鏡]]ソフトウェアは、普通[[マウス]]の移動によって画面上の拡大範囲を変更しますが、
[[Pointer Lock]] が有効な間は[[鍵盤]]操作で変更するようにしなければならず、
[[Webブラウザー]]とそのような[[ソフトウェア]]とで協調が必要です [SRC[>>21]]。
* 処理
[32] [CODE(DOMm)@en[requestPointerLock]] [[メソッド]]は、
次のようにしなければ[MUST[なりません]] [SRC[>>31]]。
[FIG(steps)[
= [35]
[FIG(list)[
- [36] [[文脈オブジェクト]]の[F[節点文書]]の[F[活性砂箱化フラグ集合]]の
[DFN[[F[sandboxed pointer lock browsing context flag]]]] が設定されている
- [37] 次の条件の''いずれか''を満たさ''ない''
-- [38] [[文脈オブジェクト]]の[F[影を含む根]]が[[文書]]
-- [39] [[文脈オブジェクト]]の[F[影を含む根]]の[F[閲覧文脈]]の[F[活性文書]]が[[文脈オブジェクト]]の[F[影を含む根]]
-- [40] [[文脈オブジェクト]]の[F[影を含む根]]の[F[閲覧文脈]]の[F[最上位閲覧文脈]]の[F[窓][窓 (Web)]]が[F[プラットフォームの焦点を持つ]]
- [43] [[文脈オブジェクト]]の[F[影を含む根]]の[F[Pointer Lock要求不能]]が[[真]]
- [48] [[対象][Pointer Lock対象]]が [CODE[null]] ではなく、
[[文脈オブジェクト]]の[F[影を含む根]]が[[対象][Pointer Lock対象]]の[F[影を含む根]]と異なる
]FIG]
... の''いずれか''を満たす場合、
== [42] [CODE[pointerlockerror]] [[イベント]]を[[文脈オブジェクト]]について通知 (>>25) します。
= [33] それ以外の場合、
== [49] [[対象][Pointer Lock対象]]が [CODE[null]] でないなら、
=== [50] [CODE[pointerlockchange]] [[イベント]]を[[対象][Pointer Lock対象]]について通知 (>>25) します。
== [34] [RUBYB[対象]@en[target]]を、[[文脈オブジェクト]]に設定します。
== [41] [CODE[pointerlockchange]] [[イベント]]を[[文脈オブジェクト]]について通知 (>>25) します。
]FIG]
[44] [[文書]]は、[DFN[[F[Pointer Lock要求不能]]]]フラグを持ちます。初期値は[[偽]]です。
[45] [[default unlock user gesture]] は、
[[文書]]の[F[Pointer Lock要求不能]]フラグを[[真]]に設定しなければ[MUST[なりません]]
[SRC[>>31]]。
[46] [[engagement gesture]] が[[発火]]される際は、
[[影を含む根]]の[F[Pointer Lock要求不能]]フラグを[[偽]]に設定しなければ[MUST[なりません]]
[SRC[>>31]]。
[47] [[Pointer Lock要求不能]]フラグにより、[[利用者]]が [[Pointer Lock]]
状態を解除した場合に[[スクリプト]]から再度 [[Pointer Lock]]
を開始することは拒否されます。これによって、むやみやたらに [[Pointer Lock]]
状態に入らせようとするのを拒み、[[利用者]]に他の動作を行う機会を与えます。
([CODE[exitPointerLock]] により解除からの [CODE[requestPointerLock]]
は拒絶されないので、自動的に解除と再設定を繰り返す必要がある場合はこの制限にかかりません。)
[SRC[>>31]]
[51] [[対象][Pointer Lock対象]]が他の[[要素]]に変わる場合、新旧両[[要素]]で
[CODE[pointerlockchange]] を[[発火]]しなければならないことになりますが、
その順序は不明です。また新旧が同じ場合にどうするべきなのかも不明です。
* 歴史
** Mouse Lock
[REFS[
- [4] [CITE[Mouse Lock Specification Draft - Google Docs]]
( ([TIME[2011-09-19 14:36:15 +09:00]] 版))
<https://docs.google.com/document/d/1uV4uDVIe9-8XdVndW8nNGWBfqn9ieeop-5TRfScOG_o/edit?hl=en_US&authkey=CM-dw7QG&pli=1>
- [5] [CITE@en[Re: Mouse Lock]]
( ([[Vincent Scheib]] 著, [TIME[2011-09-13 06:11:49 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1387.html>
- [6] [CITE@en[Mouse Lock]]
( ([TIME[2011-11-14 21:43:11 +09:00]] 版))
<http://dvcs.w3.org/hg/webevents/raw-file/default/mouse-lock.html>
]REFS]
** Pointer Lock
[REFS[
- [1] [CITE@en[Pointer Lock]]
( ([TIME[2012-05-25 22:10:08 +09:00]] 版))
<http://www.w3.org/TR/2012/WD-pointerlock-20120529/>
- [2] [CITE@en[Pointer Lock]]
( ([TIME[2013-10-30 23:44:03 +09:00]] 版))
<http://www.w3.org/TR/2013/WD-pointerlock-20131031/>
- [3] [CITE@en[Pointer Lock]]
( ([TIME[2013-12-12 23:05:22 +09:00]] 版))
<http://www.w3.org/TR/2013/CR-pointerlock-20131217/>
]REFS]
[7] [CITE@en[Webapps/PointerLockFeatures - W3C Wiki]]
([TIME[2015-03-23 19:55:50 +09:00]] 版)
<https://www.w3.org/wiki/Webapps/PointerLockFeatures>
[8] [CITE@en[Moving XHR, DOM Parsing and Pointer Lock to Github]]
([[Arthur Barstow]] 著, [TIME[2015-08-04 23:54:29 +09:00]] 版)
<https://lists.w3.org/Archives/Public/www-archive/2015Aug/0001.html>
[9] [CITE@en[Pointer Lock]]
([TIME[2015-08-05 05:05:36 +09:00]] 版)
<https://w3c.github.io/pointerlock/>
[10] [CITE@en[Create FeatureRequests.md. · w3c/pointerlock@7aebdfc]]
([TIME[2015-10-14 11:01:43 +09:00]] 版)
<https://github.com/w3c/pointerlock/commit/7aebdfcb7b1aa6bef190acee1a0a170e3d118edd>
[11] [CITE@en[''''''[''''''pointerlock'''''']'''''' Oct 2015 Pointer Lock Status]]
([[Vincent Scheib]] 著, [TIME[2015-10-24 05:57:06 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webapps/2015OctDec/0116.html>
[12] [CITE@en[CFC: Republish Pointer Lock as CR]]
( ([[Léonie Watson]]著, [TIME[2016-06-14 01:12:42 +09:00]]))
<https://lists.w3.org/Archives/Public/public-webapps/2016AprJun/0127.html>
[13] [CITE@en[Pointer Lock]]
([TIME[2016-07-04 17:29:48 +09:00]])
<https://www.w3.org/TR/2016/CR-pointerlock-20160705/>
[14] [CITE@en[CfC: Pointer Lock to Proposed Recommendation; deadline August 20]]
([[Xiaoqian Wu]]著, [TIME[2016-08-14 08:01:41 +09:00]])
<https://lists.w3.org/Archives/Public/public-webapps/2016JulSep/0054.html>
[15] [CITE@en[Pointer Lock]]
([TIME[2016-08-29 18:27:23 +09:00]])
<https://www.w3.org/TR/2016/PR-pointerlock-20160830/>
[16] [CITE@en[Fwd: Pointer Lock is a W3C Proposed Recommendation (Call for Review)]]
([[Léonie Watson]]著, [TIME[2016-08-30 23:21:03 +09:00]])
<https://lists.w3.org/Archives/Public/public-webapps/2016JulSep/0083.html>
[17] [CITE@en[w3c/pointerlock: Pointer Lock]]
([TIME[2016-10-23 12:03:57 +09:00]])
<https://github.com/w3c/pointerlock>
[18] [CITE@en[Fwd: Pointer Lock is now a W3C Recommendation]]
([[chaals@yandex-team.ru]]著, [TIME[2016-10-27 17:37:36 +09:00]])
<https://lists.w3.org/Archives/Public/public-webapps/2016OctDec/0015.html>
[19] [CITE@en[Pointer Lock]]
([TIME[2016-10-26 21:34:57 +09:00]])
<https://www.w3.org/TR/2016/REC-pointerlock-20161027/>