-
Notifications
You must be signed in to change notification settings - Fork 4
/
205.txt
208 lines (153 loc) · 10.9 KB
/
205.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
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
* 仕様書
[REFS[
- [47] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#processing-model-6>
]REFS]
* 鍵盤操作への反応
[12] 基本的に [CODE(HTMLe)@en[[[KeyboardEvent]]]] が[[dispatch]]されます。
@@
[42] ある[[文書]]が[[キーイベント]]を受信した時、その[[対象]]は次のように決定しなければ[['''なりません''']] [SRC[>>47]]。
[FIG[
- [43] [[フォーカス]]されている[[要素]]があれば、その[[要素]]
- [44] >>43 がなく、[[文書[CODE(HTMLe)@en[body]]要素]]があれば、その[[要素]]
- [45] >>43, >>44 がなく、[[文書]]の[[根要素]]があれば、その[[要素]]
- [46] >>43, >>44, >>45 がなければ、[[キーイベント]]は[[発火]]しない
]FIG]
[27] その他に[[プラットフォームの慣習]]による動作も発生します。以下はその例です。
[21] [KBD[[[Enter]]]] は、
[FIG(steps)[
= [30] 編集可能な要素なら、[[改行]]を挿入します。 ([KBD[[[Shift]]]] キーの有無で動作が変わります。)
= [13] [[ハイパーリンク]] ([CODE(HTMLe)@en[[[link]]]] [[要素]]でも?)、
[[ボタン]]では、[[クリック]]に相当するものとして[[合成クリック活性化手順]]が呼び出されます。
([KBD[[[Shift]]]] や [KBD[[[Ctrl]]]] が[[活性化動作]]に影響します。)
= [22] [[プルダウンリスト]]では、[[プルダウンメニュー]]を開きます。
= [23] [[プルダウンメニュー]]上の項目では、その項目を選択します。
= [24] [CODE(HTMLe)@en[[[textarea]]]] では、[[改行]]を挿入します。
= [25] その他の[[フォーム制御子]]では、[[既定のボタン]]の[[クリック]]に相当するものとして[[合成クリック活性化手順]]が呼び出されます。
]FIG]
[26] [[スペースキー]]は、
[FIG(steps)[
= [35] 編集中の[[要素]]では、 [CODE(char)[[[U+0020]]]] の[[鍵盤]]入力として扱います。 ([[IME]] 等により処理されます。 [KBD[[[Shift]]]] の有無によって異なる[[文字]]が挿入されたり、[[IME]] の状態変化のみで文字挿入は行われなかったりします。)
= [14] [[ボタン]]では、[[クリック]]に相当するものとして[[合成クリック活性化手順]]が呼び出されます。
= [16] それ以外の[[要素]]では[[スクロール]]操作 ([KBD[[[Shift]]]] で前ページ、それ以外で次ページ) を呼び出します。
]FIG]
[15] [[矢印キー]]は[[スクロール]]操作を呼び出します。
ただし編集可能または選択中で [KBD[[[Shift]]]] キーが押下されていれば、
選択範囲の変更操作を行います。
[17] [KBD[[[PageDown]]]]、[KBD[[[PageUp]]]]、
[KBD[[[Home]]]]、[KBD[[[End]]]] は[[スクロール]]操作を呼び出します。
[18] [KBD[[[Ctrl]]+R]] や [KBD[[[F5]]]] は[[再読込]]操作を呼び出します。
[KBD[[[Shift]]]] を押下していると[[スーパーリロード]]とします。
[19] [KBD[[[Ctrl]]+F]] は [CODE(JS)@en[[[window.find]]]] [[メソッド]]を呼び出します。
[20] [KBD[[[Ctrl]]+P]] は [CODE(JS)@en[[[window.print]]]] [[メソッド]]を呼び出します。
[28] [KBD[[[Ctrl]]+X]], [KBD[[[Ctrl]]+C]], [KBD[[[Ctrl]]+V]]
は[[クリップボード]]の操作を呼び出します。
[29] [KBD[[[Ctrl]]+Z]] は[[元に戻す]]操作を呼び出します。
[31] [KBD[[[Ctrl]]+A]] は「すべて選択」操作を呼び出します。
[38] [KBD[[[Ctrl]]+D]] は[[ブックマークの追加]]操作を呼び出します。
[[IE]] では [KBD[[[Ctrl]]+B]] は[[ブックマーク]] ([[お気に入り]])
の管理画面を開きます。
[39] [KBD[[[Ctrl]]+S]] は表示中の[[文書]]の保存操作 ([[ダウンロード]]参照。) を呼び出します。
[32] [KBD[[[Backspace]]]] は、編集中なら前の文字を削除する操作を、
それ以外なら [CODE(JS)@en[[[history.back]]]] [[メソッド]]を呼び出します。
[33] [[戻る]]キーや[[進む]]キーは、[[履歴]]操作を呼び出します。
[34] [KBD[[[Tab]]]] は、編集中なら入力操作を、
それ以外なら[[フォーカス]]の順方向の移動操作を呼び出します。
[51] [KBD[[[Shift]]+[[Tab]]]] は、
[[フォーカス]]の逆方向の移動操作を呼び出します。
[45] [KBD[[[Shift]] + [[F10]]]] や[KBD[[[アプリケーションキー]]]]は[[文脈メニュー]]を表示します。
[53] その他、[[プラットフォーム]]依存で、次のような[[プラットフォーム]]側の動作が呼び出されることがあります。
[FIG(list)[
- [37] [[Windows]] では、 [KBD[[[F11]]]] は[[全画面表示]]と通常表示を切り替えます。
- [36] [[Windows]] では、 [KBD[[[F12]]]] は[[開発者ツール]]を呼び出します。
- [52] [KBD[半角/全角]]、[KBD[変換]]、[KBD[カタカナ ひらがな]]、[KBD[無変換]]は、
[[IME]] の操作を呼び出します。
- [54] [[Windows]] では、 [KBD[Alt]] で[[メニューバー]]に[[フォーカス]]が移動します。
- [55] [[Windows]] では、 [KBD[[KBD[Alt]] + [KBD[スペース]]]]で[[窓]]の操作メニューが表示されます。
- [56] [[Windows]] では、 [KBD[[KBD[Alt]] + [KBD[F4]]]] で[[窓]]を閉じます。
現在の[[窓]]内の各[F[窓][窓 (Web)]]の[F[閲覧文脈]]を[[閉じる][閲覧文脈を閉じる]]処理が呼び出されます。
- [57] [[Windows]] では、 [KBD[[KBD[Ctrl]] + [KBD[F4]]]] で[[タブ]]を閉じます。
現在の[[タブ]]である[[窓][窓 (Web)]]の[F[閲覧文脈]]を[[閉じる][閲覧文脈を閉じる]]処理が呼び出されます。
- [58] [[Windows]] では、 [KBD[[KBD[Alt]] + [KBD[Tab]]]] で[[窓]]の切り替えメニューが表示されます。
]FIG]
[46] [[assigned access key]] なら、その処理を行います。
;; [CODE(HTMLa)@en[[[accesskey]]]] 参照。
[40] [[イベントループ]]が[F[[[一時停止]]中]]は、
通常よりも反応を抑制する必要があります。
[43] [[マウス操作]]中の[[鍵盤]]の押下状態が操作に影響をあたえることがあります。
[EG[
[44] [[リンク]]を [KBD[[[Shift]]]] + [[クリック]]すると、
新しい[[窓]]が開かれるかもしれません。
]EG]
;; [[マウス操作]]参照。
[42] [[鍵盤]]操作は、[[イベントリスナー]]からの [CODE(JS)@en[[[window.open]]]]
の呼び出しの挙動に影響を与えることがあります。
;; [CODE(JS)@en[[[window.open]]]] 参照。
[49] [[著者]]は、こうした[[Webブラウザー]]側の一般的な動作を鑑み、
それと衝突するような[[スクリプト]]は避けるべきです。
[[Webブラウザー]]は、[[利用者]]に一貫した挙動を提供するため、
こうした基本的な操作は[[著者]]が[[取り消し]]できないようにするべきです。
[EG[
[50] [[GitHub]] は [KBD[[KBD[Ctrl]] + [KBD[F]]]] で独自の検索フォームを表示し、
[[Webブラウザー]]内蔵の検索機能の呼び出しを拒否しますが、独自の検索フォームは
[[Webブラウザー]]内蔵のものほど使いやすくなく、全体として[[利用者体験]]を低下させています。
]EG]
* 歴史
[1]
[CITE@en[Re: new draft of W3C liason stmt from Charles McCathieNevile on 2007-01-27 (public-webapi@w3.org from January 2007)]] ([[Charles McCathieNevile (chaals@opera.com)]] 著, [CODE[2007-01-28 07:00:54 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-webapi/2007Jan/0112>
> We have attempted to resolve this by removing key events from the current
DOM 3
Events spec which should allow us to publish it very soon.
こういう運命なのね・・・
([[名無しさん]] [WEAK[2007-01-28 05:07:15 +00:00]])
[2]
[CITE@en[WebAPI F2F5 -- 25 and 26 Jan 2007]] <http://lists.w3.org/Archives/Public/public-webapi/2007Feb/att-0023/f2f5.html>
([[名無しさん]])
[3]
[KBD@en[[KBD[[[Ctrl]]]] + [KBD[[[Tab]]]]]] を取得できるか?
'''[[WinIE 6]]''':
[[既定動作]]は[[アドレス・バー]]への[[焦点]]の移動。
[CODE(DOMe)@en[[[keypress]]]] は[[発火]]しない。
[CODE(DOMe)@en[[[keydown]]]] は[[発火]]する。
[CODE(DOMe)@en[[[keydown]]]] を[[取消し]]すると、
[[焦点]]の移動は中止される。
'''[[Firefox]] 2''':
[[既定動作]]は次の[[タブ]]への切り替え ([[タブ]]が複数の場合;
[[タブ]]が1つだけの場合は何も起こらない)。
[CODE(DOMe)@en[[[keypress]]]] が発火される。
[[取消し]]しても、[[タブ]]の切り替えは中止できない。
[CODE(DOMe)@en[[[keydown]]]] も確か発火されたはず。
'''[[Opera]] 9''':
[[既定動作]]は[[タブ]]切り替え候補の表示 ([[Windows]] の
[KBD@en[[KBD[[[Alt]]]] + [KBD[[[Tab]]]]]] による[[窓]]の切り替えと同じような機能)。
[[タブ]]が1つだけの場合は何も起こらない。
[CODE(DOMe)@en[[[keydown]]]] が[[発火]]される。
[[取消し]]しても、[[タブ]]切り替え候補の表示は中止できない。
[CODE(DOMe)@en[[[keypress]]]] は確認していない。
[4] [CITE[The SVG Micro DOM (uDOM) – SVG Tiny 1.2]] ([TIME[2008-12-20 02:31:29 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/svgudom.html#events__KeyboardEvent>
[5] [CITE@ja[HTML / DOM におけるキーボードイベント周りの話 - ひだまりソケットは壊れない]]
( ([TIME[2013-02-27 04:44:38 +09:00]] 版))
<http://vividcode.hatenablog.com/entry/dom/keyboard-events>
[6] [CITE[IRC logs: freenode / #whatwg / 20130426]]
( ([TIME[2013-05-06 17:03:20 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130426#l-974>
[7] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#key-event>
[8] [CITE@en[Splitting key/code tables out of DOM3Event spec]]
( ([[Кошмарчик]] 著, [TIME[2014-03-07 02:59:05 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-dom/2014JanMar/0135.html>
[9] [CITE@en-US[DOM Level 3 KeyboardEvent code Values]]
( ([TIME[2014-06-12 13:23:11 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-DOM-Level-3-Events-code-20140612/>
[10] [CITE@en[UI Events]]
( ([TIME[2014-06-12 13:24:42 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-uievents-20140612/>
[11] [CITE@en-US[DOM Level 3 KeyboardEvent key Values]]
( ([TIME[2014-06-12 13:24:06 +09:00]] 版))
<http://www.w3.org/TR/2014/WD-DOM-Level-3-Events-key-20140612/>
[41] [CITE@en-US[DOM Level 3 KeyboardEvent code Values]]
([TIME[2015-04-28 17:35:07 +09:00]] 版)
<http://www.w3.org/TR/2015/WD-DOM-Level-3-Events-code-20150428/>
[48] [CITE@en[Fix #148: drop "keyevents" as an alias of "keyboardevent" for createE… · whatwg/dom@09d7eb6]]
([TIME[2016-02-29 17:05:18 +09:00]] 版)
<https://github.com/whatwg/dom/commit/09d7eb6f7da7057d605acb4f93627e7ee2cbe0a7>