[3]
[[HTML]] や [[XForms]] の
[DFN[[CODE(HTMLa)@en[[[inputmode]]]] [[属性]]]]は、
その[[フォーム制御子]]に適当な[[入力モード]]の''ヒント''を指定します。
;; ここでいう[DFN[[[入力モード]]]]は、
[[鍵盤]]の入力モード切替だったり、
[[IME]] の有効・無効だったり、
その他の設定だったりします。
[5] [[HTML]] [[内容属性]]
:状態:[[WHATWG]] [[WD]]
:[[要素型]]:
[CODE(HTMLe)@en[[QN[[[input]]] [http://www.w3.org/1999/xhtml]]]]、
[CODE(HTMLe)@en[[QN[[[textarea]]] [http://www.w3.org/1999/xhtml]]]]
:[CODE(DOMa)@en[[[type]]]]:[CODE(HTML)@en[[[text]]]]、
[CODE(HTML)@en[[[password]]]]、
[CODE(HTML)@en[[[email]]]]、[CODE(HTML)@en[[[url]]]]、
[CODE(HTMLe)@en[[[textarea]]]]
:[[属性名]]:[CODE(HTMLa)@en[[[inputmode]]]]
([Q@en[input mode]] ([Q[入力モード]]) より)
:[[属性値]]:
:[[既定値]]:
* 仕様書
- [4] [[XForms]] ([[W3C]] [[勧告]])
-- [CSECTION@en[E Input Modes]]
* 属性値
[9]
[[属性値]]は、[[字句]]を[[空白]]で区切ったものです。
[[字句]]は、[[アルファベット]]の列か、
または[[絶対URI]]です。
[[大文字]]と[[小文字]]は区別します。
[SRC@en[XForms 1.0 E.1]]
;; [[URI]] かどうかは、 [CODE(charname)@en[[[COLON]]]]
の有無で判断できます。
@@ 何個の字句? [[素片識別子]]? 順序?
[10]
[[アルファベット]]だけの[[字句]]は、
[[XForms 1.0]] (かその後継版) 仕様書で定義します。
[SRC@en[XForms 1.0 E.1]]
[11]
[[URI]] は[[拡張可能性]]のために認められていますが、
[[XForms 1.0]] では定義しません。
[[URI]] を[[解参照]]するとその[[入力モード]]の[[人間可読]]な説明が入手可能と[['''するべきです''']]。
それには、その[[入力モード]]と、
他の[[字句]]でどう修飾されるか、
またはどう修飾するかを説明[['''するべきです''']]。
[SRC@en[XForms 1.0 E.1]]
[17]
[[字句]]は、意味的には[[用字系字句]]と[[修飾子]]の2種類に分けられます。
[[スクリプト字句]]は[[修飾子]]より前に配置[['''するべきです''']]。
[SRC@en[XForms 1.0 E.3]]
[[#comment]]
** レンダリング
[12] [SRC@en[XForms 1.0 E.2]]
- [[空]]の[[フォーム制御子]]に[[入力]]する際には、
[CODE(XMLa)@en[[[inputmode]]]] を参考に[[入力モード]]を選択[['''するべきです''']]。
- 既に値がある[[フォーム制御子]]に[[入力]]する際には、
-- [[入力モード]]の選択に [CODE(HTMLa)@en[[[inputmode]]]]
を使用[['''するべきではありません''']]。
-- [[入力モード]]は[[環境]]の慣習に従って選択[['''するべきです''']]。
[13]
[[利用者エージェント]]は、
その環境で[[利用者]]が使用可能な状態となっているすべての[[入力モード]]を利用可能と[['''するべきです''']]。
通常は [[XForms]] で定義されている[[字句]]のうちのほんの一部だけです。
[SRC@en[XForms 1.0 E.2]]
[14]
[[入力モード]]の決定に使う[[算法]]は次の通りです。
[[利用者エージェント]]は必ずしもこの[[算法]]を使う必要はありませんが、
同じように動作する必要があります。
この[[算法]]は必ずしも可能なすべての組合せについて正しそうな結果が得られるわけではありませんが、
よく使う組合せに対しては正しい結果が得られます。
[SRC@en[XForms 1.0 E.2]]
= 利用可能なすべての[[入力モード]]を、
1つ以上の[[字句]]を使って表します。
-- 1つの[[入力モード]]を複数の[[字句]]列に対応させても構いません。
-- 例えば、[[ギリシャ文字]]を使っている[[利用者]]の環境では、
1つの同じ[[入力モード]]に対して
[CODE(example)@en[[[greek]] [[upperCase]]]] と
[CODE(example)@en[[[user]] [[upperCase]]]]
が対応することになります。
-- ただし、複数の[[字句]]列が同じにはならないようにします。
= [CODE(XMLa)@en[[[inputmode]]]] [[属性値]]を前から後ろに走査します。
-- 各[[字句]] [VAR@en[t]] について、
--- 利用可能な[[入力モード]]の[[字句]]の[[並び]]群の残りの中に、
[VAR@en[t]] を含むものが無いか探します。
--- [VAR@en[t]] を含むものがあれば、
[VAR@en[t]] を含まない[[入力モード]]は除去します。
--- [VAR@en[t]] を含むものがなければ、
[VAR@en[t]] は無視します。
= 利用可能な[[入力モード]]の[[字句]]の[[並び]]群の残りが、
-- すべて同じ[[入力モード]]に対応するなら、
その[[入力モード]]を選択します。
-- 何も残っていないか、
複数の[[入力モード]]が含まれていれば、
どの[[入力モード]]も選択しません。
@@
[15]
どれも選択しないというのは、環境依存の既定値になるということ?
[[#comment]]
** 利用可能性
[7]
[[著者]]は、様々な[[装置]]で利用可能な値であることに配慮しつつ、
可能な限り [CODE(XMLa)@en[[[inputmode]]]]
[[属性]]を提供[['''するべきです''']]。
[SRC@en[XForms 1.0 E]]
* 歴史
** XForms
[35] [CODE(XMLa)@en[[[inputmode]]]] [[属性]]は [[XForms 1.0]] で導入されました。
** Web Forms 2.0 への追加
-[36] [[Web Forms 2.0]] ([DEL[[[WHATWG]] [[WD]]]])
-- [CSECTION@en[2.11. The [CODE(HTMLa)@en[[[inputmode]]]] attribute]]
[6]
[[Web Forms 2.0]] で、
[Q[[[XForms 1.0]] の [CODE(XMLa)@en[[[inputmode]]]] と完全に等価]]として
[[HTML]] に [[backport]] されました。
** XHTML Basic 1.1 への追加
[1]
[CITE[XHTML Basic 1.1]] (Wed Mar 22 16:31:57 2006)
[[W3C]] [[HTML WG]]も[CODE(HTMLa)@en[[[inputmode]]]]を[[XForms]]からbackportするらしい。
それはいいとして、追加された章が[[XForms 1.0]]の附属書Eの丸写しだとか、
なぜかその[[モジュール]]が[[XHTML m12n]]か他の何かではなく[[XHTML Basic]]で定義されているとか、
やり方が相変わらずだww
([[名無しさん]] [WEAK[2006-03-28 02:38:53 +00:00]])
[39] 驚くべきことに[[勧告]]になりました。
- [CITE[XHTML™ Basic 1.1]] ([TIME[2008-07-27 02:02:25 +09:00]] 版)
- [CITE@en[XHTML Basic 1.1 Implementation Report]] ([TIME[2008-06-06 07:00:14 +09:00]] 版)
[40] 実装報告はとてもぶっ飛んだ愉快なものでした。
- 2件中1件は、テストが壊れていたので修正したら問題なかったと主張しています。
- もう1件は、 [[XHTML Basic 1.1]] に対応していないので [[XForms 1.0]] に書き直したら問題なかったと主張しています。
[38] 後に [[XHTML 1.2]] [[ED]] にも [[XHTML inputmode Attribute Module]] が採用されました。
同じく[[文書型]]の仕様書であるはずの [[XHTML Basic 1.1]] を参照するという形でした。
** HTML5 からの削除
[37] [CODE(HTMLa)@en[[[inputmode]]]] [[属性]]は [[Web Forms 2.0]] の [[HTML5]]
への統合の際に[[属性名]]だけ掲載されました。
[34]
しかしその後すぐ、
[CODE(CSS)@en[[[-wap-input-format]]]] が既によく実装されているとして
[[HTML 5]] から削除されました。
;; [CITE[IRC logs: freenode / #whatwg / 20080919]] ([TIME[2008-09-20 17:27:36 +09:00]] 版)
* 例
[16]
利用可能な[[入力モード]]が
- [CODE(XML)@en[[[cyrillic]] [[upperCase]]]]
- [CODE(XML)@en[[[cyrillic]] [[lowerCase]]]]
- [CODE(XML)@en[[[cyrillic]]]]
- [CODE(XML)@en[[[latin]]]]
- [CODE(XML)@en[[[user]] [[upperCase]]]]
- [CODE(XML)@en[[[user]] [[lowerCase]]]]
であるときに、選択される[[入力モード]]は
[SRC@en[XForms 1.0 E.2]]:
,[CODE(HTMLa)@en[[[inputmode]]]] [[属性値]] ,選択される[[入力モード]]
,[CODE(XML)@en[[[cyrillic]] [[title]]]] ,[CODE(XML)@en[[[cyrillic]]]]
,[CODE(XML)@en[[[cyrillic]] [[lowerCase]]]] ,[CODE(XML)@en[[[cyrillic]] [[lowerCase]]]]
,[CODE(XML)@en[[[lowerCase]] [[cyrillic]]]] ,[CODE(XML)@en[[[cyrillic]] [[lowerCase]]]]
,[CODE(XML)@en[[[latin]] [[upperCase]]]] ,[CODE(XML)@en[[[latin]]]]
,[CODE(XML)@en[[[upperCase]] [[latin]]]] ,"[CODE(XML)@en[[[cyrillic]] [[upperCase]]]], [CODE(XML)@en[[[user]] [[upperCase]]]] (両者が同じ場合; 同じでなければ該当なし)"
[19]
,入力欄 ,[CODE(XMLa)@en[[[inputmode]]]]
,[[姓]] ,[CODE(XML)@ja[[[hiragana]]]]
,[[姓]] [[フリガナ]] ,[CODE(XML)@ja[[[katakana]]]]
,[[名]] ,[CODE(XML)@ja[[[hiragana]]]]
,[[名]] [[フリガナ]] ,[CODE(XML)@ja[[[katakana]]]]
,[[郵便番号]] ,[CODE(XML)@en[[[latin]] [[digits]]]]
,[[住所]] ,[CODE(XML)@ja[[[hiragana]]]]
,[[住所]] [[フリガナ]] ,[CODE(XML)@ja[[[katakana]]]]
,[[電子メイル]] ,[CODE(XML)@en[[[latin]] [[lowerCase]]]]
,[[電話番号]] ,[CODE(XML)@en[[[latin]] [[digits]]]]
,[[一言]] ,[CODE(XML)@en[[[user]] [[predictOn]]]]
[SRC@en[XForms 1.0 E.5]]
[[#comment]]
** 関連
[18] '''XML Schema パターン・ファセットとの関係'''
[[XForms]] では、 [[XML Schema]] [[データ型]]の定義で[[パターン]]・[[ファセット]]を使って入力可能な値を制限することができます。
[[XML Schema]] の[[パターン]]は、
確固たる制約であって、
入力値の途中の部分で入力できる[[文字]]を細かく指定できます。
[CODE(XMLa)@en[[[inputmode]]]]
は柔軟なヒントであって、
入力開始時の[[入力モード]]だけ指定できます。
この2つが両方用意されているのは:
- [[パターン]]で指定される使用可能な[[文字]]は多すぎて、
適当な[[入力モード]]を選ぶことができないかもしれません。
そうであっても、[[利用者]]が入力する可能性の高い[[文字]]の種類はわかっていることが多いです。
- [[パターン]]で指定される指定可能な[[文字]]が
[CODE(XMLa)@en[[[inputmode]]]] [[属性値]]の覆う[[文字]]の[[集合]]に近い場合もあるでしょうが、
それを判定するためには[[利用者エージェント]]が沢山のデータを用意し、
複雑な[[計算]]をしなければなりません。
- 小型機器は[[パターン]]の検査を[[鯖]]に委ねているかもしれませんが、
[[入力モード]]の切換え程度は簡単に実現できます。
[SRC@en[XForms 1.0 E.4]]
[[#comment]]
** メモ
[2]
[[XForms]]から既にですが、
>
,[CODE[hiragana]] ,Unicode script name (may include other Japanese scripts produced by conversion from hiragana)
なのはどうにかなりますまいか?
[20]
@@ [[XHTML-MP]]
([[名無しさん]])
[21]
[CITE@en[Weekly XHTML2 WG Teleconference -- 30 May 2007]] ([CODE[2007-06-08 21:49:05 +09:00]] 版)
([[名無しさん]])
[22]
これ実装可能なんだろうか??
([[名無しさん]])
[23]
[CITE@en[OMA test fest stauts on inputmode]] ([[Yamakami, T.]] 著, [CODE[2007-06-06 01:09:54 +09:00]] 版)
([[名無しさん]] [WEAK[2007-06-16 01:08:14 +00:00]])
[24]
[CITE@en[regrets to miss June 13 conf call and note about OMA input mode testing material]] ([[Yamakami, T.]] 著, [CODE[2007-06-13 12:35:57 +09:00]] 版)
([[名無しさん]] [WEAK[2007-06-16 01:08:45 +00:00]])
[25]
[CITE[*DRAFT* W3 Forms F2F (Hawthorne) Day 1 June 13, 2007]] ([CODE[2007-06-26 18:29:00 +09:00]] 版)
([[名無しさん]])
[26]
[CITE@en[inputmode in XHTML 1.1]] ([[Steven Pemberton]] 著, [CODE[2007-07-12 22:07:29 +09:00]] 版)
([[名無しさん]])
[27]
>>26 [[XHTML Basic]] は [[XHTML 1.1]] の[[部分集合]]のはずだったが、 [CODE(HTMLa)@en[[[inputmode]]]] のせいでそうではなくなった、
ついては [[XHTML 1.1]] にも [CODE(HTMLa)@en[[[inputmode]]]]
を追加したい、ってあんたなにそれ?
([[名無しさん]])
[28]
[CITE[XHTML 1.2]] ([CODE[2006-09-06 19:21:36 +09:00]] 版)
([[名無しさん]])
[29]
>>28 ここのテスト、 [[外部部分集合]]を読まない限り
[CODE(XMLa)@en[[[xmlns]]]] が含まれていないという罠。
[41] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
[42] [CITE@en[Web Applications 1.0 r7198 First pass at an inputmode='' attribute based on actual research. This only handles Latin-script languages and Japanese, currently; if you want other languages supported, please e-mail the whatwg@whatwg.org mailing list with the relevant data. Wiki page: http://wiki.whatwg.org/wiki/Text_input_keyboard_mode_control]]
( ([TIME[2012-07-21 06:40:00 +09:00]] 版))
[43] [CITE[IRC logs: freenode / #whatwg / 20120716]]
( ([TIME[2012-07-21 11:45:07 +09:00]] 版))
[44] [CITE[IRC logs: freenode / #whatwg / 20120720]]
( ([TIME[2012-07-21 21:01:47 +09:00]] 版))
[45] [CITE@en[(9) Ian Hickson - Google+ - I need your help if you know anything about the needs of…]]
( ([TIME[2012-07-25 08:36:28 +09:00]] 版))
[46] [CITE[InputMode - W3C XForms Group Wiki (Public)]]
( ([TIME[2012-06-15 02:05:43 +09:00]] 版))
[47] [CITE@en[Web Applications 1.0 r7201 drop half-width-katakana inputmode since it's not useful apparently]]
( ([TIME[2012-07-25 00:26:00 +09:00]] 版))
[48] [CITE@en[Web Applications 1.0 r7223 Add inputmode=latin-name; add some introductory material for autocomplete= and inputmode=; add inputmode= to the index; recommend against inputmode=email, tel, url.]]
( ([TIME[2012-08-02 09:17:00 +09:00]] 版))
[49] [CITE[IRC logs: freenode / #whatwg / 20120726]]
( ([TIME[2012-08-02 21:01:50 +09:00]] 版))