(57)【特許請求の範囲】
【請求項１】
タッチセンシティブ表面上でキーパッドを規定するための方法であって、
ａ）前記タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るステップと、
ｂ）複数のキーを前記受け取られた一連の座標と互いに関係付けるステップと、
ｃ）前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するステップであって、前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の前記平均を算出するステップが、前記複数のキーのそれぞれに関するキー打ち位置のばらつきを計算するステップと、前記計算された前記複数のキーのそれぞれに関するキー打ち位置のばらつきが安定状態に達したときを判定するステップと、前記複数のキーのそれぞれに関するキー打ち位置の平均座標を計算するステップとを含むステップと、
ｄ）前記複数のキーのそれぞれに関する前記計算された平均座標をキーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップと、
ｅ）前記キー打ち位置のばらつきが安定状態に達していない場合は、前記ａ）からｄ）のステップを繰り返し、前記キー打ち位置のばらつきが安定状態に達したならば、更新された前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップとを備える方法。
【請求項２】
一連のキーストロークを入力するように前記ユーザを促すステップをさらに備える方法であって、
複数のキーを前記受け取られた一連の座標と互いに関係付けるステップは、前記促された一連のキーストロークを前記受け取られた座標と互いに関係付けるステップを備える請求項1に記載の方法。
【請求項３】
前記複数のキーのそれぞれに関する前記算出された平均座標に関して標準偏差を計算することによって、前記複数のキーのそれぞれに関する受け取られた座標に基づいて統計エンベロープを特定するステップと、
前記複数のキーのそれぞれに関する前記統計エンベロープを前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとをさらに備える請求項1に記載の方法。
【請求項４】
前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成するステップは、各キー画像のサイズが前記キーパッドレイアウトデータの中の前記複数のキーのそれぞれに関する前記統計エンベロープに基づく、前記仮想キーパッドにおける前記複数のキーの画像を生成するステップをさらに備える請求項3に記載の方法。
【請求項５】
前記複数のキーのそれぞれに関する前記算出された平均座標に関してキー打ち位置の第1の標準偏差エンベロープを算出するステップと、
選択されたキーに関して第1の標準偏差エンベロープの中で発生するキー打ちに応答して、前記キー打ちを前記選択されたキーを対象としていると解釈するステップとをさらに備える請求項3に記載の方法。
【請求項６】
前記複数のキーのそれぞれに関する前記算出された平均座標に関してキー打ち位置の第2の標準偏差エンベロープを算出するステップと、
第1のキー及び第2のキーに関して、キー打ち位置が、それぞれの第1の標準偏差エンベロープの間に存在すると共に、それぞれの第1の標準偏差エンベロープの外側に存在するときを判定するステップと、
前記第1のキーの第2の標準偏差エンベロープの中に存在すると共に、前記第２のキーの第2の標準偏差エンベロープの外側に存在するキー打ち位置に応答して、前記キー打ちを前記第1のキーを対象としていると解釈するステップとをさらに備える請求項5に記載の方法。
【請求項７】
前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成するステップは、前記キーパッドレイアウトデータの中に格納された前記複数のキーの各キーの前記平均座標に基づく位置に、前記仮想キーパッドにおけるキーの画像を生成するステップを備える請求項1に記載の方法。
【請求項８】
前記タッチセンシティブ表面上の前記仮想キーパッド上のタイピングを監視するステップと、
隣接キータイピング誤りを識別するステップと、
前記隣接キータイピング誤りに関連する正しいキーを特定するステップと、
前記タイプされたキーストロークに関する受け取られた座標に基づいて、前記正しいキーに関する平均座標を更新するステップと、
前記更新された平均座標を前記正しいキーと一緒に前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとをさらに備える請求項1に記載の方法。
【請求項９】
隣接キータイピング誤りを識別するステップは、
スペルの誤った語を認識するステップと、
前記スペルの誤りが、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとを備える請求項8に記載の方法。
【請求項１０】
隣接キータイピング誤りを識別するステップは、
キーに関連付けられた文字のユーザ訂正を認識するステップと、
前記ユーザ訂正が、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとを備える請求項8に記載の方法。
【請求項１１】
隣接キータイピング誤りを識別するステップは、
数サイクルにわたって指定された句をタイプするように前記ユーザを促すステップと、
前記指定された句に基づいて、間違ってタイプされた文字を認識するステップと、
前記間違ってタイプされた文字が、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとを備える請求項8に記載の方法。
【請求項１２】
前記キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存される方法であって、
前記ネットワークを介してコンピューティングデバイスに前記キーパッドレイアウトデータを伝送するステップをさらに備え、前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップは、前記コンピューティングデバイスに結合されたタッチセンシティブ表面上で前記仮想キーパッドの前記画像を生成するステップを備える請求項1に記載の方法。
【請求項１３】
前記コンピューティングデバイスに結合された前記タッチセンシティブ表面上でユーザタッチを受け取るステップと、
前記タッチセンシティブ表面上の前記受け取られたユーザタッチに基づいて、前記タッチセンシティブ表面上で前記仮想キーパッドの表示のための位置を決定するステップとをさらに備える方法であって、
前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップは、表示のために前記タッチセンシティブ表面上の前記決定された位置に前記画像を生成するステップを備える請求項12に記載の方法。
【請求項１４】
キーを選択し別のキーと比較して移動するために、ユーザ入力を受け取るステップと、
前記ユーザ入力に基づいて、前記生成された前記仮想キーパッドの画像のレイアウト寸法を調整すると共に、前記仮想キーパッドの別の画像を生成するステップとをさらに備える請求項1に記載の方法。
【請求項１５】
前記キーのそれぞれに関するキー打ち位置のばらつきを計算するステップが、
キー打ちの速度を判定するステップと、
キー打ちの誤り率を判定するステップとをさらに備える請求項1に記載の方法。
【請求項１６】
前記タッチセンシティブ表面上に手のひらを置くように前記ユーザを促すステップと、
キーストロークを、前記ユーザが前記タッチセンシティブ表面上に手のひらを置くことと区別するステップとをさらに備える請求項1に記載の方法。
【請求項１７】
プロセッサと、
前記プロセッサに結合されたメモリと、
前記プロセッサに結合されたタッチセンシティブ表面とを備えるコンピューティングデバイスであって、
前記プロセッサは、
ａ）前記タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るステップと、
ｂ）複数のキーを前記受け取られた一連の座標と互いに関係付けるステップと、
ｃ）前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するステップであって、前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の前記平均を算出するステップが、前記複数のキーのそれぞれに関するキー打ち位置のばらつきを計算するステップと、前記計算された前記複数のキーのそれぞれに関するキー打ち位置のばらつきが安定状態に達したときを判定するステップと、前記複数のキーのそれぞれに関するキー打ち位置の平均座標を計算するステップとを含むステップと、
ｄ）前記複数のキーのそれぞれに関する前記計算された平均座標をキーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップと、
ｅ）前記キー打ち位置のばらつきが安定状態に達していない場合は、前記ａ）からｄ）のステップを繰り返し、前記キー打ち位置のばらつきが安定状態に達したならば、更新された前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップとを備えるプロセスを実行するプロセッサ実行可能命令を有して構成されるコンピューティングデバイス。
【請求項１８】
前記プロセッサは、一連のキーストロークを入力するように前記ユーザを促すステップを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成されるコンピューティングデバイスであって、
複数のキーを前記受け取られた一連の座標と互いに関係付けるステップは、前記促された一連のキーストロークを前記受け取られた座標と互いに関係付けるステップを備える請求項17に記載のコンピューティングデバイス。
【請求項１９】
前記プロセッサは、前記複数のキーのそれぞれに関する前記算出された平均座標に関して標準偏差を計算することによって、前記複数のキーのそれぞれに関する受け取られた座標に基づいて統計エンベロープを算出するステップと、前記複数のキーのそれぞれに関する前記統計エンベロープを前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成される請求項17に記載のコンピューティングデバイス。
【請求項２０】
前記プロセッサは、前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップが、各キー画像のサイズが前記キーパッドレイアウトデータの中の前記複数のキーのそれぞれに関する前記統計エンベロープに基づく、前記仮想キーパッドにおける前記複数のキーの画像を生成するステップをさらに備えるように、プロセッサ実行可能命令を有して構成される請求項19に記載のコンピューティングデバイス。
【請求項２１】
前記プロセッサは、前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成するステップが、前記キーパッドレイアウトデータの中に格納された前記複数のキーの各キーの前記平均座標に基づく位置に、前記仮想キーパッドにおけるキーの画像を生成するステップを備えるように、プロセッサ実行可能命令を有して構成される請求項17に記載のコンピューティングデバイス。
【請求項２２】
前記プロセッサは、前記タッチセンシティブ表面上の仮想キーパッド上のタイピングを監視するステップと、隣接キータイピング誤りを識別するステップと、隣接キータイピング誤りに関連する正しいキーを特定するステップと、前記タイプされたキーストロークに関する受け取られた座標に基づいて、前記正しいキーに関する平均座標を更新するステップと、前記更新された平均座標を前記正しいキーと一緒に前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成される請求項17に記載のコンピューティングデバイス。
【請求項２３】
前記プロセッサは、隣接キータイピング誤りを識別するステップが、スペルの誤った語を認識するステップと、前記スペルの誤りが、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとを備えるように、プロセッサ実行可能命令を有して構成される請求項22に記載のコンピューティングデバイス。
【請求項２４】
前記プロセッサは、隣接キータイピング誤りを識別するステップが、キーに関連付けられた文字のユーザ訂正を認識するステップと、前記ユーザ訂正が、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとを備えるように、プロセッサ実行可能命令を有して構成される請求項22に記載のコンピューティングデバイス。
【請求項２５】
前記キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存され、前記プロセッサは、前記ネットワークを介して前記ネットワークアクセス可能なデータベースから前記キーパッドレイアウトデータを受信するステップを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成される請求項17に記載のコンピューティングデバイス。
【請求項２６】
前記プロセッサは、前記コンピューティングデバイスに結合された前記タッチセンシティブ表面上でユーザタッチを受け取るステップと、前記タッチセンシティブ表面上の前記受け取られたユーザタッチに基づいて、前記タッチセンシティブ表面上で前記仮想キーパッドの表示のための位置を決定するステップと、表示のために前記タッチセンシティブ表面上の前記決定された位置に、前記キーパッドレイアウトデータを使用して前記仮想キーパッドの前記画像を生成するステップとを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成される請求項25に記載のコンピューティングデバイス。
【請求項２７】
前記プロセッサは、キーを選択し別のキーと比較して移動するために、ユーザ入力を受け取るステップと、前記ユーザ入力に基づいて、前記生成された前記仮想キーパッドの画像のレイアウト寸法を調整すると共に、前記仮想キーパッドの別の画像を生成するステップとを備えるさらなるプロセスを実行するプロセッサ実行可能命令を有して構成される請求項17に記載のコンピューティングデバイス。
【請求項２８】
タッチセンシティブ表面に結合されたコンピューティングデバイスであって、
ａ）前記タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るための手段と、
ｂ）複数のキーを前記受け取られた一連の座標と互いに関係付けるための手段と、
ｃ）前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するための手段であって、前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の前記平均を算出するための手段が、前記複数のキーのそれぞれに関するキー打ち位置のばらつきを計算するための手段と、前記計算された前記複数のキーのそれぞれに関するキー打ち位置のばらつきが安定状態に達したときを判定するための手段と、前記複数のキーのそれぞれに関するキー打ち位置の平均座標を計算するための手段とを含む手段と、
ｄ）前記複数のキーのそれぞれに関する前記計算された平均座標をキーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するための手段と、
ｅ）前記キー打ち位置のばらつきが安定状態に達していない場合は、前記ａ）からｄ）の手段の動作を繰り返し、前記キー打ち位置のばらつきが安定状態に達したならば、更新された前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段とを備えるコンピューティングデバイス。
【請求項２９】
一連のキーストロークを入力するように前記ユーザを促すための手段をさらに備えるコンピューティングデバイスであって、
複数のキーを前記受け取られた一連の座標と互いに関係付けるための手段は、前記促された一連のキーストロークを前記受け取られた座標と互いに関係付けるための手段を備える請求項28に記載のコンピューティングデバイス。
【請求項３０】
前記複数のキーのそれぞれに関する前記算出された平均座標に関して標準偏差を計算することによって、前記複数のキーのそれぞれに関する受け取られた座標に基づいて統計エンベロープを算出するための手段と、
前記複数のキーのそれぞれに関する前記統計エンベロープを前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するための手段とをさらに備える請求項28に記載のコンピューティングデバイス。
【請求項３１】
前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成するための手段は、各キー画像のサイズが前記キーパッドレイアウトデータの中の前記複数のキーのそれぞれに関する前記統計エンベロープに基づく、前記仮想キーパッドにおける前記複数のキーの画像を生成するための手段をさらに備える請求項30に記載のコンピューティングデバイス。
【請求項３２】
前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成するための手段は、前記キーパッドレイアウトデータの中に格納された前記複数のキーの各キーの前記平均座標に基づく位置に、前記仮想キーパッドにおけるキーの画像を生成するための手段を備える請求項28に記載のコンピューティングデバイス。
【請求項３３】
前記タッチセンシティブ表面上の前記仮想キーパッド上のタイピングを監視するための手段と、
隣接キータイピング誤りを識別するための手段と、
前記隣接キータイピング誤りに関連する正しいキーを特定するための手段と、
前記タイプされたキーストロークに関する受け取られた座標に基づいて、前記正しいキーに関する平均座標を更新するための手段と、
前記更新された平均座標を前記正しいキーと一緒に前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するための手段とをさらに備える請求項28に記載のコンピューティングデバイス。
【請求項３４】
隣接キータイピング誤りを識別するための手段は、
スペルの誤った語を認識するための手段と、
前記スペルの誤りが、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための手段とを備える請求項33に記載のコンピューティングデバイス。
【請求項３５】
隣接キータイピング誤りを識別するための手段は、
キーに関連付けられた文字のユーザ訂正を認識するための手段と、
前記ユーザ訂正が、前記仮想キーパッドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための手段とを備える請求項33に記載のコンピューティングデバイス。
【請求項３６】
前記キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存されるコンピューティングデバイスであって、
前記ネットワークを介してコンピューティングデバイスに前記キーパッドレイアウトデータを伝送するための手段をさらに備え、前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、前記コンピューティングデバイスに結合されたタッチセンシティブ表面上で前記仮想キーパッドの前記画像を生成するための手段を備える請求項28に記載のコンピューティングデバイス。
【請求項３７】
前記コンピューティングデバイスに結合された前記タッチセンシティブ表面上でユーザタッチを受け取るための手段と、
前記タッチセンシティブ表面上の前記受け取られたユーザタッチに基づいて、前記タッチセンシティブ表面上で前記仮想キーパッドの表示のための位置を決定するための手段とをさらに備えるコンピューティングデバイスであって、
前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、表示のために前記タッチセンシティブ表面上の前記決定された位置に前記画像を生成するための手段を備える請求項36に記載のコンピューティングデバイス。
【請求項３８】
キーを選択し別のキーと比較して移動するために、ユーザ入力を受け取るための手段と、
前記ユーザ入力に基づいて、前記生成された前記仮想キーパッドの画像のレイアウト寸法を調整すると共に、前記仮想キーパッドの別の画像を生成するための手段とをさらに備える請求項28に記載のコンピューティングデバイス。
【請求項３９】
プロセッサに動作を実行させるように構成されたプロセッサ実行可能な命令をその上に保存して有する非一時的コンピュータ可読媒体であって、前記動作が、
ａ）タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るステップと、
ｂ）複数のキーを前記受け取られた一連の座標と互いに関係付けるステップと、
ｃ）前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するステップであって、前記複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の前記平均を算出するステップが、前記複数のキーのそれぞれに関するキー打ち位置のばらつきを計算するステップと、前記計算された前記複数のキーのそれぞれに関するキー打ち位置のばらつきが安定状態に達したときを判定するステップと、前記複数のキーのそれぞれに関するキー打ち位置の平均座標を計算するステップとを含むステップと、
ｄ）前記複数のキーのそれぞれに関する前記計算された平均座標をキーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップと、
ｅ）前記キー打ち位置のばらつきが安定状態に達していない場合は、前記ａ）からｄ）のステップを繰り返し、前記キー打ち位置のばらつきが安定状態に達したならば、更新された前記キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するステップとを備える非一時的コンピュータ可読媒体。
【請求項４０】
前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
一連のキーストロークを入力するようにユーザを促すステップと、
前記促された一連のキーストロークを前記受け取られた座標と互いに関係付けるステップとをさらに備える動作を実行させるように構成される請求項39に記載の非一時的コンピュータ可読媒体。
【請求項４１】
前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
前記複数のキーのそれぞれに関する前記算出された平均座標に関して標準偏差を計算することによって、前記複数のキーのそれぞれに関する受け取られた座標に基づいて統計エンベロープを特定するステップと、
前記複数のキーのそれぞれに関する前記統計エンベロープを前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとをさらに備える動作を実行させるように構成される請求項39に記載の非一時的コンピュータ可読媒体。
【請求項４２】
前記プロセッサに、前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成させるように構成された前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
各キー画像のサイズが前記キーパッドレイアウトデータの中の前記複数のキーのそれぞれに関する前記統計エンベロープに基づく、前記仮想キーパッドにおける前記複数のキーの画像を生成するステップをさらに備える動作を実行させる請求項41に記載の非一時的コンピュータ可読媒体。
【請求項４３】
前記プロセッサに、前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成させるように構成された前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
前記キーパッドレイアウトデータの中に格納された前記複数のキーの各キーの前記平均座標に基づく位置に、前記仮想キーパッドにおけるキーの画像を生成するステップをさらに備える動作を実行させる請求項39に記載の非一時的コンピュータ可読媒体。
【請求項４４】
前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
前記タッチセンシティブ表面上の前記仮想キーパッド上のタイピングを監視するステップと、
隣接キータイピング誤りを識別するステップと、
前記隣接キータイピング誤りに関連する正しいキーを特定するステップと、
前記タイプされたキーストロークに関する受け取られた座標に基づいて、前記正しいキーに関する平均座標を更新するステップと、
前記更新された平均座標を前記正しいキーと一緒に前記キーパッドレイアウトデータの中に保存することによって、前記キーパッドレイアウトデータを更新するステップとをさらに備える動作を実行させるように構成される請求項39に記載の非一時的コンピュータ可読媒体。
【請求項４５】
前記プロセッサに、隣接キータイピング誤りを識別させるように構成された前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
スペルの誤った語を認識するステップと、
前記スペルの誤りが、前記仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとをさらに備える動作を実行させる請求項44に記載の非一時的コンピュータ可読媒体。
【請求項４６】
前記プロセッサに、隣接キータイピング誤りを識別させるように構成された前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
キーに関連付けられた文字のユーザ訂正を認識するステップと、
前記ユーザ訂正が、前記仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するステップとをさらに備える動作を実行させる請求項44に記載の非一時的コンピュータ可読媒体。
【請求項４７】
前記キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存され、
さらに前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
前記ネットワークを介してコンピューティングデバイスに前記キーパッドレイアウトデータを伝送するステップと、
前記キーパッドレイアウトデータを使用して、前記コンピューティングデバイスに結合されたタッチセンシティブ表面上で前記仮想キーパッドの画像を生成するステップとをさらに備える動作を実行させる請求項39に記載の非一時的コンピュータ可読媒体。
【請求項４８】
前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
前記コンピューティングデバイスに結合された前記タッチセンシティブ表面上でユーザタッチを受け取るステップと、
前記タッチセンシティブ表面上の前記受け取られたユーザタッチに基づいて、前記タッチセンシティブ表面上で前記仮想キーパッドの表示のための位置を決定するステップとをさらに備える動作を実行させるように構成され、
前記プロセッサに、前記キーパッドレイアウトデータを使用して前記仮想キーパッドの画像を生成させるように構成された前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
表示のために前記タッチセンシティブ表面上の前記決定された位置に前記画像を生成する動作を実行させるように構成される請求項47に記載の非一時的コンピュータ可読媒体。
【請求項４９】
前記保存されたプロセッサ実行可能な命令が、前記プロセッサに、
キーを選択し別のキーと比較して移動するために、ユーザ入力を受け取るステップと、
前記ユーザ入力に基づいて、前記生成された前記仮想キーパッドの画像のレイアウト寸法を調整すると共に、前記仮想キーパッドの別の画像を生成するステップとをさらに備える動作を実行させるように構成される請求項39に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータユーザ入力デバイスに関し、より詳細には、学習データエントリデバイスに関する。
【背景技術】
【０００２】
高性能であるが、携帯可能であり、コンパクトであるが、十分な機能を備えたコンピューティングデバイスの需要がますます高まっている。この傾向は、現在では、電話機、ビデオ-オーディオキャプチャデバイス、ビデオ-オーディオプレーヤ、ウェブアクセス端末装置、およびコンピュータとして機能する、セルラ電話機などの移動電子デバイス(移動デバイス)の進化において特に明白である。
【０００３】
移動デバイスが高度化するにつれ、アプリケーションソフトウェアの多様性および高度化も進んでおり、それにより移動デバイスを多目的生産性ツールにしている。それでも、移動デバイス、および移動デバイスのアプリケーションの有用性は、ユーザインタフェースに利用可能である小さい面積によって限定される。例えば、従来のセルラ電話機は、固定された構成の単純なキーパッドを含む。最近は、小型のQWERTYキーボード、タッチセンシティブスクリーンインタフェース、および再構成可能なキーを備えた移動デバイスが発売されてきている。
【０００４】
従来、キーパッドは、キーの押下げを、移動デバイス、および移動デバイスのアプリケーションソフトウェアによって解釈され得る電気信号に変換することによって機能する。図1は、キー押下げイベントがアプリケーションソフトウェアに通信され得る1つの仕方を示す通常の移動デバイスのハードウェア/ソフトウェアアーキテクチャを示す。従来の固定型キーパッド5上でキーを押し下げることは、回路を閉じ、または静電容量もしくは抵抗を変化させて、このことが、ハードウェアドライバ4によって処理され得る電気信号をもたらす。ハードウェアドライバ4は、特定の移動デバイスに依存して、回路、ソフトウェア、またはハードウェアとソフトウェアの混合であることが可能である。ハードウェアドライバ4は、キーパッド5から受け取られた電気信号を、移動デバイス上で実行されるソフトウェアアプリケーションによって解釈され得るフォーマットに変換する。この信号は、割込み、あるいはアプリケーションソフトウェアによってアクセス可能であるメモリテーブルの中の格納された値の形態であることが可能である。そのような割込み、またはメモリの中のそのような格納された値が、ランタイム環境ソフトウェア層3によって受け取られることが可能である。ランタイム環境ソフトウェア層3の目的は、アプリケーションソフトウェアと移動デバイスの間で共通のインタフェースを提供することである。このため、キー押下げイベント信号は、キー押下げイベントメッセージの形態でアプリケーション層2に転送される。アプリケーションソフトウェアは、キー押下げイベントの意味を理解することができなければならず、したがって、基礎をなすハードウェアドライバ4およびキーパッドハードウェア5に対応するように書かれなければならない。また、キー押下げイベントは、特定のキーに関連付けられた値を表示するようになど、ユーザインタフェース層1に通信されることも可能である。
【０００５】
ほとんどのキーパッドのレイアウトは、「フリーサイズ」アプローチを使用して確立される。つまり、キーパッドは、物理的構造によって規定される、またはディスプレイのサイズに合うように制約される。標準化されたキーパッドは、すべてのユーザ、またはすべてのコンピューティングデバイスに理想的ではない可能性がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許出願第12/139,823号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
様々な態様のシステムおよび方法が、ユーザの入力からユーザのタイピングパターンを学習することによって、特定のユーザに合わせてキーパッドを自動的に調整するタッチセンシティブ表面上の仮想キーパッドを提供する。
【課題を解決するための手段】
【０００８】
1つの態様において、タッチセンシティブ表面上のキーパッドを規定するための方法が、タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取ること、複数のキーをその一連の受け取られた座標と互いに関係付けること、その複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出すること、その複数のキーのそれぞれに関する算出された平均座標をキーパッドレイアウトデータの中に保存すること、およびそのキーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することを含む。この方法は、一連のキーストロークを入力するようにユーザを促すことをさらに含むことが可能であり、複数のキーをその一連の受け取られた座標と互いに関係付けることは、その促された一連のキーストロークを、その受け取られた座標と互いに関係付けることを含む。この方法は、その複数のキーのそれぞれに関する受け取られた座標に基づいて、統計エンベロープを算出すること、およびその複数のキーのそれぞれに関する統計エンベロープをキーパッドレイアウトデータの中に保存することをさらに含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することは、キーパッドレイアウトデータの中に格納された複数のキーの各キーの平均座標に基づく位置に、仮想キーパッドにおけるキーの画像を生成することを含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することは、各キー画像のサイズがキーパッドレイアウトデータの中の複数のキーパッドのそれぞれに関する統計エンベロープに基づく、仮想キーパッドにおける複数のキーの画像を生成することをさらに含むことが可能である。この方法は、タッチセンシティブ表面上の仮想キーパッド上のタイピングを監視すること、隣接キータイピング誤りを識別すること、隣接キータイピング誤りに関連する正しいキーを特定すること、タイプされたキーストロークに関する受け取られた座標に基づいて、正しいキーに関する平均座標を更新すること、およびその更新された平均座標を正しいキーと一緒にキーパッドレイアウトデータの中に保存することをさらに含むことが可能である。隣接キータイピング誤りを識別することは、スペルの誤った語を認識すること、およびそのスペルの誤りが、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定することを含むことが可能である。隣接キータイピング誤りを識別することは、キーに関連付けられた文字のユーザ訂正を認識すること、およびそのユーザ訂正が、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定することを含むことが可能である。キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存されることが可能であり、さらにこの方法は、ネットワークを介してコンピューティングデバイスにキーパッドレイアウトデータを伝送することをさらに含むことが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することは、コンピューティングデバイスに結合されたタッチセンシティブ表面上で仮想キーパッドの画像を生成することを含む。この方法は、コンピューティングデバイスに結合されたタッチセンシティブ表面上でユーザタッチを受け取ること、およびタッチセンシティブ表面上のその受け取られたユーザタッチに基づいて、タッチセンシティブ表面上で仮想キーパッドの表示のための位置を決定することをさらに含むことが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することは、表示のためにタッチセンシティブ表面上の決定された位置に画像を生成することを含む。
【０００９】
他の態様において、コンピューティングデバイスが、プロセッサと、そのプロセッサに結合されたメモリと、そのプロセッサに結合されたタッチセンシティブ表面とを含み、プロセッサは、タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取ること、複数のキーをその一連の受け取られた座標と互いに関係付けること、その複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出すること、その複数のキーのそれぞれに関する算出された平均座標をキーパッドレイアウトデータの中に保存すること、およびそのキーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することを含むプロセスを実行するプロセッサ実行可能命令を有して構成される。コンピューティングデバイスプロセッサは、一連のキーストロークを入力するようにユーザを促すことをさらに含むプロセスを実行するように構成されることが可能であり、さらに複数のキーを、その一連の受け取られた座標と互いに関係付けることは、その促された一連のキーストロークを、その受け取られた座標と互いに関係付けることを含むことが可能である。コンピューティングデバイスプロセッサは、その複数のキーのそれぞれに関する受け取られた座標に基づいて、統計エンベロープを算出すること、およびその複数のキーのそれぞれに関する統計エンベロープをキーパッドレイアウトデータの中に保存することをさらに含むプロセスを実行するように構成されることが可能である。
【００１０】
コンピューティングデバイスプロセッサは、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することが、キーパッドレイアウトデータの中に格納された複数のキーの各キーの平均座標に基づく位置に、仮想キーパッドにおけるキーの画像を生成することを含むように、プロセッサ実行可能命令を有して構成されることが可能である。コンピューティングデバイスプロセッサは、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することが、各キー画像のサイズがキーパッドレイアウトデータの中の複数のキーパッドのそれぞれに関する統計エンベロープに基づく、仮想キーパッドにおける複数のキーの画像を生成することをさらに含むように、プロセッサ実行可能命令を有して構成されることが可能である。コンピューティングデバイスプロセッサは、タッチセンシティブ表面上の仮想キーパッド上のタイピングを監視すること、隣接キータイピング誤りを識別すること、隣接キータイピング誤りに関連する正しいキーを特定すること、タイプされたキーストロークに関する受け取られた座標に基づいて、正しいキーに関する平均座標を更新すること、およびその更新された平均座標を正しいキーと一緒にキーパッドレイアウトデータの中に保存することをさらに含むプロセスを実行するように構成されることが可能である。コンピューティングデバイスプロセッサは、隣接キータイピング誤りを識別することが、スペルの誤った語を認識すること、およびそのスペルの誤りが、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定することを含むように、プロセッサ実行可能命令を有して構成されることが可能である。コンピューティングデバイスプロセッサは、隣接キータイピング誤りを識別することが、キーに関連付けられた文字のユーザ訂正を認識すること、およびそのユーザ訂正が、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定することを含むように、プロセッサ実行可能命令を有して構成されることが可能である。キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存されることが可能であり、さらにコンピューティングデバイスプロセッサは、ネットワークを介してネットワークアクセス可能なデータベースからキーパッドレイアウトデータを受信することを含むさらなるプロセスを実行するプロセッサ実行可能命令を有して構成されることが可能である。コンピューティングデバイスプロセッサは、コンピューティングデバイスに結合されたタッチセンシティブ表面上でユーザタッチを受け取ること、タッチセンシティブ表面上のその受け取られたユーザタッチに基づいて、タッチセンシティブ表面上で仮想キーパッドの表示のための位置を決定すること、および表示のためにタッチセンシティブ表面上の決定された位置に、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成することを含むさらなるプロセスを実行するプロセッサ実行可能命令を有して構成されることが可能である。
【００１１】
他の態様において、タッチセンシティブ表面に結合されたコンピューティングデバイスが、タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るための手段と、複数のキーをその一連の受け取られた座標と互いに関係付けるための手段と、その複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するための手段と、その複数のキーのそれぞれに関する算出された平均座標をキーパッドレイアウトデータの中に保存するための手段と、そのキーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段とを含むことが可能である。
【００１２】
コンピューティングデバイスは、一連のキーストロークを入力するようにユーザを促すための手段をさらに含むことが可能であり、複数のキーをその一連の受け取られた座標と互いに関係付けるための手段は、その促された一連のキーストロークを、その受け取られた座標と互いに関係付けるための手段を含む。コンピューティングデバイスは、その複数のキーのそれぞれに関する受け取られた座標に基づいて、統計エンベロープを算出するための手段と、その複数のキーのそれぞれに関する統計エンベロープをキーパッドレイアウトデータの中に保存するための手段とをさらに含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、キーパッドレイアウトデータの中に格納された複数のキーの各キーの平均座標に基づく位置に、仮想キーパッドにおけるキーの画像を生成するための手段を含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、各キー画像のサイズがキーパッドレイアウトデータの中の複数のキーパッドのそれぞれに関する統計エンベロープに基づく、仮想キーパッドにおける複数のキーの画像を生成するための手段をさらに含むことが可能である。コンピューティングデバイスは、タッチセンシティブ表面上の仮想キーパッド上のタイピングを監視するための手段と、隣接キータイピング誤りを識別するための手段と、隣接キータイピング誤りに関連する正しいキーを特定するための手段と、タイプされたキーストロークに関する受け取られた座標に基づいて、正しいキーに関する平均座標を更新するための手段と、その更新された平均座標を正しいキーと一緒にキーパッドレイアウトデータの中に保存するための手段とをさらに含むことが可能である。隣接キータイピング誤りを識別するための手段は、スペルの誤った語を認識するための手段と、そのスペルの誤りが、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための手段とを含むことが可能である。隣接キータイピング誤りを識別するための手段は、キーに関連付けられた文字のユーザ訂正を認識するための手段と、そのユーザ訂正が、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための手段とを含むことが可能である。キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存されることが可能であり、さらにコンピューティングデバイスは、ネットワークを介してコンピューティングデバイスにキーパッドレイアウトデータを伝送するための手段をさらに含むことが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、コンピューティングデバイスに結合されたタッチセンシティブ表面上で仮想キーパッドの画像を生成するための手段を含むことが可能である。コンピューティングデバイスは、コンピューティングデバイスに結合されたタッチセンシティブ表面上でユーザタッチを受け取るための手段と、タッチセンシティブ表面上のその受け取られたユーザタッチに基づいて、タッチセンシティブ表面上で仮想キーパッドの表示のための位置を決定するための手段とをさらに含む���とが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための手段は、表示のためにタッチセンシティブ表面上の決定された位置に画像を生成するための手段を含むことが可能である。
【００１３】
他の態様において、コンピュータプログラム製品が、タッチセンシティブ表面上の一連のユーザタッチの一連の座標を受け取るための少なくとも1つの命令と、複数のキーをその一連の受け取られた座標と互いに関係付けるための少なくとも1つの命令と、その複数のキーのそれぞれと互いに関係付けられた、受け取られた座標の平均を算出するための少なくとも1つの命令と、その複数のキーのそれぞれに関する算出された平均座標をキーパッドレイアウトデータの中に保存するための少なくとも1つの命令と、そのキーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための少なくとも1つの命令とを含むコンピュータ可読媒体を含むことが可能である。コンピュータ可読媒体は、一連のキーストロークを入力するようにユーザを促すための少なくとも1つの命令をさらに含むことが可能であり、複数のキーをその一連の受け取られた座標と互いに関係付けるための少なくとも1つの命令は、その促された一連のキーストロークを、その受け取られた座標と互いに関係付けるための少なくとも1つの命令を含む。コンピュータ可読媒体は、その複数のキーのそれぞれに関する受け取られた座標に基づいて、統計エンベロープを算出するための少なくとも1つの命令と、その複数のキーのそれぞれに関する統計エンベロープをキーパッドレイアウトデータの中に保存するための少なくとも1つの命令とをさらに含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための少なくとも1つの命令は、キーパッドレイアウトデータの中に格納された複数のキーの各キーの平均座標に基づく位置に、仮想キーパッドにおけるキーの画像を生成するための少なくとも1つの命令を含むことが可能である。キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための少なくとも1つの命令は、各キー画像のサイズがキーパッドレイアウトデータの中の複数のキーのそれぞれに関する統計エンベロープに基づく、仮想キーパッドにおける複数のキーの画像を生成するための少なくとも1つの命令をさらに含むことが可能である。コンピュータ可読媒体は、タッチセンシティブ表面上の仮想キーパッド上のタイピングを監視するための少なくとも1つの命令と、隣接キータイピング誤りを識別するための少なくとも1つの命令と、隣接キータイピング誤りに関連する正しいキーを特定するための少なくとも1つの命令と、タイプされたキーストロークに関する受け取られた座標に基づいて、正しいキーに関する平均座標を更新するための少なくとも1つの命令と、その更新された平均座標を正しいキーと一緒にキーパッドレイアウトデータの中に保存するための少なくとも1つの命令とをさらに含むことが可能である。隣接キータイピング誤りを識別するための少なくとも1つの命令は、スペルの誤った語を認識するための少なくとも1つの命令と、そのスペルの誤りが、仮想キーボードにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための少なくとも1つの命令とを含むことが可能である。隣接キータイピング誤りを識別するための少なくとも1つの命令は、キーに関連付けられた文字のユーザ訂正を認識するための少なくとも1つの命令と、そのユーザ訂正が、仮想キーボ��ドにおいて互いに隣接する2つのキーの交代を含むかどうかを判定するための少なくとも1つの命令とを含むことが可能である。キーパッドレイアウトデータは、ネットワークアクセス可能なデータベースの中に保存されることが可能であり、さらにコンピュータ可読媒体は、ネットワークを介してコンピューティングデバイスにキーパッドレイアウトデータを伝送するための少なくとも1つの命令をさらに含むことが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための少なくとも1つの命令は、コンピューティングデバイスに結合されたタッチセンシティブ表面上で仮想キーパッドの画像を生成するための少なくとも1つの命令を含む。コンピュータ可読媒体は、コンピューティングデバイスに結合されたタッチセンシティブ表面上でユーザタッチを受け取るための少なくとも1つの命令と、タッチセンシティブ表面上のその受け取られたユーザタッチに基づいて、タッチセンシティブ表面上で仮想キーパッドの表示のための位置を決定するための少なくとも1つの命令とをさらに含むことが可能であり、キーパッドレイアウトデータを使用して仮想キーパッドの画像を生成するための少なくとも1つの命令は、表示のためにタッチセンシティブ表面上の決定された位置に画像を生成するための少なくとも1つの命令を含む。
【００１４】
さらなる1つの態様において、デフォルトのキーパッドをユーザの手に合わせてカスタマイズするための方法が、タッチセンシティブ表面上でユーザタッチの複数の座標を受け取ること、ユーザタッチのその受け取られた複数の座標の少なくとも一部分に基づいて、ユーザの手の寸法を測定すること、ユーザの手のその測定された寸法に基づいて、デフォルトのキーパッドレイアウトのレイアウト寸法を調整すること、およびデフォルトのキーパッドレイアウトのそれらの調整されたレイアウト寸法を使用して仮想キーパッドの画像を生成することを含むことが可能である。
【００１５】
さらなる1つの態様において、コンピューティングデバイスは、プロセッサと、そのプロセッサに結合されたメモリと、そのプロセッサに結合されたタッチセンシティブ表面とを含み、プロセッサは、タッチセンシティブ表面上でユーザタッチの複数の座標を受け取ること、ユーザタッチのその受け取られた複数の座標の少なくとも一部分に基づいて、ユーザの手の寸法を測定すること、ユーザの手のその測定された寸法に基づいて、デフォルトのキーパッドレイアウトのレイアウト寸法を調整すること、およびデフォルトのキーパッドレイアウトのそれらの調整されたレイアウト寸法を使用して仮想キーパッドの画像を生成することを含むプロセスを実行するプロセッサ実行可能命令を有して構成される。
【００１６】
さらなる1つの態様において、コンピューティングデバイスは、タッチセンシティブ表面上でユーザタッチの複数の座標を受け取るための手段と、ユーザタッチのその受け取られた複数の座標の少なくとも一部分に基づいて、ユーザの手の寸法を測定するための手段と、ユーザの手のその測定された寸法に基づいて、デフォルトのキーパッドレイアウトのレイアウト寸法を調整するための手段と、デフォルトのキーパッドレイアウトのそれらの調整されたレイアウト寸法を使用して仮想キーパッドの画像を生成するための手段とを含む。
【００１７】
さらなる1つの態様において、コンピュータプログラム製品が、タッチセンシティブ表面上でユーザタッチの複数の座標を受け取るための少なくとも1つの命令と、ユーザタッチのその受け取られた複数の座標の少なくとも一部分に基づいて、ユーザの手の寸法を測定するための少なくとも1つの命令と、ユーザの手のその測定された寸法に基づいて、デフォルトのキーパッドレイアウトのレイアウト寸法を調整するための少なくとも1つの命令と、デフォルトのキーパッドレイアウトのそれらの調整されたレイアウト寸法を使用して仮想キーパッドの画像を生成するための少なくとも1つの命令とを含む、コンピュータ可読媒体を含む。
【００１８】
本明細書に組み込まれ、本明細書の一部を成す添付の図面は、本発明の例示的な態様を示し、前段で与えられる全体的な説明、および後段で与えられる詳細な説明と一緒になって、本発明の特徴を説明する役割をする。
【図面の簡単な説明】
【００１９】
【図１】従来技術の移動デバイスのハードウェア/ソフトウェアアーキテクチャ図である。
【図２】様々な態様によって可能にされる移動デバイスのシステムコンポーネント図である。
【図３】様々な態様によって可能にされる学習モジュールのシステムコンポーネント図である。
【図４】タッチセンシティブスクリーン上で仮想キーパッドを生成するための教示ルーチンを示すプロセス流れ図である。
【図５】1つの態様において使用するのに適した命令テーブルのデータ構造を示す図である。
【図６Ａ】知られているテキストのユーザのタイピングを分析することによって仮想キーパッドレイアウトを最適化するための例示的な学習ルーチンを示すプロセス流れ図である。
【図６Ｂ】知られていないテキストのユーザのタイピングを分析することによって仮想キーパッドレイアウトを最適化するための例示的な学習ルーチンを示すプロセス流れ図である。
【図７】ユーザによって行われたタイピング訂正に基づいて仮想キーパッドレイアウトを最適化するための例示的な学習ルーチンを示すプロセス流れ図である。
【図８】1つの態様において使用するのに適したデフォルトの仮想キーボードレイアウトを示す図である。
【図９】様々な態様によるカスタマイズ後の例示的な仮想キーボードレイアウトを示す図である。
【図１０】キー中心点を囲む統計エンベロープを示す仮想キーボードのキーを示す図である。
【図１１】1つの態様によるネットワークアーキテクチャを示す通信ネットワークブロック図である。
【図１２Ａ】ユーザによるタッチに応答して選択されたカスタム仮想キーボードをタッチセンシティブ表面上に位置付けるための例示的な方法を示すプロセス流れ図である。
【図１２Ｂ】ユーザの手の寸法を測定したことに応答してサイズ変更されたデフォルトの仮想キーボードをタッチセンシティブ表面上に位置付けるための例示的な方法を示すプロセス流れ図である。
【図１３】様々な態様において使用するのに適した移動デバイスの例示的な構成要素を示すコンポーネントブロック図である。
【図１４】様々な態様において使用するのに適したコンピュータの例示的な構成要素を示すコンポーネントブロック図である。
【図１５】様々な態様において使用するのに適したサーバの例示的な構成要素を示すコンポーネントブロック図である。
【発明を実施するための形態】
【００２０】
様々な態様は、添付の図面を参照して詳細に説明される。可能な場合はいつでも、すべての図面で同一の参照符号が、同一の、または同様の部分を指すのに使用される。特定の実施例または実施形態について述べることは、例示目的であり、本発明の範囲、または特許請求の範囲を限定することは意図していない。
【００２１】
本明細書で使用される「移動ハンドセット」および「移動デバイス」という用語は、互換的に使用され、様々なセルラ電話機、PDA(携帯情報端末)、パームトップコンピュータ、ラップトップコンピュータ、無線電子メール受信機(例えば、Blackberry(登録商標)デバイスおよびTreo(登録商標)デバイス)、およびマルチメディアインターネット対応のセルラ電話機(例えば、Blackberry Storm(登録商標))、ならびに類似したパーソナル電子デバイスのいずれか1つを指す。移動デバイスは、図13を参照して後段でより詳細に説明されるプログラマブルプロセッサおよびメモリを含むことが可能である。「コンピューティングデバイス」という用語は、本明細書では、移動デバイス、デスクトップコンピュータ、ワークステーション、メインフレームコンピュータ、および組み込み型コンピュータシステムを含め、プログラマブルプロセッサおよびメモリを含む任意のデバイスを指すように使用される。
【００２２】
本明細書で使用される「キーパッド」および「キーボード」という用語は、互換的に使用され、QWERTY(または他の)キーボード、数字キーパッド、ゲームコントローラ、および音楽キーボードなどのコンピューティングデバイスに入力データを伝えるのに使用されるユーザ入力デバイスの様々な構成のいずれか1つを一般に指すのに使用される。様々な態様は、「キー」が表示される、投影される、または目に見えないことが可能である「仮想」ユーザ入力デバイスを含むので、「キーパッド」および「キーボード」という用語は、押し下げられ得る物理的キーを要求することは意図しておらず、むしろ、ユーザの指によるタッチ(または押圧)を感知し、そのタッチをコンピューティングデバイスに対する入力として解釈することができる任意のユーザ入力デバイスを指す。
【００２３】
本明細書で使用される、「タッチセンシティブ表面」という用語は、ユーザの指によるタッチ(または押圧)を検出し、または感知し、そのタッチをコンピューティングデバイスに対する入力として解釈するように構成された任意の表面を包含する。特に、タッチセンシティブ表面は、ユーザの指先のタッチの位置を特定することができる。表面上の指先のタッチおよび位置を感知することは、様々な知られている技術のいずれかを使用して達せられることが可能である。例えば、タッチセンシティブ表面は、ユーザタッチを直接に検出する感圧表面、静電容量感知表面、および静電誘導感知サービスを含むことが可能である。さらなる例として、タッチセンシティブ表面は、指先が表面と接触していると、そのことを認識することができる光センサによって、ユーザタッチを検出することが可能である。光センサの例には、ユーザの指が投影された画像と対話すると、そのことを検出することができる(例えば、カメラまたはフォトセンサによって)投影システム、ならびにユーザの指先を撮像し、ユーザの指先の位置を特定することができる赤外線-カメラセンサが含まれる。カバーガラスを伝わる超音波の効果に基づいてタッチを検出することができる超音波センサ、またはカバーガラス上のタッチからの受け取られた振動または音の三角測量に基づいて、タッチの位置を特定することができる音センサまたは振動センサなどの、第3の例示的なタッチセンサは、音測定または振動測定を使用して、ユーザタッチを検出し、ユーザタッチ位置を特定することが可能である。
【００２４】
タッチセンシティブ表面は、様々な表面のいずれの上で使用されることも可能であり、このため、特定のタイプのデバイスまたは形態に限定されることは意図されない。例えば、壁、テーブル、鏡、自動車の窓、あるいは平面であれ、曲面であれ、任意の表面が、タッチセンシティブ表面として構成されることが可能である。本明細書で使用される「タッチセンシティブスクリーン」または「タッチスクリーン」は、ディスプレイと組み合わさったタッチセンシティブ表面である。ディスプレイは、液晶ディスプレイ(Blackberry Storm(登録商標)の場合のように)などの物理的ディスプレイであることが可能である。本明細書で使用される「投影されるキーボードディスプレイ」とは、表面上にキーボードの画像を投影することができるプロジェクタを指す。投影されたキーボードディスプレイは、タッチセンシティブ表面上にキーボード画像を投影することによって、または光センサなどの他の技術によって指のタッチを感知することによって、タッチを感知することが可能である。
【００２５】
本明細書で使用される「仮想キーパッド」および「仮想キーボード」とは、タッチスクリーンなどのタッチセンシティブ表面上に表示された、または投影された、あるいは光センサなどの別のタッチセンサ技術と連携して表面上に投影されたキーパッド画像を指す。いくつかの態様において、仮想キーパッドの「キー」は、ディスプレイスクリーン上、または投影上に表示されることが可能であるが、いくつかの態様は、全く画像を提供しない可能性がある。このため、「仮想キーパッド」は、目に見えないキーパッドであることも可能である。仮想キーパッドは、数字または文字に必ずしも限定されず、本明細書で使用される場合、キーまたはボタンのユーザによる活性化が関与する任意のユーザインタフェースを包含する。非数字または非文字の仮想キーパッドの例には、タッチセンシティブ表面を含むゲームコントローラ、デバイスコントローラ(例えば、TVリモート)、アプリケーションインタフェース、およびジョイスティックが含まれる。例えば、仮想キーパッドは、MP3アプリケーションまたはビデオプレーヤアプリケーションのためのユーザインタフェースとして実施されることが可能である。
【００２６】
本明細書で使用される「キーパッドレイアウトデータ」という用語は、仮想キーパッドにおけるキーの位置、サイズ、形状、および向きに関する情報、特に、仮想キーパッドの画像を生成するのに使用され得る情報の総称である。
【００２７】
本明細書で使用される「エンベロープ」とは、タッチセンシティブ表面上のユーザによるキーの打ち方の本来的なばらつきを見込む仮想キー寸法の許容可能な範囲を指す。パラメータは、例えば、相対X軸位置、相対Y軸位置、およびディスプレイピクセルマトリックス位置範囲であることが可能である。
【００２８】
コンピューティングデバイスキーパッドの例示的なハードウェア/ソフトウェアインタフェースが、図1に示される。キーパッド5上のキーを押すことは、ハードウェアドライバ4によって処理され得る電気信号をもたらす。ハードウェアドライバ4は、特定のコンピューティングデバイス(例えば、移動デバイス)に依存して、回路、ソフトウェア、またはハードウェアとソフトウェアの混合であることが可能である。ハードウェアドライバ4は、キーパッド5から受け取られた電気信号を、コンピューティングデバイス上で実行されるソフトウェアアプリケーション2によって解釈され得るフォーマットに変換する。この信号は、割込み、あるいはアプリケーション2によってアクセス可能であるメモリテーブルの中の格納された値の形態であることが可能である。そのような割込み、またはメモリの中のそのような格納された値が、ランタイム環境またはオペレーティングシステムの一部であることが可能なキーパッドインタフェース3によって受け取られることが可能である。キーパッドインタフェース3の目的は、アプリケーションソフトウェア2とコンピューティングデバイスキーパッド5の間で共通のインタフェースを提供することである。このため、キー押下げイベント信号は、アプリケーション2が解釈することができるキー押下げイベント信号またはキー押下げイベントメッセージ(例えば、ASCI文字値)の形態でアプリケーション層2に転送されることが可能である。
【００２９】
図1に示されるような従来から知られているシステム/ハードウェアアーキテクチャを使用して、アプリケーション開発者は、「標準の」キーパッドレイアウト(例えば、QWERTYキーボードまたは数字キーパッド)で、またはアプリケーションがロードされる可能性がある各タイプの移動デバイスに固有のキーパッドレイアウトで機能するように開発者のソフトウェアを適応させなければならなかった。特定のキーセットを要求するアプリケーション(例えば、ゲームまたはデバイスリモコン)は、固定型キーパッドレイアウトを有するデバイス上で機能できない可能性があり、あるいは限られた仕方、またはユーザフレンドリでない仕方でしか機能できない可能性がある。アプリケーションソフトウェアとキーパッドの間の標準インタフェース、および他のユーザインタフェースとしてキーパッドプロトコルを提供するためのシステムおよび方法が、2008年6月16日に出願した「Standardized Method and Systems for Providing Configurable Keypads」という名称の、本出願人が所有する米国特許出願第12/139,823号において最近、開示された。米国特許出願第12/139,823号の内容全体が、すべての目的のために参照により本明細書に組み込まれている。
【００３０】
本発明の様々な態様は、特定のユーザに合わせてカスタマイズされたキーパッドレイアウトを規定するための方法およびシステムを提供する。学習アルゴリズムを使用して、様々な態様を実施するコンピューティングデバイスが、ユーザのキーサイズ、キー間隔、およびタイピングパターンを学習し、仮想キーボードのキーを、ユーザに快適であり、さらにユーザタイピング誤りを減らす位置、サイズ、および向きに「変形させる」ことができる。1つの態様によれば、ユーザは、コンピューティングデバイスによって提供される教示ルーチンに従うことによってカスタムキーパッドレイアウトを作成することができる。例えば、コンピューティングデバイスが、ディスプレイ上でデフォルトのキーパッドレイアウトを提示し、一連のキーストロークを実行するようにユーザを促すことが可能である。ユーザが、そのような命令に従い、各キーを押すにつれ、コンピューティングデバイスは、各キーに対応するタッチ位置を特定することができ、さらにその情報を使用して、ユーザの手に合うキーの位置、サイズ、形状、および向きとともにキーパッドレイアウトの適切なエンベロープを発見することができる。この教示ルーチンの結果は、コンピューティングデバイスが、仮想キーパッドにおけるキーの表示を生成する(例えば、タッチスクリーン上、または投影されたキーボード上で)のに使用するキーパッドレイアウトデータとして格納されることが可能である。
【００３１】
キーパッドレイアウトデータ(したがって、さらに仮想キーボードのレイアウト)は、ユーザが、コンピューティングデバイスに知られているテキストをタイプ入力し(例えば、コンピューティングデバイスのディスプレイ上に提示されたパラグラフをタイプ入力し)、入力されたキーストロークが、ユーザの指によるキー打ちのばらつきを記録するように処理される訓練シーケンスによってさらに最適化されることが可能である。ユーザのタイピングのばらつきの分析は、キーをさらに成形する、位置付ける、または規定するのに使用され得る各キーに関するエンベロープを規定するのに、さらに自動訂正アルゴリズムを適用する際に使用されることが可能である。
【００３２】
学習アルゴリズムが、キーパッドレイアウトデータの中に記録されたキーエンベロープおよびキー位置を改良するために、時とともにユーザのタイピングを監視して、指のタッチを仮想キー位置と互いに関係付け、さらにタイプ入力誤りを認識するようにさらに実施されることが可能である。ユーザのタイピングパターンを分析することによって仮想キーパッドレイアウトを改良することで、コンピューティングデバイスが、ユーザタイピング誤りを減らすことを助ける仮想キーボードを提供することを可能にする。ユーザキーストローク誤りは、タイプ入力された文字または数字のユーザ訂正を記録にとることによって、さらにスペルチェック技術または予測テキスト技術を介して誤ったキーストロークを認識することによって認識されることが可能である。そのような学習アルゴリズムの出力は、メモリの中に格納され、ユーザに関連付けられることが可能な改良されたキーパッドレイアウトデータであることが可能である。
【００３３】
キーパッドレイアウトデータは、コンピューティングデバイスのメモリ内に格納されること、実体のある媒体上に格納されること、および通信リンクを介して伝送されることが可能な1つまたは複数のデータテーブルの形態であることが可能である。キーパッドレイアウトデータを別のコンピューティングデバイスに伝送することは、ユーザのカスタマイズされたキーボードが他のコンピューティングデバイス上で実施されることを可能にすることができる。ユーザの手のサイズ、リーチ、器用さ、およびタイピングパターンに合わせてカスタマイズされたポータブル仮想キーボードをユーザが作成することを可能にすることにより、様々な態様は、ユーザの生理機能の変化とデータエントリのために使用される技術の変化の両方に適応することができる仕方で、データの効率的な入力を円滑にする。
【００３４】
図2を参照して後段でさらに詳細に説明されるとおり、様々な態様に関連する学習アルゴリズムは、コンピューティングデバイスのプロセッサ上で動作するプロセッサ実行可能命令のモジュールであることが可能な、学習モジュールにおいてコンピューティングデバイス内で実施されることが可能である。例として、限定としてではなく、学習モジュールは、訓練ルーチンを使用し、時とともにユーザタイピングを追跡して、特定のユーザに合わせてカスタマイズされたQWERTYキーボードのキーパッドレイアウトを規定することが可能である。
【００３５】
タッチセンシティブ表面、タッチスクリーン、および投影されたキーボードディスプレイなどの様々な仮想キーボードのいずれかを使用する様々な態様が、コンピューティングデバイス上で実施されることが可能である。
【００３６】
学習モジュールおよび訓練ルーチンは、QWERTYキーボードレイアウトの文脈において後段で説明されるが、様々な態様は、異なるキーレイアウトを有する数字キーパッドや英数字キーパッドなどの、他のタイプのキーパッドを規定するように適用されることが可能である。また、例えば、様々な態様は、カナダマルチリンガル標準、カナダフランス語、チェコ語、デンマーク語、オランダ語、フェロー語、アイルランド語、イタリア語、ノルウェー語、ポーランド語、ポルトガル語(ポルトガル)、ポルトガル語(ブラジル)、ルーマニア語(ルーマニア国内、およびモルドバ国内)、スロバキア語、スペイン語(スペイン)、スペイン語(ラテンアメリカ)、スウェーデン語/フィンランド語、英国、英国拡張、および米国-国際に関して規定されたキーボードレイアウトを含め、QWERTYキーボードレイアウトの変種形態に適用されることも可能である。様々な態様は、例えば、QWERTZ(チェコ語、ハンガリー語、ドイツ語、およびオーストリア、スロバキア語、ボスニア語、クロアチア語、セルビア語(ラテン文字)、およびスロベニア語、セルビア語(キリル文字)、スイスドイツ語、スイスフランス語、スイスイタリア語、リヒテンシュタイン、およびルクセンブルクに関して規定されたキーボードレイアウトを含む)、AZERTY(フランス語およびベルギーに関して規定されたキーボードレイアウトを含む)、QZERTY、ドボラック(Dvorak)キーボード、コールマック(Colemak)キーボード、トルコ語、およびコーデッド(chorded)キーボードを含む他のタイプのキーボードレイアウトにも同様に適用される。さらに、様々な態様は、例えば、アラビア語、アルメニア語、ギリシャ語、ヘブライ語、ロシア語、ウクライナ語、ブルガリア語、デバナーガリ文字、タイ語、クメール語、チベット文字、チベット語(中国)、ゾンカ語(ブータン)、中国語、日本語、ハングル(韓国用)、ドゥボル式(Dubeolshik)、セボル式(Sebeolshik)390、セボル式ファイナル、およびセボル式ノーシフトを含む非ラテンアルファベットおよび非アルファベット文字に合わせて最適化されたキーボードに適用されることも可能である。さらに、様々な態様は、ピアノキーボードなどの音楽キーボードに適用されることも可能である。
【００３７】
ユーザが、カスタマイズされた仮想キーボードを生成するようにコンピューティングデバイスを訓練する前、コンピューティングデバイスは、タッチセンシティブ表面(例えば、タッチスクリーン)の寸法に適合する標準サイズのQWERTYキーボードなどの、デフォルトのレイアウトに基づくキーボードを表示することが可能である。ユーザが、後段で説明されるとおり、このデフォルトのキーボードと対話するにつれ、学習モジュールが、そのような訓練の終了時にユーザの仮想キーボードレイアウトがデフォルトのレイアウトとは異なるように、キーを再配置することが可能である。
【００３８】
代替として、コンピューティングデバイスは、ユーザが、ユーザの気に入るように仮想キーボードを位置付け、方向付けることを可能にするように構成されることが可能である。ユーザの手の生理機能について学習するために、コンピューティングデバイスは、スピーカ、または表示されたテキストなどを介して、タッチセンシティブ表面上でキーボードが位置付けられることをユーザが選好する場所にユーザの手を位置付けるよう、ユーザに命令を発行することが可能である。例えば、ユーザは、「ASDF」キーが配置されることをユーザが選好する場所に左手の指がタッチし、「JKL;」キーが配置されることをユーザが選好する場所に右手の指がタッチし、さらにスペースキーが配置されることをユーザが選好する場所に親指がタッチするように、タッチセンシティブ表面上でユーザの手を置くよう、命令されることが可能である。コンピューティングデバイスは、各指のタッチ位置を特定し、このタッチ情報を使用して、ユーザの指のタッチに合うようにサイズ変更され、方向付けされた仮想キーボードを生成し、表示する。
【００３９】
ユーザが仮想キーパッドの位置およびサイズを規定することを可能にすることの一環として、コンピューティングデバイスは、指が、キーボード上でより近くに位置付けられるほど、より速くタイプすることができることを研究が示していることをユーザに思い起こさせることが可能である。さらに、ユーザは、表面上に手のひらを置くことがより快適である場合、そうしても構わないことを指示されることが可能である。
【００４０】
指の位置は、タッチセンシティブ表面によってキャプチャされて、座標系に応じてコンピューティングデバイスによって記録されることが可能である。例えば、「A」キーおよび「;」キーの位置が、ディスプレイマトリックス、または「X-Y」座標系を基準として決定されて、それらの座標がキーパッドレイアウトデータの中に保存されることが可能である。指先位置データは、コンピューティングデバイスにおいて実施された学習モジュールによって処理されることが可能である。キーは、ユーザの指のタッチの中心点、ならびにキーのサイズおよび形状を規定するエンベロープの点で規定されることが可能である。後段でより詳細に説明されるとおり、エンベロープは、ユーザがタイプする間の特定のキータッチの位置の統計分析に基づいてサイズ変更されることが可能であり、したがって、エンベロープは、ユーザタッチの大半を包含することが可能である。エンベロープは、画像を生成するのに使用されることが可能であり、画像は、中心点座標を中心とする。また、エンベロープ情報は、キー画像の合間に該当するキーストロークの曖昧さを除くのにコンピューティングデバイス(またはキーパッドドライバ)が使用することが可能な情報をもたらすように、キー画像を超えて拡張されてもよい。
【００４１】
教示プロセスにおいて、コンピューティングデバイスは、その特定の仮想キーボードのその他のキーの適切な位置を学習することが可能である。適切なキー位置は、X座標とY座標などのタッチセンシティブ表面の座標構造に応じて、または各キーがそれぞれの隣接するキーから決まった距離、および決まった角度で離れて位置付けられる相対オフセットに応じて規定されることが可能である。座標系において、キーは、ユーザタッチの重心に対応する中心点に配置されることが可能であり、さらにユーザタッチ位置のばらつきによって規定されることが可能なエンベロープに基づいて、サイズ変更されることが可能である。相対位置システムにおいて、すべてのキーは、2つ以上のアンカキーの規定された位置に基づいて、位置付けられることが可能である。座標系仮想キーボードのキーの座標およびサイズ、ならびに相対システムのキーの互いに対する相対オフセットは、キーパッドレイアウトデータとして格納されることが可能である。
【００４２】
他の態様において、訓練ルーチンは、ユーザのキー打ち精度を向上させ続けることが可能である。ユーザは、数サイクルにわたって指定された句またはパラグラフをタイプするように求められることが可能である。例えば、ユーザは、タイプすべきパラグラフ、あるいはユーザがタイプすべき現在の語、およびその先の2語を示すプロンプトを与えられることが可能である。第1のサイクルにおいて、コンピューティングデバイスが、各文字を打つようにユーザを促すと、そのキーが、ユーザの指がタッチする場所に移動することが可能である。学習モジュールは、正しいキーの中心の位置から或るしきい距離のキー打ちとして定義されたタイピング誤りを無視するように構成されることが可能である。第2のサイクルにおいて、中心点(すなわち、キーの中心の位置)が、ユーザのキー打ちの位置の平均として算出されることが可能である。後続のサイクルにおいて、ユーザがキーパッドレイアウトにより慣れてくるにつれ、以前の中心点の出現は、その度により小さく評価されることが可能である。ユーザのキー打ち速度および誤り率が水平状態になると、訓練ルーチンは、終了することが可能である。
【００４３】
図2は、様々な態様を可能にするコンピューティングデバイスのシステムコンポーネント図である。コンピューティングデバイスは、仮想キーボード12が表示されるタッチセンシティブ表面14を含むことが可能である。タッチセンシティブ表面14は、その表面に対するタッチに関連する信号を受け取り、それらの信号を、キーパッドインタフェース3のようなコンピューティングデバイスオペレーティングシステムによって解釈され得るタッチイベントおよび座標信号に変換するハードウェアドライバ4に結合されることが可能である。説明を簡単にするため、キーパッドインタフェース3は、プロセスモジュールとして示されるが、キーパッドインタフェース3は、コンピューティングデバイスオペレーティングシステムの機能の一部分、またはコンピューティングデバイスのファームウェア構成要素もしくはハードウェア構成要素であってもよい。例示的な実施形態において、キーパッドインタフェース3機能は、タッチイベント信号を、オペレーティングシステムのコンテキスト内で動作しているアプリケーション2に、そのアプリケーションによって解釈され得るフォーマットで中継する。ハードウェアおよびコンピューティングデバイス実施形態に依存して、タッチセンシティブ表面14に関するハードウェアドライバ4が、キーパッドインタフェース3と一緒になって、仮想キーボード12表示を生成することが可能である。さらに、ハードウェアドライバ4および/またはキーパッドインタフェース3は、タッチセンシティブ表面14上のタッチを、それらのタッチの位置座標に基づいて、特定のキー上のタッチとして解釈することが可能である。次に、キーパッドインタフェース3が、キー押下げイベントをアプリケーション2に伝えることが可能であり、アプリケーション2が、物理的キーボードからであるかのように、その押されたキーを識別する。
【００４４】
1つの態様において、キーパッドインタフェース3は、ユーザのキーストロークから適切なキー位置を学習するように構成された学習モジュール10と協働することが可能である。前述したとおり、学習モジュール10は、タッチセンシティブ表面14上の指のタッチの位置に関する情報をキーパッドインタフェース3またはハードウェアドライバ4から受け取り、この座標情報を予期されるキーストロークと互いに関係付けて、メモリの中に格納されたキーパッドレイアウトデータ8を生成する、または改良することが可能である。次に、学習モジュール10によって生成されたキーパッドレイアウトデータ8が、ハードウェアドライバ4(またはいくつかの実施形態においてキーパッドインタフェース3)によってアクセスされて、タッチセンシティブデバイス14上に表示される仮想キーパッド12を生成するのに使用されることが可能である。また、キーパッドインタフェース3またはハードウェアドライバ4は、キーパッドレイアウトデータ8を使用して、タッチセンシティブ表面14から受け取られたタッチ座標を、アプリケーション2に伝えられ得るキータッチイベントに変換することも可能である。このように構成されて、学習モジュール10は、コンピューティングデバイス上で実行されているアプリケーション2へのキータッチイベントの通信を妨げる、または遅くすることなしに、キーパッドレイアウトデータ8を継続的に改良することが可能である。
【００４５】
1つの態様において、学習モジュール10は、タイピング誤りを減らし、ユーザのタイピング習熟を高めるために仮想キーパッド12上のユーザキーストロークを解釈し、仮想キーの配置、向き、およびサイズを指定するキーパッドレイアウトデータ8を改良するプロセッサ実行可能プロセスであることが可能である。学習モジュール10プロセスは、アプリケーション2として、コンピューティングデバイスオペレーティングシステムの一部分として、またはハードウェアドライバ4の一部として実施されることが可能である。また、学習モジュール10は、意図されたキーストローク、または予測されるキーストロークについて学習モジュール10に知らせることができる訓練アプリケーション、スペルチェックアプリケーション(ワードプロセッシングアプリケーション内に実施されることが可能であるような)、および自動訂正アプリケーションなどの、他のアプリケーションから情報を受け取ることも可能である。学習アルゴリズム、人工知能、または他の推測プロセスを使用して、学習モジュール10は、タッチセンシティブ表面14の形状を特定のキーに結び付けるために、各キーストロークを所望されるキー、または適切なキーと互いに関係付けることが可能である。タッチセンシティブ表面14の形状を仮想キーパッド12のキーにそのように結び付けることには、ユーザのキーストローク位置付けの不可避なばらつきを見込む統計分析が関わることが可能である。学習モジュール10のキーパッドレイアウトデータ8出力は、コンピューティングデバイスオペレーティングシステムのキーパッドドライバ4、キーパッドインタフェース3、または他の要素が、仮想キーパッド上のタッチイベントを適切な文字(例えば、ASCII文字値)に変換するのに使用することができる、メモリの中に格納された相互関係マトリックスの形態であることが可能である。学習モジュール10が、ユーザキーストロークを処理し、キーパッドレイアウトデータ8の相互関係マトリックスを更新するにつれ、仮想キーボードの各キーのサイズ、位置、形状、および向きが、学習モジュール10によって認識されるパターンと一致するように変化することが可能である。
【００４６】
図3は、学習モジュール10の中に含められることが可能である例示的な機能のシステムコンポーネント図である。学習モジュール10は、推測エンジン100、デフォルトのキーパッドデータテーブル102、および命令データベース106を含むことが可能である。推測エンジン100は、コンピューティングデバイスプロセッサ上で実行されるプロセスおよび規則の形態であることが可能である。コンピューティングデバイスのメモリの中に格納されることが可能なデフォルトのキーパッドデータテーブル102は、学習ルーチンがキーパッドレイアウトデータ8を生成するように完了される前に、デフォルトの仮想キーボードを表示し、キーストロークを解釈するのに使用されることが可能な前もってプログラミングされたキーパッドレイアウトデータであることが可能である。学習モジュール10は、初期訓練ルーチン中にユーザに提示されることが可能な訓練コマンドおよび訓練テキストサンプルを含む、メモリの中に格納されることが可能な命令データベース106を含むことも可能である。
【００４７】
図4は、1つの態様によるタッチセンシティブ表面上で仮想キーパッドを生成するための例示的な教示プロセス200を示すプロセス流れ図である。図4を参照すると、プロセス200においてブロック202で、学習モジュールが、キー位置データについてデフォルトのキーパッドレイアウトテーブルにクエリを行い、ブロック204で受け取られたデータを使用してデフォルトのキーパッドデータを生成することが可能である。1つの態様において、デフォルトのキーパッドデータは、タッチセンシティブ表面と互いに関係付けられた「X-Y」座標系におけるキー位置データを含むことが可能である。他の態様において、デフォルトのキーパッドデータは、コンピューティングデバイスに接続されたタッチスクリーンのピクセル位置を規定する行-列マトリックスフォーマットにおけるキー位置データを含むことが可能である。他の態様において、デフォルトのキーパッドデータは、デフォルトのキーパッドレイアウトの各キーの中心点の間の平均距離を含むことが可能である。
【００４８】
プロセス200においてブロック212で、コンピューティングデバイス内の学習モジュール10が、デフォルトのキーパッドレイアウトデータを、仮想キーボードの画像を生成するためにタッチセンシティブ表面ハードウェアドライバ4、キーパッドインタフェース3、およびオプションとして、ディスプレイドライバに利用できるようにすることが可能である。例えば、学習モジュールは、デフォルトのキーパッドレイアウト情報をキーパッドレイアウトデータ8にロードして、タッチセンシティブ表面デバイスドライバ4(またはコンピューティングデバイスもしくはオペレーティングシステムの他の構成要素)が、ブロック214でレイアウトデータにアクセスし、ブロック216でそのデータを使用して仮想キーパッドの表示を生成することができるようにすることが可能である。
【００４９】
プロセス200においてブロック208で、学習モジュールは、訓練ルーチンの一環としてユーザに与えるべき次の命令を獲得するように命令データベースにアクセスすることも可能である。図5を参照して後段でより詳細に説明されるとおり、学習モジュールが順次にアクセスして、ユーザに提示することができる一連の訓練命令がデータベースの中に格納されることが可能である。ブロック218で、選択された命令がユーザに表示される、または聴覚的に提示されることが可能である。ブロック220で、ユーザが、表示されたパラグラフまたは文をタイプすることなどによって、それらの命令に従うと、タッチセンシティブ表面デバイスドライバが、ユーザのタッチの座標をキャプチャする。ブロック222で、学習モジュール10が、タッチセンシティブ表面からキーストローク位置を受け取る。ブロック223で、学習モジュールが、それらのタッチ座標を、ユーザに対する命令に基づいて予期されていた特定のキーと互いに関係付けることが可能である。例えば、ユーザにタイプすべき或る文が提示されていた場合、予期されるキーは、タイプされるべき文中の次の文字である。タッチ位置を予期されるキーと互いに関係付ける際、学習モジュールは、特定のタッチセンシティブ表面座標を特定のキーに関連付ける。1つの態様において、学習モジュールは、受け取られたタッチ位置をデフォルトのキーパッドレイアウトデータと比較して、タイプされたキーを推測することも可能である。さらなる態様において、予期されるキーとデフォルトのキーパッドレイアウトの両方が、特定のキーストローク座標に関連付けられるべきキーを特定するのに使用されることが可能である。ブロック224で、タッチ座標-キー関連付けが、メモリの中に格納されたキーパッドレイアウトデータを更新する、または生成するのに使用されることが可能である。ブロック226で、学習モジュールが、更新されたキーパッドレイアウトデータをタッチセンシティブ表面デバイスドライバ(またはコンピューティングデバイスの他の構成要素)に利用できるようにして、ブロック214に関連して前述したとおり、更新されたキーパッドがユーザに表示され得るようにすることが可能である。
【００５０】
プロセス200における判定ブロック228で、学習モジュールは、或る特定のステップが行われたことをユーザが合図したかどうかを判定することが可能である。すべてではないものの、一部の訓練命令は、或る特定のステップが達せられると、スペースバーを2回、打つことなどによって、そのことを合図するようにユーザに求めることが可能である。その命令が行われていない(すなわち、判定ブロック228=「いいえ」)場合、学習モジュールは、ブロック222に戻り、次のユーザキーストローク座標を受け取り、さらに次のキーに関するキーパッドレイアウトデータを更新する。特定の命令が行われている(すなわち、判定ブロック228=「はい」)場合、学習モジュールは、判定ブロック230で、最後の訓練命令に達しているかどうかを判定することが可能である。最後の命令に達していない(すなわち、判定ブロック230=「いいえ」)場合、学習モジュールは、ブロック208に戻り、命令データベースからの次の命令にアクセスすることが可能である。次に、ユーザの訓練が、ブロック218から230に関連して前述したプロセスを繰り返すことによって進められることが可能である。最後の訓練命令に達している(すなわち、判定ブロック230=「はい」)場合、第3の学習モジュールは、訓練が完了したことをユーザに知らせることが可能であり、訓練プロセスは、ブロック232で終了されることが可能である。
【００５１】
図4は、命令がタッチセンシティブスクリーン上に表示されることが可能であることを示すが、これらの命令は、他の手段を介してユーザに与えられてもよい。例えば、これらの命令は、コンピューティングデバイスのオーディオ構成要素を介して聴覚的に提示されてもよい。
【００５２】
代替の態様において、コンピューティングデバイスは、ユーザが好ましい位置を選択し、そのような位置にキーを移動することを可能にするように構成されることが可能である。そのような実施形態において、仮想キーボードがタッチセンシティブ表面上で表示されることが可能であり、ユーザが、キーにタッチして保持し、次に、そのキーを新たな位置にスライドさせてから、タッチセンシティブ表面から指を上げるように促されることが可能である。学習モジュールは、このタッチとスライドの動きを認識することが可能であり、さらにその特定のキーに関する新たな位置を記録するようにキーボードレイアウトデータを更新することが可能である。同様に、ユーザは、表示された仮想キーボード上のいくつかのキーにタッチし、次に、仮想キーボードを引き伸ばすように、サイズ変更するように、さらに仮想キーボードの向きを変えるようにすべての指を動かすことによって、キーボード全体のサイズ変更することを許されることが可能である。例えば、ユーザは、QWERTYキーボード上のA、S、D、F、J、K、L、および;のキーにタッチし、次に、仮想キーボードを広げるように指をスライドさせて広げる、または仮想キーボードを縮めるように指をスライドさせて近づけるように促されることが可能である。ユーザは、或る特定のキーシーケンス(例えば、スペースキーを2回)を打って、このキー再配置プロセスの完了を合図するように促されることが可能である。
【００５３】
前述したとおり、学習モジュール10によって使用される訓練命令は、図5に示されるようなデータテーブルの形態であることが可能な、命令データベース106の中に格納されることが可能である。そのような命令データベースデータテーブル300は、インデックス302を介して学習モジュール10によって参照され、さらにユーザに対して表示を生成する、または聴覚命令を流すのに使用されることが可能である様々な命令306を含むことが可能である。また、命令データベースデータテーブル300は、推測エンジン100がキータッチ位置を特定のキーと互いに関係付けることができるように、ユーザが押すことが予期されるキーストローク308を含むことも可能である。例えば、命令データベースデータテーブル300は、タッチセンシティブ表面上でキーボードを位置付けるため(インデックス0)、およびデフォルトのキーボードをサイズ変更するため(インデックス1)の初期命令に続いて、推測エンジン100がユーザのタイピングパターンを学習することを可能にするようにユーザがタイプすることが可能な訓練テキスト(インデックス2および3)を含むことが可能である。命令データベース106の中の訓練ルーチンを編成することによって、推測マシン100および訓練ルーチンの更新が、学習モジュール10全体を置き換えることなしに達せられることが可能である。
【００５４】
学習モジュール10の動作は、学習モジュール10が、ユーザの指の位置について学習し、ユーザが様々なキーを再配置することを許し、さらに仮想キーボードレイアウトをさらに最適化するように一連のタイピングセッションを実施する例によって示されることが可能である。例えば、ユーザは、タッチセンシティブスクリーン上で「ASDF」キーが配置されることをユーザが選好する領域にユーザの左手を位置付け、タッチセンシティブスクリーン上で「JKL;」キーが配置されることをユーザが選好する領域にユーザの右手を位置付け、さらにスペースキーが配置されることをユーザが選好する場所に各親指を位置付けるように命令される(スピーカまたは表示されたテキストを介して)ことが可能である。代替として、ユーザは、キーボードのデフォルトのレイアウトを提示されて、特定のキーの上にユーザの指を置くように求められてもよい。例えば、図8は、両側にタッチスクリーン表面を有して、開かれると、ほぼフルサイズの仮想QWERTYキーボードがユーザに提示されるようになる移動デバイスのタッチスクリーン上で、ユーザに提示されることが可能なデフォルトのキーパッドレイアウト320の図である。
【００５５】
初期仮想キーボードレイアウトが確立されると、学習モジュール10が、ユーザの特定のタイピングパターンと一致するキー認識を向上させるようにキーボードレイアウトを改良するために、訓練ルーチンに参加するようにユーザを促すことが可能である。例えば、ユーザは、様々な決まった句を1回、または複数回、タイプするように促されることが可能である。例えば、ユーザは、「The quick brown fox jumped over the lazy dog's back」のような句をタイプするよう、ディスプレイ上で指示を与えられることが可能である。ユーザが各文字を打つにつれ、学習モジュール10が、タッチセンシティブ表面から受け取られたタッチ位置情報を、予期されるキーと比較する。次に、このタッチ位置情報が、キーパッドレイアウトデータ8の中の予期されるキーと互いに関係付けられることが可能である。1つの態様において、表示される仮想キーボード画像は、ユーザがタイプした場所にキー画像が移動することが可能であるように、各キーストロークで調整されることが可能である。学習モジュール10は、予期されるキーの予期される位置からしきい距離のキー打ちなどのタイピング誤りを無視するように構成されることが可能である。
【００５６】
ユーザがより多くタイプするほど、学習モジュールは、ユーザの固有のタイピングパターンによりよく合うように仮想キーパッドをカスタマイズすることができる。ユーザが、表示された句をタイプすることにとりかかると、各キーの中心点位置が、ユーザによる各キーに関する典型的なキー打ち位置を反映するように平均されることが可能である。そのような訓練ルーチンが進み、キー打ち位置の数が増えるにつれ、平均タッチ中心点は、変化がますます少なくなることが可能である一方で、特定のキー上のユーザのキー打ちのばらつきに関する情報が獲得されることが可能である。通常のキー打ち位置のばらつきに対処するために、学習モジュールは、平均中心点などの標準偏差などのキー打ち位置のばらつきを反映する統計パラメータを計算し、さらに仮想キー画像を、このばらつきを反映するサイズにすることが可能である。このため、ユーザが一貫した位置で打つキー(例えば、QWERTYキーボード上の「F」キーおよび「J」キー)が、相対的に小さいサイズで、対称的な形状(例えば、楕円形または正方形)で表示されることが可能である一方で、一貫性がなく打たれるキーは、比較的大きいサイズで、非対称的な形状(例えば、ばらつきの軸に沿って、より長く)表示されることが可能である。次に、ユーザのタイピングパターンについてのそのような学習の結果が、カスタマイズされた仮想キーパッドの表示を生成するのに使用されるキーパッドレイアウトデータの中に格納される。このようにしてキー位置およびキー形状が最適化された後のカスタマイズされた仮想キーボードレイアウトの例が、図9に示される。
【００５７】
図6Aは、訓練ルーチンにおいてユーザのキーストロークを学習するように学習モジュール10内で実施されることが可能である例示的なプロセス240を示す。プロセス240においてブロック242で、コンピューティングデバイス内の学習モジュール10が、一連のキーストロークを入力するように、または何らかの定義されたテキストをタイプするようにユーザを促すことが可能である。このことは、コンピューティングデバイスディスプレイ上でユーザがタイプすべきテキストを表示することによって、またはコンピューティングデバイスオーディオ回路を介してオーディオファイルを再生することによって達せられることが可能である。ユーザが、仮想キーボード(例えば、図8および図9に示される)上でタイプすると、コンピューティングデバイスが、ブロック242でタッチセンシティブ表面から各キーストロークの座標を受け取る。ブロック244で、学習モジュール10が、タイプされることが予期されるキーに基づいて、各キーストロークでタッチされた特定のキーを特定することが可能である。例えば、学習モジュール10は、ユーザが、促されたキーストロークまたはテキストをタイプするにつれ、その後を追っていくことが可能である。ブロック258で、学習モジュール10が、ブロック244で特定されたキーに関連する新たな平均キーストローク座標を計算することが可能である。例えば、学習モジュール10は、受け取られたタッチ座標を、その特定のキーに関するそれまでに受け取られたタッチ座標に足して、新たな平均座標を計算することが可能である。また、ブロック260で、学習モジュールが、ユーザのキーストロークのばらつきに対応する統計パラメータを更新することなどによって、新たなキーエンベロープを計算することも可能である。計算された平均キーストローク座標、および新たなキーエンベロープ統計を使用して、ブロック262で、学習モジュール10が、キーパッドレイアウトデータ8を更新することが可能である。判定ブロック264で、学習モジュールが、入力されたテキストに基づいて、ユーザによってタイプされるべきさらなる文字が存在するかどうかを判定することが可能である。入力されるべきさらなるテキストが存在する(すなわち、判定ブロック264=「はい」)場合、学習モジュールは、ブロック242に戻って、次のキース
トロークの座標を引き続き受け取ることが可能である。しかし、ユーザが、提示されるテキストのすべてをタイプ入力しており、したがって、その特定の学習セッションが終わりになっている(すなわち、判定ブロック264=「いいえ」)場合、学習モジュールは、ブロック242でメモリの中に更新されたキーパッドレイアウトデータ8を格納することが可能である。次に、この更新されたキーパッドレイアウトデータが、仮想キーボードジェネレータ(すなわち、タッチスクリーン、投影キーボードデバイスなど)に利用可能であることが可能である。
【００５８】
また、図6Aは、各キーが位置付けられるべき場所でタッチセンシティブ表面にタッチすることによって、仮想キーパッドにおける各キーの配置をユーザが指定することを可能にする単純な訓練モードも示す。このようにして、デフォルトのキーボードレイアウトの必要性は全くなく、ユーザは、タッチセンシティブ表面の境界内で任意の向きのキーボードを作成することができる。プロセス240においてブロック242で、学習モジュール10が、AからZまでの順序で各キーを順次にタイプするようにユーザを促す(例えば、視覚的に、または聴覚的に)ことが可能である。次に、ユーザが、表面に順次にタッチして、各文字キーに関する所望される位置を示すことが可能である。ブロック242で、学習モジュール10が、各タッチの座標を受け取る。ユーザは、各キー位置につき1回、表面にタッチするものと予期されるので、ブロック244で、学習モジュール10は、シーケンスにおける次のキーに基づいて、タッチされたキーを特定する。ブロック258で、学習モジュールが、タッチされたキーに関するキーストローク座標を計算する(すなわち、キーストローク座標の単一のセットの平均は、それらの座標自体である)。ブロック260は、ユーザが、各キーにつき1回だけしか表面にタッチしていないので、ユーザがキーボードレイアウトを初めて規定する際、不必要である可能性がある。ブロック252で、学習モジュールが、特定されたキーをタッチされた位置に結び付けるキーパッドレイアウトデータを初めて更新する、または作成する。このプロセスは、各キーに関するタッチが受け取られる(すなわち、判定ブロック264=「いいえ」)まで続き、受け取られた時点で、ブロック242でメモリの中にキーパッドレイアウトデータが格納される。
【００５９】
練習するいくつかの異なるテキストサンプルをユーザに提供することによって、学習モジュール10は、ユーザのタイピング誤りを減らすように仮想キーボードをユーザがカスタマイズすることを可能にすることができる。このため、学習モジュール10を訓練するプロセスは、ユーザが音声認識システムを訓練した仕方と同様であることが可能である。
【００６０】
1つの態様において、学習モジュール10は、キーボードレイアウトデータ8を改良するためにユーザのタイピングを追跡することを続け、その結果、より最適化されたキーボードレイアウトをもたらすことが可能である。図6Bは、よくあるタイプ入力誤りを認識することによって、仮想キーボードを継続的に改良するように学習モジュールにおいて実施されることが可能である例示的なプロセス260を示す。プロセス260においてブロック242で、学習モジュールが、仮想キーパッド上のユーザタイピングを監視して、各キーストロークの座標を受け取ることが可能である。ブロック244で、学習モジュールが、メモリの中に格納されたキーパッドレイアウトデータ8を使用して、タッチされたキーを特定することが可能である。このようにして、タッチされたキーの識別が、図3に示されるデバイスドライバ4および/またはキーパッドインタフェース3によって使用されるのと同一のデータを使用して学習モジュール10によって達せられることが可能である。代替として、学習モジュール10は、デバイスドライバ4またはキーパッドインタフェース3からキー識別を受け取ってもよい。スペルチェックルーチンまたは予測エントリルーチンを使用して、学習モジュール10は、判定ブロック246で、タイプされる語が完成したかどうかを判定することが可能である。また、完成した語は、スペース、カンマ、またはピリオドの入力によって認識されることも可能である。語が完成していない場合、学習モジュール10は、キーストロークを引き続き監視して、対応するキー打ちを特定することが可能である(ブロック242および244を繰り返して)。学習モジュールが、語が完成したと判定すると(すなわち、判定ブロック246=「はい」)、学習モジュールは、ブロック248で、入力された語をスペルチェック辞書と比較することが可能である。このようにして、学習モジュール10は、タイプされた語の文字が正しく認識されているかどうかを判定することができる。判定ブロック250で、学習モジュール10が、入力された語のスペルが正しいかどうかを判定することが可能である。入力された語のスペルが正しいと判定された(すなわち、判定ブロック250=「はい」)場合、学習モジュール10は、ブロック256から266を実行することによって、受け取られたキース
トロークデータを使用してキーパッドレイアウトデータを更新することにとりかかることが可能である。具体的には、ブロック256で、学習モジュールが、タイプされた語の第1の文字を選択し、ブロック258で、そのキーに関するキーストロークの受け取られたタッチ座標を使用して、その選択されたキーに関する新たな平均キーストローク座標を計算することが可能である。ブロック262で、学習モジュールが、その選択されたキーの平均中心点座標の周辺のキーストロークの新たなエンベロープを計算することが可能である。図10を参照して後段でより詳細に説明されるとおり、キーエンベロープパラメータのそのような更新には、各キーに関連付けられたタッチ位置確率プロファイルを生成する様々な統計分析が関わることが可能である。ブロック264で、更新されたキーパッドレイアウトデータが、更新されて、メモリの中に格納されることが可能である。判定ブロック266で、学習モジュールが、入力された語中に分析されるべきさらなる文字が存在するかどうかを判定することが可能であり、存在する場合、ブロック256に戻って、語中の次の文字を選択することが可能である。入力された語中のすべての文字が分析されている(すなわち、判定ブロック266=「いいえ」)場合、学習モジュール10は、ブロック242に戻って、ユーザによってタイプされた次の語のキーストローク座標を分析することが可能である。
【００６１】
プロセス260の判定ブロック250に戻ると、学習モジュール10が、入力された語にスペルの誤りがあると判定した(すなわち、判定ブロック250=「いいえ」)場合、判定ブロック252で、学習モジュールは、そのスペルの誤りが仮想キーボード上の隣接する文字の交代によるかどうかを判定することが可能である。この判定は、タイプされた語をスペルの正しい語と比較して、キーボード上で隣接する文字を入れ替えることがそのスペルの誤りを訂正するかどうかを判定することを含むことが可能である。スペルの誤りが、仮想キーボード上の互いに隣接する文字の混同による場合、このことは、その特定のキーのユーザのタイピングのばらつき、または最適化されていないキーパッドレイアウトに起因する可能性がある、ユーザのタイピングの誤った解釈を示すことが可能である。したがって、タイプ入力誤りが隣接するキーの交代による(すなわち、判定ブロック252=「はい」)場合、ブロック254で、学習モジュール10は、識別されたタイプ入力誤りを訂正するために、受け取られたタッチ座標に関連付けられたキー指定を変更することが可能である。また、学習モジュールは、前述したとおりブロック256から266を実行して、訂正されたキー指定に関してキーパッドレイアウトデータを分析し、更新することも可能である。そのようなよくあるタイピング誤りを認識し、訂正すること、および訂正されたキー指定を受け取られたタッチ座標と一緒に使用して、キーパッドレイアウトデータを改良することは、学習モジュール10が、ユーザがタイプしている間に、ユーザのキーストロークのばらつきを認識し、対処することを可能にする。そうすることにより、学習モジュールは、ユーザのタイピングパターンと一致する仮想キーボード上の各キーに関して規定された統計キーストロークエンベロープを改良することができる。
【００６２】
スペルの誤りが、隣接する2つの文字の交代によるのではない(すなわち、判定ブロック252=「いいえ」)場合、このことは、そのスペルの誤りが、真のスペルミスであり、キーパッドレイアウトデータを改良することによって回避され得るタイプ入力誤りに起因するものではなかったことを示す可能性がある。したがって、ユーザのキーストロークの分析は、ブロック256から266を参照して前述したプロセスを実行することに進むことなどによって、認識されたキーに基づいて進められることが可能である。
【００６３】
他の態様において、学習モジュールは、ユーザがタイピングに訂正を行った際に、そのようなユーザ訂正から学習するために、そのことを認識するように構成されることが可能である。図7は、ユーザタイピング訂正から学習するように学習モジュール10において実施されることが可能である例示的なプロセス270を示す。プロセス270においてブロック272で、学習モジュール10が、ユーザが、「バックスペース」キーまたは「削除」キーを押した際にそのことを示すコンピューティングデバイスからの割込みまたは信号を受け取ることが可能である。これらのキーが押されることは、ユーザがタイピング訂正を行っている可能性があることを示すので、ブロック274で、学習モジュール10が、削除された特定のキーを記録することが可能である。ユーザが、バックスペースキーを使用して多くのキーを連続して削除している場合、学習モジュール10は、削除された最後のキーだけを記録することが可能である。また、このプロセスの一環として、学習モジュール10は、この態様において、スタックメモリの中などの、メモリの中に一時的に格納されることが可能な削除されたキーに関するキーストローク座標にアクセスすることも可能である。一時的メモリの中に限られた数のキーストローク座標値を格納することによって、学習モジュール10は、ユーザがキーボード上でテキストを入力している間に通常、行われるユーザタイピング訂正から学習することができる。ブロック276で、学習モジュール10が、削除されたキーに置き換わったキーストロークのタッチ座標を受け取ることが可能であり、さらにブロック278で、それらの受け取られた座標をキーパッドレイアウトデータと比較することなどによって、削除されたキーに置き換わったキーを特定することが可能である。この時点で、学習モジュール10は、そのキーストローク座標データを削除されたキーに関連付けており、さらにその特定のキーストロークによって意図されていた置き換わりのキーを特定している。ユーザは、タイプ入力誤りを訂正するためだけでなく、多くの理由でタイピングを訂正するので、判定ブロック280で、学習モジュール10は、削除されたキーを置き換わりのキーと比較して、それら2つのキーが仮想キーボード上で互いに隣接しているかどうかを判定することが可能である。削除されたキーと置き換わりのキーが仮想キーボード上で互いに隣接してはいない(すなわち、判定ブロック280=「いいえ」)場合、このことは、その訂正が、単純な隣接するキーのタイプ入力誤りを訂正する以外の理由で行われていることを示し、したがって、ブロック272でバックスペースキーストロークを認識することによって始められた学習モジュールプロセスが、ブロック288で終了されることが可能である。
【００６４】
学習モジュールが、削除されたキーと置き換わりのキーが仮想キーボード上で隣接していると判定した(すなわち、判定ブロック280=「はい」)場合、ブロック282で、学習モジュール10は、元のキーストローク座標データを使用して置き換わりのキーに関する新たな平均キーストローク座標を計算することが可能である。ブロック284で、学習モジュール10は、置き換わりのキーに関する新たな統計エンベロープを計算することも可能である。つまり、学習モジュール10は、特定のキーのユーザ訂正に基づいて、行われたキーストローク誤りを認識し、入力されたキーストローク座標を使用して、キーパッドレイアウトデータをさらに最適化する。ブロック286で、更新されたキーパッドレイアウトデータがメモリの中に格納されることが可能であり、その後、ブロック272でバックスペースキー押下げまたは削除キー押下げを認識することによって始められた学習モジュールプロセスが、ブロック288で終了されることが可能である。
【００６５】
前述したとおり、学習モジュール10が、ユーザからの訓練入力を受け取ること、およびユーザのタイピングを監視することの結果は、ユーザの特定のタイピングパターンを反映するように仮想キーボード上のキーのサイズ、形状、位置、および向きを変換するキーパッドレイアウトデータであることが可能である。例えば、このプロセスは、図8に示されるようなデフォルトのキーボードフォーマットを表示することによって始まることが可能であり、このフォーマットを、学習モジュール10が、図9に示されるようなユーザ固有のカスタマイズされた仮想キーボードレイアウトに変換する。図8および図9に示される例は、ヒンジ322で開くデバイスの2つの外部表面にわたる移動デバイスのタッチスクリーンディスプレイ320上のQWERTYキーボードのものである。移動デバイスのこの設計は、ほぼフルサイズのキーボードをユーザに提供する一方で、様々な態様は、仮想キーボードが、移動デバイス上のユーザのタイピングに適応することを可能にする。
【００６６】
仮想キーパッドレイアウト上の個々のキー位置は、図10に示されるとおり、統計エンベロープ、または仮想キー中心点の周囲のエンベロープを計算することなどの、様々な統計分析方法を使用して改良されることが可能である。図10には、仮想キーパッド440の一部分だけが示される。キー位置は、「A」キー中心点402、「Q」キー中心点412、および「S」キー中心点420などの中心点に基づいて、仮想キーボード上で指定されることが可能である。そのような中心点は、「X-Y」座標または相対座標(例えば、キー間の角度オフセットおよび距離オフセット)を使用してタッチセンシティブ表面の形状内で配置されることが可能である。ユーザがタイピするキー打ち位置のばらつきは、キー中心点の周囲の統計的に規定されたエンベロープ406〜410、414〜418、および422〜426によって反映されることが可能である。例えば、最も内側のエンベロープ406、414、422が、1つの標準偏差相当量のキー打ちを包含するように各キー中心点の周囲に規定されることが可能である。そのような内側エンベロープは、特定のキーに関するキー打ち位置の大半を包含して規定されることが可能である。このため、この最も内側のエンベロープの範囲に入るキー打ちは、対応する中心点を有するキーとして確実に解釈されることが可能である。さらなる例として、第2のエンベロープ408、416、424が、中心点の2つの標準偏差量の範囲内のキー打ち位置などの、より多くのパーセンテージのキー打ち位置を包含して規定されることが可能である。そのようなエンベロープは、中心点の中間に当たるキー打ちの曖昧さを除くのに使用されることが可能である。例えば、或るキー打ちが、中心点402と中心点412の中間に当たるが、中心点402の第2の標準偏差エンベロープ408内に入る場合、コンピューティングデバイスは、そのキー打ちを、中心点402における「A」キーに対応するものとして確実に解釈することが可能である。また、第3の(またはさらなる)エンベロープ410、418、426が、キー中心点の周囲に規定されて、中心点の中間に当たるキー打ちの曖昧さを除くのをさらに助けることも可能である。例えば、或るキー打ちが、中心点402と中心点412の中間に当たり、さらに中心点402の第3の標準偏差エンベロープ410内、お
よび中心点412の第3の標準偏差エンベロープ418内に入る場合、コンピューティングデバイスは、当技術分野でよく知られている予測テキストアルゴリズムまたはスペルチェックアルゴリズムを使用することによるなど、別の技術が、これら2つのキー(ただし、他のキーではなく)を区別するのに使用されるべきであると判定することが可能である。例えば、不確かなキー打ちの前、および/または後に打たれたキーが、知られている作品のデータベースに照らして評価されて、曖昧なキー打ちに関して意図されていると思われる文字が特定されることが可能である。
【００６７】
図6A〜図7を参照して前述したとおり、エンベロープ406〜410、414〜418、および422〜426は、訓練セッション中、および通常のタイピング動作中のキー打ち位置を統計的に分析することによって計算されることが可能である。このプロセスは、標準偏差計算に関連して前段で説明されるが、他の統計測定が、キー中心点の周囲の適切なエンベロープを規定するのに使用されてもよい。
【００６８】
計算されたキーエンベロープは、仮想キーのサイズ、形状、および向きを規定するのにさらに使用されることが可能である。例えば、「Q」キー中心点412の周囲の統計エンベロープ414〜418は、1つの軸に沿ったばらつきが、別の軸に沿ったばらつきより大きいことを反映して、円形ではない。さらに、これらのエンベロープの対称性の軸は、仮想キーボード400の「Y」軸に対して或る角度にある。「Q」キーに関するユーザのキー打ちの、このサイズ、形状、および向きを反映して、この仮想キーは、「A」キーおよび「S」キーと比べて、より長いが、より細い形状を有するサイズにされており、このキーの長軸は、「Y」軸に対して或る角度にある。図10は、長方形のキー形状を示すが、キー形状は、円形、楕円形、三角形、非対称形、あるいはユーザがタイプするキー打ちパターンによって規定される他の形状であってもよい。
【００６９】
前述したとおり、仮想キーパッドレイアウトは、タッチスクリーンまたは投影キーボードなどのタッチセンシティブ表面で使用するためにユーザによって取り出されることが可能であるように、メモリの中に格納されて、ユーザに関連付けられることが可能である。この実施形態は、図11に示されるとおり、ネットワークなどを介して、格納されたキーパッドレイアウトデータにアクセスを有する任意のタッチセンシティブ表面上で、ユーザがユーザの仮想キーボードを使用することを許す。図11を参照すると、ユーザの仮想キーパッドレイアウトデータ506を格納するユーザレコード504を含む中央データストア500が、提供されることが可能である。例えば、インターネットアクセス可能なサーバが、多くのユーザがユーザの仮想キーパッドレイアウトデータ506を格納することができるカスタム仮想キーボードレイアウトデータの中央サーバデータベースリポジトリ(本明細書で中央データストア500と呼ばれる)の役割をすることが可能である。ユーザレコード504は、様々なタイプのユーザインタフェースおよびコンピューティングデバイスに関してなど、複数の仮想キーパッドレイアウトデータを含むことが可能である。例えば、ユーザが、或る特定の移動デバイス512に対応する仮想キーパッドレイアウトデータ506を有することが可能である。ユーザレコード504は、インターネットなどのネットワーク510を介して移動デバイス512に利用可能であり得る。タッチスクリーンディスプレイ520を有する移動デバイス512を使用するのに、ユーザは、インターネット510に接続して、中央データストア500にアクセスし、ユーザを認証するのに十分な情報を中央データストア500に入力することが可能である。中央データストア500に対して認証されると、ユーザは、ユーザのレコード504からの特定の仮想キーパッドレイアウトデータ506のダウンロードを要求することが可能である。要求された仮想キーパッドレイアウトデータ506は、インターネット510を介して移動デバイス512に伝送されて、仮想キーパッドデータストア514の中に格納されることが可能である。次に、移動デバイス512が、この受け取られた仮想キーパッドレイアウトデータを使用してタッチスクリーン520上に仮想キーボードを生成することが可能である。この
ようにして、ユーザの仮想キーパッド構成が、ポータブルで、遠隔アクセス可能にされることが可能である。
【００７０】
図11は、ユーザの仮想キーボードが移動デバイス512に移植される例示的な実施形態を示すが、仮想キーボードは、ユーザの仮想キーパッドレイアウトデータ506にアクセスを有する任意のコンピューティングデバイス上で実施されることが可能である。様々な態様は、仮想キーを、特定のユーザに合わせてカスタマイズされた位置に配置したので、そのような仮想キーボードを実施するシステムは、ユーザによって選択されたタッチセンシティブ表面上の任意の位置にキーボードを位置付けることが可能である。例えば、机、壁、大型スクリーンディスプレイ、およびホワイトボードなどの大きい表面が、接続されたコンピューティングデバイスのためにそのような表面のいくつかの部分が入力デバイスの役割をすることを可能にするタッチ検出センサを備えて構成されることも可能である。このため、大きいタッチセンシティブ表面に結合された様々な態様のいずれかを実施するコンピューティングデバイスは、ユーザが、ユーザのカスタマイズされた仮想キーボードを、ユーザが所望する任意の場所に配置することを許すことが可能である。例えば、コンピューティングデバイスに結合された、ユーザのタッチを感知するように構成された大型スクリーンディスプレイが、その表面上で、ユーザのカスタム仮想キーボードが提示されることをユーザが所望する位置に、ユーザが両方の手を置くことを許すことが可能である。コンピューティングデバイスは、ネットワーク510を介して中央データストア500にアクセスすることなどによって、メモリからユーザのカスタムキーボードに関するキーパッドレイアウトデータを呼び戻すことができ、さらにそのレイアウトデータをユーザの指のタッチと組み合わせて使用して、所望される場所に仮想キーボードを表示することができる。このようにして、ユーザの仮想キーボードは、ユーザがタッチセンシティブ表面にタッチした際に、それをコンピューティングデバイスが感知することができる任意の場所に提示されることが可能である。
【００７１】
図12Aは、コンピューティングデバイスが、ユーザタッチに応答してタッチセンシティブ表面上に仮想キーボードを生成することが可能である例示的なプロセス600を示す。プロセス600におけるブロック602で、タッチセンシティブ表面が、仮想キーパッド生成プロセスを開始することが可能なユーザのタッチを認識することが可能である。ブロック604で、タッチセンシティブ表面に結合されたコンピューティングデバイスが、その特定のユーザの身元を特定することが可能である。このことは、指紋認識、声紋認識、および手跡認識もしくは手のひら跡認識などのバイオメトリック法を含め、コンピューティングデバイスに個人を識別するための様々な知られている方法のいずれかを使用して達せられることが可能である。また、ユーザは、提示されたデフォルトのキーボードに識別子(例えば、ユーザ名およびパスワード)を入力することによって、コンピューティングデバイスにユーザを識別することも可能である。ブロック606で、コンピューティングデバイスが、ユーザのIDを使用して、仮想キーパッドレイアウトデータが格納された中央データベースにアクセスすることが可能である。ユーザのIDを使用して、コンピューティングデバイスは、仮想キーパッドレイアウトデータを呼び戻すことが可能である。ブロック608で、コンピューティングデバイスが、タッチセンシティブ表面上のユーザの指のタッチ位置を認識することも可能である。ユーザは、表面上でキーボードに関する所望される位置を示すために、或る特定の仕方でタッチセンシティブ表面にタッチすることを要求されることが可能である。例えば、ユーザは、左手および右手のそれぞれのスペースキーおよび4つの基本キーをユーザが見ることを所望する位置でタッチセンシティブ表面上に10本の指を置くことを要求されることが可能である。代替として、ユーザは、ユーザのリーチの寸法を示すために両方の手で、指を真っ直ぐに広げて、表面にタッチするように求められてもよい。ブロック610で、コンピューティングデバイスが、認識された指のタッチの位置をユーザの仮想キーパッドレイアウトデータと組み合わせて使用して、タッチセンシティブ表面上の適切な仮想キーボード位置を計算することが可能である。この計算は、利用可能な表面領域内に収まるように仮想キーボードを位置付けることなどの、タッチセンシティブ表面の寸法上の限度を考慮に入れることが可能である。ブロック612で、コンピューティングデバイスが、仮想キーパッドレイアウトデータを使用して、所望される位置にユーザの仮想キーボードの表示を生成する。この時点で、ユーザは、タッチセンシティブ表面上の所望される位置にユーザのカスタマイズされた仮想キーボードを提示され、その後、ユーザは、入力をタイプすることを始めることができ、それらの入力を、ブロック614で、コンピューティングデバイスが受け取り、処理することを始めることが可能である。
【００７２】
1つの態様において、タッチセンシティブ表面上のユーザの手の測定が、デフォルトの仮想キーボードをカスタマイズするのに使用されることが可能である。このプロセスは、カスタマイズされたキーパッドレイアウトが生成される前に、ユーザが初めてシステムと対話を始める際に役立つ可能性がある。また、このプロセスは、ユーザが、デフォルトのキーパッドを使用すること、ただし、ユーザの手に合うようなサイズにされたキーパッドを使用することを選好する場合に役立つ可能性がある。また、この態様は、ユーザが、完全にカスタマイズされた仮想キーボードをあえて作成する、またはダウンロードするほど長く、特定のコンピューティングデバイスを使用することにはならない場合に役立つ可能性がある。
【００７３】
図12Bは、この態様においてユーザの手の寸法に合わせてデフォルトのキーボードをカスタマイズするのに実施されることが可能である例示的なプロセス700を示す。プロセス700におけるブロック702で、コンピューティングデバイス上で動作する学習モジュール10が、このプロセスを開始するタッチセンシティブ表面上のユーザによるタッチを認識することが可能である。この認識が、コンピューティングデバイスとのユーザの対話の開始である場合、ブロック704で、学習モジュール10が、測定のために適切な位置のユーザの手を置くようにユーザを促すことが可能である。例えば、学習モジュールは、指が広げられて、親指がタッチした状態でタッチセンシティブ表面上に両方の手を置くようにユーザを促すことが可能である。この手の位置は、タッチセンシティブ表面が、ユーザの指の及ぶ全長を測定することを可能にする。別の例として、学習モジュール10は、タイプ中にユーザが使うことを意図する格好でタッチセンシティブ表面上にユーザの手を位置付けるようにユーザを促すことが可能である。ブロック706で、学習モジュール10が、タッチセンシティブ表面からタッチ位置情報を受け取り、その情報を使用して、ユーザの手の寸法を測定することが可能である。そのような測定は、小指-親指距離測定や手のひら-人差し指指先距離測定などの代表的な寸法に的を絞ることが可能である。ブロック708で、学習モジュール10が、手寸法測定を使用して、デフォルトのキーボードに関する適切なレイアウト寸法を計算することが可能である。このプロセスは、平均的な個人の人間工学的な研究に基づくアルゴリズムに従って、デフォルトのキーボードを拡大縮小することを含むことが可能である。代替として、このプロセスは、デフォルトのキーボードレイアウトを規定するのに使用される平均手寸法に対する測定された手寸法の比に基づいて、拡大縮小率を計算し、次に、その拡大縮小率をデフォルトのキーボードレイアウトの寸法に適用することを含んでもよい。ブロック710で、学習モジュール10が、計算された寸法をデフォルトのキーボードに適用することが可能であり、さらにブロック712で、適切なサイズにされたデフォルトのキーボードの表示を生成することが可能である。この時点で、ユーザは、ユーザがコンピューティングデバイスに入力を与えることを始めることができるカスタマイズされた仮想キーボードを有し、それらの入力がブロック714で受け取られる。
【００７４】
様々なコンピューティングデバイス上で表示され、使用されることが可能なポータブル仮想キーボードを可能にする態様は、様々な構造およびマシンが画像投影能力およびタッチ感知能力を組み込む場合に、非常に役立つ可能性がある。例えば、ユーザは、将来いつか、画像プロジェクタおよび光(または他の)タッチセンサシステムを含むフロントガラス(または他の表面)にタッチすることによって、ユーザの自動車内のコンピュータと対話することができることが可能である。この例において、ユーザが自動車フロントガラスにタッチすると、自動車のコンピュータは、そのタッチを感知し、メモリからユーザの仮想キーボードを呼び戻し、ユーザのタッチによって示された位置でフロントガラス上に仮想キーボードを投影する。
【００７５】
そのようなポータブル仮想キーボードの用途は、特に、図11に示されるとおり、インターネット510によってアクセス可能な中央データストア500の中に仮想キーボードを格納する能力と組み合わされる場合、多種多様である。そのような態様において、ユーザは、インターネットにアクセスを有するコンピューティングデバイスに結合された任意のタッチセンシティブ表面上でユーザのパーソナル仮想キーボードにアクセスすることが可能であり、インターネットを介してカスタム仮想キーボードデータベースがアクセスされることが可能である。
【００７６】
前述したとおり、ユーザは、移動デバイスを含め、様々なコンピューティングデバイスを使用してタッチセンシティブ表面上の仮想キーパッドと対話することが可能である。様々な態様で使用するのに適した典型的な移動デバイスは、図13に示される構成要素を共通で有する。例えば、例示的な移動デバイス1300が、内部メモリ1302に結合されたプロセッサ1301と、タッチスクリーンディスプレイ1303とを含むことが可能である。さらに、移動デバイス1300が、プロセッサ1301に結合された無線データリンクトランシーバおよび/またはセルラ電話トランシーバ1305に接続された、電磁放射を送受信するためのアンテナ1304を有することが可能である。いくつかの実施形態において、セルラ電話通信のために使用されるトランシーバ1305、ならびにプロセッサ1301およびメモリ1302のいくつかの部分は、無線データリンクを介してデータインタフェースを提供するので、ひとまとめにして無線インタフェースと呼ばれる。また、移動デバイス1300は、ユーザ入力を受け取るための物理的キーパッド1306、または小型キーボードおよびメニュー選択ボタンまたはロッカスイッチ1307を含むことも可能である。
【００７７】
移動プロセッサ1301は、本明細書で説明される様々な態様の機能を含め、様々な機能を実行するようにソフトウェア命令(アプリケーション)によって構成され得る任意のプログラマブルマイクロプロセッサ、マイクロコンピュータ、またはマルチプルプロセッサチップもしくは複数のマルチプルプロセッサチップであることが可能である。一部の移動デバイスにおいて、無線通信機能に専用の1つのプロセッサ、および他のアプリケーションを実行することに専用の1つのプロセッサなどの、複数のプロセッサ1301が提供されることが可能である。通常、ソフトウェアアプリケーションは、アクセスされて、プロセッサ1301にロードされる前、内部メモリ1302の中に格納されることが可能である。一部の移動デバイスにおいて、さらなるメモリチップ(例えば、SD(セキュアデータ)カード)がデバイス1300に差し込まれて、プロセッサ1301に結合されることが可能である。多くの移動デバイスにおいて、内部メモリ1302は、揮発性メモリ、またはフラッシュメモリなどの不揮発性メモリ、あるいは揮発性メモリと不揮発性メモリの両方であることが可能である。この説明に関して、メモリと一般的に呼ぶことは、内部メモリ1302、移動デバイスに差し込まれるリムーバブルメモリ、およびプロセッサ1301自体の内部のメモリを含め、プロセッサ1301によってアクセス可能なすべてのメモリを指す。
【００７８】
また、前述した態様は、図14に示されるパーソナルコンピュータ1460などの、様々なコンピューティングデバイスの任意のデバイス上で実施されることも可能である。そのようなパーソナルコンピュータ1460は、通常、揮発性メモリ1462、およびディスクドライブ1463などの大容量不揮発性メモリに結合されたプロセッサ1461を含む。また、コンピュータ1460は、プロセッサ1461に結合されたフロッピー（登録商標）ディスクドライブ1464およびCD(コンパクトディスク)ドライブ1465を含むことも可能である。通常、コンピュータデバイス1460は、マウス1467などのポインティングデバイス、およびタッチスクリーン1468もしくは他のタッチセンシティブ表面などのユーザ入力デバイスを含むことが可能なディスプレイ1469も含む。また、コンピュータデバイス1460は、USBコネクタソケットまたはFireWire(登録商標)コネクタソケットなどの、データ接続を確立する、または外部メモリデバイスを受けるための、プロセッサ1461に結合された、いくつかのコネクタポート、あるいはプロセッサ1461をネットワークに結合するための他のネットワーク接続回路1466を含むことも可能である。ノートブック構成において、コンピュータ筐体は、コンピュータ技術分野でよく知られているとおり、ポインティングデバイス1467、タッチスクリーン1468、およびディスプレイ1469を含む。
【００７９】
また、前述した態様のいくつかが、図15に示されるサーバ1500などの、様々な遠隔サーバデバイスのいずれかを使用して実施されることも可能である。そのようなサーバ1500は、通常、揮発性メモリ1502、およびディスクドライブ1503などの大容量不揮発性メモリに結合されたプロセッサ1501を含む。また、サーバ1500は、プロセッサ1501に結合されたフロッピー（登録商標）ディスクドライブおよび/またはCD(コンパクトディスク)ドライブ1506を含むことも可能である。また、サーバ1500は、ネットワーク回路1505を相手にデータ接続を確立するための、プロセッサ1500に結合された、いくつかのコネクタポート1504を含むことも可能である。
【００８０】
以上の例示的な説明は、単一のタッチセンシティブ表面で動作する単一のコンピューティングデバイスを含むが、態様および特許請求の範囲は、マルチプロセッサおよび複数コンピュータの実施形態、ならびに複数のタッチセンシティブ表面に結合されたコンピューティングデバイスにも同様に適用される。また、態様および特許請求の範囲は、1つまたは複数のタッチセンシティブ表面上で複数の仮想キーパッドを生成する実施形態にも同様に適用される。さらに、態様および特許請求の範囲は、2プレーヤビデオゲームにおいてなど、2名のユーザがコンピューティングデバイスと同時に対話することができるように、1つまたは2つのタッチセンシティブ表面上で生成される実施形態を包含する。例えば、コンピューティングデバイスが、タッチセンシティブウインドウ(例えば、店頭ウインドウ)に結合されることが可能であり、このタッチセンシティブウインドウ上にプロジェクタが2つのカスタマイズされた仮想キーパッド(例えば、この例では、ゲームコントローラまたはジョイスティック)およびゲーム表示を生じさせて、2名のユーザが、そのウインドウにタッチすることによって互いにビデオゲームで対戦することができるようにする。この例において、ユーザは、中央データベースまたはコンピューティング「クラウド」からアクセスされる、カスタマイズされた仮想キーパッドを介してコンピューティングデバイスと対話することが可能である。このため、ユーザは、ユーザが選好するアクションボタンを、ユーザが位置付けられるべきことを示す場所に含む、カスタマイズされたジョイスティックまたはゲームコントローラパッドを利用することが可能である。
【００８１】
以上の方法の説明およびプロセス流れ図は、単に説明的な例として与えられるに過ぎず、これらの様々な態様のステップが、提示された順序で実行されなければならないことを要求すること、または暗示することを意図するものではない。当業者には認識されるとおり、以上の態様におけるステップの順序は、任意の順序で実行されることが可能である。さらに、ステップ識別子の参照、ならびに「その後」、「次いで」、「次に」などの語は、それらのステップの順序を限定することは意図しておらず、そのような識別子および語は、単に、これらの方法の説明において読者を案内するのに使用される。
【００８２】
本明細書で開示される態様に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または電子ハードウェアとコンピュータソフトウェアの組合せとして実施されることが可能である。ハードウェアとソフトウェアの、この互換性を明確に示すのに、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップは、概ね、機能に関して前段で説明されてきた。そのような機能がハードウェアとして実施されるか、ソフトウェアとして実施されるかは、全体的なシステムに課せられる特定の応用上、および設計上の制約に依存する。当業者は、説明される機能を、それぞれの特定の用途のために様々な仕方で実施することができるが、そのような実施上の決定が、本発明の範囲からの逸脱を生じさせると解釈されるべきではない。
【００８３】
本明細書で開示される態様に関連して説明される様々な例示的なロジック、論理ブロック、モジュール、および回路を実施するのに使用されるハードウェアは、汎用プロセッサ、DSP(デジタルシグナルプロセッサ)、ASIC(特定用途向け集積回路)、FPGA(フィールドプログラマブルゲートアレイ)または他のプログラマブル論理デバイス、ディスクリートのゲートまたはトランジスタロジック、ディスクリートのハードウェア構成要素、あるいは本明細書で説明される機能を実行するように設計された以上の任意の組合せを使用して実施される、または実行されることが可能である。汎用プロセッサは、マイクロプロセッサであることが可能であるが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態マシンであってもよい。また、プロセッサは、コンピューティングデバイスの組合せとして、例えば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実施されることも可能である。代替として、一部のステップまたは方法は、所与の機能に専用の回路によって実行されてもよい。
【００８４】
1つまたは複数の例示的な態様において、説明される機能は、ハードウェアで、ソフトウェアで、ファームウェアで、あるいは以上の任意の組合せで実施されることが可能である。ソフトウェアで実施される場合、それらの機能は、コンピュータ可読媒体上に格納される、またはコンピュータ可読媒体上の1つまたは複数の命令もしくはコードとして伝送されることが可能である。本明細書で開示される方法またはアルゴリズムのステップは、実行される、コンピュータ可読媒体上に存在することが可能なプロセッサ実行可能ソフトウェアモジュールの中で実現されることが可能である。コンピュータ可読媒体には、1つの場所から別の場所へのコンピュータプログラムの転送を円滑にする任意の媒体を含め、コンピュータ記憶媒体と通信媒体がともに含まれる。記憶媒体は、コンピュータによってアクセスされることが可能な任意の利用可能な媒体であることが可能である。例として、限定としてではなく、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、あるいは命令もしくはデータ構造の形態で所望されるプログラムコードを伝送する、または格納するのに使用されることが可能であり、さらにコンピュータによってアクセスされることが可能である他の任意の媒体を備えることが可能である。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。例えば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、より対線、DSL(ディジタル加入者線)、あるいは赤外線、無線、およびマイクロ波などの無線技術を使用してウェブサイト、サーバ、または他の遠隔ソースから伝送される場合、その同軸ケーブル、光ファイバケーブル、より対線、DSL、あるいは赤外線、無線、およびマイクロ波などの無線技術が、媒体の定義に含められる。本明細書で使用されるディスク(disk)およびディスク(disc)には、CD(コンパクトディスク)、レーザディスク、光ディスク、DVD(ディジタルバーサタイルディスク)、フロッピー（登録商標）ディスク、およびブルーレイディスクが含まれ、ただし、ディスク(disk)は、通常、データを磁気的に再現するのに対して、ディスク(disc)は、レーザーを使用してデータを光学的に再現する。
また、以上の媒体の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。さらに、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれることが可能な、マシン可読媒体および/またはコンピュータ可読媒体の上のコードおよび/または命令の1つ、または任意の組合せもしくはセットとして存在することも可能である。
【００８５】
開示される態様の以上の説明は、任意の当業者が本発明を作成する、または使用することを可能にするように与えられる。これらの態様の様々な変形が、当業者には直ちに明白となり、本明細書において規定される一般的な原理は、本発明の範囲を逸脱することなく、他の態様に適用されることが可能である。このため、本発明は、本明細書で示される態様に限定されることを意図しておらず、本明細書で開示される原理および新奇な特徴と合致する最も広い範囲を与えられるべきものとする。
【符号の説明】
【００８６】
2  アプリケーション
3  キーパッドインタフェース
4  ハードウェアドライバ
8  キーパッドレイアウトデータ
10  学習モジュール
12  仮想キーパッド
14  タッチセンシティブ表面
100  推測エンジン
102  デフォルトのキーパッドデータテーブル
106  命令データベース
【図１】
0005377752.tif 000002
【図２】
0005377752.tif 000003
【図３】
0005377752.tif 000004
【図４】
0005377752.tif 000005
【図５】
0005377752.tif 000006
【図６Ａ】
0005377752.tif 000007
【図６Ｂ】
0005377752.tif 000008
【図７】
0005377752.tif 000009
【図８】
0005377752.tif 000010
【図９】
0005377752.tif 000011
【図１０】
0005377752.tif 000012
【図１１】
0005377752.tif 000013
【図１２Ａ】
0005377752.tif 000014
【図１２Ｂ】
0005377752.tif 000015
【図１３】
0005377752.tif 000016
【図１４】
0005377752.tif 000017
【図１５】
0005377752.tif 000018