Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and permissive document license rules apply.
VirtualKeyboard
APIは、著者にバーチャルキーボード(VK)の表示制御をより柔軟に行う機能と、VKの表示状態が変化した際にウェブページのレイアウトをより適応させる能力を提供します。
このセクションでは、本書が公開された時点での文書のステータスについて説明します。現行標準の W3C 公開文書の一覧と、この技術レポートの最新版は W3C 技術レポート一覧 https://www.w3.org/TR/ で確認できます。
本書は Web Editing Working Group により 勧告プロセスに則って 作業草案として公開されました。
作業草案として公開されたことは、W3C およびメンバーによる支持を意味するものではありません。
この文書はドラフトであり、今後更新、置換、廃止される可能性があります。他の文書を引用する場合は、進行中の作業としてのみ参照してください。
本書は W3C 特許ポリシーの下で活動するグループにより作成されています。 W3C は グループ関連公開特許情報リスト を管理しており、そのページには特許の公開方法も記載されています。特許の実質的な請求項が含まれると考えられる特許を知っている場合は、 W3C特許ポリシー第6節に従って情報を開示する必要があります。
この文書は 2021年11月2日 W3C プロセス文書によって管理されています。
このセクションは規範的ではありません。
バーチャルキーボード(VK)は、ハードウェアキーボードが利用できない状況で入力のために使用される画面上のキーボードです。 ユーザーエージェントは、以下の方法でVKの存在に対応しますが、この情報はウェブ開発者には公開されません: 1. ユーザーエージェントをVKの上に再配置する 2. VKがレイアウトビューポートを覆わないようにレイアウトビューポートのサイズを縮小する 3. ビジュアルビューポートのサイズを縮小し、レイアウトビューポートにパディングを追加してVKの上に移動できるようにする このAPIは、ユーザーエージェントがレイアウトおよびビジュアルビューポートを変更せず、 代わりにVKとレイアウトビューポートの交差情報を提供するという第4の選択肢を提供します。 これにより、著者はJavaScriptやCSS環境変数を使ってウェブページのレイアウトを適応させることができます。
デュアルスクリーンデバイス上のバーチャルキーボードの図
シングルタッチスクリーンデバイス上のバーチャルキーボードの図
非規範的と記載されているセクションだけでなく、この仕様書のすべての作成ガイドライン、図、例、および注記は非規範的です。それ以外の内容はすべて規範的です。
この文書におけるキーワード MUST および MUST NOT は、 BCP 14 [RFC2119] [RFC8174] に記載されている通り、すべて大文字で表記されている場合のみ、その意味として解釈してください。
この仕様は、1つの製品に適用される適合基準を定義しています。それは、この仕様に含まれるインターフェイスを実装する ユーザーエージェントです。
アルゴリズムや特定の手順として記載された適合要件は、最終的な結果が同等である限り、どのような方法で実装しても構いません。 (特に、この仕様で定義されているアルゴリズムは、分かりやすさを重視しており、高速であることを意図していません。)
WebIDL
[Exposed=Window, SecureContext]
interface VirtualKeyboard
: EventTarget {
undefined show
();
undefined hide
();
readonly attribute DOMRect boundingRect
;
attribute boolean overlaysContent
;
attribute EventHandler ongeometrychange
;
};
VirtualKeyboard
オブジェクトには、以下が関連付けられています:
boundingRect
DOMRect
。初期値は全て 0 です。
overlaysContent
boolean型で、初期値は false
です。この属性が true
に設定されている場合、ユーザーエージェントは MUST
NOT 自身の document の viewport または visual viewport をリサイズしてはなりません。
show()
メソッド
このメソッドは以下の手順に従うものとします:
Window
オブジェクトであることを確認します。
virtualKeyboardPolicy
が manual
でない場合、または inputMode
属性値が none
の場合、この手順を中止します。
set the virtual keyboard bounding rect
をキーボードのOSから報告されたバウンディング矩形と document の viewport 矩形を使って呼び出します。
hide()
メソッド
このメソッドは以下の手順に従うものとします:
Window
オブジェクトであることを確認します。
virtualKeyboardPolicy
が manual
でない場合、または inputMode
属性値が none
の場合、この手順を中止します。
set the virtual keyboard bounding rect
をキーボードのOSから報告されたバウンディング矩形(すべて 0 の値)と document の viewport 矩形を使って呼び出します。
プラットフォームのヒューリスティクスによって、VKの show
()
および hide
()
に追加の制限が課される場合があります。例:Windowsではポインタタイプがタッチまたはペンである必要があります。
懸念を示す人もいます
show
()
および hide
()
メソッドが promise
ベースでないことに対してですが、VKの表示状態が変化した際に ongeometrychange
イベントが発火するため、戻り値は不要であり、ウェブ開発者にとってはこの設計の方が望ましいと考えています。
overlaysContent
の getter
手順は、this の
overlaysContent
を返します。
overlaysContent
の setter
手順は、this の
overlaysContent
に与えられた値を設定します。
この属性は、VKと document の viewport との交差領域をクライアント座標系で報告します。set the virtual keyboard bounding rect
を呼び出してください。
set the virtual keyboard bounding rect
set the virtual keyboard bounding rect を、osk(オンスクリーンキーボードの矩形を表すDOMRect)と lv(document の viewport 矩形を表すDOMRect)を入力として実行するには、次の手順を実行します:show
()
または hide
()
を this
で実行した結果のオンスクリーンキーボードの矩形とします。
show
()
または hide
()
を this
で実行した結果とします。
DOMRect
オブジェクトとします。
boundingRect
の getter 手順は、this の boundingRect
を返します。
ongeometrychange
このイベントは、VKと document の viewport の交差領域が変更されたとき(例:VKが表示・非表示になった時やブラウザーウィンドウが再配置された時など)に発火されます。
WebIDL partial interface mixin ElementContentEditable
{
[CEReactions] attribute DOMString virtualKeyboardPolicy
;
};
input と textarea のハンドリングを追加してください。
virtualKeyboardPolicy
は、列挙属性であり、キーワードは
空文字列
、auto
、manual
です。IDL属性は、同名のコンテンツ属性を反映する必要があります。
この属性が contenteditable ホストの要素に指定されている場合、auto
は対応する編集可能要素がフォーカスまたはタップされたときに自動的にVKを表示し、manual
は編集可能要素のフォーカスやタップによるVKの状態変化を切り離し、VKはそのままになります。
virtualKeyboardPolicy
属性値の設定変更は、現在定義されている動作を打ち消します。ただし、auto
から 空文字列
またはその逆への変更は除きます。
フォーカスなどのイベントに対するタイミングを指定してください。
VirtualKeyboard
API
は、ウェブ開発者がバーチャルキーボードのサイズを計算し、レイアウトを宣言的に調整できるように 6 つの新しい CSS 環境変数 を提案しています。
これらの CSS env は CSS env 変数仕様 に追加されるべきです。
名前 | 値 |
---|---|
keyboard-inset-top | 長さ |
keyboard-inset-right | 長さ |
keyboard-inset-bottom | 長さ |
keyboard-inset-left | 長さ |
keyboard-inset-width | 長さ |
keyboard-inset-height | 長さ |
キーボードインセットは、ビューポート端からの top, right, bottom, left の差分で矩形を定義する 6 つの環境変数です。デフォルト値は fallback 値が指定されていなければ
"0px" となり、boundingRect
の値が変更されると更新されます。
幅と高さのインセットは、他のインセット値から計算され、開発者の利便性のために提供されます。
下図およびマークアップは、VKが表示された時にアクティブセルを再配置するキャンバスベースのスプレッドシートの例です。geometrychange
イベントがキャンバスの描画リクエストをトリガーします。描画コードはboundingRect
プロパティを利用してアクティブセルを適切な位置に描画します。
hide
()
および show
()
メソッドを セキュアコンテキスト においてのみ呼び出し可能にしなければなりません。
show
()
メソッドを sticky
activation がある場合のみ呼び出し可能にしなければなりません。
boundingRect
、overlaysContent
および ongeometrychange
属性
overlaysContent
の設定を セキュアな トップレベル閲覧コンテキスト
でのみ許可しなければなりません。
WebIDLpartial interface Navigator {
[SecureContext, SameObject] readonly attribute VirtualKeyboard
virtualKeyboard
;
};
[Exposed=Window, SecureContext]
interface VirtualKeyboard
: EventTarget {
undefined show
();
undefined hide
();
readonly attribute DOMRect boundingRect
;
attribute boolean overlaysContent
;
attribute EventHandler ongeometrychange
;
};
partial interface mixin ElementContentEditable
{
[CEReactions] attribute DOMString virtualKeyboardPolicy
;
};
貢献者の追加
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: