(57)【特許請求の範囲】
【請求項１】
複数の命令が１つまたは複数のコンピューター記憶域メディアに格納された、当該１つまたは複数のコンピューター記憶域メディアであって、デバイス（device）の１つまたは複数のプロセッサーによって実行されたときに、前記１つまたは複数のプロセッサーに、
ソフトキーボードを介して(via)ユーザー入力を受信(receive)し、前記ソフトキーボードは複数のキーを含み、各々のキーが、当該キーに対応する、ソフトキーボードの上の位置を含む、対応する衝突目標(hit target)を有し、
前記ソフトキーボードの現在の入力環境(input environment)を表す情報を取得(obtain)し、かつ
少なくとも部分的に前記現在の入力環境に基づいて、前記複数のキーのうちどの１つまたは複数のキーを前記ユーザー入力によって選択する意図だった(intended to be)のかを決定(determine)し、少なくとも部分的に、現在の入力環境及びユーザ入力に基づいて、複数のキーのうちの隣接する１つキーの表示部分に亘って延びるように、１つのキーの衝突目標のサイズを増加させる一方、複数のキーのうちの隣接する１つのキーの衝突目標のサイズを低減させることによって、複数のキーうちの１つの衝突目標を変更し、１つのキーの変更された衝突目標が、１つ又はそれより多い位置であって当該位置の中で、当該１つのキーが表示される位置を含むとともに、当該１つのキーの変更された衝突目標が、１つ又はそれより多い位置であって当該１つ又はそれより多い位置の中で、当該１つのキーではなく複数のキーのうちの隣接する１つが表示されるものをも含む、
ようにさせる、複数の命令がそこに格納された１つまたは複数のコンピューター記憶域メディアであって、
前記現在の入力環境が、前記デバイスが移動中か、又は、静止状態かということ、を含む、１つまたは複数のコンピューター記憶域メディア。
【請求項２】
前記ユーザー入力は、ユーザーによって選択された前記ソフトキーボードの１つまたは複数の位置を示す１組の１つまたは複数の座標(coordinates)によって表される(represented)、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項３】
前記現在の入力環境を表す前記情報は、前記デバイスの動作モードを表す情報を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項４】
前記デバイスの前記動作モードを表す前記情報は、前記デバイスの地理的位置(geographical location)を含む、請求項３に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項５】
前記現在の入力環境を表す前記情報は、言語固有の辞書(language-specific dictionary)を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項６】
前記現在の入力環境を表す前記情報は、前記デバイスのユーザーによって一般的に(commonly)入力される単語(words)に関する情報を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項７】
前記現在の入力環境を表す前記情報は、ユーザーがデータを入力できる１つまたは複数のフィールドのそれぞれに対して、前記フィールドを、前記フィールドに対して有効なデータの種類(types)にマッピングする情報を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項８】
前記現在の入力環境を表す前記情報は、部分的な入力(partial inputs)に基づいて、他の単語または句より可能性の高い(more likely)特定(particular)の単語(words)または句(phrases)を表す情報を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項９】
前記現在の入力環境を表す前記情報は、
前記デバイスの動作モードを表す情報と、
言語固有の辞書と、
前記デバイスのユーザーによって一般的に入力される単語に関する情報と、
前記ユーザーがデータを入力できる１つまたは複数のフィールドのそれぞれに対して、前記フィールドを前記フィールドに対して有効なデータの種類にマッピングする情報と、
前記ユーザーによって使用されている言語を表す情報と、
部分的な入力に基づいて、他の単語または句より可能性が高い特定の単語または句を表す情報と、
を含む、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項１０】
前記命令は、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、前記１つまたは複数のプロセッサーに、前記ソフトキーボードを変更(alter)するようにさらにさせる、請求項１に記載の１つまたは複数のコンピューター記憶域メディア。
【請求項１１】
予測(predictive)キーボードエンジンと、
前記予測キーボードエンジンに、ソフトキーボードの現在の入力環境を表す情報を提供するために結合された(coupled)１つまたは複数のモジュールと、
を含むシステムであって、
前記予測キーボードエンジンは、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、
複数のキーのうちの１つの衝突目標のサイズを低減する一方、複数のキーのうちの隣接する１つのキーの衝突目標のサイズを増加させることによって、複数のキーのうちの隣接する１つのキーの衝突目標が、前記サイズが低減される衝突目標の１つのキーの表示部分の一部に亘って延在するようにさせて、隣接するキーの変更された衝突目標が、1つ又はそれより多い位置であって、当該位置の中で、隣接するキーが表示される、1つ又はそれより多い位置に加えて、隣接するキーではなくて前記１つのキーが、表示される、1つ又はそれより多い位置をも含むようにされることによって、前記ソフトキーボードの、前記複数のキーの複数の衝突目標を変更し、かつ
前記変更された複数の衝突目標を使用して、複数のキーを決定して、前記ソフトキーボードの複数のキーのうちどの１つまたは複数のキーが前記システムのユーザーによって選択されたかを決定し、
前記現在の入力環境が、前記デバイスが移動中か、又は、静止状態かということ、を含む、
システム。
【請求項１２】
前記予測キーボードエンジンは、人工知能システムを含む、請求項１１に記載のシステム。
【請求項１３】
前記予測キーボードエンジンは、前記現在の入力環境を表す前記情報に少なくとも部分的に基づいて、前記ソフトキーボードのレイアウトを変更(change)する方法を決定するようにさらに構成された、請求項１１に記載のシステム。
【請求項１４】
前記１つまたは複数のモジュールは、
前記システムの動作モードを表す情報を提供する動作モード検出(detection)モジュールと、
前記システムのユーザーによって一般的に(commonly)入力される単語(words)に関する情報を提供するユーザー固有の辞書(lexica)モジュールと、
を含む、請求項１１に記載のシステム。
【請求項１５】
デバイスに実装される方法であって、
前記デバイスのユーザーによって選択されたソフトキーボードの１つまたは複数の位置を示す１組の１つまたは複数の座標を受信(receiving)するステップであって、前記ソフトキーボードは複数(multiple)のキーを有し、前記複数のキーのそれぞれは、対応する衝突目標(hit target)を有するステップ（４０２）であって、当該衝突目標が、前記キーに対応する前記ソフトキーボードの位置を含み、前記複数のキーのうちの少なくとも１つが、当該少なくとも１つのキーの衝突目標のサイズを増加させる一方、複数のキーのうちの隣接する１つのキーの衝突目標のサイズを低減させることによって変更される、対応する衝突目標を有し、前記少なくとも１つのキーのうちの前記変更された衝突目標は、前記少なくとも１つのキーの表示部分を越えて延在し、１つ又はそれより多い位置であって、当該１つ又はそれより多い位置の中で前記少なくとも１つのキーが表示される当該位置、及び、１つ又はそれより多い位置であって、当該１つ又はそれより多い位置の中で前記少なくとも１つのキーではなく複数のキーのうちの隣接するキーが表示される当該位置と、の双方を含む、
ものと、
前記１組の１つまたは複数の座標および前記ソフトキーボードの現在の入力環境を使用する衝突目標ロジックの両方に少なくとも一部分的には基づいて、前記複数のキーのどの１つまたは複数が前記ユーザーによって選択されたかを決定するステップ（４０６）と、
を含み、
前記現在の入力環境が、前記デバイスが移動中か、又は、静止状態かということ、を含む、
方法。
【請求項１６】
前記現在の入力環境に少なくとも部分的に基づいて、どの文字(characters)、数値(numbers)、または記号(symbols)がどの前記複数のキーに対応(corresponding)するかを変更(changing)することをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記現在の入力環境は、
前記デバイスのユーザーによって一般的に入力される単語(words)に関する情報と、
前記ユーザーがデータを入力できる１つまたは複数のフィールドのそれぞれに対して、前記フィールドを、前記フィールドに対して有効なデータの種類にマッピングする情報と、
を含む、請求項１５に記載の方法。
【請求項１８】
前記現在の入力環境は、
前記ユーザーによって使用されている言語を表す情報と、
部分的な入力に基づいて他の単語または句より可能性の高い特定の単語または句を表す情報と、
を含む、請求項１５に記載の方法。
【請求項１９】
前記デバイスの動作モードを表す前記情報が、如何にして前記デバイスが使用されるかについての物理的記述を含む、請求項３に記載された１つ又は複数のコンピュータ記憶域メディア。
【発明の詳細な説明】
【技術分野】
【０００１】
本願の実施例は、例えば、ダイナミックソフトキーボードに関する。
【背景技術】
【０００２】
現在、様々な種類のモバイルコンピューティングデバイスが利用可能であり、典型的には小型パッケージで大きな計算能力を提供している。しかし、モバイルデバイスが直面している課題の１つはデータ入力である。ユーザーは、大きくて持ち運びが困難であり、多くの場合、モバイルコンピューティングデバイス自体より大きいキーボードを介してデータを入力することに慣れている。一部のモバイルコンピューティングデバイスは、ソフトキーボードを使用することによって、この問題を解決している。ソフトキーボードとは、モバイルデバイスのディスプレイ上に表示されるキーボードのことであり、（たとえば、スタイラス、ユーザーの指などを使用して）ユーザーが表示されたキーを選択できるようにするものである。残念なことに、キーが物理的に分離されておらず、多くの場合はソフトキーボードのサイズが小さいため、ソフトキーボード上のキーを選択するのは、ユーザーにとって困難なままである。
【発明の概要】
【課題を解決するための手段】
【０００３】
この概要は、以下に「発明を実施するための形態」においてさらに詳しく記述する概念を選択して簡単な形で紹介するために提供する。この概要は、請求される主題の重要な特徴または基本的な特徴を識別することを意図するものではなく、また、請求される主題の範囲を制限するために使用することを意図するものでもない。
【０００４】
本明細書ではダイナミックソフトキーボードについて記述する。１つまたは複数の態様によると、ユーザー入力はソフトキーボードを介して受信される。ソフトキーボードは複数のキーを含む。ソフトキーボードの現在の入力環境を表す情報が取得され、複数のキーのうちどの１つまたは複数のキーをユーザー入力によって選択する意図だったのかが決定される。この決定は、少なくとも部分的に現在の入力環境に基づいて行われる。
【０００５】
全図面を通して、同じ機能を参照するために同じ番号を使用する。
【図面の簡単な説明】
【０００６】
【図１】１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なコンピューティングデバイスを示すブロック図である。
【図２】１つまたは複数の実施形態に従ってソフトキーボードを表示する例示的なディスプレイデバイスを示す図である。
【図３】１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なシステムを示す図である。
【図４】１つまたは複数の実施形態に従ってダイナミックソフトキーボードの例示的なプロセスを示すフローチャートである。
【図５】１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装するように構成できる例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【０００７】
本明細書ではダイナミックソフトキーボードについて記述する。ソフトキーボードのユーザーインターフェイスがユーザーに表示される。ソフトキーボードのユーザーインターフェイスに関する現在の入力環境を表す様々な情報も取得される。現在の入力環境を表すこの情報は、たとえば、ユーザーによって入力されている現在のデータの種類を表す情報（たとえば、電子メールアドレス、郵便番号、市など）、ユーザーによって典型的に使用される言語を表す情報、ユーザーによって一般的に入力されるデータ、物理的な操作環境（たとえば、机上、歩いている途中、移動中の自動車内など）、データ入力フィールドの近くの文字および／または単語などを含むことができる。現在のユーザーの入力環境を表すこの情報は、ユーザー入力が受信されたときに、ユーザーが選択しようとしたソフトキーボードのキーを検出するために使用される。このようにダイナミックソフトキーボードは、ユーザー入力速度およびユーザー満足度を促進することができる。
【０００８】
図１は、１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なコンピューティングデバイス１００を示すブロック図である。コンピューティングデバイス１００は、任意の様々な異なるデバイスでもよい。たとえば、コンピューティングデバイス１００は、デスクトップコンピューター、移動局、娯楽装置、通信するようにディスプレイデバイスに結合されたセットトップボックス、テレビ、無線電話、デジタルカメラ、ゲームコンソール、車載型コンピューターなどでもよい。このため、コンピューティングデバイス１００は、十分なメモリーおよびプロセッサーリソースを備えた完全なリソースデバイス（たとえば、パーソナルコンピューター、ゲームコンソール）から、メモリーおよび／または処理リソースが制限されている低リソースデバイス（たとえば、従来のセットトップボックス、携帯型のゲームコンソール）まで及ぶことができる。
【０００９】
コンピューティングデバイス１００は、ソフトキーボード制御モジュール１０２および予測キーボードモジュール１０４を含む。ソフトキーボード制御モジュール１０２は、ユーザーに表示するソフトキーボード１０８を生成する。ソフトキーボード１０８は、ディスプレイデバイスに表示されるユーザーインターフェイスである。ソフトキーボード１０８は、以下により詳細に記述するユーザーによって選択できる複数のキーを含む。コンピューティングデバイス１００は、ソフトキーボード１０８を表示できるディスプレイコンポーネントを含むことができる。あるいは、ソフトキーボード１０８を表示できる別のデバイスまたはコンポーネントに信号またはデータを出力することができる。
【００１０】
ソフトキーボード１０８は、任意の様々な異なるレイアウトで配列することが可能で、任意の様々な異なる英数字、漢字記号、文字または単語のグループ（たとえば、「ｈｔｔｐ：／／」、「ｗｗｗ．」など）、他の記号などに対応することが可能な複数のキーを含む。キーのレイアウトの例を１つ挙げるとＱＷＥＲＴＹレイアウトがあるが、この代わりに他のレイアウトを提供することもできる。さらに、ソフトキーボード１０８はダイナミックである。このダイナミックな性質とは、時間とともに変化する予測キーボードモジュール１０４および／または時間とともに変化するソフトキーボード１０８として表示されるユーザーインターフェイスの振る舞いを示す。より詳細には以下に記述するように、この変更は、キーボードのレイアウトの変更、キーに対応する様々な英数字または記号の変更、ソフトキーボード１０８上のどの位置がどのキーに対応するかの変更、衝突目標ロジックの変更などを含むことができる。
【００１１】
ソフトキーボード１０８はディスプレイデバイスに表示され、また、ユーザー入力はこのディスプレイデバイスを介して入力される。１つまたは複数の実施形態では、ソフトキーボード１０８を表示するディスプレイデバイスは、タッチスクリーンまたはタッチパッドであるか、またはそれが組み込まれており、これを介してユーザーがソフトキーボード１０８のキーを表示するディスプレイデバイスの領域に接触することによって、または領域に物理的に接近することによって、ユーザー入力を入力することができる。この接触または物理的な接近は、スタイラス、ペン、指などを使用して行うことができる。他の実施形態では、タッチスクリーンまたはタッチパッド以外の他のポインティングデバイスが使用される。ポインターを移動して、ソフトキーボード１０８を使用して入力するために、マウス、サムスティック、トラックパッド、トラックボールのような相対ポインティングデバイスなど、任意の様々な他のポインティングデバイスを使用することができる。ペンタブレットのような完全に分離されたポインティングデバイスなど、他の種類のポインティングデバイスも使用することができる。これらの様々なポインティングデバイスは、典型的には、ソフトキーボード１０８の特定の位置を選択するためにユーザーが作動させることができる１つもしくは複数のボタンまたは他の選択メカニズムを含む（たとえば、ポインターがソフトキーボード１０８の希望する領域に位置したときに、ユーザーはマウスボタンを押すことができる）。ユーザー入力を入力するソフトキーボード１０８に対応する物理的なキーを有する個別の物理的なキーボードはいずれも必要ない。
【００１２】
図２は、１つまたは複数の実施形態に従ってソフトキーボード２０２を表示する例示的なディスプレイデバイス２００を示している。ソフトキーボード２０２は、たとえば、図１のソフトキーボード１０８でもよい。例示的なレイアウトおよびソフトキーボード２０２のキーに対応する英数字は一例に過ぎず、上記のように、任意の様々な異なるレイアウトおよび／または対応する文字もしくは記号を使用できることを理解されたい。図２の例では、ソフトキーボード２０２は、ディスプレイデバイス２００の表示領域をすべては占めておらず、デバイス２００のユーザーに他の情報を表示する余地を残している。あるいは、ソフトキーボード２０２は、ディスプレイデバイス２００の表示領域のすべて、またはほぼすべてを占めることができる。また、ソフトキーボード２０２は、オプションで、表示非表示機能のためのユーザーインターフェイスメカニズムを含むことができ、これにより、キーボード２０２を特定のときに非表示にすることができる。
【００１３】
上記のように、ソフトキーボード２０２で入力を行うために、任意の様々な異なるポインティングデバイスを使用することができる。ポインティングデバイスの例として、図２に、キーボード２０２の特定のキーに接触したり、または上方で静止させたりするためにユーザーが使用できるスタイラス２０４を示している。ユーザーが、（スタイラス２０４または別のポインティングデバイスによって制御されたポインターを用いて）キーボード２０２の特定の領域に接触したり、またはキーボード２０２の特定の領域の上方にスタイラス２０４（または他のポインター）を移動させたりすると、スタイラスまたは他のポインティングデバイスの接触または移動によってユーザーが選択しようとした特定のキーが自動的に検出される。より詳細には以下に記述するように、この自動検出が実行される方法は、少なくとも部分的に現在の入力環境に基づいている。
【００１４】
１つまたは複数の実施形態では、ディスプレイデバイス２００はタッチスクリーンまたはタッチパッドを含み、ユーザーは、ディスプレイデバイス２００の様々な領域にスタイラスを接触させたり、またはその近くにスタイラスを移動したりして、ユーザーはユーザー入力を入力することができる。そのようなタッチスクリーンまたはタッチパッドは、電磁気による入力デバイス、容量性の入力デバイス、抵抗性の入力デバイス、表面弾性波入力デバイス、光学的画像入力デバイスなどでもよい。そのようなタッチスクリーンまたはタッチパッドは、当業者にはよく知られている。他のポインティングデバイスが使用される場合（マウス、ペンタブレットなど）、ディスプレイデバイス２００は、タッチスクリーンやタッチパッドを含む必要がないことを理解されたい。
【００１５】
図１に戻ると、ソフトキーボード制御モジュール１０２は、ユーザー入力１１０も受信する。ユーザー入力１１０は、ソフトキーボード１０８の特定の位置（複数可）の選択を示している。上記のように、この選択は、スタイラス、ペン、指、ポインティングデバイスによって制御されたポインターなどを使用して行うことができる。ユーザー入力１１０は、典型的にはモジュール１０２によって１組の１つまたは複数の座標として表され（たとえば、Ｘ−Ｙ座標、Ｘ−Ｙ−Ｚ座標など）、ユーザーによって選択されたソフトキーボード１０８の位置（複数可）を識別する。上記のように、この選択は、タッチスクリーンもしくはタッチパッドに接触したり、これらの近くに移動したりすること、または他のポインティングデバイスからの他の入力を含むことができる。ＸおよびＹの座標は、入力面（たとえば、タッチスクリーン、タッチパッド、ペンタブレットなどの面）の水平および垂直の位置をそれぞれ示している。Ｚ座標は、入力面からの距離を表しており、ユーザーが入力面の一部の上方で静止しているかどうかを判断するために使用することができる。
【００１６】
１つまたは複数の実施形態では、ユーザー入力１１０は連続したデータである（たとえば、連続したＸ−Ｙ座標、連続したＸ−Ｙ−Ｚ座標など）。この連続したデータは、１つまたは複数の接近軌道、１つまたは複数のペン降下軌道、および離脱軌道を含む。接近軌道は、ポインティングデバイスが面に衝突する前（またはユーザーによって選択メカニズムが作動される前）の連続した座標を示している。ペン降下軌道は、ポインティングデバイスが衝突する（または、ユーザーによって選択メカニズムが作動されたときにポインターが位置している）面上の位置を示している。多くの場合、ペン降下軌道は１つだが、複数のペン降下軌道を受信することができる（たとえば、ペンが面に衝突するときにユーザーがペンを弾ませた場合）。離脱軌道は、ポインティングデバイスが面を離れるとき（またはユーザーによって選択メカニズムが作動された後）の連続した座標を示している。
【００１７】
予測キーボードモジュール１０４は、ユーザー入力１１０をソフトキーボード制御モジュール１０２から受信する。予測キーボードモジュール１０４は、ユーザー入力１１０およびソフトキーボード１０８の現在の入力環境を表す情報の両方に基づいて、ユーザー入力１１０を用いて、ユーザーが選択しようとしたソフトキーボード１０８の１つまたは複数のキーを決定する。より詳細には以下に記述するように、この現在の入力環境は、ユーザーによって入力されている現在のデータの種類（たとえば、電子メールアドレス、郵便番号、市など）、ソフトキーボード１０８のユーザーによって典型的に使用される言語、ソフトキーボード１０８のユーザーによって一般的に入力されるデータなど、ソフトキーボード１０８が表示される環境の様々な態様を表している。
【００１８】
１つまたは複数の実施形態では、また、予測キーボードモジュール１０４は、ユーザー入力１１０および／またはソフトキーボード１０８の現在の入力環境を表す情報に基づいて、ソフトキーボード１０８に加える変更を決定する。これらの変更は、より詳細には以下に記述するように、キーボードのレイアウトの変更および／またはキーに対応する様々な英数字もしくは記号の変更などでもよい。
【００１９】
図３は、１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装する例示的なシステムを示している。システム３００は、たとえば、図１のコンピューティングデバイス１００でもよい。システム３００は、ソフトキーボード制御モジュール３０２（図１のソフトキーボード制御モジュール１０２でもよい）、および予測キーボードモジュール３０４（図１の予測キーボードモジュール１０４でもよい）を含む。モジュール３０２および３０４は、同じデバイスの一部として実装することも、あるいは異なるデバイスによって実装することもできる。さらに、モジュール３０２および３０４自体のそれぞれは、単一のデバイス、または複数のデバイスによって実装することができる。
【００２０】
ソフトキーボード制御モジュール３０２はソフトキーボード３０８を生成し、ユーザー入力３１０を受信する（図１のソフトキーボード１０８およびユーザー入力１１０に類似）。ユーザー入力３１０は、ソフトキーボード３０８のユーザーによって行われた選択であり、この選択は、ソフトキーボード３０８の１つまたは複数の特定の位置の選択である。この選択は、たとえば、指、ペン、スタイラスなどを用いてディスプレイデバイスに接触したり、ソフトキーボードの位置の上方にポインターを移動させたり、ペンまたはスタイラスをディスプレイデバイスの近くに移動させたりするなど、様々な方法で行うことができる。この選択は、上記の１つまたは複数の接近軌道、１つまたは複数のペン降下軌道、および離脱軌道を含む。ソフトキーボード制御モジュール３０２は、任意の様々な異なる方法においてユーザー入力３１０を表すことができる。
【００２１】
１つまたは複数の実施形態では、ユーザー入力３１０は、１組の１つまたは複数のＸ−Ｙ座標として表される。１組のＸ−Ｙ座標は、ソフトキーボード３０８の特定の位置を２次元空間において識別する。ソフトキーボード３０８の特定の位置が原点として決定され（たとえば、ソフトキーボード３０８の左下の角、ソフトキーボード３０８の中心など）、Ｘ−Ｙ値は、Ｘ軸およびＹ軸に沿った原点に対する位置を表す。
【００２２】
さらに、１つまたは複数の実施形態では、ソフトキーボード３０８が表示されるディスプレイデバイスはＺ軸をサポートする。このＺ軸は、Ｘ−Ｙ座標の２次元空間に対して垂直である。そのようなディスプレイデバイスは、たとえば、ディスプレイデバイスの近くに位置するが、接触していないスタイラスを検出することができる。スタイラスとディスプレイデバイスの間の距離はＺ値として記録される。このため、そのようなディスプレイデバイスと共に使用される場合、ユーザー入力３１０は、１組の１つまたは複数のＸ−Ｙ−Ｚ座標として表される。
【００２３】
さらに、１つまたは複数の実施形態では、追加的な時間値Ｔがユーザー入力に対して記録される。時間値Ｔは、ユーザーの選択の期間を示しており、たとえば、ユーザーのスタイラスがキーボード３０８の特定のＸ−Ｙ位置に接触していた時間、ユーザーのスタイラスがキーボード３０８の特定のＸ−Ｙ位置から特定の距離Ｚで保持された時間、ポインターがキーボード３０８の特定のＸ−Ｙ位置の上方で保持（上方で静止）された時間などである。このため、そのような実施形態では、ユーザー入力３１０は、１組の１つもしくは複数のＸ−Ｙ−Ｔ、または、その代わりとしてＸ−Ｙ−Ｚ−Ｔ座標として表される。より詳細には以下に記述するように、時間値Ｔは予測キーボードエンジン３２０への入力であり、ユーザーが期待するテキスト入力について、より優れた予測を行うために使用することができる。
【００２４】
さらに、１つまたは複数の実施形態では、キーボード３０８の複数の位置を同時に選択することができる。たとえば、これらの複数の位置は、（たとえば、２本の指を使用して）「Ｓｈｉｆｔ」キーと文字キー、「Ｃｏｎｔｒｏｌ」キーと文字キーなど、同時に選択された２つ以上の位置でもよい。また、これらの複数の位置は、ある位置から別の位置への移動などでもよい（たとえば、スタイラスを用いてキーボード３０８のある位置に接触し、ディスプレイデバイスを横切るようにスタイラスを滑らせ、次に別の位置でスタイラスを持ち上げる）。そのような状況では、ユーザー入力３１０は、１組の複数の座標として表される（たとえば、Ｘ−Ｙ、Ｘ−Ｙ−Ｚ、Ｘ−Ｙ−Ｔ、Ｘ−Ｙ−Ｚ−Ｔなど）。また、１つまたは複数の座標は、オプションで、ディスプレイデバイスに接触したとき、またはディスプレイデバイスの近くに位置したときに（たとえば、ディスプレイデバイスから距離Ｚ）、スタイラス（または指、ペンなど）がディスプレイデバイスに沿って移動される方向を識別する軌道パラメーターを含むことができる。いくつかの実施形態では、現在のハードウェアについて、ユーザーは、典型的には、垂直方向に目標を捕らえる際により多くのエラーが発生し、水平方向ではより正確である。
【００２５】
予測キーボードモジュール３０４は、ソフトキーボード制御モジュール３０２からユーザー入力３１０を受信して、ユーザー入力３１０およびソフトキーボード３０８の現在の入力環境を表す情報の両方に基づいて、ユーザー入力３１０を用いてユーザーが選択しようとしたソフトキーボード３０８の１つまたは複数のキーを決定する。１つまたは複数の実施形態では、また、予測キーボードモジュール３０４は、少なくとも部分的に現在の入力環境に基づいて、ソフトキーボード３０８に加える変更を決定する。これらの変更の指示はソフトキーボード制御モジュール３０２に送信され、ソフトキーボード制御モジュール３０２は、それに応じてソフトキーボード３０８の表示を変更する。
【００２６】
予測キーボードモジュール３０４は、予測キーボードエンジン３２０、動作モード検出モジュール３２２、言語辞書モジュール３２４、ユーザー固有の辞書モジュール３２６、コンテキストマッピングモジュール３２８、言語検出モジュール３３０、および単語および句のｎグラム統計モジュール３３２を含む。モジュール３２２から３３２のそれぞれは、予測キーボードエンジン３２０に、ソフトキーボード３０８の現在の入力環境に関する様々な情報を提供する。予測キーボードエンジン３２０は、次に、現在の入力環境に関するこの情報を使用してソフトキーボード３０８を変更し（たとえば、レイアウトまたは特定のキーに対応する文字もしくは記号）、また、ユーザー入力３１０を用いてユーザーが選択しようとしたソフトキーボード３０８の１つまたは複数のキーを決定する。
【００２７】
予測キーボードエンジン３２０は、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかに関する指示３４０を出力する。この指示３４０は、典型的には、ソフトキーボード３０８のユーザーインターフェイスを更新するために使用され、また、文字（複数可）入力に利用するために別のコンポーネント（図示せず）に提供することもできる。また、この指示３４０は、現在の入力環境の決定を支援するために、１つまたは複数のモジュール３２２〜３３２に返すこともできる。たとえば、より詳細には以下に記述するように、ユーザー固有の辞書モジュール３２６は、ユーザーによって入力される単語を監視することができる。
【００２８】
さらに、１つまたは複数の実施形態では、予測キーボードエンジン３４０は、ユーザーが入力している特定の単語または句のエンジン３４０による予測である予測入力文字列３６０も出力する。この予測の出力により、予測された単語または句が入力されるため、ユーザーは単語または句の文字をそれ以上入力する必要がなくなる「オートコンプリート」オプションを選択できるようになる。予測入力文字列３６０は、予測された単語または句をユーザーに表示できるように、ソフトキーボード制御モジュール３０２、または、その代わりとしてシステムの別のコンポーネント（図示せず）に提供される。ユーザーは、ソフトキーボード３０８を介して、たとえば、「Ｅｎｔｅｒ」キーを選択したり、「オートコンプリート」キーを選択したり、予測された単語または句の特定の文字を選択したりするなど、様々な方法で、表示されたこの予測された単語または句を選択することができる。また、ユーザーは、オプションで、予測された単語または句の一部だけを選択できることにも注意されたい。
【００２９】
動作モード検出モジュール３２２は、ソフトキーボード３０８が表示されているデバイスの動作モードを検出する。動作モードは、たとえば、デバイスの物理的状況および／または地理的位置を含むことができる。物理的状況は、デバイスがどのように使用されているかの物理的概要を示している。この物理的概要は、たとえば、デバイスは静止しているか移動しているか、デバイスは特定方向を向いているかなどを含むことができる。物理的状況は、デバイスのユーザーが指定したり、デバイスのモーションセンサーを使用したり、デバイスが結合されている周辺機器または他のコンポーネントに基づいて、無線基地局またはアクセスポイントとの通信に基づいてなど、様々な方法で決定することができる。
【００３０】
地理的位置は、デバイスが位置している地理的概要を示している。地理的位置は、デバイスのユーザーが指定したり、デバイスの全地球測位システム（ＧＰＳ）を使用したり、デバイスに割り当てられているアドレス（たとえば、インターネットプロトコル（ＩＰ）アドレス）に基づいてなど、様々な方法で決定することができる。
【００３１】
動作モード検出モジュール３２２からのデバイスの動作モードを表す情報は、様々な異なる方法で、予測キーボードエンジン３２０によって使用することができる。たとえば、予測キーボードエンジン３２０は、デバイスが静止しているときより、移動しているときのほうが特定のキーを正確に識別するのが難しいと想定できるため、デバイスが静止しているときより、デバイスが移動しているときに、エンジン３２０は、ソフトキーボード３０８のより大きな領域を特定のキーに割り当ててもよい。より詳細には以下に記述するように、これらの大きな領域は、ソフトキーボード３０８に表示されるより大きなキーに対応することも、または特定のキーのより大きな衝突目標に対応することもできる。
【００３２】
言語辞書モジュール３２４は、１つまたは複数の言語固有の辞書を予測キーボードエンジン３２０で利用できるようにする。予測キーボードエンジン３２０は、ユーザーによって入力されている特定の単語または句を識別することを自動的に試みることができるため、ユーザーによって入力される可能性がある次の文字（または他の記号）を決定することができる。たとえば、ユーザーが「ｕｎｉ」と入力すると、予測キーボードエンジン３２０は、ユーザーが「ｕｎｉｔｅｄ」という単語を入力することを試みているため、ユーザーが入力する次の文字は文字「ｔ」の可能性があると自動的に識別できる。予測キーボードエンジン３２０は、様々なモジュール３２２〜３３２からの様々な情報を使用して、ユーザーによって入力されている特定の単語または句を識別することを試みることができる。その１つは、ユーザーによって典型的に使用されている特定の言語である。この決定を支援するために言語辞書モジュール３２４によって予測キーボードエンジン３２０に提供される情報の１つは、ユーザーによって典型的に使用されている言語（複数可）の単語および／または句の辞書である。
【００３３】
ユーザーによって典型的に使用されている言語（複数可）は、様々な方法で識別することができる。たとえば、言語は、ユーザーが指定することができ、システム３００が販売される場所に基づいた既定の言語でもよく（たとえば、システム３００がフランスで販売された場合、既定の言語はフランス）、ユーザーによる以前の入力に基づかせることができ（たとえば、以前の入力の大部分が英語であれば、言語は英語）、別のモジュールから取得することができる（より詳細には以下に記述する言語検出モジュール３３０など）、などである。
【００３４】
ユーザー固有の辞書モジュール３２６は、ユーザーによって一般的に入力される単語（または数値、記号などの他のデータ）に関する情報を収集して維持する。この情報は、様々な異なる方法で収集して維持することができる。１つまたは複数の実施形態では、ユーザーによって入力された単語、およびそれらの単語がどれくらい頻繁に入力されるかを示す対応頻度が維持される。この頻度は、たとえば、単語が入力されるたびに増分される単語カウント、モジュール３２６によって維持されている他の単語に比べて、その単語がどれくらい頻繁に出現するかを示す割合などでもよい。さらに、ユーザーまたは（たとえば、ユーザーが働く企業の）管理者は、オプションで、ユーザーが入力したときに単語を追加する（かつ／またはオプションで、既定の単語およびユーザーの頻度を含む）新しいカスタム辞書をインストールすることができる。
【００３５】
さらに、モジュール３２６によって追跡または維持される単語は、時間の経過にあわせて老化させて、同じ頻度で使われていても、より古い時期に使われた単語は、より最近に入力された単語より、ユーザーによる使用頻度が低いと識別されるようにすることができる。この老化は、たとえば、特定の単語がどの位前に使用されたかのレコードを維持することによって（たとえば、分、時間、日など）、少なくともしきい値の時間だけ使用されていない単語に対応する頻度を変更（たとえば減少）するなどによって、異なる方法で実行することができる。
【００３６】
上記のように、予測キーボードエンジン３２０は、ユーザーによって入力されている特定の単語または句の識別を自動的に試みることができる。ユーザー固有の辞書モジュール３２６によって予測キーボードエンジン３２０に提供される情報との１つは、ユーザーによって一般的に入力される単語（または他のデータ）に関する情報である。
【００３７】
コンテキストマッピングモジュール３２８は、ユーザーがデータを入力する特定のフィールドと、各特定のフィールドに対して有効なデータの種類とのマッピングを維持する。たとえば、フィールドが郵便番号フィールドである場合、有効なデータは文字ではなく数値の可能性がある。別の例を挙げると、フィールドが電子メールアドレスフィールドである場合、有効なデータは、文字、数値、およびいくつかの記号（「＠」など）などであり、他の記号（「！」または「＃」など）ではない可能性がある。
【００３８】
コンテキストマッピングモジュール３２８は、任意の様々な異なる方法で、ソフトキーボード３０８と共にユーザーに表示されている特定のフィールドを識別することができる。たとえば、画面に表示されているデータを分析し、特定のフィールドを識別することができる（たとえば、「郵便（ｚｉｐ）」または「郵便番号（ｚｉｐ  ｃｏｄｅ）」のラベルを有するフィールド、「電子メール」または「電子メールアドレス」のラベルを有するフィールドなど）。別の例を挙げると、ソフトキーボード３０８と共に表示されているデータに様々なタグまたは識別子を含ませることができる。これらのタグまたは識別子は、表示されている特定のフィールドをコンテキストマッピングモジュール３２８に示すものである。別の例を挙げると、入力フィールドは、システム３００のオペレーティングシステムのアプリケーション・プログラミング・インターフェイス（ＡＰＩ）経由で、それらの存在および「種類」または法的な入力制限を明示的に宣言することができる。
【００３９】
特定のフィールドに対して有効なデータの種類は、異なる方法で識別することができる。１つまたは複数の実施形態では、特定のフィールドに対して有効なデータの種類は、あらかじめプログラムされているか、または、そうでない場合は、コンテキストマッピングモジュールに対して識別される。たとえば、ソフトキーボードと共に表示されるデータに対応する様々なタグ、識別子、または他のメタデータは、特定のフィールドに対して有効なデータの種類を識別することができる。または他のリモートデバイスにアクセスして、特定のフィールドに対して有効なデータの種類を取得することができる。別の例を挙げると、特定のフィールドに対する有効なデータの種類を取得するために、システム３００のオペレーティングシステムのＡＰＩを呼び出すことができる。他の実施形態では、特定のフィールドに対する１つまたは複数の有効なデータの種類は、コンテキストマッピングモジュール３２８によって自動的に識別することができる。たとえば、ユーザーがある種類のデータの入力を試みて、入力を処理するプログラムまたは他のコンポーネントによってユーザーにエラーが返された場合、コンテキストマッピングモジュール３２８は、特定のデータの種類は特定のフィールドに対して有効ではないことを学習することができる。
【００４０】
コンテキストマッピングモジュール３２８からのコンテキストマッピング情報は、任意の様々な異なる方法で、予測キーボードエンジン３２０によって使用することができる。１つまたは複数の実施形態では、予測キーボードエンジン３２０は、特定のフィールドに対して有効でない特定の種類のデータは、ユーザー入力３１０によって選択される意図がないと決定する。たとえば、特定のフィールドが数値だけを受け入れる場合、予測キーボードエンジン３０２は、ユーザーが選択しようとしたキーは、ユーザー入力３１０に最も近いソフトキーボード３０８上の番号キーであろうと決定することができる。別の例を挙げると、特定のフィールドが数値だけを受け入れる場合、予測キーボードエンジン３２０は、ソフトキーボード３０８に数値だけを含めて文字は含めないことを、ソフトキーボード制御モジュール３０２に示すことができる。
【００４１】
あるいは、予測キーボードエンジン３２０は、有効な特定の種類のデータが、他の種類のデータよりユーザーにとって選択するのが簡単になるように決定することができる。たとえば、記号「＠」が特定のフィールドに対して有効なシンボルであるが、記号「！」および「＃」は、そのフィールドに対して有効なシンボルではない場合、予測キーボードエンジン３２０によって実装された衝突目標ロジックは、「＠」記号が選択される可能性を増加させることができる。この可能性は、「＠」記号の衝突目標を「！」および「＃」の記号より大きくするなどによって、異なる方法で増加することができる。特定のキーに対するソフトキーボード３０８の衝突目標は、その特定のキーに対応するソフトキーボード３０８の位置を示している。「！」および「＃」の記号は、多くのキーボードにおいて「＠」記号の左右いずれかにあるため、衝突目標サイズを変更することで、ソフトキーボード３０８で「＠」記号またはその近くに接触することによって、ユーザーは「＠」記号を選択しやすくなる。予測キーボードエンジン３２０によって実装される衝突目標と衝突目標ロジックの使用については、より詳細には以下に記述する。
【００４２】
言語検出モジュール３３０は、システム３００のユーザーによって使用されている言語を識別する。言語は、たとえば、ユーザーが言語を指定する、またはモジュール３３０が自動的に言語を識別するなど、異なる方法で識別することができる。モジュール３３０は、たとえば、（たとえば、オペレーティングシステムによって記録されている）システム３００の既定の言語にアクセスしたり、コンテキストマッピングモジュール３２８にアクセスしたりして、データの種類およびそれらの対応する言語を識別する（たとえば、漢字記号が有効なデータの種類である場合、その言語は日本語であると自動的に識別することができる）などによって、言語を自動的に識別することができる。
【００４３】
言語検出モジュール３３０によって識別される言語は、システム３００のユーザーによって典型的に使用される言語でもよく、または、その代わりに、ユーザーによって行われている特定の入力に対して、システム３００のユーザーによって使用される言語でもよい。たとえば、ユーザーが部分的な単語（たとえば「ｕｎｉ」）を入力した場合、言語検出モジュール３３０は、ユーザーによって入力されている言語を自動的に検出することができる。これは、スタンドアロンの検出（たとえば、部分的な単語のみに基づく）でもよく、あるいは、他の情報（たとえば、システム３００のユーザーによって典型的に使用される言語（複数可））と併せてもよい。
【００４４】
単語および句のｎグラム統計モジュール３３２は、部分的な入力に基づいて、他の単語または句より可能性の高い単語または句を識別する。これは、たとえば、部分的な単語の入力に基づいた単語の識別、および１つ（または複数の）単語の入力に基づいた句の識別を含めることができる。１つまたは複数の実施形態では、この識別は、（たとえば、言語辞書モジュール３２４によって提供された辞書の）実際の単語に基づく。たとえば、「ｕｎｉｔｅｄ」という単語が入力された場合、モジュール３３２は、「ｓｔａｔｅｓ」という単語のほうが、「ｒｕｎ」という単語より可能性が高いと示すことができる。
【００４５】
他の実施形態では、モジュール３３２によるこの識別は、文法ルールまたは他のルールに基づく。たとえば、典型的には２つの動詞が隣接することはないため、動詞が最初の単語として入力された場合、モジュール３３２は、句内の次の単語が動詞ではない可能性が高いと示すことができる。別の例を挙げると、モジュール３３２は、「Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ  ｏｆ  Ａｍｅｒｉｃａ」という句が、システム３００のユーザーによってしばしば入力されると決定できるため、モジュール３３２は「Ｕｎｉｔｅｄ  Ｓｔａｔｅｓ」とユーザーによって入力された場合、他の言葉の組み合わせより「ｏｆ  Ａｍｅｒｉｃａ」が次に句に含まれる可能性が高いと決定することができる。
【００４６】
単語および句のｎグラム統計モジュール３３２からの可能性のある単語または句を識別する情報は、任意の様々な異なる方法で、予測キーボードエンジン３２０によって使用することができる。コンテキストマッピングモジュール３２８に関する記述に類似しているが、可能性のある単語または句を識別する情報は、特定の単語、文字、または他の記号が、ユーザー入力３１０によって選択される意図がないことを決定するために使用できるため、そのような単語、文字、または他の記号の入力を却下したり、あるいは、衝突目標を変更して、ユーザーが特定の単語、文字、または他の記号を選択しやすくしたりすることができる。
【００４７】
上記のように、予測キーボードエンジン３２０は、様々なモジュール３２２〜３３２から現在の入力環境を表す情報を受信する。予測キーボードエンジン３２０は、現在の入力環境を表すこの情報を使用して、レイアウトおよび／もしくはソフトキーボード３０８のキーに対応する英数字または記号を変更し、かつ／または特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを決定する。キー（複数可）の選択がユーザーによって行われた後に、毎回、予測キーボードエンジン３２０は、この変更および／または決定を繰り返す。現在の入力環境は、ユーザーによってキー（複数可）が選択されるたびに変更することが可能で、新しい現在の入力環境は、ユーザーによってキー（複数可）が選択されるたびに予測キーボードエンジン３２０によって考慮することができる。
【００４８】
上記のように、現在の入力環境を表す情報は、特定の入力は他の入力より可能性が高いことを示すことができる。１つまたは複数の実施形態では、この情報はソフトキーボード３０８のレイアウトを変更するために使用される。たとえば、情報を使用して、ソフトキーボード３０８のレイアウトをＱＷＥＲＴＹレイアウトから数字パッドレイアウトに変更し、ＱＷＥＲＴＹレイアウトの特定のキーだけを含ませるなどが可能である。
【００４９】
他の実施形態では、現在の入力環境を表す情報は、どの英数字または他の記号がソフトキーボード３０８のキーに対応するかを変更するために使用する。そのような変更に応じて、ソフトキーボード３０８は、以前に表示されていた文字または記号ではなく、それらのキーに対して新しい対応する文字または記号を表示して、それらのキーの１つを選択すると、表示されている対応する文字または記号がユーザー入力されることになる。たとえば、ソフトキーボード３０８のキーの列は、数値への対応から記号への対応に変更することができる。別の例を挙げると、特定のキーは、特定の言語に固有の文字および／または記号に対応するように変更することができる。
【００５０】
他の実施形態では、現在の入力環境を表す情報は、ソフトキーボード３０８のキーの表面を変更するために使用される。そのような変更に応じて、ソフトキーボード３０８は、キーに対して異なる表面を表示する。たとえば、入力されている単語の後に入力される可能性が高いかつ／または可能性がある文字のキーを強調表示することができる。別の例を挙げると、（既に入力された文字に基づいて）入力しても単語にならない文字のキーを暗く表示して、視覚的に目標を定めるのを援助し、かつユーザーの負担を軽減することができる。
【００５１】
他の実施形態では、現在の入力環境を表す情報は、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを決定するために使用される。衝突目標ロジックを含む予測キーボードエンジン３２０は、現在の入力環境およびユーザー入力３１０を使用して、ユーザーが選択しようとしたソフトキーボード３０８上の特定のキーを識別する。
【００５２】
予測キーボードエンジンが、現在の入力環境およびユーザー入力３１０を使用できる方法の１つは、特定のキーの衝突目標のサイズを変更することである。上記のように、ソフトキーボード３０８上の各キーは、対応する衝突目標を有することができ、予測キーボードエンジン３２０は、衝突目標を各キーに割り当てることができる。特定のキーのこの衝突目標は、その特定のキーに対応するソフトキーボード３０８上の位置を示している。特定のキーの衝突目標は変更することができる。つまり、衝突目標は、予測キーボードエンジン３２０によってサイズを大きくして、ソフトキーボード３０８上のより多くの位置がその特定のキーに対応するようにすることも、または予測キーボードエンジン３２０によってサイズを小さくして、ソフトキーボード３０８上のより少ない位置がその特定のキーに対応するようにすることもできる。したがって、典型的には、キーの衝突目標を大きくすると、ユーザーがそのキーを選択しやすくなるのに対して、典型的には、キーの衝突目標を小さくすると、ユーザーがそのキーを選択しにくくなる。
【００５３】
この結果として、あるキーの衝突目標が隣接するキーより大きくなる可能性があり、実際に、隣接するキーの表示の一部を覆うように延在することに注意されたい。たとえば、予測キーボードエンジン３２０が、文字「ｄ」がユーザーによって入力される次の文字の可能性があると決定したと仮定する。文字「ｄ」の衝突目標を大きくするのに対して、隣接する文字「ｆ」の衝突目標を小さくすることができる。文字「ｄ」の衝突目標は、実際には文字「ｆ」のキーがソフトキーボード３０８に表示されている位置を含むことができる。このため、この例では、ユーザーが文字「ｆ」のキーの端部の位置を押した場合、予測キーボードエンジン３２０は、文字「ｄ」がユーザーが選択しようとしたキーであると決定する。そのような状況は、様々な異なる理由から生じる可能性がある。たとえば、ユーザーが歩きながら入力している場合などである（その場合には、希望するキーを正確に打つのはユーザーにとってより困難である）。
【００５４】
さらに、予測キーボードエンジン３２０は、ソフトキーボード３０８上の特定のキーを無効化することができる。このため、予測キーボードエンジン３２０は、特定のユーザー入力が何であるかに関係なく、特定のユーザー入力を用いて無効なキーを選択しようとしたとは示さない。たとえば、「！」記号が無効であると決定された場合、予測キーボードエンジン３２０は、その特定のユーザー入力が何であるかに関係なく、特定のユーザー入力を用いて「！」記号を選択しようとしたとは示さない。
【００５５】
予測キーボードエンジン３２０は、レイアウトおよび／またはソフトキーボード３０８のキーに対応する英数字もしくは記号を変更する方法を決定することができ、かつ／または、様々な異なる方法において、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしかたを決定することができる。１つまたは複数の実施形態では、予測キーボードエンジン３２０は、様々な入力（ユーザー入力３１０と現在の入力環境を表す様々な異なる情報の組み合わせ）を用いてトレーニングされる学習システムである。このトレーニングには、エンジン３２０に様々な入力および正解を提供することが含まれるため、エンジン３２０は、様々な入力に応じて、どのような応答を与えるかを学習することができる。最初のトレーニングは、典型的には、予測キーボードエンジン３２０の設計者によって実行され、補足的なトレーニングは、システム３００の操作中に実行することができる。この補足的なトレーニングは、たとえば、エンジン３２０に与えられる、特定の出力３４０が正しい出力だったかどうか示すフィードバックに基づいて行うことができる。人工知能システムおよび他の統計に基づくシステムを含む、様々な異なる学習システムのいずれかを使用することができる。たとえば、そのような学習システムは、人工ニューラルネットワーク、ベイズの推論によるシステム、ｋ近傍法アルゴリズムなどを含むことができる。
【００５６】
あるいは、予測キーボードエンジン３２０は他のシステムとして実装することができる。たとえば、エンジン３２０は、ユーザー入力３１０および現在の入力環境を表す様々な異なる情報を評価するために、様々な統計解析システムのいずれかを使用して実装することができる。別の例を挙げると、エンジン３２０は、ユーザー入力３１０に適用される様々な他のルール、基準、または重み付け、および現在の入力環境を表す様々な異なる情報を使用して実装することができる。
【００５７】
このように、ソフトキーボード３０８はダイナミックであると認めることができる。１つまたは複数の実施形態では、ソフトキーボード３０８は、レイアウトおよび／またはキーに対応する英数字もしくは記号を変更して、ダイナミックソフトキーボードを構成することができる。さらに、１つまたは複数の実施形態では、特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかを変更して、ダイナミックソフトキーボードを構成することができる。特定のユーザー入力を用いてユーザーがどのキーを選択しようとしたかに関するこのような変更は、そのような変更の指示をユーザーに表示して、または表示しないで行うことができる。
【００５８】
図４は、１つまたは複数の実施形態に従ったダイナミックソフトキーボードの例示的なプロセス４００を示すフローチャートである。プロセス４００は、図３のシステム３００などのシステムで実行することができ、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせに実装することができる。プロセス４００は、１つまたは複数のデバイスによって実行される操作を指定する１組の処理として示されていて、それぞれの処理による操作を実行するために示された順序に制限されるものではない。プロセス４００は、ダイナミックソフトキーボードの例示的なプロセスである。ダイナミックソフトキーボードに関する追加的な記述は、本明細書において他の図に関連して記述されている。
【００５９】
最初に、ユーザー入力がソフトキーボードを介して受信される（処理４０２）。このユーザー入力は、上記のように、ソフトキーボードの特定の１つまたは複数の位置である。さらに、現在の入力環境を表す情報が取得される（処理４０４）。この情報は、図３のモジュール３２２〜３３２に関して上記の情報など、任意の様々な異なる種類の情報でもよい。
【００６０】
少なくとも部分的に処理４０４で得られた情報に基づいて、ユーザー入力によって選択する意図であった特定の１つまたは複数のキーが決定される（処理４０６）。ユーザーによって選択されたと決定された１つまたは複数のキーの指示が出力される（処理４０８）。オプションで、予測入力文字列の指示も出力される（処理４１０）。さらに、１つまたは複数の実施形態では、少なくとも部分的に処理４０４で取得された情報に基づいて、ソフトキーボードは変更される（処理４１２）。上記のように、この変更は、たとえば、レイアウトの変更および／またはソフトキーボードのキーに対応する英数字もしくは記号の変更でもよい。
【００６１】
図５は、１つまたは複数の実施形態に従ってダイナミックソフトキーボードを実装するように構成できる例示的なコンピューティングデバイス５００を示している。コンピューティングデバイス５００は、たとえば、図１のコンピューティングデバイス１００でもよい。
【００６２】
コンピューティングデバイス５００は、１つまたは複数のプロセッサーまたは処理装置５０２、１つまたは複数のメモリーおよび／または記憶域コンポーネント５０６を含むことができる１つまたは複数のコンピューターで読み取り可能なメディア５０４、図１のユーザー入力１１０（または図３のユーザー入力３１０）を介して受信される１つまたは複数の入出力（Ｉ／Ｏ）デバイス５０８、および様々なコンポーネントおよびデバイスが相互に通信することを可能にするバス５１０を含む。コンピューターで読み取り可能なメディア５０４および／またはＩ／Ｏデバイス（複数可）５０８は、コンピューティングデバイス５００の一部として含むことも、または結合することもできる。バス５１０は、１つまたは複数の任意の複数の種類のバス構造を示しており、メモリーバスまたはメモリーコントローラー、周辺バス、アクセラレーテッド・グラフィックス・ポート、および任意の様々なバス構造を使用するプロセッサーまたはローカルバスを含む。バス５１０は、有線および／または無線のバスを含むことができる。
【００６３】
メモリー／記憶域コンポーネント５０６は１つまたは複数のコンピューター記憶域メディアを示している。コンポーネント５０６は、揮発性のメディア（ランダムアクセスメモリー（ＲＡＭ）など）および／または不揮発性のメディア（読み取り専用メモリー（ＲＯＭ）、フラッシュメモリー、光ディスク、磁気ディスクなど）を含むことができる。コンポーネント５０６は、固定メディア（たとえば、ＲＡＭ、ＲＯＭ、固定ハードドライブなど）およびリムーバブルメディア（たとえば、フラッシュメモリードライブ、リムーバブルハードディスク、光ディスクなど）を含むことができる。
【００６４】
本明細書に記述した技術はソフトウェアに実装して、処理装置（複数可）５０２によって命令を実行することができる。異なる命令を、処理装置５０２、処理装置５０２の様々なキャッシュメモリー、デバイス５００の他のキャッシュメモリー（図示せず）、他のコンピューターで読み取り可能なメディアなど、コンピューティングデバイス５００の異なるコンポーネントに格納できることを理解されたい。さらに、コンピューティングデバイス５００において命令が格納される場所は、時間とともに変更できることを理解されたい。
【００６５】
１つまたは複数の入出力デバイス５０８は、ユーザーがコマンドおよび情報をコンピューティングデバイス５００に入力することを可能にし、また、情報がユーザーおよび／または他のコンポーネントもしくはデバイスに提示されることを可能にする。ユーザーに提示されるこの情報は、図１のソフトキーボード１０８または図３のソフトキーボード３０８を含むことができる。入力デバイスの例としては、キーボード、カーソル、またはポインター制御デバイス（たとえば、マウス、トラックパッド、サムスティック、ペンタブレットなど）、マイク、スキャナー、タッチスクリーン、タッチパッドなどが挙げられる。出力デバイスの例としては、ディスプレイデバイス（たとえば、モニターまたはプロジェクター）、スピーカー、プリンター、ネットワークカードなどが挙げられる。
【００６６】
本明細書では、ソフトウェアまたはプログラムモジュールの一般的な内容に関して様々な技術について記述する。一般的に、ソフトウェアは、特定のタスクを実行したり、または特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。これらのモジュールと技術の実装は、何らかの形式のコンピューターで読み取り可能なメディアに格納されるか、またはそれらの両端間で送信することができる。コンピューターで読み取り可能なメディアは、コンピューティングデバイスによってアクセスできる任意の利用可能なメディア（複数可）でよい。限定ではなく例として、コンピューターで読み取り可能なメディアは、「コンピューター記憶域メディア」および「通信メディア」を含むことができる。
【００６７】
「コンピューター記憶域メディア」は、コンピューターで読み取り可能な命令、データ構造、プログラムモジュール、他のデータなどの情報を格納するための任意の方法またはテクノロジーを使って実装された揮発性および不揮発性、リムーバブルメディアおよびリムーバブルでないメディアを含む。コンピューター記憶域メディアは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリーもしくは他のメモリーテクノロジー、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または希望する情報を格納するために使用可能で、かつコンピューターによってアクセス可能な任意の他のメディアを含むが、これらに制限するものではない。
【００６８】
「通信メディア」は、典型的にはコンピューターで読み取り可能な命令、データ構造、プログラムモジュール、または、搬送波もしくは他の搬送メカニズムなど変調データ信号内の他のデータとして実施するものである。また、通信メディアは任意の情報送達メディアも含む。「変調データ信号」という用語は、信号内に情報が符号化されるように、その１つまたは複数の特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接線接続のような有線メディア、ならびに音響、ＲＦ、赤外線、および他の無線メディアなどの無線メディアを含む。上記の任意の組み合わせも、コンピューターで読み取り可能なメディアの範囲に含まれる。
【００６９】
一般的に、本明細書に記述した任意の機能または技術は、ソフトウェア、ファームウェア、ハードウェア（たとえば固定論理回路）、手動処理、またはこれらの実装の組み合わせを使用して実装することができる。本明細書で使用する「モジュール」、「機能」、および「ロジック」という用語は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせを一般的に示している。ソフトウェア実装の場合には、モジュール、機能、またはロジックは、プロセッサー（たとえばＣＰＵ（複数可））で実行されるときに指定されたタスクを実行するプログラムコードを示している。プログラムコードは、１つまたは複数のコンピューターで読み取り可能なメモリーに格納することができる。この詳細については、図５を参照して確認することができる。本明細書に記述したダイナミックソフトキーボード技術の特徴は、プラットフォームに依存していない。これが意味するには、この技術は、様々なプロセッサーを有する様々な商用のコンピューティングプラットフォームに実装できるということである。
【００７０】
主題について、構造上の特徴および／または方法論的な処理に特有の言葉で記述してきたが、添付の特許請求の範囲に定義した主題は、上記の具体的な特徴または処理に制限されるものではないことを理解されたい。むしろ、上記の具体的な特徴および処理は、特許請求の範囲を実装するための例として示すものである。
【図１】
0005611838.tif 000002
【図２】
0005611838.tif 000003
【図３】
0005611838.tif 000004
【図４】
0005611838.tif 000005
【図５】
0005611838.tif 000006