-
Notifications
You must be signed in to change notification settings - Fork 16
/
impl-report.txt
504 lines (435 loc) · 18.1 KB
/
impl-report.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
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
<h1>UI Events KeyboardEvent key Implementation Report</h1>
<pre class="metadata">
Shortname: uievents-key-impl
Level:
Group: webapps
Status: ED
ED: https://w3c.github.io/uievents-key/impl-report.html
Repository: w3c/uievents-key
Editor: Gary Kacmarcik, Google, garykac@google.com
Abstract:
This document reports on implementations of the [[!UIEvents-Key]] specification.
</pre>
<pre class="anchors">
url: http://www.w3.org/TR/uievents-key/#; type: dfn; spec: uievents-key;
text: key attribute value
</pre>
<pre class="include">
path: stylesheet-extra.include
</pre>
<h2 id="introduction">Introduction</h2>
The [[!UIEvents-Code]] specification defines the set of values that are valid for use
in the {{KeyboardEvent/key}} attribute.
This document summarizes the current implementation status of the
{{KeyboardEvent/key}} attribute and its values.
The following versions of each user agents were tested:
* Google Chrome 60.0.3112.113 (OS X 10.12.2, Windows 10, Ubuntu)
* Microsoft Edge 40.15063.0.0 (Windows 10)
* Mozilla Firefox 55.0 (OS X 10.12.2, Windows 10, Ubuntu) & Nightly 95 (macOS 11.6)
* Apple Safari Version 15.0 (macOS 11.6)
<h2 id="methodology">Methodology</h2>
Because there is no automated way to test these key press events (expecially
considering that international keyboard are often required), these tests were all
performed manually.
There are two kinds of required values for this attribute: Unnamed and Named.
* The Unnamed values can be any valid printable Unicode character. Since there are
an extremely large number of these values, it is not practical to test every possible
one. Instead, a sampling of 63 of the most common keys are tested.
* There are 38 required Named values and they are all manually tested.
Manual tests were performed by visiting the
<a href="https://domeventviewer.com/key-event-viewer.html">domeeventviewer.com/key-event-viewer.html</a>
test page and examining the "key" column after pressing the key being tested. To test
keys (like "AltGraph") that are only present on keyboards for certain locales,
this requires using a keyboard from a locale that contains the key being tested.
For purposes of this report, Chrome, Firefox and Safari are considered independent
implementations.
<h2 id="results">Results</h2>
<h3 id="summary">Summary</h3>
Manual tests for all 63 of the sampled Unnamed and all 38 of the Named required values
of the {{KeyboardEvent/key}} attribute <b>Pass</b> in at least 2 independent
implementations.
The Candidate Recommendation exit criteria are therefore fulfilled.
In addition, the specification describes a number of optional Named values that may be
used to support multimedia or legacy keyboards. Of these, manual tests confirm that
39 of these Pass in at least 2 independent implementations.
<h3 id="raw-results">Raw Results</h3>
The following tables present the result of the manual tests.
Entries marked "Pass" generate the expected value when the corresponding key is
pressed.
Entries marked "Fail" generate some value other than the expected value when the
corresponding key is pressed. Wherever possible, a Note is included that provides more
information about the failure.
Entries marked with a "?" have not been tested, typically because devices
with that key were not available (for example, because keyboards with those keys are
not supported on that platform).
<h4 id="key-attribute">The {{KeyboardEvent/key}} Attribute</h4>
The {{KeyboardEvent/key}} attribute (defined in [[!UIEvents]]) is present in all
browsers tested.
<table id="key-attribute-impl" class="data-table full-width">
<thead><tr>
<th>{{KeyboardEvent}} attribute</th>
<th class="key-impl-data">Chrome</th>
<th class="key-impl-data">Edge</th>
<th class="key-impl-data">Firefox</th>
<th class="key-impl-data">Safari</th>
<th>Notes</th>
</tr></thead>
<tbody>
<tr>
<td>{{KeyboardEvent/key}}</td>
<td class="key-impl-data"><span class="key-impl-yes">Pass</span></td>
<td class="key-impl-data"><span class="key-impl-yes">Pass</span></td>
<td class="key-impl-data"><span class="key-impl-yes">Pass</span></td>
<td class="key-impl-data"><span class="key-impl-yes">Pass</span></td>
<td></td>
</tr>
</tbody></table>
<h4 id="required-unnamed-key-attribute-values">Required Unnamed Keys</h4>
The {{KeyboardEvent/key}} attribute can contain any character that can be
produced by any key in any locale, so it is beyond the scope of this document
to attempt to enumerate all possible values that can be contained.
This section provides a basic sampling of key types and identifies if those
keys are generally supported by the user agent.
BEGIN_KEY_IMPL_TABLE unnamed keys
<!-- Key-name Chrome Edge Firefox Safari Notes -->
KEY_IMPL_NOLINK A-Z Y Y Y Y
KEY_IMPL_NOLINK a-z Y Y Y Y
KEY_IMPL_NOLINK 0-9 Y Y Y Y
KEY_IMPL_NOLINK Space Y Y Y Y
END_KEY_IMPL_TABLE
<h4 id="required-named-key-attribute-values">Required Named Keys</h4>
This section lists the basic set of named key attributes that corresponds
to values generated by a standard keyboard layout.
BEGIN_KEY_IMPL_TABLE required named keys
<!-- Key-name Chrome Edge Firefox Safari Notes -->
KEY_IMPL Unidentified Y Y Y Y
KEY_IMPL_SECTION Modifier Keys
KEY_IMPL Alt Y Y Y Y
KEY_IMPL AltGraph Y Y Y ?
KEY_IMPL CapsLock Y Y Y Y
KEY_IMPL Control Y Y Y Y
KEY_IMPL Meta Y Y Y Y
KEY_IMPL NumLock Y Y Y ?
KEY_IMPL ScrollLock Y Y Y ?
KEY_IMPL Shift Y Y Y Y
KEY_IMPL_SECTION Whitespace Keys
KEY_IMPL Enter Y Y Y Y
KEY_IMPL Tab Y Y Y Y
KEY_IMPL_SECTION Navigation Keys
KEY_IMPL ArrowDown Y Y Y Y
KEY_IMPL ArrowLeft Y Y Y Y
KEY_IMPL ArrowRight Y Y Y Y
KEY_IMPL ArrowUp Y Y Y Y
KEY_IMPL End Y Y Y Y
KEY_IMPL Home Y Y Y Y
KEY_IMPL PageDown Y Y Y Y
KEY_IMPL PageUp Y Y Y Y
KEY_IMPL_SECTION Editing Keys
KEY_IMPL Backspace Y Y Y Y
KEY_IMPL Delete Y Y Y Y
KEY_IMPL Insert Y Y Y ?
KEY_IMPL_SECTION UI Keys
KEY_IMPL ContextMenu Y Y Y ?
KEY_IMPL Escape Y Y Y Y
KEY_IMPL Pause Y Y Y ?
KEY_IMPL_SECTION Device Keys
KEY_IMPL PrintScreen Y Y Y ?
KEY_IMPL_SECTION General-Purpose Function Keys
KEY_IMPL F1 Y Y Y Y Chrome opens help page and doesn't send keyup event
KEY_IMPL F2 Y Y Y Y
KEY_IMPL F3 Y Y Y Y Chrome/Firefox open Find bar. Chrome doesn't send keyup event
KEY_IMPL F4 Y Y Y Y
KEY_IMPL F5 Y Y Y Y Chrome/Firefox refresh page
KEY_IMPL F6 Y Y Y Y
KEY_IMPL F7 Y Y Y Y Firefox enables/disables Caret Browsing.
KEY_IMPL F8 Y Y Y Y
KEY_IMPL F9 Y Y Y Y
KEY_IMPL F10 Y Y Y Y
KEY_IMPL F11 Y Y Y Y Chrome enters/leaves fullscreen
KEY_IMPL F12 Y Y Y Y Chome/Firefox open/close debug console.
END_KEY_IMPL_TABLE
<h4 id="optional-editing-named-key-attribute-values">Optional Editing Named Keys</h4>
Since some of these values are dependent on specific keyboards, user agents
are not not expected to support all of these values.
BEGIN_KEY_IMPL_TABLE editing named keys
<!-- Key-name Chrome Edge Firefox Safari Notes -->
KEY_IMPL_SECTION Editing Keys
KEY_IMPL Clear Y Y Y ?
KEY_IMPL Copy F F F ?
KEY_IMPL CrSel Y Y Y ?
KEY_IMPL Cut F F F ?
KEY_IMPL EraseEof Y Y Y ?
KEY_IMPL ExSel Y Y Y ?
KEY_IMPL Paste F F F ?
KEY_IMPL Redo F F Y ?
KEY_IMPL Undo Y F Y ?
KEY_IMPL_SECTION IME and Composition Keys
KEY_IMPL AllCandidates F F F ?
KEY_IMPL Alphanumeric Y F Y ?
KEY_IMPL CodeInput F F F ?
KEY_IMPL Compose F F F ?
KEY_IMPL Convert Y Y Y ?
KEY_IMPL Dead F F F ?
KEY_IMPL FinalMode Y F Y ?
KEY_IMPL GroupFirst F F F ?
KEY_IMPL GroupLast F F F ?
KEY_IMPL GroupNext F F F ?
KEY_IMPL GroupPrevious F F F ?
KEY_IMPL ModeChange Y Y Y ?
KEY_IMPL NextCandidate F F F ?
KEY_IMPL NonConvert Y Y Y ?
KEY_IMPL PreviousCandidate F F F ?
KEY_IMPL Process Y F F ?
KEY_IMPL SingleCandidate F F F ?
KEY_IMPL_SECTION IME keys specific to Korean keyboards
KEY_IMPL HangulMode Y F Y ?
KEY_IMPL HanjaMode Y F Y ?
KEY_IMPL JunjaMode Y Y Y ?
KEY_IMPL_SECTION IME keys specific to Japanese keyboards
KEY_IMPL Eisu F F F ?
KEY_IMPL Hankaku Y F Y ?
KEY_IMPL Hiragana Y F Y ?
KEY_IMPL HiraganaKatakana F F F ?
KEY_IMPL KanaMode Y Y Y ?
KEY_IMPL KanjiMode Y Y Y ?
KEY_IMPL Katakana Y F Y ?
KEY_IMPL Romaji Y F Y ?
KEY_IMPL Zenkaku Y F Y ?
KEY_IMPL ZenkakuHankaku F F F ?
END_KEY_IMPL_TABLE
<h4 id="optional-device-specific-named-key-attribute-values">Optional Device-specific Named Keys</h4>
This sections lists named key attributes that correspond to values
generated by keys found on specialized keyboards, for example:
* Multimedia keyboards
* Keyboard with special IME support
* Remote control devices
Because of the device-specific nature of these values, it is not expected that
user agents will support all of these values
BEGIN_KEY_IMPL_TABLE optional named keys
<!-- Key-name Chrome Edge Firefox Safari Notes -->
KEY_IMPL_SECTION Modifier Keys
KEY_IMPL Fn F F F F
KEY_IMPL FnLock F F F F
KEY_IMPL Symbol F F F F
KEY_IMPL SymbolLock F F F F
KEY_IMPL_SECTION Legacy modifier keys
KEY_IMPL Hyper F F F F
KEY_IMPL Super F F F F
KEY_IMPL_SECTION UI Keys
KEY_IMPL Accept Y Y Y F
KEY_IMPL Again F F F F
KEY_IMPL Attn Y Y Y F
KEY_IMPL Cancel Y F Y F
KEY_IMPL Execute Y Y Y F
KEY_IMPL Find F F F F
KEY_IMPL Help Y Y Y F
KEY_IMPL Play Y Y Y F
KEY_IMPL Props F F F F
KEY_IMPL Select Y Y Y F
KEY_IMPL ZoomIn F F F F
KEY_IMPL ZoomOut F F F F
KEY_IMPL_SECTION Device Keys
KEY_IMPL BrightnessDown F F F F
KEY_IMPL BrightnessUp F F F F
KEY_IMPL Eject F F F F
KEY_IMPL LogOff F F F F
KEY_IMPL Power F F F F
KEY_IMPL PowerOff F F F F
KEY_IMPL Hibernate F F F F
KEY_IMPL Standby Y F Y F
KEY_IMPL WakeUp F F F F
KEY_IMPL_SECTION General-Purpose Function Keys
KEY_IMPL Soft1 F F F F
KEY_IMPL Soft2 F F F F
KEY_IMPL Soft3 F F F F
KEY_IMPL Soft4 F F F F
KEY_IMPL_SECTION Multimedia Keys
KEY_IMPL ChannelDown F F F F
KEY_IMPL ChannelUp F F F F
KEY_IMPL Close F F Y F
KEY_IMPL MailForward Y F Y F
KEY_IMPL MailReply Y F Y F
KEY_IMPL MailSend Y F Y F
KEY_IMPL MediaClose F F F F
KEY_IMPL MediaFastForward F F F F
KEY_IMPL MediaPause F F F F
KEY_IMPL MediaPlay F F F F
KEY_IMPL MediaPlayPause Y F Y F
KEY_IMPL MediaRecord F F F F
KEY_IMPL MediaRewind F F F F
KEY_IMPL MediaStop Y F Y F
KEY_IMPL MediaTrackNext Y F Y F
KEY_IMPL MediaTrackPrevious Y F Y F
KEY_IMPL New F F Y F
KEY_IMPL Open Y F Y F
KEY_IMPL Print F F F F Firefox returns PrintScreen; Chrome returns Undefined
KEY_IMPL Save F F Y F
KEY_IMPL SpellCheck F F F F
KEY_IMPL_SECTION Multimedia Numpad Keys
KEY_IMPL Key11 F F F F
KEY_IMPL Key12 F F F F
KEY_IMPL_SECTION Audio Keys
KEY_IMPL AudioBalanceLeft F F F F
KEY_IMPL AudioBalanceRight F F F F
KEY_IMPL AudioBassBoostDown F F F F
KEY_IMPL AudioBassBoostToggle F F F F
KEY_IMPL AudioBassBoostUp F F F F
KEY_IMPL AudioFaderFront F F F F
KEY_IMPL AudioFaderRear F F F F
KEY_IMPL AudioSurroundModeNext F F F F
KEY_IMPL AudioTrebleDown F F F F
KEY_IMPL AudioTrebleUp F F F F
KEY_IMPL AudioVolumeDown Y F Y F
KEY_IMPL AudioVolumeUp Y F Y F
KEY_IMPL AudioVolumeMute Y F Y F
KEY_IMPL MicrophoneToggle F F F F
KEY_IMPL MicrophoneVolumeDown F F F F
KEY_IMPL MicrophoneVolumeUp F F F F
KEY_IMPL MicrophoneVolumeMute F F F F
KEY_IMPL_SECTION Speech Keys
KEY_IMPL SpeechCorrectionList F F F F
KEY_IMPL SpeechInputToggle F F F F
KEY_IMPL_SECTION Application Keys
KEY_IMPL LaunchApplication1 F F F F
KEY_IMPL LaunchApplication2 F F F F
KEY_IMPL LaunchCalendar F F F F
KEY_IMPL LaunchContacts F F F F
KEY_IMPL LaunchMail F F F F
KEY_IMPL LaunchMediaPlayer F F F F
KEY_IMPL LaunchMusicPlayer F F F F
KEY_IMPL LaunchPhone F F F F
KEY_IMPL LaunchScreenSaver F F F F
KEY_IMPL LaunchSpreadsheet F F F F
KEY_IMPL LaunchWebBrowser F F F F
KEY_IMPL LaunchWebCam F F F F
KEY_IMPL LaunchWordProcessor F F F F
KEY_IMPL_SECTION Browser Keys
KEY_IMPL BrowserBack Y F Y F
KEY_IMPL BrowserFavorites Y F F F Key handled by browser in Firefox
KEY_IMPL BrowserForward Y F Y F
KEY_IMPL BrowserHome F F F F
KEY_IMPL BrowserRefresh F F F F
KEY_IMPL BrowserSearch F F F F
KEY_IMPL BrowserStop F F F F
KEY_IMPL_SECTION Mobile Phone Keys
KEY_IMPL AppSwitch F F F F
KEY_IMPL Call F F F F
KEY_IMPL Camera F F F F
KEY_IMPL CameraFocus F F F F
KEY_IMPL EndCall F F F F
KEY_IMPL GoBack F F F F
KEY_IMPL GoHome F F F F
KEY_IMPL HeadsetHook F F F F
KEY_IMPL LastNumberRedial F F F F
KEY_IMPL Notification F F F F
KEY_IMPL MannerMode F F F F
KEY_IMPL VoiceDial F F F F
KEY_IMPL_SECTION TV Keys
KEY_IMPL TV F F F F
KEY_IMPL TV3DMode F F F F
KEY_IMPL TVAntennaCable F F F F
KEY_IMPL TVAudioDescription F F F F
KEY_IMPL TVAudioDescriptionMixDown F F F F
KEY_IMPL TVAudioDescriptionMixUp F F F F
KEY_IMPL TVContentsMenu F F F F
KEY_IMPL TVDataService F F F F
KEY_IMPL TVInput F F F F
KEY_IMPL TVInputComponent1 F F F F
KEY_IMPL TVInputComponent2 F F F F
KEY_IMPL TVInputComposite1 F F F F
KEY_IMPL TVInputComposite2 F F F F
KEY_IMPL TVInputHDMI1 F F F F
KEY_IMPL TVInputHDMI2 F F F F
KEY_IMPL TVInputHDMI3 F F F F
KEY_IMPL TVInputHDMI4 F F F F
KEY_IMPL TVInputVGA1 F F F F
KEY_IMPL TVMediaContext F F F F
KEY_IMPL TVNetwork F F F F
KEY_IMPL TVNumberEntry F F F F
KEY_IMPL TVPower F F F F
KEY_IMPL TVRadioService F F F F
KEY_IMPL TVSatellite F F F F
KEY_IMPL TVSatelliteBS F F F F
KEY_IMPL TVSatelliteCS F F F F
KEY_IMPL TVSatelliteToggle F F F F
KEY_IMPL TVTerrestrialAnalog F F F F
KEY_IMPL TVTerrestrialDigital F F F F
KEY_IMPL TVTimer F F F F
KEY_IMPL_SECTION Media Controller Keys
KEY_IMPL AVRInput F F F F
KEY_IMPL AVRPower F F F F
KEY_IMPL ColorF0Red F F F F
KEY_IMPL ColorF1Green F F F F
KEY_IMPL ColorF2Yellow F F F F
KEY_IMPL ColorF3Blue F F F F
KEY_IMPL ColorF4Grey F F F F
KEY_IMPL ColorF5Brown F F F F
KEY_IMPL ClosedCaptionToggle F F F F
KEY_IMPL Dimmer F F F F
KEY_IMPL DisplaySwap F F F F
KEY_IMPL DVR F F F F
KEY_IMPL Exit F F F F
KEY_IMPL FavoriteClear0 F F F F
KEY_IMPL FavoriteClear1 F F F F
KEY_IMPL FavoriteClear2 F F F F
KEY_IMPL FavoriteClear3 F F F F
KEY_IMPL FavoriteRecall0 F F F F
KEY_IMPL FavoriteRecall1 F F F F
KEY_IMPL FavoriteRecall2 F F F F
KEY_IMPL FavoriteRecall3 F F F F
KEY_IMPL FavoriteStore0 F F F F
KEY_IMPL FavoriteStore1 F F F F
KEY_IMPL FavoriteStore2 F F F F
KEY_IMPL FavoriteStore3 F F F F
KEY_IMPL Guide F F F F
KEY_IMPL GuideNextDay F F F F
KEY_IMPL GuidePreviousDay F F F F
KEY_IMPL Info F F F F
KEY_IMPL InstantReplay F F F F
KEY_IMPL Link F F F F
KEY_IMPL ListProgram F F F F
KEY_IMPL LiveContent F F F F
KEY_IMPL Lock F F F F
KEY_IMPL MediaApps F F F F
KEY_IMPL MediaAudioTrack F F F F
KEY_IMPL MediaLast F F F F
KEY_IMPL MediaSkipBackward F F F F
KEY_IMPL MediaSkipForward F F F F
KEY_IMPL MediaStepBackward F F F F
KEY_IMPL MediaStepForward F F F F
KEY_IMPL MediaTopMenu F F F F
KEY_IMPL NavigateIn F F F F
KEY_IMPL NavigateNext F F F F
KEY_IMPL NavigateOut F F F F
KEY_IMPL NavigatePrevious F F F F
KEY_IMPL NextFavoriteChannel F F F F
KEY_IMPL NextUserProfile F F F F
KEY_IMPL OnDemand F F F F
KEY_IMPL Pairing F F F F
KEY_IMPL PinPDown F F F F
KEY_IMPL PinPMove F F F F
KEY_IMPL PinPToggle F F F F
KEY_IMPL PinPUp F F F F
KEY_IMPL PlaySpeedDown F F F F
KEY_IMPL PlaySpeedReset F F F F
KEY_IMPL PlaySpeedUp F F F F
KEY_IMPL RandomToggle F F F F
KEY_IMPL RcLowBattery F F F F
KEY_IMPL RecordSpeedNext F F F F
KEY_IMPL RfBypass F F F F
KEY_IMPL ScanChannelsToggle F F F F
KEY_IMPL ScreenModeNext F F F F
KEY_IMPL Settings F F F F
KEY_IMPL SplitScreenToggle F F F F
KEY_IMPL STBInput F F F F
KEY_IMPL STBPower F F F F
KEY_IMPL Subtitle F F F F
KEY_IMPL Teletext F F F F
KEY_IMPL VideoModeNext F F F F
KEY_IMPL Wink F F F F
KEY_IMPL ZoomToggle F F F F
END_KEY_IMPL_TABLE
<h2 id="acknowledgements-contributors">Acknowledgements</h2>
Special thanks to Masayuki Nakano (Mozilla) for his work gathering some of the
implementation data that was used in this document - particularly those relating
to IMEs and composition.