(57)【要約】アプリケーションソフトウェアとキーパッドとの間の標準インタフェース、及び他のユーザインタフェース、としての役割をするモバイルデバイスシステムソフトウェアの一部としてキーパッドプロトコルが提供されている。キーパッドプロトコルは、アプリケーションがフィールド化された後で発展されることができるキーパッドを含んでいる多種多様なキーパッドと互換性のあるアプリケーションの開発を容易にするために、共通セットのインタフェース及びＡＰＩｓを提供することができる。同様に、キーパッドプロトコルは、キープレスイベント通知を認め、様々な製造者によって作られたキーパッドに対し構成情報を提供するために、共通セットのデータ構造及びインタフェースを提供することができる。キーパッドプロトコルは、アクティブ化され、モバイルデバイスに接続され、アプリケーションによって使用可能なキーパッドを、アプリケーションに通知することができる。アプリケーションは、そして、使用のために選択されたキーパッドをキーパッドプロトコルに通知し、そして同様に、選択されたキーパッドがアプリケーションとインタフェース接続する方法を構成することができる。
2010533926.tif 000002
【特許請求の範囲】
【請求項１】
モバイル上で動作しているアプリケーションを備えたキーパッドをインタフェース接続するための方法であって、
キーパッドプロトコルにおいて前記アプリケーションからキーパッド構成命令を受信することと、
前記キーパッドプロトコルにおいてキープレスイベント信号を受信することと、
前記キーパッドプロトコルにおいて前記の受信されたキーパッド構成命令を使用して前記キープレスイベント信号に関連づけられたキー値を決定することと、
前記アプリケーションに前記キー値を通信することと、
を備えている、方法。
【請求項２】
キーパッド変換表において前記キーパッド構成命令を保存すること、をさらに備えており、前記キープレスイベントに関連づけられた前記キー値は、前記キーパッド変換表を使用して決定される、請求項１に記載の方法。
【請求項３】
前記モバイルデバイスに接続されたアクティブ化されたキーパッドを決定するために、前記キーパッドプロトコルからクエリを発行することと、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドのリストを保存することと、
前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
をさらに備えている請求項１に記載の方法。
【請求項４】
前記アプリケーションにキーパッド機能を通知すること、をさらに備えている請求項３３に記載の方法。
【請求項５】
前記アプリケーションから、利用可能なキーパッドについてのリクエストを前記キーパッドプロトコルにおいて受信することと、
前記アプリケーションから受信された前記リクエストに応じて、前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
をさらに備えている請求項１に記載の方法。
【請求項６】
利用可能なキーパッドからの前記リクエストは、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項５に記載の方法。
【請求項７】
前記キーパッド選択は、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項５に記載の方法。
【請求項８】
キーに関連する前記アプリケーションから、グラフィックを前記キーパッドプロトコルにおいて受信することと、
前記の受信されたグラフィックファイルを表示するために前記の選択されたキーパッドを構成することと、
をさらに備えている請求項３に記載の方法。
【請求項９】
前記の受信されたグラフィックは、グラフィックファイルである、請求項８に記載の方法。
【請求項１０】
前記の受信されたグラフィックは、前記モバイルデバイスのメモリにおいて保存されるグラフィックファイルに対するポインタである、請求項８に記載の方法。
【請求項１１】
プロセッサと、
前記プロセッサに結合されたキーパッドと、
前記プロセッサに結合されたメモリと、
を備えており、
前記プロセッサは、
キーパッドプロトコルにおいて、アプリケーションからキーパッド構成命令を受信することと、
前記キーパッドプロトコルにおいて、キープレスイベント信号を受信することと、
前記キーパッドプロトコルにおいて、前記の受信されたキーパッド構成命令を使用して、前記キープレスイベントに関連づけられたキー値を決定することと、
前記アプリケーションに前記キー値を通信することと、
を備えるステップ、
を実行するソフトウェア命令で構成されている、
モバイルデバイス。
【請求項１２】
前記プロセッサは、キーパッド変換表において前記キーパッド構成命令を保存すること、をさらに備えるステップを実行するソフトウェア命令で構成されており、前記キープレスイベントに関連づけられた前記キー値は、前記キーパッド変換表を使用して決定される、請求項１１に記載のモバイルデバイス。
【請求項１３】
前記プロセッサは、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドを決定するために前記キーパッドプロトコルからクエリを発行することと、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドのリストを保存することと、
前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
をさらに備えるステップを実行するソフトウェア命令で構成される、
請求項１１に記載のモバイルデバイス。
【請求項１４】
前記プロセッサは、前記アプリケーションにキーパッド機能を通知すること、をさらに備えているステップを実行するソフトウェア命令で構成されている、請求項１３に記載のモバイルデバイス。
【請求項１５】
前記プロセッサは、
前記アプリケーションから、利用可能なキーパッドについてのリクエストを前記キーパッドプロトコルにおいて受信することと、
前記アプリケーションから受信された前記リクエストに応じて、前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
をさらに備えているステップを実行するソフトウェア命令で構成される、請求項１３に記載のモバイルデバイス。
【請求項１６】
利用可能なキーパッドからの前記リクエストは、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項１５に記載のモバイルデバイス。
【請求項１７】
前記キーパッド選択は、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項１５に記載のモバイルデバイス。
【請求項１８】
前記プロセッサは、
キーに関連する前記アプリケーションから、グラフィックを前記キーパッドプロトコルにおいて受信することと、
前記の受信されたグラフファイルを表示するために前記キーパッドを構成することと、
をさらに備えているステップを実行するソフトウェア命令で構成されている、請求項１３に記載のモバイルデバイス。
【請求項１９】
前記の受信されたグラフィックはグラフィックファイルである、請求項１８に記載のモバイルデバイス。
【請求項２０】
前記の受信されたグラフィックは、前記モバイルデバイスのメモリにおいて保存されるグラフィックファイルに対するポインタである、請求項１８に記載のモバイルデバイス。
【請求項２１】
プロセッサ実行可能なソフトウェア命令を保存しているタンジブル記憶媒体であって、前記プロセッサ実行可能なソフトウェア命令は、
キーパッドプロトコルにおいてアプリケーションからキーパッド構成命令を受信することと、
前記キーパッドプロトコルにおいてキープレスイベント信号を受信することと、
前記キーパッドプロトコルにおいて前記の受信されたキーパッド構成命令を使用して前記キープレスイベントに関連づけられたキー値を決定することと、
前記アプリケーションに前記キー値を通信することと、
を備えるステップ、をモバイルデバイスのプロセッサに実行させるように構成されている、タンジブル記憶媒体。
【請求項２２】
前記タンジブル記憶媒体は、キーパッド変換表において前記キーパッド構成命令を保存すること、を備えている更なるステップ、をモバイルデバイスのプロセッサに実行させるように構成されるプロセッサ実行可能なソフトウェア命令を有しており、前記キープレスイベントに関連づけられた前記キー値は、前記キーパッド変換表を使用して決定される、請求項２１に記載のタンジブル記憶媒体。
【請求項２３】
前記タンジブル記憶媒体は、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドを決定するために前記キーパッドプロトコルからクエリを発行することと、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドのリストを保存することと、
前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
を備える更なるステップをモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令、
を有する、請求項２１に記載のタンジブル記憶媒体。
【請求項２４】
前記タンジブル記憶媒体は、前記アプリケーションにキーパッド機能を通知することを備えるさらなるステップ、をモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２３に記載のタンジブル記憶媒体。
【請求項２５】
前記タンジブル記憶媒体は、
前記アプリケーションから、利用可能なキーパッドについてのリクエストを前記キーパッドプロトコルにおいて受信することと、
前記アプリケーションから受信された前記リクエストに応じて、前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知することと、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信することと、
を備えている更なるステップ、をモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、
請求項２１に記載のタンジブル記憶媒体。
【請求項２６】
前記タンジブル記憶媒体は、利用可能なキーパッドからの前記リクエストが、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信されるように、更なるステップをモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２５に記載のタンジブル記憶媒体。
【請求項２７】
前記タンジブル記憶媒体は、前記キーパッド選択が、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信されるように、更なるステップをモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２５に記載のタンジブル記憶媒体。
【請求項２８】
前記タンジブル記憶媒体は、
キーに関連する前記アプリケーションから、グラフィックを前記キーパッドプロトコルにおいて受信することと、
前記の受信されたグラフファイルを表示するために前記の選択されたキーパッドを構成することと、
を備える更なるステップ、をモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２３に記載のタンジブル記憶媒体。
【請求項２９】
前記タンジブル記憶媒体は、前記の受信されたグラフィックがグラフィックファイルであるように、更なるステップをモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２８に記載のタンジブル記憶媒体。
【請求項３０】
前記タンジブル記憶媒体は、前記の受信されたグラフィックが、前記モバイルデバイスのメモリにおいて保存されるグラフィックファイルに対するポインタであるように、更なるステップをモバイルデバイスのプロセッサに実行させるように構成されたプロセッサ実行可能なソフトウェア命令を有する、請求項２８に記載のタンジブル記憶媒体。
【請求項３１】
モバイルデバイスであって、
キーパッドプロトコルにおいてアプリケーションからキーパッド構成命令を受信するための手段と、
前記キーパッドプロトコルにおいてキープレスイベント信号を受信するための手段と、
前記キーパッドプロトコルにおいて前記の受信されたキーパッド構成命令を使用して前記キープレスイベントに関連づけられたキー値を決定するための手段と、
前記アプリケーションに前記キー値を通信するための手段と、
を備えているモバイルデバイス。
【請求項３２】
キーパッド変換表においてキーパッド構成命令を保存するための手段、をさらに備えており、前記キープレスイベントに関連づけられた前記キー値は、前記キーパッド変換表を使用して決定される、請求項３１に記載のモバイルデバイス。
【請求項３３】
前記モバイルデバイスに接続されたアクティブ化されたキーパッドを決定するために前記キーパッドプロトコルからクエリを発行するための手段と、
前記モバイルデバイスに接続されたアクティブ化されたキーパッドのリストを保存するための手段と、
前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知するための手段と、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信するための手段と、
をさらに備えている請求項３１に記載のモバイルデバイス。
【請求項３４】
前記アプリケーションにキーパッド機能を通知するための手段、をさらに備えている請求項３３に記載のモバイルデバイス。
【請求項３５】
前記アプリケーションから、利用可能なキーパッドについてのリクエストを前記キーパッドプロトコルにおいて受信するための手段と、
前記アプリケーションから受信された前記リクエストに応じて、前記アプリケーションに、前記モバイルデバイスに接続されたアクティブ化されたキーパッドを通知するための手段と、
前記アプリケーションから、キーパッド選択を前記キーパッドプロトコルにおいて受信するための手段と、
をさらに備えている請求項３１に記載のモバイルデバイス。
【請求項３６】
利用可能なキーパッドからの前記リクエストは、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項３５に記載のモバイルデバイス。
【請求項３７】
前記キーパッド選択は、アプリケーションプログラムインタフェース（ＡＰＩ）の形態で、前記アプリケーションから受信される、請求項３５に記載のモバイルデバイス。
【請求項３８】
キーに関連する前記アプリケーションから、グラフィックを前記キーパッドプロトコルにおいて受信するための手段と、
前記の受信されたグラフィックファイルを表示するために前記の選択されたキーパッドを構成するための手段と、
をさらに備えている請求項３３に記載のモバイルデバイス。
【請求項３９】
前記の受信されたグラフィックは、グラフィックファイルである、請求項３８に記載のモバイルデバイス。
【請求項４０】
前記の受信されたグラフィックが、前記モバイルデバイスのメモリにおいて保存されるグラフィックファイルに対するポインタである、請求項３８に記載のモバイルデバイス。
【発明の詳細な説明】
【優先権の主張】
【０００１】
（関連出願）
本願は、２００７年７月１６日に出願され、「動的に構成可能なキーパッド(Dynamically Configurable Keypad)」と題された米国仮出願第６０／９５０，１１２号の優先権を主張しており、その全体の内容は、参照によりここによって組み込まれている。
【発明の分野】
【０００２】
本発明は、一般的にモバイルコンピュータシステム(mobile computer systems)に関し、より具体的には、携帯電話のようなモバイルデバイス(mobile devices)上で使用するための、共通のキーパッドインタフェースソフトウェア層(a common keypad interface software layer)に関する。
【背景】
【０００３】
携帯電話のようなモバイル電子デバイス（モバイルデバイス）の使用は、それらの携帯性、接続性、そして常に増大している処理機能(ever increasing computing power)、により増えている。モバイルデバイスが精巧になるにつれ、アプリケーションソフトウェア(application software)の多様性と精巧さは高まり、モバイルデバイスを多目的の生産性ツール(multipurpose productivity tools)にしている。しかしながら、モバイルデバイス及びそれらのアプリケーションの有用性は、ユーザインタフェースにとって利用可能な小さなエリアに限定されている。従来の携帯電話は、固定構成(fixed configuration)の単純なキーパッドを含んでいた。最近、小型のＱＷＥＲＴＹキーボード、タッチスクリーンインタフェース、及び再構成可能なキー(reconfigurable keys)を特徴としたモバイルデバイスが発売された。よりよいユーザインタフェースを提供し、より有用なアプリケーションをサポートする、さらなるキーパッドの進化(keypad innovations)が期待されている。
【０００４】
従来、キーパッドは、キーの押下(depression of a key)を、モバイルデバイスとそのアプリケーションソフトウェアによって解釈されることができる電子信号に変換することによって、機能する。図１は、どのようにキープレスイベントがアプリケーションソフトウェアェアに通信されるかを示す典型的なモバイルデバイスのハードウェア／ソフトウェアのアーキテクチャ(architecture)を図示する。従来の固定キーパッド５上でキーを押すことは、回路を閉じる、あるいは、ハードウェアドライバ４により処理されることができる電子信号を結果としてもたらすキャパシタンスあるいは抵抗を変更する。ハードウェアドライバ４は、回路構成要素、ソフトウェア、あるいは特定のモバイルデバイスに依存するハードウェアとソフトウェアの合成であってもよい。ハードウェアドライバ４は、モバイルデバイス上で実行しているソフトウェアアプリケーションによって解釈されることができるフォーマットに、キーパッド５から受信された電子信号を変換する。この信号は、アプリケーションソフトウェアによってアクセス可能なメモリ表において割り込みされたあるいは保存された値の形であってもよい。そのようなメモリにおいて割り込みされたあるいは保存された値は、ワイヤレス用のバイナリ実行時間環境(Binary Runtime Environment for Wireless)（ＢＲＥＷ）、Ｗｉｎｄｏｗｓ（登録商標） Ｍｏｂｉｌｅ、及びＬｉｎｕｘ（登録商標）のような実行時間環境ソフトウェア層３によって受信されることができる。実行時間環境ソフトウェア層３の目的は、アプリケーションソフトウェアとモバイルデバイスとの間で共通のインタフェースを提供することである。したがって、キープレスイベント信号(key press event signals)は、キープレスイベントメッセージの形態においてアプリケーション層２へと受け渡される。アプリケーションソフトウェアは、キープレスイベントの意義を理解できるべきであり、したがって、根本的なハードウェアドライバ(underlying hardware driver)４とキーパッドハードウェア５とを適応させるように、書き込まれなくてはならない。キープレスイベントはまた、特定のキーに関連づけられた値を表示するためにユーザインタフェース層１に通信されることができる。
【０００５】
例えば図１で図示されているような既知システム／ハードウェアのアーキテクチャを使用して、アプリケーション開発者は、キーパッドのレイアウトと、アプリケーションがロードされる可能性がある各タイプのモバイルデバイスに対して固有な関連づけられた機能と、に自分たちのソフトウェアを適応させなくてはならなかった。したがって、従来のキーパッドのために構成されたアプリケーションはタッチスクリーンキーパッドを有するモバイルデバイス上で機能しないかもしれない、また、タッチスクリーンを備えたモバイルデバイスのために書き込まれたアプリケーションは、従来のモバイルデバイス上で動作しないだろう。アプリケーション開発者が、いくつかの種類のデバイス上で使用されることができる単独のアプリケーションを書き込みたい場合には、開発者は、様々なモバイルデバイス上で使用されることができる異なる種類のキーパッドのすべてを、ソフトウェアにおいて、予測し処理しなくてはならなかった(had to anticipate and address)。したがって、アプリケーションソフトウェアは、各タイプのデバイスのキーボードレイアウト及びキープレスイベント信号と相互作用するために必要とされるコード及び情報を含む必要があるだろう。この必要要件は、ソフトウェアの複雑さを増やし、アプリケーション開発者が様々なデバイス上で実行されることができる入手可能なアプリケーション(affordable applications)を提供することを困難にした。さらに、アプリケーション開発者は、まだ開発されていないキーパッドを使用する今後のモバイルデバイス上で動作可能なアプリケーションを書き込むことができなかった。結果、アプリケーション開発は、必然的にハードウェア開発に遅れた。さらに、異なる種類のデバイス上で使用される異なるキーパッドのレイアウト及び機能は、開発者が様々なモバイルデバイスにわたる共通の外観及び感触(a common look and feel)を有するアプリケーションを作ることを困難にした。
【発明の概要】
【０００６】
様々な実施形態のシステム及び方法は、アプリケーションソフトウェアのための標準キーパッドインタフェースを提供するモバイルデバイスのソフトウェアのアーキテクチャ内で、キーパッドプロトコルインタフェース層を提供する。キーパッドプロトコルは、アプリケーションがキーイベントの定義(key event definitions)を規定し、様々なキーパッドを使用するためにグラフィクス(graphics)を提供することと、アプリケーションによって標準フォーマット認識可能な標準フォーマットでキープレスイベントを受信することと、を可能にする。共通のキーパッドインタフェースを提供することによって、キーパッドプロトコルは、ユーザインタフェースに関するアプリケーション開発プロセスを単純にし、様々な異なるキーパッド構成を使用する様々な異なるタイプのモバイルデバイス上で動作するように単独のアプリケーションを可能にする。キーパッドプロトコルはまた、予測テキスト、変換(translation)、スペルチェックのソフトウェアのような、キーストローク解釈アプリケーション(key stroke interpretation applications)に対するインタフェースとして役立つことができる。キーパッドプロトコルはまた、ユーザがユーザインタフェース上でうまく制御することを可能にする。
【図面の簡単な説明】
【０００７】
【図１】図１は、標準的な従来の携帯電話のハードウェア／ソフトウェアのアーキテクチャブロック図である。
【図２】図２は、様々な実施形態によってイネーブルにされる携帯電話のシステム(a cell phone system)のシステムコンポーネント図である。
【図３】図３は、実施形態による、ハードウェア／ソフトウェアのアーキテクチャ図の一部分である。
【図４】図４は、様々な実施形態で使用可能な典型的な携帯電話のコンポーネントブロック図である。
【図５】図５は、一実施形態のハードウェア／ソフトウェアのアーキテクチャブロック図である。
【図６】図６は、別の実施形態のハードウェア／ソフトウェアのアーキテクチャブロック図である。
【図７】図７は、一実施形態による、通信フローを図示しているソフトウェアのアーキテクチャブロック図の一部分である。
【図８】図８は、一実施形態によってイネーブルにされた機能性の一部のプロセスフロー図である。
【図９】図９は、図８で図示されたプロセスステップに関連づけられたメッセージのメッセージフロー図である。
【図１０】図１０は、一実施形態の機能性の一部のプロセスフロー図である。
【図１１】図１１は、一実施形態において使用するのに適したデータ構造である。
【図１２】図１２は、一実施形態による、キー変換表(a key translation table)のためのデータ構造である。
【図１３】図１３は、一実施形態の機能性の一部のプロセスフロー図である。
【図１４】図１４は、一実施形態による、キープレスイベント割り込みのデータ構造である。
【図１５】図１５は、一実施形態の機能性の一部のプロセスフロー図である。
【図１６】図１６は、図１５で図示されたプロセスステップに関連づけられたメッセージのメッセージフロー図である。
【図１７】図１７は、一実施態様と組み合わせて予測テキストアプリケーションを使用する実施形態のプロセスフロー図である。
【図１８】図１８は、図１７に図示されたプロセスステップに関連づけられたメッセージのメッセージフロー図である。
【図１９】図１９及び図２０は、それぞれ、ディスプレイキーを使用しているキーパッドの平面図と、断面図である。
【図２０】図１９及び図２０は、それぞれ、ディスプレイキーを使用しているキーパッドの平面図と、断面図である。
【図２１】図２１及び図２２は、タッチスクリーンユーザインタフェースを含んでいる携帯電話の図である。
【図２２】図２１及び図２２は、タッチスクリーンユーザインタフェースを含んでいる携帯電話の図である。
【図２３】図２３は、キーの上部に位置したディスプレイを含んでいる携帯電話の図である。
【図２４】図２４及び図２５は、異なるキー値記号を表しているキーパッドディスプレイを使用している実施形態の図である。
【図２５】図２４及び図２５は、異なるキー値記号を表しているキーパッドディスプレイを使用している実施形態の図である。
【図２６】図２６及び図２７は、異なるキーパッド記号を表しているタッチスクリーン携帯電話の図である。
【図２７】図２６及び図２７は、異なるキーパッド記号を表しているタッチスクリーン携帯電話の図である。
【図２８】図２８及び図２９は、異なるキーパッド記号を表しているキーディスプレイを含んでいる携帯電話の図である。
【図２９】図２８及び図２９は、異なるキーパッド記号を表しているキーディスプレイを含んでいる携帯電話の図である。
【図３０】図３０は、メディアプレイヤープリケーションが作動した状態の従来の携帯電話の図である。
【図３１】図３１は、メディアプレイヤープリケーションが作動した状態でディスプレイキーを使用している携帯電話の図である。
【図３２】図３２は、メディアプレイヤーが作動した状態で、タッチスクリーンユーザインタフェースを使用している携帯電話の図である。
【図３３】図３３は、メディアプレイヤープリケーションが作動した状態で、キーディスプレイを使用している携帯電話の図である。
【図３４】図３４は、メディアプレイヤープリケーションが作動した状態で、タッチスクリーンディスプレイを有している携帯電話の図である。
【図３５】図３５は、ゲームアプリケーションを作動した状態の従来の携帯電話の図である。
【図３６】図３６は、ゲームアプリケーションを作動した状態で、キーパッドディスプレイを使用している携帯電話の図である。
【図３７】図３７は、ゲームアプリケーションを作動した状態で、タッチスクリーンユーザインタフェースを使用している携帯電話の図である。
【図３８】図３８は、ゲームアプリケーションを作動した状態で、キーディスプレイを使用している携帯電話の図である。
【図３９】図３９は、ゲームアプリケーションを作動した状態で、タッチスクリーンディスプレイインタフェースを有している携帯電話の図である。
【詳細な説明】
【０００８】
ここにおいて組み込まれ本明細書の一部を構成する添付図面は、本発明の例示的な実施形態を図示しており、上記の一般的な説明と、下記の詳細な説明と、を用いて、本発明の特徴を説明する役割をする。
【０００９】
様々な実施形態は、添付図面を参照して、詳細に説明されている。可能であれば、同じあるいは同様な部分を言及するために、同じ参照番号が図面全体にわたって使用される。特定の例及びインプリメンテーションに対して行なわれた参照は、説明の目的のためであって、本発明あるいは特許請求の範囲を制限するために意図されていない。
【００１０】
ここにおいて使用されるように、用語「モバイルハンドセット(mobile handsets)」、「モバイルデバイス(mobile devices)」は、互換性をもって使用されており、様々な携帯電話(cellular telephones)、携帯情報端末（ＰＤＡ’ｓ）、パームトップコンピュータ(palm-top computers)、ワイヤレスモデムを備えたラップトップコンピュータ、ワイヤレス電子メール受信機（例、ＢｌａｃｋｂｅｒｒｙとＴｒｅｏ機器）、携帯電話、マルチメディアインターネット可能な携帯電話（例、ｉＰｈｏｎｅ）、及び同様なパーソナル電子デバイス、のうちのいずれか１つを指す。モバイルデバイスは、図４を参照して下記でより十分に説明されているように、プログラム可能なプロセッサ及びメモリを含むことができる。好ましい実施形態では、モバイルデバイスは、セルラハンドヘルドデバイス(cellular handheld device)（例、携帯電話）であり、そしてそれは、携帯電話ネットワーク(cellular telephone network)を介して通信することができる。
【００１１】
現代の携帯電話及び他のモバイルデバイスは、ユーザ入力を受信するための様々な異なるキーパッドを活用する。さらなる適応性を提供する新しい種類のキーパッドが今後期待されている。さらに、モバイルデバイス１０は、図２に図示されているような、キーボード、キーパッド、及びゲームインタフェースのような外部のユーザインタフェースに接続されることができる。したがって、モバイルデバイス１０は、ここにおいて説明されているようなキーパッド２０、あるいはタッチスクリーンキーパッド、を含んでいてもよく、さらに、例えば、ＦｉｒｅＷｉｒｅあるいはＵＳＢケーブルのようなケーブル５２の手段によって、外部キーボード５０に接続されてもよい。モバイルデバイス１０はまた、ケーブル５６によるドローイングパッド(drawing pad)５４のような、タッチセンシティブディスプレイあるいはユーザインタフェース(a touch sensitive display or user-interface)に接続されることができる。ゲームアプリケーションの十分なエンタテイメント機能(entertainment functionality)を十分に活用するために、ジョイスティック(joystick)５８のようなゲームインタフェースデバイス(game interface devices)は、例えばケーブル５９によってモバイルデバイス１０に接続されることができる。ケーブルコネクタの代わりに、あるいは、ケーブルコネクタに加えて、キーボード６０のような外部ユーザ入力デバイスは、Ｂｌｕｅｔｏｏｔｈ（登録商標）ワイヤレスデータリンクあるいは赤外線データリンク（例えば赤外線通信協会（ＩｒＤＡ）の仕様書による）のようなワイヤレスデータリンク６２によってモバイルデバイスに結合されることができる。多くの異なる種類のユーザインタフェースが消費者にとって利用可能なので、アプリケーション開発者は、新しいアプリケーションソフトウェアを書き込むときに課題に直面する。以前は、開発者は、アプリケーションに関連して使用されうる各キーボードあるいはキーパッドに関連づけられた構成及びシグナリングを知り、そして、アプリケーションがキーパッドと働くことを可能にするのに必要なコード及び値を含む必要があった。
【００１２】
外部キーパッドに加えて、いくつかの現代のモバイルデバイスは、デバイス内で統合された２以上のキーパッドを含んでいる。例えば、いくつかの携帯電話の設計は、電話の呼び出しを位置づけることにおいて使用される数字のキーパッドと、キーボードを露出するために、電話の一部をスライドする、開ける、あるいは回転することによってアクティブな状態にされることができる小型のキーボードを含む。別の例として、いくつかの携帯電話は、ユーザの選択及びアプリケーションソフトウェアによってパッシブディスプレイ(passive display)あるいはタッチセンシティブインタフェースとして操作されることができる、固定されたキーパッド(fixed keypad)とタッチスクリーンユーザインタフェース(touchscreen user-interface)とを含むことができる。したがって、外部キーボードあるいは取り付けられたインタフェースを有さないモバイルデバイス１０でさえ、アプリケーションソフトウェアとインタフェース接続するための複数のキーパッドを含むことができる。
【００１３】
様々な実施形態は、様々なキーパッドとの操作のためにアプリケーションソフトウェアの開発を単純化するシステムソフトウェア内で、キーパッドプロトコル層を提供する。図３で図示されるように、キーパッドプロトコル１００は、アプリケーションソフトウェア１８０と様々なキーパッド及びインタフェース５０、６０、１２２との間のインタフェース層としての役割を果たす。実施形態では、キーパッドプロトコルは、アプリケーション開発者が標準ソフトウェア命令(software instructions)を予期し適応する標準フォーマットで、アプリケーション１８０に対してキーイベント通知(key event notifications)を送信することができる。同様に、キーパッドプロトコル１００は、アプリケーションプログラムインタフェース(application program interfaces)（ＡＰＩ）の標準セットのような標準フォーマットにおいて、アプリケーション１８０からグラフィクス(graphics)と構成コマンド(configuration commands)を受信することができる。
【００１４】
キーパッドプロトコルは、キーパッド内で、あるいはモバイルデバイス自体内で、キーパッドドライバ１２６からキーパッド信号を受信することができる。同様に、キーパッドプロトコル１００は、キーパッドドライバ１２６に対してキーパッド構成コマンド(keypad configuration commands)を送ることができる。新しいタイプのキーパッド及びユーザインタフェースの開発を単純化するために、キーパッドプロトコル１００は、キーパッド開発者は適応されるべき標準セットのハードウェアインタフェースを有するように、キーパッドプロトコル１００が認識する標準データ構造及び割り込み、のような標準セットのインタフェース(a standard set of interfaces)を提供することができる。同様に、キーパッドプロトコル１００は、キーパッド開発者がそれらの製品が受信し処理することができなくてはならない標準セットのコマンド及び信号を有するように、標準セットのキーパッド構成コマンド(a standard set of keypad configuration commands)を提供することができる。したがって、キーパッドプロトコル１００はまた、新しいユーザインタフェースのデバイス及び技術の開発を促進する。
【００１５】
実施形態では、キーパッドプロトコル１００は、２つの基本コンポーネント、すなわち、キーパッドプロトコルソフトウェア層(a keypad protocol software layer)１０２とキーパッドコントローラ層(a keypad controller layer)１０４を含んでいてもよい。
【００１６】
キーパッドプロトコル層１０２は、アプリケーション開発者がアプリケーションソフトウェアを開発することにおいて利用することができる、標準セットのＡＰＩｓ(a standard set of APIs)を含んでいてもよい。したがって、キーパッドプロトコル層１０２は、より高レベルのソフトウェアのための標準ソフトウェアインタフェースとして役立つことができる。キーパッドコントローラ層１０４は、キーパッドドライバ１１０と直接インタフェース接続するために調整された(tailored)ソフトウェアを含んでいてもよい。したがって、キーパッドコントローラ層１０４は、特定のキーパッドドライバ１１０から受信されたキーイベント信号に基づいて押された特定のキーを識別する機能を含むことができる。キーパッド機能およびインタフェース信号の性質が異なるタイプのキーパッドの中で劇的に異なっている可能性があるので、キーパッドコントローラ層１０４は、そのような複雑さを適応し、アプリケーション層１８０から複雑さを隠すために(accommodating such complexity and hiding the complexity from the application layer 180)、ソフトウェア層を提供する。
【００１７】
いくつかのキーパッドデバイス１２２は、キーパッド上で生じるキープレスイベントをトラッキングするステートマシン１２８を含んでいてもよい。キーパッドコントローラ層１０４は、キーパッドプロトコル１０２によってアプリケーション１８０に解釈され、受け渡されなくてはならないキーイベントを決定するために、ステートマシン１２８に周期的にアクセスしてもよい。
【００１８】
ここにおいて記載された実施形態は、様々なモバイルデバイスのうちのいずれかの上でインプリメントされることができる。典型的に、そのようなモバイルデバイスは、共通して、図４で図示されるコンポーネントを有するであろう。例えば、モバイルデバイス１０は、内部メモリ１２およびディスプレイ１３に結合されたプロセッサ１１を含んでいてもよい。さらに、モバイルデバイス１０は、ワイヤレスデータリンクに接続される電磁放射を送信し受信するためのアンテナ１４、及び／または、プロセッサ１１に結合された携帯電話のトランシーバ１５、を有するであろう。いくつかのインプリメンテーションでは、トランシーバ１５と、プロセッサ１１の部分と、携帯電話通信に使用されるメモリ１２は、ワイヤレスデータリンクを介してデータインタフェースを提供するので、ワイヤレスインタフェースを集約的に指す。さらに、モバイルデバイス１０は、ワイヤレスキーパッド６０のような他のコンポーネントとのワイヤレスデータリンクを確立するための、ＢｌｕｅＴｏｏｔｈトランシーバのような中距離トランシーバ１６に対するクローズ(a close)を含んでいてもよい。モバイルデバイス１０はまた、キーボード５０、６０、タッチスクリーン５４、あるいはゲームコントローラ（例、ジョイスティック５８）のような外部デバイスとの通信リンクを確立するための、プロセッサ１１に接続された赤外線データリンク（例、ＩＲＤＡ）トランシーバ１９と同様に、プロセッサ１１にデータケーブルを接続するためのコネクタプラグ、例えばＦｉｒｅＷｉｒｅコネクタ１７及び／またはＵＳＢコネクタ１８、を含むことができる。モバイルデバイス１０はまた、一般的に、ユーザ入力を受信するために、キーパッド２０、あるいは、小型のキーボード及びメニュー選択ボタンあるいはロッカースイッチ(rocker switches)２１、を含み、そして、アプリケーションプログラム可能ボタン(application-programmable buttons)２２、２３、２３を含むことができる。
【００１９】
図５は、実施形態をインプリメントするハードウェア／ソフトウェアのアーキテクチャを図示する。図示されているように、キーパッドプロトコル１００は、様々なハードウェアドライバ１１０に、そして、ＢＲＥＷ層１７０のような、実行時間環境ソフトウェアに、リンクするシステムソフトウェアの一部として提供されている。ハードウェアユーザインタフェース１２０、例えば、従来の固定キーパッド２０、外部キーパッド５０、タッチスクリーン７０、ディスプレイキーのキーパッド８０（下記でより詳細に説明されている）及び他のものは、各々、それぞれのハードウェアドライバ１１０を有することができる。キーイベント信号は、キーパッド１２０から関連キーパッドハードウェアドライバ１１０へと送信される。キーパッドドライバ１１０は、キーイベント電子信号(key event electrical signal)を、キーパッドプロトコル１００によって理解されることができるフォーマットに変換する(translates)。上記で説明されているように、すべてのキーパッドデバイス１２０についてドライバを開発することにおいて使用されることができる共通のインタフェース仕様書をハードウェアドライバ開発者が有するようにこのフォーマットは標準化されることができる。
【００２０】
キーパッドプロトコル１００は、通知オブジェクト(notification object)のようなキープレスイベントメッセージを構成しており、そしてそれは、アプリケーション１８０によって解釈されることができる。この構成されたキープレスイベントメッセージ／通知オブジェクトは、実行時間環境ソフトウェア層１７０を通じてアプリケーション１８０に受け渡されてもよい。あるいは、キーパッドプロトコル１００は、アプリケーション１８０に直接、キープレスイベントメッセージ／通知オブジェクトを通信することができる。アプリケーション１８０はまた、ユーザインタフェース層１９０にキープレスイベントを通信することができる。あるいは、キーパッドプロトコル１００は、ディスプレイ１３上の提示(presentation)のために、ユーザインタフェース層１９０に対し、キー値を通信することができる。
【００２１】
ディスプレイキー及びタッチスクリーンを含んでいるキーパッドのようなさらなる機能のキーパッドを十分に活用するために、アプリケーション１８０は、キーパッドを構成するためのキーパッド定義コマンド及びグラフィクスを提供することができる必要がある。そのような定義およびグラフィック情報(graphic information)は、直接あるいは実行時間環境層１７０の手段で、キーパッドプロトコル１００に対して、アプリケーション１８０によって提供されることができる。同様に、ユーザインタフェースソフトウェア１９０は、キーパッドプロトコル１００に対し、キーパッドの定義及びグラフィック構成情報を提供することができる。キーパッドプロトコル１００は、関連ハードウェアドライバ１１０に構成コマンドを提供することにより、選択されたキーパッドデバイス２０、５０、７０、８０を構成するためにそのような定義およびグラフィック情報を使用する。グラフィクスを表示することができるキーパッドデバイスは、下記でより詳細に説明されるように、ハードウェアドライバ１１０から、グラフィックファイル（あるいは、グラフィックファイルへのポインタ(pointers to graphic files)）を受信することができる。
【００２２】
図５はまた、キーパッドプロトコル１００の別の利点を図示する。モバイルデバイス１０は、いずれの数の異なるキーパッド及び他のユーザインタフェースデバイスに接続されることができる。アプリケーション１８０は、１つのキーパッドあるいはユーザインタフェースデバイスのみを使用することができる。アプリケーション層１８０とハードウェアドライバ１１０との間のキーパッドプロトコル１００を含むことにより、アプリケーション開発者は、利用可能なキーパッド１２０を識別し使用のための特定のキーパッドを選択するために、アプリケーションソフトウェアのための単純な方法を提供されることができる。したがって、モバイルデバイス１０は多数のキーパッドインタフェースを含んでもよく、アプリケーション１８０は、共通セットのキーパッドインタフェースコマンド及びＡＰＩｓを使用して、単独のキーパッドのみ対処する必要がある。さらに、アプリケーション１８０は、それに対して利用可能な多数のキーパッドから、最適なキーパッドを選択することができる。キーパッドプロトコル１００は、この選択及びその選択されたキーパッドとの相互作用を単純化する。
【００２３】
アプリケーション１８０と複数のキーパッド１２０との間のインタフェースを単純にすることに加えて、キーパッドプロトコル１００はまた、予測テキスト、スペルチェック、及び言語変換(language translation)アプリケーションのようなキー入力解釈(key entry interpretation)に関するアプリケーションソフトウェアと相互作用することができる。このオプションは、図６に示されるハードウェア／ソフトウェアのアーキテクチャブロック図において図示される。キーパッドプロトコル１００が各キープレスイベントに関連づけられたキー値を決定するので、この情報は、キー入力アプリケーション(key entry applications)１０６、１０７、１０８を対象とすることができる。図１７及び１８を参照すると下記で詳細に説明されるように、予測テキストエンジン１０６のようなキー入力アプリケーションがアクティブ化されると、キーパッドプロトコル１００は、予測テキストエンジン１０６に各キー値を送信し、予測テキストエンジン１０６から受信された情報をアプリケーション１８０に転送する。キーパッドプロトコル１００内でキー入力アプリケーションインタフェースを含むことにより、すべてのキー入力関連の機能は、システムソフトウェアによって処理されることができる。このように、キー入力アプリケーションによって生成される情報はアプリケーション層１８０に受け渡されることができ、したがって、アプリケーションソフトウェアを簡略化にする。
【００２４】
図６はまた、実行時間環境層１７０がモバイルデバイスにおける使用に利用可能な既知のオペレーディングシステムのうちのいずれか１つまたは複数であってもよいということを示す。例えば、ＢＲＥＷ実行時間環境、Ｗｉｎｄｏｗｓ ＭｏｂｉｌｅおよびＬｉｎｕｘのオペレーティングシステムは、キーパッドプロトコル１００とインタフェース接続することができる。
【００２５】
様々な実施形態においては、キーパッドプロトコル１００は、図７に図示されているように、複数のキーパッド２０、５０、７０のうちの１つとインタフェース接続することができる、複数のアプリケーション１８１、１８２、１８３のための共通のインタフェースとして、役立つことができる。いずれの所与時間においても、キーパッドプロトコル１００は、例えばアプリケーション３  １８３のような処理の制御におけるアプリケーションと、そして、例えばキーパッド１  ２０のようなそのアプリケーションによって選択される特定のキーパッドと、インタフェース接続することができる。アプリケーション１  １８１のような別のアプリケーションへと処理がシフトする場合には、同じキーパッドプロトコル１００は、キーパッド３  ７０のようなそのアプリケーションによって選択されるキーパッド、に対するインタフェースとしての役割をする。２つ以上のアプリケーション１８１、１８２、１８３が、キーパッド１  ２０のような特定のキーパッドを選択し構成した場合、キーパッドプロトコル１００は、アプリケーション１８１、１８２、１８３のそれぞれと関連づけられた、キーパッド構成及び定義を追跡することができる(can keep track of)。このように、各アプリケーション１８１、１８２、１８３は、異なる方法で同じキーパッドを構成するが、キーパッドプロトコル１００は、アプリケーション間の及びアプリケーション内の、処理シフト(processing shifts)として再構成される必要がない共通のインタフェースとしての役割をする。
【００２６】
アプリケーション１８０が最初に開始されるとき、特定のキーパッドを選択し、アプリケーションの機能と一貫したオペレーションのために選択されたキーパッドを構成するために、キーパッドプロトコル１００と相互作用することができる。このプロセスのステップの例は、図８に図示されている。キーパッドプロトコル１００は、キーパッド１２０あるいはキーパッドドライバ１１０にクエリすることにより、モバイルデバイス１０に結合されたキーパッド１２０を周期的に決定することができる  ステップ２００。モバイルデバイス１０に取り付けられたあるいはアクティブ化されるキーパッドは、その利用可能性を示している信号で応答することができる。キーパッドプロトコル１００は、そのような信号を受信し、そして、各利用可能なキーパッド対して、ＩＤ（例、連続ＩＤ番号）を割り当てることができる  ステップ２００。あるいは、キーパッドプロトコル１００は、キーパッドＩＤを割り当て、その割り当てられたＩＤを各キーパッドドライバに通知してもよい。キーパッドプロトコル１００はまた、キーパッド機能に関する情報をリクエストし受信することができる  ステップ２０４。これは、それぞれのキーパッドドライバ１１０によって提供される標準情報信号の形態であってもよい。あるいは、キーパッド１２０あるいはそのキーパッドドライバ１１０は、キーパッドのタイプの標準識別情報を提供することができ、そして、キーパッドプロトコル１００がメモリにおいて保持された機能の表からその機能を決定することを可能にする。さらに、キーパッドプロトコル１００は、キーパッドドライバあるいはキーパッド自体によって提供されることができる他のキーパッド情報を受信することができる  ステップ２０６。キーパッドプロトコルはまた、キーパッド１２０あるいはキーパッドドライバ１１０に対し、いくつかの構成情報を提供することができる  ステップ２０８。この時点で、キーパッドプロトコル１００は、利用可能なキーパッドおよびその機能をアプリケーション１８０に通知するのに必要な情報を有する。
【００２７】
アプリケーション１８０がロードされる、あるいは、もしそうでなければ利用可能なキーパッド１２０及びその機能を決定する必要があるとき、アプリケーションは、例えばＡＰＩを発行することによって、キーパッドプロトコル１００からこの情報を要求してもよい  ステップ２１０。説明の目的のために、「Ｑｕｅｒｙ＿Ｋｅｙｐａｄ」と題されたＡＰＩの一例は、この機能を実行するための図において図示されている。このＡＰＩは、様々な機能（例、構成可能なキーパッドあるいはタッチスクリーン）と同様に、使用に利用可能であるキーパッドをアプリケーション１８０に通知するようにキーパッドプロトコル１００に単に要求する。そのようなＱｕｅｒｙ＿Ｋｅｙｐａｄ  ＡＰＩを受信するとき、キーパッドプロトコル１００は、利用可能な（すなわち、アクティブ化され、且つ接続された）キーパッド及びその機能をアプリケーションに通知することができる  ステップ２１２。あるいは、Ｑｕｅｒｙ＿Ｋｅｙｐａｄ  ＡＰＩの受信  ステップ２１０は、上記で説明されているように、取り付けられたキーパッドを決定するプロセスを実行するようにキーパッドプロトコル１００を促すことができる  ステップ２００〜２０８。アプリケーションに利用可能なキーパッドを通知するためのフォーマットは、アプリケーション開発者のために共通インタフェースを提供するために、標準化され得る。情報のフォーマットは、図１１を参照して下記で説明されるデータ構造のような、いずれの適切なデータ構造であってもよい。
【００２８】
キーパッドの利用可能性および構成情報を受信するとき、アプリケーションは、特定のキーパッドを選択し、キーパッドプロトコルに構成情報を提供することができる  ステップ２２０。この選択および構成のステップは、アプリケーション開発者のために共通のアプリケーションインタフェースを提供するＡＰＩの形式であってもよい。説明の目的のために、「Ｋｅｙ＿Ｃｏｎｆｉｇ」と「Ｋｅｙｐａｄ＿Ｃｏｎｆｉｇ」と題されたＡＰＩｓの例は、この機能を実行するために図で図示されている。そのようなＡＰＩは、選択されたキーパッドのインデクス数(index number)を規定し、キーバイキーベース(key-by-key basis)でキー構成情報を提供することができる。そのような構成情報は、アプリケーションが特別のキーイベントのために使用する識別子、特定のキーあるいはキーイベントに関連づけられるべき文字列(string)、そして、グラフィックな方法でキー機能を表示するグラフィックキーパッドによって使用されることができる情報、を含むことができる。そのようなキーバイキー構成情報のフォーマット及びコンテンツは、図１２を参照して下記で説明されている。
【００２９】
キーパッドプロトコル１００は、アプリケーション１８０からキーパッド選択を受信し  ステップ２２２、その選択されたキーパッドに関連づけられたいずれのグラフィックあるいはイメージを受信する  ステップ２２４。キーパッドプロトコル１００は、その選択されたキーパッドに関連した変換表を構成することができる  ステップ２２６。そのような変換表は、各キープレスイベントに応じてアプリケーション１８０に提供するために、適切なコマンド文字列あるいはアプリケーションキー識別子を決定するキーパッドプロトコル１００によって使用されることができる。キーパッドプロトコル１００はまた、特定のキーに関連づけられたいずれのグラフィックを提供するために関連のキーパッドドライバ１１０と通信することができる  ステップ２２８。そのようなグラフィックは、キーパッドドライバ１１０がアプリケーション１８０によって定義されるキー機能に関連づけられる特定のイメージを表示するために使用することができる、キーバイキーベース(key-by-key basis)で提供されることができる。さらに、キーパッドプロトコル１００は、アプリケーションの機能を整合するために必要である場合には、キーパッドをさらに構成することができる  ステップ２３０。キーパッド構成オペレーションを完了するとき、キーパッドプロトコルは、キーパッドが動作できる状態であるということをアプリケーション１８０に通知することができる  返信２３２。
【００３０】
図８で図示されたプロセスステップは、例えば図９で図示されるように、モバイルデバイス１０で、異なるハードウェア及びソフトウェア層の中で受け渡される多数の電子メッセージにおいてインプリメントされることができる。どのキーパッド１２０が利用可能か決定するために、キーパッドプロトコル１００は、どのキーパッドが利用可能かという返信をリクエストするアクティブなキーパッドドライバ１１０にクエリを発行することができる  メッセージ２００。処理呼びだし、割り込み、あるいは、システムソフトのメインループによってチェックされるメモリにおいて設定されたフラグ、の形態であってもよい。応答で、キーパッドドライバは、キーパッドがアクティブに取り付けられる(keypad is attached an active)ということを確認するためにその関連のキーパッドをピングする(ping)ことができる  メッセージ２０１。取り付けられる場合には、キーパッドは、それが接続されアクティブ化されるということを示す信号を戻すことができる  メッセージ２０２。キーパッドドライバ１１０は、そのあとで、キーパッドがアクティブで取り付けられるということを示して、キーパッドプロトコルにメッセージを送信することができ、そしてそれは、キーパッドの識別子を含むことができる  メッセージ２０３。キーパッドドライバ１１０はまた、取り付けられたキーパッドに関する情報、例えばその機能、構成、あるいは、キーパッド開発者がモバイルデバイスシステムソフトウェアに対し通信することを望む他の情報、を提供することができる  メッセージ２０４。
【００３１】
アクティブ化のときに、あるいはオペレーションの間に、アプリケーション１８０は、例えばＫｅｙｐａｄ＿ＱｕｅｒｙＡＰＩを発行することによって、利用可能でアクティブ化されるキーパッドのリストをリクエストすることができる  メッセージ２１０ａ。アプリケーションは、実行時間環境と直接通信してもよく、そしてそれは、キーパッドプロトコルに対し、Ｋｅｙｐａｄ＿Ｑｕｅｒｙ  ＡＰＩを転送する  メッセージ２１０ｂ。いくつかのインプリメンテーションでは、アプリケーションは、実行時間環境層１７０を含まずに、キーパッドプロトコル１００に直接Ｋｅｙｐａｄ＿Ｑｕｅｒｙ  ＡＰＩを送信することができる。Ｋｅｙｐａｄ＿Ｑｕｅｒｙを受信することに応じて、キーパッドプロトコルは、利用可能なキーパッド及びその機能を送信する  メッセージ２１２ａ。このことは、アプリケーション１８０上に情報を送信する実行時間環境層１７０に送信されることができる  メッセージ２１２ｂ。いくつかのインプリメンテーションでは、キーパッドプロトコル１００は、実行時間環境層１７０をバイパスして、アプリケーション１８０と直接通信することができる。図８を参照して上記で説明されるように、Ｋｅｙｐａｄ＿Ｑｕｅｒｙの受信は、キーパッドプロトコル１００に、取り付けられたキーパッドをクエリするように、促してもよい  メッセージ２００。
【００３２】
キーパッドプロトコル１００から受信された情報を使用して、アプリケーション１８０は、使用のために特定のキーパッドを選択することができる  メッセージ２２２ａ。他のメッセージについては、アプリケーション１８０は、実行時間環境層１７０に対し、キーパッド選択  メッセージ２２２aを送信することができ、そして、実行時間環境層１７０は、キーパッドプロトコル１００に対して、その選択  メッセージ２２２ｂを転送する。いくつかのインプリメンテーションでは、アプリケーション１８０は、実行時間環境層１７０をバイパスして、キーパッドプロトコル１００に直接その選択を通信することができる。アプリケーション１８０はまた、キーパッドプロトコル１００に対し、キーパッド構成情報及びグラフィックファイルを送信することができる  メッセージ２２０、２２４。他のメッセージについては(As with other messages)、この情報は、図示されているように、実行時間環境層１７０を介して、あるいはキーパッドプロトコル１００直接に、送信されることができる。アプリケーション１８０はまた、アプリケーションとその選択されたキーパッドに一貫してディスプレイを提示するために、ディスプレイ層に対しグラフィックファイルを提供することができる  メッセージ２３４。図２４〜３９において図示される例を参照して下記でより十分に説明されるように、アプリケーション１８０に関連づけられた特定のディスプレイは、選択されたキーパッドに依存してもよい。
【００３３】
アプリケーション１８０によって提供されるキーパッド構成およびグラフィックファイルを使用して、キーパッドプロトコル１００は、変換表を構成し  プロセス２２６、キーパッドを構成することができる  メッセージ２３０。さらに、キーパッドプロトコル１００は、ディスプレイに対し、いくつかのキーパッドディスプレイファイルを提供することができる  メッセージ２２８。
【００３４】
図８及び図９で図示される処理はまた、新しいキーパッドがモバイルデバイス１０に接続されるといつでも、開始されることができる。例えば、実行している、すなわち、選択されたキーパッドをすでに構成した、アプリケーション１８０は、新しいキーパッドがモバイルデバイスに接続されているということをシステムソフトウェアによって通知されることができる。この通知は、システムソフトウェア、あるいは、アプリケーションがときおりチェックすることができるメモリにおいて設定されたシステムフラグにより、アプリケーション１８０に通信される割り込みの形式であってもよい。アプリケーション１８０が新しいキーパッドは接続されたということを知るとき、アプリケーションは、新しく取り付けられたキーパッドの機能に関する情報を受信するために、再びＫｅｙｐａｄ＿Ｑｕｅｒｙ ＡＰＩを呼び出すことができる  ステップ２１０。アプリケーションは、そのあと、図８を参照して上記で説明される方法で、新しく取り付けられたキーパッドを選択し、構成することができる  ステップ２２０。したがって、キーパッドはアクティブ化されてもよく、あるいは、アプリケーション１８０のオペレーションの間のいずれの時点でモバイルデバイス１０に結合されてもよい。例えば、アプリケーション１８０は、特定のキーパッドがアクティブ化されるあるいはモバイルデバイスに取り付けられる前に、開始されてもよい。アクティブ化のとき、アプリケーションは、現在利用可能なベストキーパッドを選択し構成する。そのときに、ユーザが特定のアプリケーションによりよく適したキーパッドをアクティブ化し取り付けるとき、アプリケーション１８０は、新しく取り付けられたキーパッドを選択し、そのキーパッドから受信されたユーザ入力を使用してオペレーション(operation)を継続することができる。このように、キーパッドプロトコル１００は、順応性のある方法で(in a flexible manner)、キーパッドの取り付け及び構成を容易にする。
【００３５】
アプリケーションはまた、選択を行なうことにおいて有用であり得る特定のキーパッドについてのより多くの情報を得るために、キーパッドプロトコル１００とインタフェース接続する。例えば、図１０は、アプリケーション１８０が特定のキーパッドの機能に関する情報を得ることができるプロセスを図示する。アプリケーション１８０は、例えばＡＰＩ２１０の手段により、キーパッドインデクスを識別し、その機能をリクエストすることによって、特定のキーパッドの機能についてリクエストを発行することができる（例、ＩＤｙｎＫｅｙＰａｄ＿ＧｅｔＣａｐｓ）。そのようなＡＰＩを受信することに応じて、キーパッドプロトコル１００は、キーパッドＩＤに関連づけられたキーパッドドライバ１１０から機能をリクエストすることができる  ステップ２００。キーパッドプロトコル１００は、そのあとで、アプリケーションに対して、受信機能情報を提供することができる  ステップ２２０。図示された例において、アプリケーションは、特定のキーパッドの機能を要求し、その選択されたキーパッドはタッチスクリーン可能なインタフェースであるということを通知する。
【００３６】
利用可能なキーパッドおよびその機能に関する情報は、図１１で図示されるように、標準化されたデータフォーマットで、キーパッドプロトコル１００によって、アプリケーションに提供されることができる。特定のキーパッドの識別情報及び機能は、インデクス３０２、キーパッド機能３０４の概要(summary)、キーパッド３０６において利用可能なキーの識別情報、そして、表示機能を有するいずれのキーの識別情報(identification of any keys which have display capability)、を含んでいるデータ記録パケット３１０、３１２、３１４において送信されることができる。個別のデータ記録パケットは、データ記録３１０、３１２、３１４のようなそれぞれ利用可能なキーパッドのために送信されることができる。あるいは、キーパッドプロトコル１００は、それぞれ利用可能なキーパッドについてデータ記録３１０、３１２、３１４を含んでいるキーパッド機能データ表３００を送信することができ、各データ記録は、関連キーパッドの識別情報及び機能を提供するデータフィールド３０２〜３０８を含んでいる。図示されたデータ構造は、一例として提供され、アプリケーションに対しキーパッドプロトコルによって提供されることができるデータフォーマットあるいは情報をいずれの方法において制限するように意図されていない。
【００３７】
アプリケーション１８０に対して提供されるキーパッド情報は、標準化されたキーセット識別子の形態であってもよく、そして、特定タイプのキーパッド及びその機能を通信するために標準化されたキーパッド定義を使用してもよい。あるいは、キーパッド機能データ表３００は、利用可能である個々のキーと、その個々の機能及び構成と、をリストすることができる。キーパッド機能表３００において示される入力は、説明の目的のために提供されており、典型的なインプリメンテーションにおいては、アプリケーション１８０により認識され理解されることができるバイナリコードの形態においてデータを保存する可能性が高い。
【００３８】
アプリケーション１８０は、キープレスイベントを解釈することにおける、及び、アプリケーション１８０が処理することができる信号あるいはデータ構造にそれらのイベントを変換することにおける、使用のためにキーパッドプロトコル１００に対し様々なデータ及び構成パラメータを提供することができる。キーパッドプロトコル１００による使用のためにそのような情報を保存するためのデータ構造の一例は、図１２において図示されている。そのようなデータ構造３２０は、様々なキーパッド上の各キーに関連づけられたいずれの数のデータ記録３３４−３４２から成ることができる。参照しやすくするために、第１のデータフィールド３２２は、キーパッドプロトコル１００が個々のキーを識別するために使用することができるキーＩＤを含むことができる。このキーＩＤは、ドライバ及びキーパッドプロトコル１００が同じＩＤを使用してキープレスイベントに関して通信するように、特定のキーパッド１２０に関連づけられたキーパッドドライバ１１０に通信されることができる。第２のデータフィールド３２４は、キーパッドプロトコル１００が様々な接続されたキーパッドの中でキーイベントを区別するために使用することができる、キーパッドＩＤを含むことができる。キー特許ＩＤ情報フィールド３２４は、取り付けられたキーパッドの単純なシリアルリスト（例、０、１、２、等）を含むことができる。あるいは、キーパッドＩＤデータフィールド３２４は、キーパッド供給者あるいはオリジナル機器製造者(original equipment manufacturer)（ＯＥＭ）によって、キーパッドモデルあるいは個々のキーパッドに割り当てられた、グローバルで固有のキーパッドＩＤを保存することができる。例えば、キーパッドＩＤは、ＯＥＭによってキーパッドに割り当てられたＭＡＣ  ＩＤでありえる。それとは関係なく、キーパッドＩＤおよびキーＩＤの組み合わせは、各キープレスイベントを固有に識別するために使用されることができる。データ構造３２０はまた、データ文字列３２６及びアプリケーションキーＩＤ３２８のような特定のキーパッドを使用しているアプリケーションによって提供された情報を含むことができる。そのような情報は、アプリケーション１８０が、特定のキープレスイベントに応じて受信する必要がある特定のデータ文字列あるいはキーＩＤをキーパッドプロトコルに通知するために、アプリケーション１８０によって提供されることができる。したがって、アプリケーション１８０は、その機能において使用する任意のセットのキーＩＤｓを定義し、そして、キーパッドプロトコル１００に対しそれらの任意のキーＩＤｓを提供することができるので、プロトコルは、特定のキープレスイベントをアプリケーション１８０に適切に通知できる。このような方法で、アプリケーションソフトウェアは、キーパッドレイアウト及び特定のキーがキーパッドごとに異なっているにもかかわらず、標準プロセスで機能するように書き込まれることができ、キーパッドプロトコル１００は、必要な変換を提供する。
【００３９】
グラフィックディスプレイ機能を含むキーパッドを適応するために、キーパッド変換データ構造３２０はまた、各キーに関連づけられた、位置に関する構成情報（データフィールド３３０）と、グラフィクス（データフィールド３３２）と、を保存するためのデータフィールドを含むことができる。キーパッドのタイプによって、アプリケーション１８０は、特定のキーを提示するためにいずれのインタフェースディスプレイ上でロケーションを規定することができ、そのような情報は、データフィールド３３０において保存されている。したがって、タッチスクリーンディスプレイでは、アプリケーション１８０は、特定のキーを位置づけるために、Ｘ−Ｙ座標を規定することができる。同様に、アプリケーション１８０は、アプリケーションによって割り当てられたキー機能を表示するためにキーパッドによって使用されるべきグラフィックファイルを提供することができる。キーパッド変換データ構造３２０内でグラフィクスを保存するよりもむしろ、データフィールドは、特定のキーに関連づけられたグラフィックファイルを保存するメモリロケーションに対し、ポインタ（すなわち、メモリアドレス）を含むことができる。
【００４０】
キーパッドプロトコル１００を使用してキーパッドを構成するために、アプリケーション１８０は、一連のデータ記録の形態で、キーパッド変換データ構造３２０で保存されるべき情報のいくつかを提供することのみ必要である。そのようなデータ記録は、キーパッドプロトコルが認識することができる標準キー識別子にリンクづけされることができる。例えば、構成されているキーパッドが標準１２キー数字キーパッド(a standard 12 key numeric keypad)である場合、アプリケーション１８０は、その数字の値によってキーを識別することができる。その識別子を使用して、アプリケーション１８０は、ロケーション及びグラフィックファイルポインタ値のような他の構成情報と共に、キープレスイベントをアプリケーションに通知するためにキーパッドプロトコル１００が使用することができる、アプリケーション識別子及び／またはデータ文字列を提供することができる。キーパッドプロトコル１００は、例えば図１２で図示されているように、そのようなデータ記録を受信し、データ表においてそれらを保存することができる。
【００４１】
当業者は、キーパッド変換及び構成データが様々な異なるデータ構造においてメモリ内に保存されることができるということを認識するであろう。図１２で図示されるデータ構造は、例の目的だけであり、いずれの方法において開示あるいは特許請求の範囲の範囲を限定するように意図されていない。
【００４２】
キープレスイベントのフローを処理することは、図１３で図示される。キーが押されるとき、イベントは、キーパッドハードウェア１２０により検出され、そしてそれは、キーパッドドライバソフトウェア１１０に信号伝達する。その後、キーパッドドライバ１１０は、キープレスイベントを、キーパッドプロトコル１００のキーパッドコントローラ１０４部分に通知する。このことは、直接に、例えばキーパッドコントローラ１０４に送信される信号によって、あるいは、非直接に、例えばシステムソフトウェアが周期的に認識し、キーパッドドライバによって提供されるべきキープレスイベント情報をリクエストする、コールバックフラグ(a callback flag)あるいは割り込み(an interrupt)を設定することによって、達成されることができる。
【００４３】
キーが特定キーパッド上で押されるとき、キーパッド１２０及びそのキーパッドドライバ１１０は、さまざまな方法、例えば、割り込みを供給すること、あるいは、システムフラグを設定するために使用されるメモリの一部あるいは特定のレジスタにおいてデータを保存すること、でイベントをキーパッドプロトコルに通知することができる。例えば、図１４で図示されるように、単純なデータ構造３５０は、キーが押されたということを示すためにメモリに保存されることができ、識別子は、その押されたキーに関連づけられている。例えば、そのようなデータ構造は、キープレスイベントがメモリに保存されるかどうか決定するように、キーパッドプロトコルが周期的にチェックすることができる１以上のフラグ３５２及び３５４を含むことができる。フラグのうちの１つ、例えばフラグ３５２、が設定される場合（すなわち、「１」は、メモリフィールド３５２に保存されている）、このことは、キープレスイベントが生じたということ、そして、対応キーＩＤが特定のメモリフィールド、例えばデータフィールド３５６、において保存されているということ、を示すことができる。複数のキーパッドの中でキープレスイベントを固有に識別するために、キーＩＤは、データフィールド３５８のキーパッドＩＤあるいはインデクスと共にデータフィールド３５６に保存されることができる。追加フラグは、キープレスイベントに関する他の情報を示すために設定されることができる。例えば、フラグ（例えば、フラグ３５４）は、キープレスイベントが、例えばシフト、コントロール、あるいはａｌｔのキーを押すような別のキーを同時に押すことを含むときに、表示するように設定されることができる。別の例として、フラグ（例えば、フラグ３５４）は、キーは延長された持続期間の間保持されるということを示して(indicating that the key is being held down for an extended duration)、キープレスイベントがキーリリースにより先行されない(not preceded)ということを表示するように設定されることができる。いずれの数の追加フラグ及びデータフィールドは、キーパッドプロトコル１００により解釈されることができるキープレスイベントに関する情報を通信するために、レジスタあるいはデータ構造に含まれることができる。
【００４４】
キーパッドプロトコル１００がキープレスイベントを通知される場合、それはキープレスイベントをアプリケーションが解釈することができる情報に変換することができる。キープレスイベントを受信することにおいて、キーパッドプロトコル１００によってインプリメントされることができる方法ステップの例が図１５において図示されている。上記で説明されるように、キーが押される時、イベントは、キーパッドハードウェアにより感知し、関連のキーパッドドライバに信号を送る  ステップ２４０。キーパッドドライバは、キープレスイベントを信号、割り込み、保存データ、他の形態の情報に変換し、キーパッドプロトコルに提供される  ステップ２４２。キーパッドドライバ１１０からキープレスイベントを受信するとき、キーパッドプロトコル１００は、メモリから、あるいはキーパッドドライバによって提供される信号から、キーパッドＩＤ及びキーＩＤを検索することができる  ステップ２４４。キーＩＤ及びキーパッドＩＤを使用して、キーパッドプロトコル１００は、キー変換表３２０内で、対応するデータ記録を探し出すことができる(can locate)  ステップ２４６。対応するデータ記録に保存されたデータを使用して、キーパッドプロトコル１００は、特定のキープレスイベントに対応するアプリケーション１８０によって指定される、アプリケーションＩＤ及び／またはコマンド文字列を検索することができる  ステップ２４８。その情報を使用して、キーパッドプロトコルは、アプリケーション１８０に対する通信のための通知オブジェクトを作成することができる  ステップ２５０。最後に、キーパッドプロトコルは、アプリケーション１８０に、キープレス通知オブジェクト(key press notification object)を送信する  ステップ２５２。通知オブジェクトを送信することにおいて、キーパッドプロトコル１００は、アプリケーション１８０に直接、あるいは、オペレーティングシステムあるいは実行時間環境１７０経由で、そのオブジェクトを送信することができる。
【００４５】
キープレスイベントを受信し、処理するプロセスは、図１６で図示されているようにモバイルデバイス１０における異なるハードウェア及びソフトウェア層の中で一連のメッセージにおいて達成されることができる。キーが押される時、キーパッドはキーパッドドライバにキープレスイベント信号を送信するだろう  メッセージ２４０。代わりに、キーパッドドライバはキーパッドプロトコルにキーパッドＩＤ及びキーＩＤを送る  メッセージ２４２。上記で説明されているように、このメッセージは、キーパッドプロトコルが周期的にアクセスする、あるいは、セットフラグを検出するときあるいは割り込みを受信するときアクセスする、ことができるメモリロケーションに保存される情報の形態であってもよい。この情報を使用して、キーパッドプロトコルは、キープレス通知オブジェクトを生成し  処理ステップ２４６−２５０、そして、メッセージ２５３におけるアプリケーション１８０へのリレーのために、実行時間環境に対しキー値を送信する  メッセージ２５２。あるいは、キーパッドプロトコルは、直接アプリケーション１８０にキー値を通信することができる。さらに、キーパッドプロトコル１００は、ディスプレイに対しキー値あるいはグラフィックを送信することができるので  メッセージ２５４、ディスプレイは、キープレスイベントを反映することができる（例えば、押されたキーの値をディスプレイ上で提示して）。
【００４６】
メッセージ２４０ａ〜２５４ａで図示されるように、後続キープレスイベント(subsequent key press event)は、同じ方法で処理されるだろう。したがって、各キープレスイベントで、キーパッドプロトコル１００は、キーパッドドライバ１１０からメッセージを受信し、アプリケーション１８０及びディスプレイに対して、変換されたキー値情報を提供する。
【００４７】
いくつかのシチュエーションで、キープレスイベントは、後続キープレス(subsequent key presses)についてキー値を再定義するようにアプリケーション１８０に促すことができる。例えば、アプリケーション１８０がＭＰ３プレイヤーのようなメディアプレイヤーであり、第１のキープレスイベントは、オーディオ再生を開始するものとしてアプリケーションによって解釈される場合（すなわち、第１のキープレスは「再生(play)」機能を有していた）、アプリケーションは、後続のプレス(a subsequent press)がメディアプレイを一時停止あるいは停止するものとして解釈されるように、同じキーの機能を変更することができる（すなわち、第２のキープレスは「停止(stop)」機能を有する）。図１６は、アプリケーション１８０がキーパッドプロトコル１００にキー再定義コマンド（すなわち、新しい構成情報）を送信することができるということを図示することによりこの可能性を反映する  メッセージ２５６。このメッセージは、同様のキーの再定義メッセージ２５７と一緒に、キーパッドプロトコル１００に対し、実行時間環境層１７０によってリレーされることができる。キーの再定義メッセージを受信するとき、キーパッドプロトコル１００は、変更されたキー構成情報を反映するためにキー変換表３２０を再構成することができる  プロセス２５８。メッセージ２４０ｂおよび２４２ｂにおけるキーパッドプロトコルに対して通信される後続のキープレスイベントは、改訂されたキー変換表３２０にしたがってキーパッドプロトコル１００によって解釈される  処理ステップ２４６−２５０ｂ。再定義されたキー値は、メッセージ２５２ｂ及び２５３ｂにおいて、アプリケーションに送信される。さらに、再定義されたキー値は、ディスプレイに送信されることができる  メッセージ２５４ｂ。
【００４８】
上記で言及されるように、キーパッドプロトコル１００は、アプリケーション開発を簡略化するために、予測テキスト入力のようなキー入力アプリケーションと相互作用することができる。例えば、様々な異なる予測テキストアプリケーションは、モバイルデバイス上の使用に利用可能である。キーパッドプロトコル１００に対して、予測テキストアプリケーションとインタフェース接続する役割を割り付けることによって、アプリケーションソフトウェアの開発は簡略化されることができる。アプリケーション開発者は、様々な異なる予測テキストアプリケーションと、自分たちのアプリケーションをインタフェース接続する必要はない。同様に、予測テキストアプリケーション開発者は、標準インタフェースあるいはＡＰＩコマンドを使用してキーパッドプロトコルとインタフェース接続のみする必要がある。
【００４９】
図１７は、キーパッドプロトコル１００が予測テキストアプリケーション１０６とインタフェース接続するときにインプリメントされることができるステップの例を図示する。上記で説明されるように、キーが押されるときに、キーパッドハードウェアがイベントをキーパッドドライバに信号伝達し  ステップ２４０、キーパッドプロトコル１００にキープレスイベント通知を送信するように、キーパッドドライバ１１０に促す  ステップ２４２。代わりに、キーパッドプロトコル１００は、キーパッドＩＤおよびキーＩＤを検索し  ステップ２４４、そして、変換表に適切なデータ記録を探し出す(locate)ためにこの情報を使用する  ステップ２４６。キーパッドプロトコルは、そのあとで、予測テキストアプリケーションに、適切なキー値を送信する  ステップ２６０。予測テキストアプリケーションは、タイプされているワードを予測するためにキー値を使用し、そして、受信されるキーパッドプロトコル１００に予測を送信する  ステップ２６２。キーパッドプロトコル１００は、検討且つ容認のためにユーザに提示されることができるように、ディスプレイに予測テキストをその後で送信することができる  ステップ２６４。次のキープレスイベントで、これらのステップ２４２、２６４は、次の文字について繰り返される。同様に、ユーザが予測されるワードを容認しなかったということを仮定すると、次のキープレスイベントは、同じステップ２４２、２６４を繰り返させ、このプロセスは、ユーザが予測されることば(word)を選択するまで続く。例えば、ステップ２４０〜２４６において処理される次のキープレスイベントはユーザが予測されるテキストを容認するということを示してスペースあるいは他のキーが押されるということを決定する場合、キーパッドプロトコルは、マルチキー通知オブジェクト(multi-key notification object)を作成することができ  ステップ２６６、アプリケーションに対しこのオブジェクトを送信する  ステップ２６８。したがって、４つのキープレスイベントが図１７で図示されるステップにおいてキーパッドプロトコル１００によって処理されるが、１つのマルチキー通知オブジェクトのみがアプリケーション１８０に送信される。このように、アプリケーション１８０は、少ない割り込みを備えた短時間(shorter amount of time)において、キーパッドプロトコル１００からより多くの情報を受信し、したがって、アプリケーションがストリームライン処理をすることを可能にする。
【００５０】
図１７で図示される処理ステップは、図１８で図示されるようにモバイルデバイス１０における異なるハードウェア及びソフトウェア層の中で送信される様々なメッセージにおいてインプリメントされることができる。上記で説明されるように、キーパッドによって検出される第１のキープレスイベントは、キーパッドＩＤ及びキーＩＤをキーパッドプロトコル１００に通知するようにキーパッドドライバ１１０に促し  メッセージ２４２ａ、キーイベントメッセージ２４０aにおいてキーパッドドライバ１１０に通信される。キーパッドプロトコル１００は、処理ステップ２４６aにおいて関連のキー値を決定し、メッセージ２６０aにおいてキー入力アプリケーション１０６にその情報を提供する。キー入力アプリケーション１０６は、タイプされることばを予測するためにキー値を処理し  処理２６１a、そして、その予測を提供してキーパッドプロトコル１００に信号を送信する  メッセージ２６２a。キーパッドプロトコル１００は、ディスプレイに予測値を送信する  メッセージ２６４ａ。このプロセスは、メッセージ２４０ｂ〜２６４ｂを介して同様な方法で次のキーイベントで繰り返される。同様に、第３のキープレスイベントは、メッセージ２４０ｃ〜２６４ｃを介して、再びプロセスを繰り返させる。図示された例において、メッセージ２４０ｄ及び２４２ｄにおけるキーパッドプロトコル１００に通信される第４のキープレスイベントは、ディスプレイに通信されるメッセージ２６４ｃの結果として表示される予測されたテキストをユーザが容認したということを意味するように処理ステップ２４６ｄにおいてキーパッドプロトコル１００によって解釈される。この時点で、キーパッドプロトコル１００は、マルチキー通知オブジェクトを生成し  プロセス２６６、そしてそれは、マルチキー文字列値メッセージあるいは通知オブジェクト(a multikey string value message or notification object)において、アプリケーション１８０に通信される  メッセージ２６８。同様に、キーパッドプロトコル１００は、容認されたテキストがユーザに表示されることができるように、ディスプレイにマルチキー文字列値メッセージを送信することができる  メッセージ２７０。
【００５１】
キーパッドプロトコル実施形態の利益は、今後のキーパッド技術が考慮されるときに、特に明白である。例えば、明らかになりつつあるキーパッド技術は、各キーはそれに関連づけられている図１９及び２０で図示されており、小型のディスプレイは、動的にラベル付けされることを可能にする(For example, a keypad technology on the horizon is illustrated in FIGs. 19 and 20 in which each key has a associated with it a small display allowing the key to be labeled dynamically)。そのようなディスプレイキーのキーパッド４００は、フレームワーク４０４内で位置され、サポートストラクチャ４０６によってサポートされる、トランスパレントキー４０２を含むことができる。各トランスパレントキー４０２の下のディスプレイ４０８は、キー４０２を通じてビューすることができる自由形式のイメージを提示するためにモバイルデバイスのプロセッサ１１によって制御されることができる。ボトム構造４１０は、プロセッサ１１にディスプレイを結合させるために電子接続と、ディスプレイ４０８のためのサポートを提供することができる。
【００５２】
ディスプレイキーのキーパッド４００は、個々のキー機能がキー４０２上で提示されるイメージによってユーザに通信されることができるので、モバイルデバイスに多くの利益を提供することができる。したがって、ユーザは、特定のキーに割り当てられた機能を決定するディスプレイを見る必要がない。代わりに、ことば、数字、あるいは記号は、機能が明らかであるので、キー自体に表示されることができる。そのようなキーパッドが容易にインプリメントされることを可能にするために、キーディスプレイ４０８のそれぞれ上で提示されるグラフィクスを提供することと共に、アプリケーションは、各キー４０２に関連づけられた機能を定義しなくてはならない。このさらなる複雑さは、上記で説明された実施形態を使用してキーパッドプロトコル１００によって容易にされることができる。
【００５３】
モバイルデバイスのキーパッド／ユーザインタフェースの別の形式は、図２１及び２２で図示されるようなタッチスクリーンである。そのようなモバイルデバイス１０では、タッチスクリーン４１０は、完全に適応性のあるキーパッド及びユーザインタフェース(s a completely flexible keypad and user-interface)を提供する。キーは、タッチスクリーン４１０上どこでも配置されることができ、その機能を定義するためにグラフィクスを提供される。例えば、小型キーボードは、例えば「Ａ」、「２」、等のような小さいグラフィックによって識別される対応する意味を備えた、小さなバーチャルボタン４１２を提示することにより、タッチスクリーンディスプレイ４１０上で提示されることができる。タッチスクリーンディスプレイは、アプリケーションによって完全に構成可能であるユーザインタフェースを作成するためにさらなる適用性を提供する。キーパッドプロトコル１００の利点なしに、この適用性は、アプリケーションソフトウェア上でさらなる複雑さを課すだろう。キーパッドプロトコルの実施形態は、タッチスクリーンについての開発ディスプレイキーパッド構成を単純化することができる。アプリケーションソフトウェア内で特定のタッチスクリーンを構成しなければならない代わりに、アプリケーション開発者は、標準フォーマット及びＡＰＩｓを使用してキーパッドプロトコル１００に対し説明の構成情報及びグラフィックファイルを提供することができ、キーパッドプロトコルに対し様々なタッチスクリーン設計とインタフェース接続する複雑さを残す。
【００５４】
今後のモバイルデバイス上で使用されうる第３形式のキーパッドは、図２３で図示されている。このキーのキーパッド構成では、小型ディスプレイ４２０は、ハードキー４２２の上、横、あるいは下に位置しているので、キー機能の定義は、小型ディスプレイ上で提示されることができる。小型ディスプレイ４２０は、メインモバイルデバイスディスプレイ１３に似た液晶ディスプレイであってもよい。そのようなキーパッドディスプレイの一例は、米国特許６，７０３，９６３号において開示されており、その全体の内容は、参照によってここに組み込まれている。小型ディスプレイ４２０は、ディスプレイがアプリケーション及びシステムソフトウェアを介して制御されることができるように、モバイルデバイスプロセッサ１１に結合されている。このキーパッドの設計は、キー機能がグラフィクスあるいは英数字文字の形で、ユーザに通信されたキー機能で動的に割り当てられることを可能にするので、順応性が高い(highly flexible)。図２０及び２１を参照して上記で説明される他のディスプレイのコンセプトについて、アプリケーションソフトウェア内で小型のキーパッドディスプレイ４２０を構成する必要がある代わりに、アプリケーション開発者は、標準フォーマットで、キーパッドプロトコル１００に対し、説明の構成情報とグラフィックファイルとを提供することができ、キーパッドプロトコルに対し、キーパッドとインタフェース接続する困難さを残す。
【００５５】
様々な実施形態の利点は、図２４〜３９で図示されるいくつかの例で、さらに説明されることができる。図２４を参照すると、ディスプレイキーパッド４００を備えているモバイルデバイス１０は、上記図１９と図２０の参照で説明されているように、多くのユーザに適切であることができるような、数字０−９を表示するディスプレイキー４０２を備えた携帯電話であることができる。しかしながら、ユーザが異なるアルファベットで提示される数字を有するように選択する場合には、その選択は、キーパッドプロトコルによって容易にインプリメントされることができ、選択された数字のディスプレイは、図２５で図示されているようにキー４０２上で表されている。この異なるスクリプトにおける数字の提示は、モバイルデバイス１０上で動作している電話アプリケーションを実質的に変更する必要なく、キーパッドプロトコル実施形態を使用して達成されることができる。例えば、変更は、キー変換表３２０において異なるセットのキーグラフィクスを単に保存することにより、達成されることができる。そのようなモバイルデバイスは、数字が異なるフォーマットで提示される世界のいくつかの地域でより有用であるかもしれない。
【００５６】
図２６および図２７を参照すると、タッチスクリーンユーザインタフェース４１０を備えたモバイルデバイスは、携帯電話アプリケーションのための数字を備えたディスプレイバーチャルキー４１２を同様に表示することができる。西洋アラビア数字(Western Arabic numbers)に精通しているユーザは図２６に図示されるような文字(characters)を選択することができる。しかしながら、異なる文字(different characters)に精通しているユーザは、図２７に図示されるようなディスプレイのために代替の文字セット(an alternative character)を選択することができる。
【００５７】
同様に、図２８と２９を参照すると、キー４２２の上に位置されたキーパッドディスプレイ４２０を備えたモバイルデバイスは、図２８で図示されているように電話アプリケーションのためにキーの上の西洋アラビア数字を提示するためにユーザ選択によって構成されることができる。異なる文字に精通しているユーザは、図２９に図示されるようなディスプレイのための代替の文字セットを選択することができる。
【００５８】
キーパッドプロトコルの様々な実施時形態は、電話アプリケーションへの修正なしに、様々なタイプの携帯電話のユーザによって行なわれるべき、図２４〜２９で図示される選択を可能にする。したがって、単独の電話アプリケーションソフトウェアは、携帯電話キーパッドのマルチプル構成(multiple configurations)をサポートすることができ、そして、アプリケーションソフトウェアを複雑にすることなくユーザが好ましい文字セット(preferred character sets)を選択することを可能にすることができる。ユーザがキーパッド上で表示される文字を制御することを可能にすることに加えて、ユーザはまた、キーパッドディスプレイ上で提示される文字のフォントサイズを制御することができる。
【００５９】
様々な実施形態の適用性及び有用性は、アプリケーションのオペレーションをユーザにとってより直感的にするために、非アルファベットユーザインタフェースを使用することができるアプリケーションをモバイルデバイスが動作しているときに、特に明らかである。例えば、図３０は、メディアプレイヤーアプリケーションを実行するモバイルデバイス１０を図示する。そのようなアプリケーションでは、キーパッドは、メディアプレイヤーに関連づけられたユーザコマンド、例えばボリュームの制御、メディアを再生、停止、あるいは巻き戻す等、を受信するように構成されることができる。固定キー２０を備えた典型的なモバイルデバイスにおいては、メディアプレイヤーアプリケーションは、様々なキーに機能を割り当てなくてはならない。キーの割り当てをユーザに通知するために、様々なアプリケーション機能でキーを関連づけるディスプレイが提示される必要があり得る。図示された例において、キーメニューは、モバイルデバイスディスプレイ１３内で提示されている。この図が示すように、キー機能のディスプレイはかなりの量のディスプレイ１３の場所を取っており、したがって、同時に表示されることができるメディアに関する情報の量を減らしている。従って、そのようなアプリケーションでは、ユーザは、キー機能割り当てを記憶するように期待されており、キー機能メニューは、必要なときに呼び出すことが可能である。
【００６０】
様々なキーパッドプロトコル実施形態において各キーに関連づけられたディスプレイを含んでいるキーパッドを使用して、より直感的なメディアプレイヤーユーザインタフェース(a more intuitive media player user-interface)は、図３１に図示されるように提供されることができる。図示されているように、キーパッドプロトコル１００と組み合わせられるメディアプレイヤーは、各キー４０２上で直感的なグラフィクス(intuitive graphics)を提示することができる。キーディスプレイ４０２上でグラフィックとしてキー機能を提供することによって、モバイルデバイスディスプレイ１３は、現在アクセスされたメディアについての情報を提供するように使用されることができる。図示された例において、アーティストの歌の名前が、アルバムあるいはＣＤジャケットのサムネイル画像と共に表示される。したがって、実施形態は、他の目的のためにディスプレイを空いた状態にしながら、より直感的で便利なユーザインタフェース(a more intuitive and useful user-interface)を提供する。
【００６１】
様々な実施形態を使用して、タッチスクリーン４１０を含んでいるモバイルデバイス１０は、図３２に図示されるように、メディアプレイヤーアプリケーションのために同様なユーザインタフェースを提供することができる。図示されているように、キーパッドプロトコル１００と組み合わせられたメディアプレイヤーは、メディアプレイヤー機能に関連づけられた直感バーチャルキー(intuitive virtual keys)４１２を提示することができる。キー４１２機能に関するグラフィクスを提供するためにタッチスクリーンを使用することは、現在アクセスされたメディアについての情報を提供するために、モバイルデバイスディスプレイ１３を利用可能にしておく。
【００６２】
同様に、キー４２２の上に位置されたキーパッドディスプレイ４２０を備えたモバイルデバイス１０は、図３３で図示されるようなメディアプレイヤーアプリケーションのために同様なユーザインタフェースを提供することができる。図示されているように、キーパッドプロトコル１００と組み合わせられるメディアプレイヤーアプリケーションソフトウェアは、キーディスプレイ４２０において直感バーチャルキーｓシンボル(intuitive virtual key s symbols)を提示することができる。キー機能に関するグラフィクスを提供するためにキーディスプレイを使用することは、現在アクセスされたメディアについての情報を提供するために、モバイルデバイルディスプレイ１３を利用可能にしておく。
【００６３】
同様に、タッチスクリーンディスプレイユーザインタフェース４３０を有するモバイルデバイス１０は、図３４で図示されているように、直感機能バーチャルキー(intuitive function virtual keys)４３２、４３３と、現在アクセスされているメディアに関する情報を提示するための大きなディスプレイと、を提供することができる。図示された例は、単独プレスキー４３２と、タッチスライドバーチャルキー４３３と、の両方を含む。タッチスライドバーチャルキー４３３の一例は、バーチャルキーの領域内で、触れて、指で左あるいは右へとスライドすることによって、ユーザがボリュームを上げたり、あるいは下げたりすることができるように、構成されることができる。
【００６４】
上記で説明されているように、各キー４０２、４２２、あるいはバーチャルキー４１２、４３２、４３３上で、あるいは、それらで表示されるべきグラフィクス、及びアプリケーションによって割り当てられる各キーの機能は、キーパッドプロトコル１００によって管理される。単独のメディアプレイヤープリケーションは、外部ユーザインタフェース同様に、従来のキーパッド２０、ディスプレイキーパッド４００、タッチスクリーン４１０、ディスプレイを備えたキーパッド４２０、タッチスクリーンディスプレイユーザインタフェース４３０、を含むモバイルデバイス及びキーパッドのマルチプル構成(multiple configurations)上で機能することができ、アプリケーションソフトウェアを複雑にすることなく、高い直感ユーザインタフェース(a highly intuitive user-interface)を提供する。図示されるように、単独のメディアプレイヤーアプリケーションは、非常に似たキー機能グラフィクスを含んでいる、非常に似た外観及び感触を提示しながら、様々な異なるデバイス上で機能することができる。
【００６５】
図３５〜３９は、ゲームアプリケーションを含んでいる別の例を図示する。図３５を参照すると、従来の固定ラベルのキーを有するモバイルデバイス１０上で動作するゲームアプリケーションは、ディスプレイ１３で示されているように特定のキー２０に対しメニューマッピングキー機能を提供する必要があるであろう。ユーザは、同時にゲームをプレイすることを可能にするために、ディスプレイ１３の多くを機能メニューが占めているので、キー機能を記憶するように期待されている。
【００６６】
様々なキーパッドプロトコルの実施形態と一緒に、ディスプレイキーのキーパッド４００を使用して、図３６で図示されるようなより直感的なゲームユーザインタフェースが提供されることができる。図示されているように、キーパッドプロトコル１００と組み合わせられるゲームアプリケーションは、各キー４０２上で直感グラフィクスを提示することができる。キーディスプレイ４０２上でグラフィックとして各キー機能を提供することによって、モバイルデバイスディスプレイ１３全体は、ゲームプレイをサポートするために使用されることができる。したがって、実施形態はゲームアプリケーションのために、より直感的で便利なユーザインタフェースを提供する。
【００６７】
様々な実施形態を使用して、タッチスクリーン４１０を含んでいるモバイルデバイス１０は、図３７に図示されるようなゲームアプリケーションのために同様なユーザインタフェースを提供することができる。図示されているように、キーパッドプロトコル１００と組み合わせられるゲームアプリケーションは、ゲーム機能に関連づけられた直感バーチャルキー４１２を提示することができる。キー４１２機能に関するグラフィクスを提供するためにタッチスクリーンを使用することは、ゲームプレイをサポートするために、モバイルデバイスディスプレイ１３全体を利用可能にしておく。
【００６８】
同様に、キー４２２の上に位置している、キーパッドディスプレイ４２０を備えているモバイルデバイス１０は、図３８で図示しているような、ゲームアプリケーションのためのユーザインタフェースを提供することができる。図示されているように、キーパッドプロトコルと組み合わせられたゲームアプリケーションソフトウェアは、キーディスプレイ４２０において直感キーｓシンボル(intuitive key s symbols)を提示することができる。キー機能に関するグラフィクスを提供するためにキーディスプレイを使用することは、ゲームプレイをサポートするためにモバイルデバイスディスプレイ１３全体を利用可能にしておく。
【００６９】
同様に、タッチスクリーンディスプレイユーザインタフェース４３０を有するモバイルデバイス１０は、図３４に図示されているように、両方の直感機能バーチャルキー(intuitive function virtual keys)４３２、４３３と、ゲームプレイをサポートする大きなディスプレイと、を提供することができる。図示された例は、単独のプレスキー４３２と、タッチスライドバーチャルキー４３３の両方を含んでいる。タッチスライドバーチャルキー４３３の一例は、例えば、望むように、左、まっすぐ、あるいは右に操縦するために、バーチャルキー領域内で、触れ、指で左あるいは右にスライドすることによって、ゲームの中でユーザが自動車を操縦することができるように構成されることができる。
【００７０】
上記で説明されているように、各キー４０２、４２２あるいはバーチャルキー４１２、４３２、４３３上で、あるいはそれらと一緒に、表示されるべきグラフィクスと、ゲームアプリケーションによって割り当てられる各キーの機能は、キーパッドプロトコル１００によって管理される。単独のゲームアプリケーションは、外部ユーザインタフェース同様に、従来のキーパッド２０、ディスプレイキーパッド４００、タッチスクリーン４１０、ディスプレイを備えたキーパッド４２０、タッチスクリーンディスプレイユーザインタフェース４３０を含んでいるモバイルデバイス及びキーパッドのマルチプル構成を用いて操作することができる(can operation with)。したがって、ゲームアプリケーションは、アプリケーションソフトウェアに複雑さを加えることなく、デバイスごとに外観及びレイアウトにおいて一貫している高い直感ユーザインタフェースを提供することができる。図示されているように、単独のゲームアプリケーションは、非常に似たキー機能グラフィクスを含んでいる、非常に似た外観及び感触(a very similar look and feel)を提示しながら、様々な異なるデバイス上で機能することができる。
【００７１】
様々な実施形態は、記載された方法のうちの１つあるいは複数をインプリメントするように構成されたソフトウェア命令を実行しているプロセッサ１１によってインプリメントされることができる。そのようなソフトウェア命令は、デバイスのオペレーディングシステムソフトウェア、オペレーティングシステムによってインプリメントされる一連のＡＰＩｓ、として、あるいは、実施形態の方法をインプリメントしているコンパイルされたソフトウェアとして、メモリ１２において保存されることができる。さらに、ソフトウェア命令は、ランダムアクセスメモリ１２、モバイルデバイスへとプラグされたメモリモジュール１０、例えばＳＤメモリチップ、ＵＳＢ接続可能外部メモリのような外部メモリチップ（例、「フラッシュドライブ」）、読み取り専用メモリ（例えばＥＥＰＲＯＭ）を含んでいるいずれの形式のタンジブルプロセッサ読み取り可能メモリ(tangible processor-readable memory)；ハードディスクメモリ、フロッピー（登録商標）ディスク、及び／またはコンパクトディスク、上で保存されることができる。
【００７２】
当業者は、様々な説明のための論理ブロック、モジュール、回路、および、ここに開示された実施形態に関連して説明されたアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアあるいは両方の組合せとしてインプリメントされることができる、ということをさらに理解するであろう。このハードウェアとソフトウェアの互換性(interchangeability)を明瞭に説明するために、様々な説明のためのコンポーネント、ブロック、モジュール、回路、およびステップが、一般に、それらの機能性という観点から、上記で説明されてきた。そのような機能性が、ハードウェアあるいはソフトウェアとしてインプリメントされるかどうかは、特定のアプリケーションと全体のシステムに課された設計制約(design constraints)に依存する。熟練職人は、各特定のアプリケーションについての様々な方法で、説明された機能性をインプリメントすることができるが、そのようなインプリメンテーションの決定は、本発明の範囲からの逸脱を生じさせるものとして解釈されるべきでない。
【００７３】
ここにおいて開示された実施形態に関連して説明された方法あるいはアルゴリズムのステップは、直接ハードウェアで、プロセッサによって実施されるソフトウェアモジュールで、あるいは、それらの２つの組み合わせで、具現化されることができる。ソフトウェアモジュールは、プロセッサ読み取り可能メモリにおいて存在することができ、それらは、ＲＡＭメモリ、フラッシュメモリ、ＲＯＭメモリ、ＥＰＲＯＭメモリ、ＥＥＰＲＯＭメモリ、レジスタ、ハードディスク、リムーバブルディスク、ＣＤ−ＲＯＭ、あるいは、当技術分野において知られるいずれの他の形態の記憶媒体、のいずれかであってもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。あるいは、記憶媒体は、プロセッサに一体化していてもよい。プロセッサ及び記憶媒体は、ＡＳＩＣに存在していてもよい。ＡＳＩＣは、ユーザ端末あるいはモバイルデバイスに存在していてもよい。あるいは、プロセッサと記憶媒体は、ユーザ端末あるいはモバイルデバイスにおいて、個別のコンポーネントとして存在してもよい。さらに、いくつかの態様では、方法あるいはアルゴリズムのステップ及び／または動作は、コンピュータプログラムプロダクトに組み込まれることができる、マシン可読媒体及び／またはコンピュータ可読媒体上のコード及び／または命令のうちの、１つあるいはいずれの組み合わせあるいはセットとして、存在することができる。
【００７４】
様々な実施形態の前述の説明は、いずれの当業者も本発明を作り、あるいは使用することを可能にするために、提供されている。これらの実施形態に対する様々な修正は、当業者にとって容易に明らかであろう、そして、ここにおいて定義された包括的な原理は、本発明の精神あるいは範囲から逸脱することなく、他の実施形態に適用されることができる。したがって、本発明は、ここにおいて示される実施形態に限定されるようには意図されておらず、代わりに、特許請求の範囲は、ここに開示された原理及び新規な特徴に整合する最も広い範囲が与えられるべきである。
【図１】
2010533926.tif 000003
【図２】
2010533926.tif 000004
【図３】
2010533926.tif 000005
【図４】
2010533926.tif 000006
【図５】
2010533926.tif 000007
【図６】
2010533926.tif 000008
【図７】
2010533926.tif 000009
【図８】
2010533926.tif 000010
【図９】
2010533926.tif 000011
【図１０】
2010533926.tif 000012
【図１１】
2010533926.tif 000013
【図１２】
2010533926.tif 000014
【図１３】
2010533926.tif 000015
【図１４】
2010533926.tif 000016
【図１５】
2010533926.tif 000017
【図１６】
2010533926.tif 000018
【図１７】
2010533926.tif 000019
【図１８】
2010533926.tif 000020
【図１９】
2010533926.tif 000021
【図２０】
2010533926.tif 000022
【図２１】
2010533926.tif 000023
【図２２】
2010533926.tif 000024
【図２３】
2010533926.tif 000025
【図２４】
2010533926.tif 000026
【図２５】
2010533926.tif 000027
【図２６】
2010533926.tif 000028
【図２７】
2010533926.tif 000029
【図２８】
2010533926.tif 000030
【図２９】
2010533926.tif 000031
【図３０】
2010533926.tif 000032
【図３１】
2010533926.tif 000033
【図３２】
2010533926.tif 000034
【図３３】
2010533926.tif 000035
【図３４】
2010533926.tif 000036
【図３５】
2010533926.tif 000037
【図３６】
2010533926.tif 000038
【図３７】
2010533926.tif 000039
【図３８】
2010533926.tif 000040
【図３９】
2010533926.tif 000041
【国際調査報告】
2010533926.tif 000042
2010533926.tif 000043
2010533926.tif 000044