鍵盤操作 (Webブラウザー)

鍵盤操作 (Webブラウザー)

仕様書

鍵盤操作への反応

[12] 基本的に KeyboardEventdispatchされます。

[42] ある文書キーイベントを受信した時、その対象は次のように決定しなければなりません >>47

[27] その他にプラットフォームの慣習による動作も発生します。以下はその例です。

[21] Enter は、

  1. [30] 編集可能な要素なら、改行を挿入します。 (Shift キーの有無で動作が変わります。)
  2. [13] ハイパーリンク (link 要素でも?)、 ボタンでは、クリックに相当するものとして合成クリック活性化手順が呼び出されます。 (ShiftCtrl活性化動作に影響します。)
  3. [22] プルダウンリストでは、プルダウンメニューを開きます。
  4. [23] プルダウンメニュー上の項目では、その項目を選択します。
  5. [24] textarea では、改行を挿入します。
  6. [25] その他のフォーム制御子では、既定のボタンクリックに相当するものとして合成クリック活性化手順が呼び出されます。

[26] スペースキーは、

  1. [35] 編集中の要素では、 U+0020鍵盤入力として扱います。 (IME 等により処理されます。 Shift の有無によって異なる文字が挿入されたり、IME の状態変化のみで文字挿入は行われなかったりします。)
  2. [14] ボタンでは、クリックに相当するものとして合成クリック活性化手順が呼び出されます。
  3. [16] それ以外の要素ではスクロール操作 (Shift で前ページ、それ以外で次ページ) を呼び出します。

[15] 矢印キースクロール操作を呼び出します。 ただし編集可能または選択中で Shift キーが押下されていれば、 選択範囲の変更操作を行います。

[17] PageDownPageUpHomeEndスクロール操作を呼び出します。

[18] Ctrl+RF5再読込操作を呼び出します。 Shift を押下しているとスーパーリロードとします。

[19] Ctrl+Fwindow.find メソッドを呼び出します。

[20] Ctrl+Pwindow.print メソッドを呼び出します。

[28] Ctrl+X, Ctrl+C, Ctrl+Vクリップボードの操作を呼び出します。

[29] Ctrl+Z元に戻す操作を呼び出します。

[31] Ctrl+A は「すべて選択」操作を呼び出します。

[38] Ctrl+Dブックマークの追加操作を呼び出します。 IE では Ctrl+Bブックマーク (お気に入り) の管理画面を開きます。

[39] Ctrl+S は表示中の文書の保存操作 (ダウンロード参照。) を呼び出します。

[32] Backspace は、編集中なら前の文字を削除する操作を、 それ以外なら history.back メソッドを呼び出します。

[33] 戻るキーや進むキーは、履歴操作を呼び出します。

[34] Tab は、編集中なら入力操作を、 それ以外ならフォーカスの順方向の移動操作を呼び出します。

[51] Shift+Tab は、 フォーカスの逆方向の移動操作を呼び出します。

[45] Shift + F10アプリケーションキー文脈メニューを表示します。

[62] ESCdefault unlock gesture に割り当てるべきとされています。

[63] ただし IME の動作中やダイアログ表示中など、 優先的にこれを処理するものがあれば、そちらのみ動作するべきと思われます。

[73] 通常のキーの場合で、 テキストボックス編集ホストであれば、 IME を介してテキストの入力として扱います。

[53] その他、プラットフォーム依存で、次のようなプラットフォーム側の動作が呼び出されることがあります。

[46] assigned access key なら、その処理を行います。

accesskey 参照。

[40] イベントループ一時停止は、 通常よりも反応を抑制する必要があります。

[43] マウス操作中の鍵盤の押下状態が操作に影響をあたえることがあります。

[44] リンクShift + クリックすると、 新しいが開かれるかもしれません。

[42] 鍵盤操作は、イベントリスナーからの window.open の呼び出しの挙動に影響を与えることがあります。

window.open 参照。

[49] 著者は、こうしたWebブラウザー側の一般的な動作を鑑み、 それと衝突するようなスクリプトは避けるべきです。 Webブラウザーは、利用者に一貫した挙動を提供するため、 こうした基本的な操作は著者取り消しできないようにするべきです。

[50] GitHubCtrl + F で独自の検索フォームを表示し、 Webブラウザー内蔵の検索機能の呼び出しを拒否しますが、独自の検索フォームは Webブラウザー内蔵のものほど使いやすくなく、全体として利用者体験を低下させています。

[61] 鍵盤操作によって発生するイベントの一部は、 engagement gesture です。その処理時には、 Pointer Lock の処理が実行されます。

入力モード

[74] 入力モード参照。

歴史

[1] 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) 著, 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.

こういう運命なのね・・・ (名無しさん 2007-01-28 05:07:15 +00:00)

[2] WebAPI F2F5 -- 25 and 26 Jan 2007 http://lists.w3.org/Archives/Public/public-webapi/2007Feb/att-0023/f2f5.html (名無しさん)

[3] Ctrl + Tab を取得できるか?

WinIE 6: 既定動作アドレス・バーへの焦点の移動。 keypress発火しない。 keydown発火する。 keydown取消しすると、 焦点の移動は中止される。

Firefox 2: 既定動作は次のタブへの切り替え (タブが複数の場合; タブが1つだけの場合は何も起こらない)。 keypress が発火される。 取消ししても、タブの切り替えは中止できない。 keydown も確か発火されたはず。

Opera 9: 既定動作タブ切り替え候補の表示 (WindowsAlt + Tab によるの切り替えと同じような機能)。 タブが1つだけの場合は何も起こらない。 keydown発火される。 取消ししても、タブ切り替え候補の表示は中止できない。 keypress は確認していない。

[4] The SVG Micro DOM (uDOM) – SVG Tiny 1.2 ( 版) http://www.w3.org/TR/2008/REC-SVGTiny12-20081222/svgudom.html#events__KeyboardEvent

[5] HTML / DOM におけるキーボードイベント周りの話 - ひだまりソケットは壊れない ( ( 版)) http://vividcode.hatenablog.com/entry/dom/keyboard-events

[6] IRC logs: freenode / #whatwg / 20130426 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20130426#l-974

[7] XML Binding Language (XBL) 2.0 ( ( 版)) http://www.w3.org/TR/2007/CR-xbl-20070316/#key-event

[8] Splitting key/code tables out of DOM3Event spec ( (Кошмарчик 著, 版)) http://lists.w3.org/Archives/Public/www-dom/2014JanMar/0135.html

[9] DOM Level 3 KeyboardEvent code Values ( ( 版)) http://www.w3.org/TR/2014/WD-DOM-Level-3-Events-code-20140612/

[10] UI Events ( ( 版)) http://www.w3.org/TR/2014/WD-uievents-20140612/

[11] DOM Level 3 KeyboardEvent key Values ( ( 版)) http://www.w3.org/TR/2014/WD-DOM-Level-3-Events-key-20140612/

[41] DOM Level 3 KeyboardEvent code Values ( 版) http://www.w3.org/TR/2015/WD-DOM-Level-3-Events-code-20150428/

[48] Fix #148: drop "keyevents" as an alias of "keyboardevent" for createE… · whatwg/dom@09d7eb6 ( 版) https://github.com/whatwg/dom/commit/09d7eb6f7da7057d605acb4f93627e7ee2cbe0a7

[59] UI Events KeyboardEvent key Values () https://www.w3.org/TR/2016/WD-uievents-key-20161024/

[60] UI Events KeyboardEvent code Values () https://www.w3.org/TR/2016/WD-uievents-code-20161024/

[64] Fix: #117, #119, #121 Move 'key' algorithm into uievents-key (garykac著, ) https://github.com/w3c/uievents/commit/179177779c8b1fbe4a1ecd7add4c43ec3eaf055a

[65] Reserved keyboard shortcut behaviour in fullscreen · Issue #39 · whatwg/fullscreen () https://github.com/whatwg/fullscreen/issues/39

[66] Re: Update on UI Events specs (Léonie Watson著, ) https://lists.w3.org/Archives/Public/public-webapps/2017AprJun/0094.html

[67] Two UI Events specs reach CR (Léonie Watson著, ) https://lists.w3.org/Archives/Public/public-webapps/2017AprJun/0097.html

[68] UI Events KeyboardEvent code Values () https://www.w3.org/TR/2017/CR-uievents-code-20170601/

[69] UI Events KeyboardEvent key Values () https://www.w3.org/TR/2017/CR-uievents-key-20170601/

[70] "create an event" doesn't work for certain UI events · Issue #414 · whatwg/dom () https://github.com/whatwg/dom/issues/414

[71] Define event constructing steps by annevk · Pull Request #614 · whatwg/dom () https://github.com/whatwg/dom/pull/614

[72] Define "event constructing steps" for complicated events · Issue #194 · w3c/uievents () https://github.com/w3c/uievents/issues/194

[75] RyuseiさんはTwitterを使っています 「Webでカスタムの入力要素を実装しているサービス、IME周りでバグを入れ込むのでつらい 日本語入力は確定がEnterキーなのでつらい 全部のサービスでバグレポートして回るのつらい」 / Twitter (, ) https://twitter.com/mandel59/status/1455062154931945474