1. はじめに
本書では、さまざまなキーボードレイアウトの概要を示し、各キーで使うべきcode
値を定義します。[UIEvents-key]で説明されているkey
値とは異なり、code
値はキーの物理的な位置のみを基にしており、ユーザーの現在のロケールによって変化しません。
この仕様は以前、DOM Level 3 KeyboardEvent code
Valuesというタイトルでした。
1.1. 表記規則
この仕様では以下の規則を使用します:
-
キートップ またはキーに印刷されたラベルは
↓、=、Qのように示されます。これは、keyやcodeの値に関係なく、ユーザー視点でキーを参照する際に使います。生成されるKeyboardEvent内の値とは関係ありません。 -
文字を表すグリフは
"𣧂"のように示されます。 -
Unicode コードポイントは
U+003Dのように示されます。 -
有効な key 属性値(すなわち
key属性の値)は"ArrowDown"、"="、"q"、"Q"のように示されます。 -
有効な key code 属性値(すなわち
code属性の値)は"ArrowDown"、"Equal"、"KeyQ"のように示されます。
2. キーボードレイアウト
このセクションは規定的ではありません。
英数字キーボードは、ユーザーがキーボードイベントを生成する最も一般的な手段です。このセクションでは標準キーボードとその物理レイアウトの概要を示します。
2.1. 標準キーボードレイアウト
このセクションでは一般的に入手可能なキーボードの物理レイアウトについて説明します。
2.1.1. キーボードセクション
キーボードレイアウトについて説明する際、標準キーボードを複数のセクションに分け、各行にラベルを付けると便利です。
キーボードのセクションは以下の通りです:
-
英数字セクションはキーボードの主な部分で、もっともバリエーションが多い場所です。ユーザーがキーボードレイアウトを選択する際、このセクションのキーが最も影響を受けます。
-
テンキー("numeric キーパッド"や"ナンバーパッド"とも呼ばれる)には、数字キーや演算キーがあり、数値データの入力を容易にします。
-
そして、ファンクションセクションは、各種ファンクションキーや、
Escapeのような特殊キーを含みます。
キーを識別しやすくするために、キーボードの行は下から「A」行、上に向かって「E」行と呼ばれます。ファンクションセクションのキーの行は「K」行とされます。これらの行名は[ISO9995-1]で与えられたものと一致しています。
なお、多くのキーボード(最新・レガシーとも)には、上記のセクションに当てはまらない追加キーが存在します。これらのキーの一部は、§ 3.6 メディアキーで説明されています。
2.1.2. 標準「101」キーボードレイアウト
標準「101」キーボード(一般に「USレイアウト」と呼ばれる)は、唯一"Backslash"キー(ラベル\|)があり、単独行のEnterキーの上に配置されています。他のレイアウトではこのキーが省略され、Enterキーが2行分の大きなキーになります。
現代の標準「101」レイアウトキーボードは実際には104キーがあり、英数字セクションに61キー、 テンキー、コントロールパッド、矢印パッド、ファンクションセクションに43キーあります。「101」名称はこのキーボードに本来101キーがあった時代に由来します。Meta2キー(OS固有ラベル)、Menuキーの追加により合計104キーとなりました。
2.1.3. 代替「101」キーボードレイアウト
代替「101」キーボードは大きなEnterキーを採用し、 Backspaceキーを小さくして"IntlYen"キー(標準101の"Backslash"を置換)スペースを作っています。"IntlYen"の名前は日本語配列の¥(円記号)キーに由来し、ロシア語配列では\/になります。
現代の代替「101」レイアウトキーボードも104キー:英数字セクションに61キー、テンキー、コントロールパッド、矢印パッド、ファンクションセクションに43キーが含まれます。
2.1.4. 標準「102」キーボードレイアウト
標準「102」キーボードはヨーロッパ全体で普及しており、「101」レイアウトにはない"IntlBackslash"キー(UKキーボードでは\|)が左シフトキーの隣に追加されています。
2つめのキー(UKでは#~)はEnterキーの下に部分的に配置されており、このキーは"Backslash"としてエンコードされ、「101」配列の\|と同じコードを持ちます。[USB-HID]によると、US \|とUK #~は実際には別々のキーですが、両方が共存するキーボードが存在しないため、多くのプラットフォームでは同じスキャンコードとなり、区別しづらくなっています。そのため、"Backslash"コードが両方のキーに使われています。
現代の「102」レイアウトキーボードは105キー:英数字セクションに62キー、テンキー、コントロールパッド、矢印パッド、ファンクションセクションに43キーがあります。
2.1.5. 韓国語「103」キーボードレイアウト
韓国語「103」キーボードは代替101レイアウトをベースに、スペースバーの両側に韓国語入力用のキーを2つ追加しています。これらのキーは"Lang2"(ハンジャ、ラベル한자
hanja)と"Lang1"(ハングルモード、ラベル한/영
han/yeong)です。
現代の「103」レイアウトキーボードは106キー:英数字セクションに63キー、テンキー、コントロールパッド、矢印パッド、ファンクションセクションに43キーです。
2.1.6. ブラジル「104」キーボードレイアウト
ブラジルの「104」レイアウトは4つの新しいキーを追加します。「102」レイアウト由来の"Backslash"と"IntlBackslash"、さらに"IntlRo"(右シフトキー隣)とテンキー上の追加キーがあります。新設キーは"NumpadComma"(千の区切り記号用)で、ブラジル配列では.、"NumpadDecimal"は,のラベルです。
現代の「104」レイアウトキーボードは107キー:英数字セクションに63キー、テンキー、コントロールパッド、矢印パッド、ファンクションセクションに44キー。一部ブラジルキーボードでは追加テンキーがなく、106キーの場合もあります。
2.1.7. 日本語「106」キーボードレイアウト
日本語「106」キーボードレイアウトは3つの新設キー"IntlYen"(ラベル¥_)、"Backslash"(ラベル]む)、"IntlRo"(ラベル\ろ)を追加します。またスペースバーを短くして、入力モードキー3種"NonConvert"(ラベル無変換
muhenkan)、"Convert"(ラベル変換
henkan)、"KanaMode"(ラベルカタカナ/ひらがな/ローマ字
katakana/hiragana/romaji)があります。
現代の「106」レイアウトキーボードは109キー:英数字セクションに66キー、テンキー、コントロールパッド、矢印パッド、ファンクションセクションに43キー。
2.1.8. Appleキーボードレイアウト
一般にAppleキーボードはPCキーボードと同じレイアウトですが、以下の図に示すような相違点があります。
この図では、緑色のキーは新しい場所に移動されたもので、青色のキーは追加されたキーを示します。
2.1.9. ノートパソコン用キーボードレイアウト
ノートパソコンキーボードはスペースが限られているため、必要なキーを全て収めるために物理レイアウトの調整が必要となる場合が多いです。記述系キーは英数字セクションで保持される傾向にありますが、他のセクションは他のキーに統合されたり、取り除かれることがあります。
このAppleノートキーボードでは、右側のコントロールキーが、半高さの矢印キーや左側のFnキーのスペースのために取り除かれています。
PCノートキーボードは大きな違いがありますが、このサンプルでは一般的な要素を示しています。コントロールパッドキーは右側に追加され、矢印パッドキーは下側に配置されています。右Shiftキーは上矢印キーのスペース確保のため短くなり、右Metaキーは省略されることが多いです。
2.1.10. その他のロケール用キーボードレイアウト
その他のロケールは、既存のレイアウトで始まり、キートップやキー割り当てを変更することで適応されるため、この仕様書で明示的には説明されていません。
これらのキーボードは、新しい物理キーを追加しないので、明示的な文書化は不要です。
これらのキーボードは、通常「101」(標準または代替)あるいは「102」レイアウトを元にしています。例えば、一般的なアラビア語、キリル文字、ギリシャ語、ヒンディー語、クメール語、タイ語キーボードはすべて「101」または「102」レイアウトが基になります。
2.2. モバイルキーパッド
コンテンツ作成者がモバイルキーパッドの機械的レイアウトに依存したい場合、この仕様では[ISO9995-8]で定義されたテンキー配列とUnicode文字の2次割り当て(U+0061~U+007A、"a"~"z")がキー2~9に割り当てられた国際的な利用に適したレイアウトを推奨します。
このキーパッドレイアウトおよび文字分布は英語デバイス向けであり、多くのユーザーのキーパッドや設定とは一致しません。コンテンツ作成者は特定の構成に依存せず、国際化とローカライズ可能なコンテンツを作成すべきです。
2.3. メディアリモコン
多くのキーボードにはメディア操作用の特殊キーがあり、テレビ等の多くのメディア機器はウェブ対応しています。ハイブリッドなキーボード/リモコン機器が一般化しつつあり、この仕様ではリモコンによくあるボタンも従来のキーボードキーに加えて定義します。
小型化により、リモコンのキー(ボタン)はコンテンツの状況に応じて異なる機能を持つモーダルな場合が多く、複数回押すことで異なる状態に切り替えるトグルキーもあります。これらのリモコンボタンは修飾状態を持たず、Play、Pause、Up、Menu、Exitなど単一機能に割り当てられる傾向があります。
2.4. 仮想キーボード及びコード入力キーボード
仮想キーボードは、さまざまな配置が可能なソフトウェアベースのキーセットで、主にタッチスクリーン機器で使われます。アルファベット・数字・記号のようにモード切り替え可能であり、物理的な制約がないため絵文字やその他の記号まで幅広い文字を提供できます。可能な限り、仮想キーボードも通常のキーボードイベントや値を出力することで、コンテンツ作成の容易さと既存コンテンツとの互換性を維持すべきです。
コード入力キーボード(コードキーセット、コードキーボード)は、キーを複数同時や順番に押すことで値を出力する入力機器で、通常は片手用など少ないキーで文字やコマンドを全て出すためのものです。コードキーボードには追加モードキーで値を切り替えるものもあり、キーの組み合わせや入力方法は多数ですが、最終的に生成される値は本仕様で説明される範囲と一致すべきです。
こうしたモーダルな仮想・特殊キーボードのためには、key
の値として、"Alphanumeric"、
"CapsLock"、"NumLock"、
"SymbolLock"
などモード切替キーを割り当てることが推奨されます。
3. キーボードイベント code
値の一覧表
このセクションでは、code
値として使うのに適切な値の一覧を定義します。
key code
属性値は、この仕様のいずれかの表の"KeyboardEvent.code"列で示されている値すべてを指します。
このセクションの各表には「必須」列があり、その値が準拠実装で必須かどうかを示します。「必須」列が「No」の項目は任意であり、特殊なキーボード(マルチメディアやレガシーなど)対応で使用可能です。
注: この仕様で「必須」とされる値の一部はすべてのプラットフォーム・機器で利用可能とは限りません。例えば、MacキーボードにはInsertキーがなく、標準PCキーボードにはHelpキーがありません。
本仕様で「必須」となっているキーについては、KeyboardEvent
インターフェースの準拠実装は、該当キーがプラットフォームで利用可能なら必ず正しい値を返さなければなりません。
注: この値一覧は可能な限り網羅的にしていますが、新しい入力機器の登場に伴い定期的な追加が必要となります。利用者エージェント独自のkey code 属性値を定義するのは複数エージェント間で一貫しないため、バグ報告を行って本仕様を更新するようにすべきです。
3.1. 英数字セクション
英数字セクションはキーボードの主要部分で、 キーは大きく2つのカテゴリに分けられます:記述系キー(レイアウトにより意味が変わる)と機能キー(ほぼすべてのレイアウトで共通)です。
3.1.1. 記述系キー
記述系キーは現在のロケールやキーボードレイアウトによって意味(つまり異なるkey
値)を生成するキーです。
この図は各種キーボードに存在する全ての記述系キー(青・緑で表示)を統合した仮想キーボードを示します。青いキーは標準キーボード全てに、緑のキーは一部キーボードのみに存在します。
各キーに表示される名前は、そのキーに割り当てられたcode
です。可能な限りcode
名は、US配列のその位置のキー名(USキーボードレイアウト)に基づき、[USB-HID]の命名規則に従います。
US配列以外のキーにはUKや日本語レイアウトの名前を用います。
この図には2つの"Backslash"キーがあります:101キー配列のRow
D終端に大きなもの、102・104・106キー配列のRow Cの"Quote"と"Enter"の間に小さなもの。キーボードレイアウトにはいずれか1つのみ配置されます。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Backquote"
| Yes | USキーボード:`~。日本語キーボード:半角/全角/漢字(hankaku/zenkaku/kanji)
|
"Backslash"
| Yes | US配列(101キー):\|。また、102・104・106配列ではRow Cの"とEnterの間のキー。UK(102)キーボードではラベル#~。
|
"BracketLeft"
| Yes | USキーボード:[{
|
"BracketRight"
| Yes | USキーボード:]}
|
"Comma"
| Yes | USキーボード:,<
|
"Digit0"
| Yes | USキーボード:0)
|
"Digit1"
| Yes | USキーボード:1!
|
"Digit2"
| Yes | USキーボード:2@
|
"Digit3"
| Yes | USキーボード:3#
|
"Digit4"
| Yes | USキーボード:4$
|
"Digit5"
| Yes | USキーボード:5%
|
"Digit6"
| Yes | USキーボード:6^
|
"Digit7"
| Yes | USキーボード:7&
|
"Digit8"
| Yes | USキーボード:8*
|
"Digit9"
| Yes | USキーボード:9(
|
"Equal"
| Yes | USキーボード:=+
|
"IntlBackslash"
| Yes | 左ShiftキーとZキーの間。UKではラベル\|。
|
"IntlRo"
| Yes | 右Shiftキーと/キーの間。日本語キーボードでは\ろ(ro)。
|
"IntlYen"
| Yes | =キーとBackspaceキーの間。日本語キーボードでは¥(yen)、ロシア語キーボードでは\/。
|
"KeyA"
| Yes | USキーボード:a、AZERTY(例:仏)ではq
|
"KeyB"
| Yes | USキーボード:b
|
"KeyC"
| Yes | USキーボード:c
|
"KeyD"
| Yes | USキーボード:d
|
"KeyE"
| Yes | USキーボード:e
|
"KeyF"
| Yes | USキーボード:f
|
"KeyG"
| Yes | USキーボード:g
|
"KeyH"
| Yes | USキーボード:h
|
"KeyI"
| Yes | USキーボード:i
|
"KeyJ"
| Yes | USキーボード:j
|
"KeyK"
| Yes | USキーボード:k
|
"KeyL"
| Yes | USキーボード:l
|
"KeyM"
| Yes | USキーボード:m
|
"KeyN"
| Yes | USキーボード:n
|
"KeyO"
| Yes | USキーボード:o
|
"KeyP"
| Yes | USキーボード:p
|
"KeyQ"
| Yes | USキーボード:q、AZERTY(仏など)ではa
|
"KeyR"
| Yes | USキーボード:r
|
"KeyS"
| Yes | USキーボード:s
|
"KeyT"
| Yes | USキーボード:t
|
"KeyU"
| Yes | USキーボード:u
|
"KeyV"
| Yes | USキーボード:v
|
"KeyW"
| Yes | USキーボード:w、AZERTY(仏など)ではz
|
"KeyX"
| Yes | USキーボード:x
|
"KeyY"
| Yes | USキーボード:y、QWERTZ(独など)ではz
|
"KeyZ"
| Yes | USキーボード:z、AZERTY(仏など)ではw、QWERTZ(独など)ではy
|
"Minus"
| Yes | USキーボード:-_
|
"Period"
| Yes | USキーボード:.>
|
"Quote"
| Yes | USキーボード:'"
|
"Semicolon"
| Yes | USキーボード:;:
|
"Slash"
| Yes | USキーボード:/?
|
3.1.2. 機能キー
機能キー(後述のファンクションキーとは異なる)は、英数字セクション内で一般的な編集機能(Shift、Tab、Enter、Backspaceなど)を提供し、ほとんどのロケールで共通です。例外的な場合を除き、レイアウトによって意味は変化しません。
"AltRight"キー(緑)は、唯一機能キーでもロケールにより生成するkey
値が異なります。一部ロケールでは"Alt"、他では"AltGraph"になります。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"AltLeft"
| Yes | Alt、Option、⌥
|
"AltRight"
| Yes | Alt、Option、⌥。多くのレイアウトではラベルAltGr。
|
"Backspace"
| Yes | Backspace、⌫。Apple配列ではラベルDelete
|
"CapsLock"
| Yes | CapsLock、⇪
|
"ContextMenu"
| Yes | アプリケーション・コンテキストメニューキー(通常、右Metaキーと右Controlキーの間)
|
"ControlLeft"
| Yes | Control、⌃
|
"ControlRight"
| Yes | Control、⌃
|
"Enter"
| Yes | Enter、↵。Apple配列ではラベルReturn
|
"MetaLeft"
| Yes | Windows、⌘、Command他OSシンボルキー
|
"MetaRight"
| Yes | Windows、⌘、Command他OSシンボルキー
|
"ShiftLeft"
| Yes | Shift、⇧
|
"ShiftRight"
| Yes | Shift、⇧
|
"Space"
| Yes | (スペース)
|
"Tab"
| Yes | Tab、⇥
|
一部キーボード(特に日本語・韓国語)では、スペースバーが小さくされ、その分Row A(最下行)に追加キーが設けられます。これらのキーは主に入力モードを変更します。位置が共通でも、対応するcode
は日本語・韓国語で異なります。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Convert"
| Yes | 日本語:変換(henkan)
|
"KanaMode"
| Yes | 日本語:カタカナ/ひらがな/ローマ字(katakana/hiragana/romaji)
|
"Lang1"
| No | 韓国語:HangulMode 한/영(han/yeong)日本語(Mac): かな(kana)
|
"Lang2"
| No | 韓国語:Hanja 한자(hanja)日本語(Mac): 英数(eisu)
|
"Lang3"
| No | 日本語(ワープロ):カタカナ |
"Lang4"
| No | 日本語(ワープロ):ひらがな |
"Lang5"
| No | 日本語(ワープロ):全角/半角 |
"NonConvert"
| Yes | 日本語:無変換(muhenkan)
|
Apple配列では、最下段の一部キーが除かれ、順序も異なります。
3.2. コントロールパッドセクション
コントロールパッドは、キーボード上でナビゲートや編集操作を行う(一部、通常6個)キーの集合です。例えば、Home、PageUp、Insertなどがあります。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Delete"
| Yes | ⌦。前方削除キー。Appleキーボードでは、キーボード本体にDeleteと記載されたキーは"Backspace"として扱う。
|
"End"
| Yes | Endまたは↘
|
"Help"
| Yes | Help。標準PCキーボードには搭載されていません。
|
"Home"
| Yes | Homeまたは↖
|
"Insert"
| Yes | InsertまたはIns。Appleキーボードには搭載されていません。
|
"PageDown"
| Yes | Page Down、PgDn、または⇟
|
"PageUp"
| Yes | Page Up、PgUp、または⇞
|
Appleキーボード等に存在するFnキーのcode
値は、この後のファンクションセクションで定義します。
3.3. 矢印パッドセクション
矢印パッドには上下左右の4つの矢印キーが含まれます。キーは一般的に「逆T字型」に配置されます。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"ArrowDown"
| Yes | ↓
|
"ArrowLeft"
| Yes | ←
|
"ArrowRight"
| Yes | →
|
"ArrowUp"
| Yes | ↑
|
3.4. テンキーセクション
テンキーは、計算機や携帯電話のようなグリッド状に配置されたキーの集合です。このセクションには数値や演算キーが含まれます。しばしば、NumLockキーがあり、キーの機能が標準の数字入力からコントロールパッドや矢印パッドの模倣に切り替わります。ノートPCや省スペースキーボードでは省略されることが多いです。
キーパッドはテンキーの別称です。
このセクションのcode
値は、電話機のキーパッドやリモコン機器のグリッド配置の数字キーにも使用されます。
標準的なテンキーには、括弧や演算子、16進数記号、計算機機能(Backspaceなど)の追加キーが存在する場合があります。代表的な追加キーは下表に記載しています。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"NumLock"
| Yes | Macでは、"NumLock"コードはテンキーClearキーに使用する。
|
"Numpad0"
| Yes | キーボード:0 Ins電話機・リモコン: 0
|
"Numpad1"
| Yes | キーボード:1 End電話機・リモコン: 1または1 QZ
|
"Numpad2"
| Yes | キーボード:2 ↓電話機・リモコン: 2 ABC
|
"Numpad3"
| Yes | キーボード:3 PgDn電話機・リモコン: 3 DEF
|
"Numpad4"
| Yes | キーボード:4 ←電話機・リモコン: 4 GHI
|
"Numpad5"
| Yes | キーボード:5電話機・リモコン: 5 JKL
|
"Numpad6"
| Yes | キーボード:6 →電話機・リモコン: 6 MNO
|
"Numpad7"
| Yes | キーボード:7 Home電話機・リモコン: 7 PQRSまたは7 PRS
|
"Numpad8"
| Yes | キーボード:8 ↑電話機・リモコン: 8 TUV
|
"Numpad9"
| Yes | キーボード:9 PgUp電話機・リモコン: 9 WXYZまたは9 WXY
|
"NumpadAdd"
| Yes | +
|
"NumpadBackspace"
| No | Microsoft Natural Keyboardに搭載。 |
"NumpadClear"
| No | CまたはAC(All Clear)。テンキーにClearがNumLockキーと別々に存在する場合にも使用。MacではClearキーは常に"NumLock"として扱う。
|
"NumpadClearEntry"
| No | CE(Clear Entry)
|
"NumpadComma"
| No | ,(千の区切り記号)。ロケールによっては区切りが「.」(例:ブラジル)となり、このキーが.を生成する場合あり。
|
"NumpadDecimal"
| Yes | . Del。ロケールによっては区切りが「,」(例:ブラジル)となり、このキーが,を生成する場合あり。
|
"NumpadDivide"
| Yes | /
|
"NumpadEnter"
| Yes | |
"NumpadEqual"
| No | =
|
"NumpadHash"
| No | 電話機・リモコン:#。通常は9キーの下、0キーの右。
|
"NumpadMemoryAdd"
| No | M+ 現在のエントリをメモリ値に加算。
|
"NumpadMemoryClear"
| No | MC メモリ値の消去。
|
"NumpadMemoryRecall"
| No | MR メモリ値で現在のエントリを置換。
|
"NumpadMemoryStore"
| No | MS 現在のエントリでメモリ値を置換。
|
"NumpadMemorySubtract"
| No | M- メモリ値から現在のエントリを減算。
|
"NumpadMultiply"
| Yes | キーボード:*。演算専用のテンキー(+、-、*、/)で使用。電話機・リモコンの *には"NumpadStar"を用いる。
|
"NumpadParenLeft"
| No | (。Microsoft Natural Keyboard搭載。
|
"NumpadParenRight"
| No | )。Microsoft Natural Keyboard搭載。
|
"NumpadStar"
| No | 電話機・リモコン:*。通常は7キーの下、0キーの左。テンキーの演算子としては "NumpadMultiply"を使用。
|
"NumpadSubtract"
| Yes | -
|
テンキーがここに掲載されていない追加キーを持つ場合は、"Numpad"で始めてキーの機能を付加したcode
値文字列を作成してください。
3.5. ファンクションセクション
ファンクションセクションはキーボード上部(英数字セクションの上)にあり、ファンクションキーや特殊キー(例: Esc、Print Screen)が含まれます。
ファンクションキーはF1 … F12などで、アプリケーションやOSが任意の機能や動作を割り当てることができます。
一部キーボード(特にノートPC等)ではF1 … F12に他の主機能(画面輝度や音量など)が割り当てられており、その場合ファンクションキーとして動作させるにはFnキーの同時押しが必要です。主機能はメーカーごとに異なるためcode
は常にファンクションキー名に設定されます。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Escape"
| Yes | Escまたは⎋
|
"F1"
| Yes | F1
|
"F2"
| Yes | F2
|
"F3"
| Yes | F3
|
"F4"
| Yes | F4
|
"F5"
| Yes | F5
|
"F6"
| Yes | F6
|
"F7"
| Yes | F7
|
"F8"
| Yes | F8
|
"F9"
| Yes | F9
|
"F10"
| Yes | F10
|
"F11"
| Yes | F11
|
"F12"
| Yes | F12
|
"Fn"
| No | Fn。多くの場合ハードウェアキーで独立したコードは発生しません。通常ファンクションセクションに配置されませんが、関連のため表に記載しています。
|
"FnLock"
| No | FLockまたはFnLock。ファンクションロックキー。Microsoft
Natural Keyboard搭載。
|
"PrintScreen"
| Yes | PrtScr SysRqまたはPrint Screen
|
"ScrollLock"
| Yes | Scroll Lock
|
"Pause"
| Yes | Pause Break
|
12を超えるファンクションキーがあるキーボードでは、code
値は「F」+番号("F13"、"F14"、"F15"…)のパターンに従います。
AppleキーボードではファンクションセクションにEjectやPowerキーが含まれる場合があります。これらのcode
値は§ 3.6 メディアキーで定義されています。
3.6. メディアキー
メディアキーはキーボードに追加された、メディア関連の機能(再生、停止、音量調整など)を提供する追加キーです。これらのキーはキーボード上に標準的な配置がないため、製造元によってキーの並びやセットが大きく異なります。
メディアキーは通常の入力キーと外観が異なり、キーボード上に窪んで配置されている場合があります。
ノートPCのキーボードでは、これらのキーがファンクションキーと統合されていることが多く、メディアキー機能が主機能、Fnキーを同時に押すことでファンクションキーとして動作します。このような場合、code
の値は、ファンクションキー("F1"~"F12")の値に合わせるべきです。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"BrowserBack"
| No | 一部ノートPCでは、↑キーの左側に配置
|
"BrowserFavorites"
| No | |
"BrowserForward"
| No | 一部ノートPCでは、↑キーの右側に配置
|
"BrowserHome"
| No | |
"BrowserRefresh"
| No | |
"BrowserSearch"
| No | |
"BrowserStop"
| No | |
"Eject"
| No | Ejectまたは⏏。一部Appleキーボードではファンクションセクションに配置。
|
"LaunchApp1"
| No | キーボード上ではMy Computerとラベルされている場合がある
|
"LaunchApp2"
| No | キーボード上ではCalculatorとラベルされている場合がある
|
"LaunchMail"
| No | |
"MediaPlayPause"
| No | |
"MediaSelect"
| No | |
"MediaStop"
| No | |
"MediaTrackNext"
| No | |
"MediaTrackPrevious"
| No | |
"Power"
| No | 一部Appleキーボードではファンクションセクション上でEjectキーの代わりとして配置
|
"Sleep"
| No | |
"AudioVolumeDown"
| No | |
"AudioVolumeMute"
| No | |
"AudioVolumeUp"
| No | |
"WakeUp"
| No |
3.7. レガシー・非標準および特殊キー
これらのキーは現代の標準キーボードには含まれていません。参考として示します。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Hyper"
| No | |
"Super"
| No | |
"Turbo"
| No |
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Abort"
| No | |
"Resume"
| No | |
"Suspend"
| No |
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Again"
| No | SunのUSBキーボードに搭載 |
"Copy"
| No | SunのUSBキーボードに搭載 |
"Cut"
| No | SunのUSBキーボードに搭載 |
"Find"
| No | SunのUSBキーボードに搭載 |
"Open"
| No | SunのUSBキーボードに搭載 |
"Paste"
| No | SunのUSBキーボードに搭載 |
"Props"
| No | SunのUSBキーボードに搭載 |
"Select"
| No | SunのUSBキーボードに搭載 |
"Undo"
| No | SunのUSBキーボードに搭載 |
以下のキーは非標準の国際キーボードで見られる場合があります。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Hiragana"
| No | 一部日本語ワープロキーボード専用のひらがなキー用
|
"Katakana"
| No | 一部日本語ワープロキーボード専用のカタカナキー用
|
また、次のcode
値は他に該当するcode
がない場合のみ使用してください。仮想キーボード等、物理キーボード配置に対応しない場合に適しています。
KeyboardEvent
code
| 必須 | 備考(参考情報) |
|---|---|---|
"Unidentified"
| Yes | この値は他に適切な値がない場合に使用してください。 |
準拠実装は、キーコードを判定できない場合のみ"Unidentified"を使用する必要があります。この値のみ露出する場合、準拠実装とはみなされません。
4. アクセシビリティ
この仕様は単に、code
属性で有効となる値の集合を定義するものであり、アクセシビリティの懸念を生じさせる要素はありません。
FAST checklistは完了しており、本仕様に該当する項目はありません。
FAST checklistの項目「If technology provides internationalization support」に関する注記: この仕様は本質的にキーボード用のcode
値を定義しており、 "ShiftLeft"、"ControlRight"、"AltGr"、"KeyQ"など人が読める名称を提供します。
これら特殊キー値は人が読める文字列として定義されているため、特別キー検出コードが分かりやすくなります。これらの値はユーザー向けに直接表示する意図はありませんが、表示を妨げるわけではありません。表示する場合は、必要に応じて翻訳や適切な表現への置換検討が必要です(例:"Backspace"→フランス語ユーザー向けに"Suppr. arrière"など)。
5. 国際化(I18n)
short I18n checklistは完了しており、次の項目にコメントが必要です:
-
「ローカライズが必要になりそうなデータやフォーマットを定義しているか」: 本仕様はユーザー表示を想定しない値を定義しますが、サイトがこれらの値を公開することを妨げるものではありません。
6. セキュリティに関する考慮事項
Security and Privacy Self-Review Questionairreは完了しており、以下のメモがあります:
-
2.1 この機能がWebサイトやその他の第三者にどのような情報を露出し、その露出の目的は何か?: 本仕様は複数のキーイベントの
code属性に有効な値を定めます。プラットフォーム独立で物理キー(たとえばゲームのWASDキー等)の判定が必要なため。 -
2.17 「非 'fully active' な文書」の扱いはどうなるか?: この属性はキーイベント専用であり、文書が利用可能状態でなければイベントは発生しません。
code
属性に関するセキュリティ懸念は[UIEvents]仕様で取り扱っています。
7. プライバシーに関する考慮事項
Security and Privacy Self-Review Questionairreは完了しており、以下のメモがあります:
-
2.6 本仕様の機能はプラットフォーム情報をオリジンに露出するか?:
code属性はユーザーが押したキーのプラットフォーム非依存「スキャンコード」値を含みます。特殊な`code`値(例: `IntlBackslash`, `IntlRo`, `IntlYen`)は特定キーボードの識別に使われますが、ユーザーが該当キーを押した場合のみ判明します。 -
3.5 正当な悪用事例: サイトが全てのキー入力を記録・マッピングすることは可能です。ユーザーが十分な数をタイプし、キーボードを変更しなければ、これらの値を既存のレイアウトデータベースと照合しキーボードレイアウトを推測できます。ただしこれは
key属性の問題であり、本仕様独自の値によるものではありません。
code
属性に関するプライバシー懸念は[UIEvents]仕様で取り扱っています。
8. 謝辞
この仕様策定にあたり、多大な貢献をしてくださったWebAppsワーキンググループの以下の参加者に深く感謝します。
Gary Kacmarcik (Google), Masayuki Nakano (Mozilla)