DOM

KeyboardEvent インターフェイス

 編集:2022.10.13 by T.A.

[Edge]○。→

このオブジェクトは、キーボードによるユーザーの操作を示します。個々のイベントがユーザーとキーとの間の単一の操作(または修飾キーとの組み合わせ)を表します。イベントの種類(keydownkeypresskeyup)はキーボード操作が発生した種類を識別します。

メモ: KeyboardEvent は、単にユーザーがキーボードのキーで行った操作が何であるかを低水準で示すものであり、その操作のその場面における意味は持ちません。テキストの入力を処理したい場合は、代わりに input イベントを使用してください。ユーザーが他の種類のテキスト入力、例えば、タブレット端末やタブレット機器による手書き入力システムなどを使用している場合は、キーボード イベントが発生することはありません。

コンストラクター
new KeyboardEvent(type, options)
新しい KeyboardEvent オブジェクトを生成します。
定数

KeyboardEvent インターフェースは、以下の定数を定義しています。

以下の定数は、キー イベントがキーボードのどの部分から発信されるかを識別します。これらは、KeyboardEvent.DOM_KEY_LOCATION_STANDARD などとしてアクセスされます。

キーボードの場所の識別子
定数 説明
DOM_KEY_LOCATION_STANDARD 0x00 イベントによって記述されたキーは、キーボードの特定の領域にあることが特定されず、テンキー上にはなく(NumLock キーでない限り)、キーボードの左右に重複しているキーについては、何らかの理由で、そのキーは、その場所に関連付けられていないことになります。

例としては、標準的な PC 101 US キーボードの英数字キー、NumLockキー、スペース バーなどがあります。

DOM_KEY_LOCATION_LEFT 0x01 キーは、キーボード上の複数の位置に存在してもよいものであり、この例では、キーボードの左側にある。

例としては、左の Ctrlキー、Macintosh キーボードの左の Commandキー、左の Shiftキーなどがあります。

DOM_KEY_LOCATION_RIGHT 0x02 キーは、キーボード上の複数の位置に存在してもよいものであり、この場合、キーボードの右側に位置している。

例としては、右の Shiftキーや右の Altキー(Mac キーボードの Option)などがあります。

DOM_KEY_LOCATION_NUMPAD 0x03 キーはテンキー上に配置されているか、またはキーの発生源となる場所が複数ある場合はテンキーに関連付けられた仮想キーとなります。NumLockキーはこのグループには該当せず、常に DOM_KEY_LOCATION_STANDARD の位置でエンコードされています。

例としては、テンキー パッドの数字、キー パッドの Enterキー、キー パッドの小数点などがあります。

プロパティ

このインターフェイスには、親である UIEvent および Event から継承したプロパティもあります。

KeyboardEvent.altKey 読取専用
KeyboardEvent が発生したときに Alt(OS X の場合は Option または )キーが押されてるか否かを論理値で示します。
KeyboardEvent.code 読取専用
KeyboardEvent が発生した時の、(キー入力によって入力された文字ではなく)キーボード上の物理的なキーを表す文字列を示します。

警告: これはユーザーのキーボード配列を無視しますので、ユーザーが QWERTY キーボード配列の "Y" の位置のキー(ホーム行の上の行の中ほど)を押すと、ユーザーが QWERTZ キーボード(ユーザーが "Z" だと思っており、その他のプロパティも "Z" を示している)や Dvorak キーボード配列(ユーザーは "F" だと思っている)を使用していても、常に "KeyY" を返します。

KeyboardEvent.ctrlKey 読取専用
KeyboardEvent が発生したときに Ctrlキーが押されているか否かを論理値で示します。
KeyboardEvent.isComposing 読取専用
KeyboardEvent が発生したときにFEP(フロント エンド プロセッサー)使用などでの変換セッションの途中であるか否かを論理値で示します。
KeyboardEvent.key 読取専用
KeyboardEvent が発生したとき、押されていたキーの値を文字列で示します。Shiftキーなどの修飾キーやキーボードのロケールやレイアウトを考慮した値で返します。
KeyboardEvent.locale 読取専用
KeyboardEvent で、キーボードが設定されているロケールを示すロケール文字列を DOMString で返します。

メモ: このプロパティは入力データのロケールを表すことはありません。例えば、ユーザーが使用するキーボード レイアウトと入力テキストとで言語が異なる場合があります。

KeyboardEvent.location 読取専用
KeyboardEvent が発生したときに、キーボードやその他の入力機器上のキーの位置を unsigned long の数値で示します。
KeyboardEvent.metaKey 読取専用
KeyboardEvent が発生したときに Metaキー(Mac キーボードは ⌘ Commandキー、Windows キーボードは Windows キー )が押されていたか否かを論理値で示します。
KeyboardEvent.repeat 読取専用
KeyboardEvent が発生した時に、キーが押しっぱなしになって自動反復しているか否かを論理値で返します。
KeyboardEvent.shiftKey 読取専用
KeyboardEvent が発生したときに Shiftキーが押されていたか否かを論理値で示します。
メソッド

このインターフェイスには、親である UIEvent および Event から継承したメソッドもあります。

KeyboardEvent.getModifierState()
KeyboardEvent が発生したときに、指定の修飾キー(AltShiftCtrlMeta)が押されていたか否かを論理値で返します。
廃止されたプロパティ
KeyboardEvent.char 読取専用 非標準 廃止 非推奨
キーの文字値を表す DOMString を返します。キーが印刷可能な文字に対応している場合、この値はその文字を含む空でない Unicode 文字列となります。キーが印刷可能な表現を持たない場合は、これは空の文字列です。

注意: キーが複数の文字を挿入するマクロとして使用されている場合、この属性の値は最初の文字だけでなく文字列全体となります。

KeyboardEvent.charCode 読取専用 廃止 非推奨
キーの Unicode 参照番号を表す Number を返します。この属性は、keypress イベントでのみ使用されます。char 属性が複数の文字を含むキーの場合、これはその属性の最初の文字の Unicode 値となります。Firefox 26 では、これは印刷可能な文字のコードを返します。

警告: この属性は非推奨です。利用可能な場合は、代わりに KeyboardEvent.key を使用する必要があります。

KeyboardEvent.keyCode 読取専用 廃止 非推奨
押されたキーの変更されていない値を示す、システムや実装に依存した数値コードを表す Number を返します。

警告: この属性は非推奨です。利用可能な場合は、代わりに KeyboardEvent.key を使用する必要があります。

KeyboardEvent.keyIdentifier 読取専用 非標準 廃止 非推奨
このプロパティは非標準であり、KeyboardEvent.key を支持して非推奨とされています。これは古いバージョンの DOM Level 3 Events の一部でした。
KeyboardEvent.keyLocation 読取専用 非標準 廃止 非推奨
これは KeyboardEvent.location (en-US) の非標準の非推奨エイリアスです。これは古いバージョンの DOM Level 3 Events の一部でした。
KeyboardEvent.which 読取専用 廃止 非推奨
押されたキーの変更されていない値を識別するシステムおよび実装依存の数値コードを表す Number を返します。これは通常 keyCode と同じです。

警告: この属性は非推奨です。利用可能な場合は、代わりに KeyboardEvent.key を使用する必要があります。

廃止されたメソッド
KeyboardEvent.initKeyEvent() 廃止 非推奨
KeyboardEvent オブジェクトを初期化します。これは Firefox でのみ実装されていたもので、Firefox でもサポートされていないため、代わりに KeyboardEvent() (en-US) コンストラクタを使用する必要があります。
KeyboardEvent.initKeyboardEvent() 廃止 非推奨
KeyboardEvent オブジェクトを初期化します。これは現在では非推奨です。代わりに KeyboardEvent() (en-US) コンストラクタを使用する必要があります。

¶省く


mdnより
<!DOCTYPE html>
<html>
<head>
<script>
'use strict';

document.addEventListener('keydown', (event) => {
  const keyName = event.key;

  if (keyName === 'Control') {
    // do not alert when only Control key is pressed.
    return;
  }

  if (event.ctrlKey) {
    // Even though event.key is not 'Control' (e.g., 'a' is pressed),
    // event.ctrlKey may be true if Ctrl key is pressed at the same time.
    alert(`Combination of ctrlKey + ${keyName}`);
  } else {
    alert(`Key pressed ${keyName}`);
  }
}, false);

document.addEventListener('keyup', (event) => {
  const keyName = event.key;

  // As the user releases the Ctrl key, the key is no longer active,
  // so event.ctrlKey is false.
  if (keyName === 'Control') {
    alert('Control key was released');
  }
}, false);

</script>
</head>

<body>
</body>
</html>

テスト